Microsoft Small Basic
smallbasic-publicwebsite.azurewebsites.net
smallbasic-publicwebsite.azurewebsites.net
You can see a bunch of decisions influenced by .Net which I was working with back then. I had been meaning to go back and revisit some of those decisions, but haven't had a chance yet. I have changed my stance around scoping and argument passing in functions, for instance.
(What is really neat is that 15 years later, my son is learning coding with Small Basic. And I hired an engineer for my current startup who had started coding with Small Basic as a kid in Brazil.)
I think it would be great if there was a modern "console computer" like that, which let you code the instant you switched it on.
At the very least, I wish modern programming environments let you use graphics and draw right away without fumbling around with boilerplate, like a simple 10 LINE(1,1,10,10) :)
Nowadays I work with people living with disabilities and I come across kids who want to program but who cannot use a traditional keyboard and mouse. I was just discussing the need for a simplified ide and language syntax with full programming power and Small Basic came to mind.
Any chance this work will see new life outside of its 'side project' status?
It's much easier to enable alternative input from say a .Net Framework WPF app...
The editor they shipped had some neat features for the time like Intelisense and built-in docs, it even had support for third-party libraries with DLLs. One really neat feature I also remember was that you could turn a SB project into VB with a click of a button, it would create the VS solution and vbproj for you. I'm not quite sure how it worked with the language itself cause VB looks quite a bit different and it wouldn't change your code (no transpiling or stuff like that, just a wrapper).
Funnily enough, I didn't actually move to VB from that, I went to C# (which I have since forgotten). But it definitely got me quite a bit further in my developer journey (now I work with Go at a small org).
Thanks for creating it.
https://github.com/VBAndCs/sVB-Small-Visual-Basic
Which I've been trying to determine if I should try.
For a while I thought Livecode (formerly Runtime Revolution), a rebooted HyperCard was going to be a good fit for small, graphical interface projects, but that's not looking so good since they closed the source and changed the license.
I'd really like to find something which is as straight-forward to use as Blockly, but which had a stand-along desktop app/IDE.
>And, of course, https://gpblocks.org/
which looks to be exactly what I was looking for.
Microsoft Small Basic - https://news.ycombinator.com/item?id=9981557 - July 2015 (87 comments, some from the creator)
Microsoft Small Basic - https://news.ycombinator.com/item?id=1172519 - March 2010 (26 comments)
Small Basic: Programming Is Fun - https://news.ycombinator.com/item?id=1171383 - March 2010 (27 comments)
Introducing Small Basic - Microsoft releases yet another programming language - https://news.ycombinator.com/item?id=358050 - Nov 2008 (6 comments)
https://github.com/smallbasic/SmallBASIC
There are lots of examples to work from, a very functional Android app, and Linux users can use the AppImage releases to get up and running fast.
Back when I was comparing BASIC distros for scripting/programming, this one was by far my favorite for day-to-day use cases.
(BTW, does anyone know if the MS Small Basic software runs in Wine?)
Is scope really that big of a hurdle for beginning students? Also, in the examples I saw there are no formal functional arguments. This seems like a big step backwards as a teaching language compared to Racket/Dr Scheme. Copying the same bad design decisions from 70s BASICs because of nostalgia doesn't seem that helpful for actual education.
My first language was the original line-numbered BASIC. I think a benefit was that you could pretend to think like the computer, and run the program in your head or on paper. Naturally we were led to experience the mishaps that scoping overcomes.
Nowadays, a motivation is showing how they can import a package, and use its functions, without having to understand the internals of the package. The most primitive reasons are named function arguments and scoping.
Hmmm... even after just a few minutes, I'm impressed. I prefer to use beginner tools for my own work, even though I'm actually quite experienced, because it gives me a chance to familiarize myself with the things that I would actually recommend to beginners.
Also, it reminds me of another thing, which is that not just the language but also the tooling, can be a source of abstraction and frustration.
Many of us who learned on systems like basic became professional programmers eventually, so I don't really see why it's so important for early tools to mimic what software developers use. Excel is an example of a language with globally-scoped variables, and it's used by more people than all other languages combined to successfully run everything from personal finances to business operations. SQL is another example of a language that is used by non-programmers that doesn't have the typical lexical scoping rules. So it's certainly possible to build complex systems without lexical scoping, and it seems like non programmers “get” this version of programming moreso than even Python, which is lauded by programmers for how supposedly learnable it is.
Scratch doesn't have lexical scope.
But back then, computers and operating systems were very thin abstraction layers on top of the metal anyway. The current computer is a totally different beast.
Not the only one: https://easylang.dev/ide
I've been looking for such a tool for _forever_!
Thanks!
Any notable forums/discussion areas for this?
(I will note the name makes it hard to search for --- maybe that's why I didn't find it?)
Thanks.
I really miss programmer sense of humor, we used to have more of this back in the day.
Everything is so bland and serious now.
I’m 109 and I feel I’m not being seen
The language is not HyperTalk or AppleTalk - it's a mix between Lua and APL, which is about as readable but much nicer to write. And if you find this interesting, look for the ArrayCast podcast episode where they interview John Earnest about Decker (and the associated language, Lil). IIRC, there are two episodes where John is interviewed, and this is the 2nd of them.
I was hoping that Livecode (formerly known as "Runtime Revolution") would become that --- there's now an opensource fork --- maybe that will make it possible?
https://homepages.cwi.nl/~steven/abc/programmers/handbook.ht...
If you start from nothing, C can be as easy as BASIC. You can do a lot without ever touching malloc/free.
I wrote my first complete computer program in 1986. Since then I've programmed (or scripted) in Assembler, BASIC, C, C#, C++, COBOL, F#, HTML, Java, JavaScript, LOGO, Pascal, SQL, VBA and XAML. I don't mind C#. Or Java. The majority of the code I've written in my career was written in C#. And yet my preference remains VB.NET because -
VB.NET supports both static and dynamic typing.
VB.NET is a functional language, supporting local type inference, anonymous functions, monads, and language integrated comonads (even Lisp can be more complex and verbose than VB.NET with LINQ).
VB.NET does project-wide namespace imports. C# doesn't.
VB.NET is no more or less verbose than C#. Haskell and F# however, are indeed a lot less verbose.
There are also readability issues in Java and C# that VB.NET doesn't have (braces, == and =, ! instead of Not, seperate keywords for inheritance and interface implementation, and so on). I learnt Pascal before learning C (and prefer Pascal to C). The fact that Pascal and VB.NET share syntactical smilarities (type declarations follow variable and function names, the Not keyword) is probably not an insignificant factor.
Lastly, Microsoft announced that evolution of the VB.NET language has concluded, (although it will support .Net 5). This is welcome because it makes things predictable -- modernising legacy codebases takes ages.
Modern JavaScript/typescript is a total joy to code in (if you stay away from npm... Which you easily can) with a lot of the benefits you mention.
Please don't. I don't mind Microsoft pushing .NET languages, that's sort of expected, but why VB? Getting started with modern Visual Basic isn't actually all that much easier than with C# -- both target the .NET runtime, and the deeper semantics are actually largely the same. And C# is infinitely more relevant in the job market.
It's just like many of us picked up PHP in the early 2000s. Then we went to Ruby in 2007. Now we are in Go or Rust or something else.
Any kind of coding is good coding.
You read a bit much into my comment. My point is just: If two languages are largely equivalent in terms of difficulty and ecosystem, why pick the more obscure one? That's not "hate".
> Any kind of coding is good coding.
Any kind of coding is better than no coding, but that doesn't mean you can't make distinctions. I simply don't see a point in making learners later lives more difficult for no obvious pedagogic benefit.
So given they're approximately the same level of syntactical difficulty to learn (for equivalent amounts of power), why choose the more restrictive and esoteric one?
It's not that VB.NET is a bad or useless language. It's just a very different language than the common modern multi-paradigm ones. Which isn't great for career progression.
Side note: VB.NET's anonymous function shoehorning is syntactically atrocious: https://stackoverflow.com/a/6091579
Fair enough. Thanks for the explanation.
For learning / academic stuff; it doesn't matter.
In the professional world, what happens is that someone, who generally is less experienced than the rest of the team, shows up mixes Visual Basic into a world of C#. It turns into a smell that something isn't right here; because usually the Visual Basic parts are loaded with novice mistakes; because the rest of the team didn't review the code closely enough while it was being written.
The problem isn't the language; the problem is how a team integrates newcomers and mentors them.
As such, it matters less whether it is a good, expressive, easy to use language than that there are so many other better options.
Now… it’s not easy to get many languages running on Windows. While on Unix you get Python for free in a base install (with some rare exceptions), Windows require some extra steps novices may have trouble with.
https://apps.microsoft.com/store/detail/python-311/9NRWMJP37...
I've finally shifted all my projects to C# only because support for VB.Net is sadly waning.
Flip power switch, wait 2 seconds for the READY prompt.
10 PRINT "HELLO WORLD"
20 GOTO 10
RUN
I'm pretty sure that started an era of programmers, curious would else you could do than just type LOAD "*",8,1It’s never been the best language but also nowhere near the worst. Modern versions of it are at least decent and arguably better than more popular languages like PHP.
Going from Small Basic to VB.NET makes sense if the syntax is familiar but it allows you to move to move to a more professional and full feature environment. The difference between VB.NET and C# is largely syntactical so, once on VB.NET, getting to C# is a pretty easy journey.
There may be some value in this profession for early programmers as they can gently see how languages are both very similar but also different in important ways. The idea that the syntax is not the most important difference is valuable in itself.
For educational purposes, being able to say "we've eliminated a bunch of tarpits" is a good thing.
On the other hand, I wouldn't discount the syntax differences as a real pain point, once you've walked past the 200-level CS class that shows "look, here's LISP and Prolog and Assembler and they're all Turing complete and can solve the same problem." We get it, the syntax doesn't matter, but familiarity does.
There's no doubt a lot of friction and productivity cost when you take a experienced programmer who's worked on language A and drop them in language B-- even if they know what they want algorithmically, they're going to spend a lot of time stubbing their toe over syntactic differences. In the worst case, I could see them making worse code because they choose the easiest/most documented approaches rather than having to figure out how to express exactly what they want.
It's interesting there's little tooling to support that use case. Given that (originally, who knows now?) C# and VB.NET were supposed to be more or less isomorphic, I could imagine an IDE extension that dynamically transpiled either language to the other for display and editing, and then converting the changes back to the "official" project language when ready to share the code. It could be used as anything from a training tool (flip back and forth to see how this construct maps between the languages) to a crutch (I don't know how to express XYZ in C#, transpile it for me)
If you look at the auto-generated VB.NET code, it’s very close to the Small Basic code, with the addition of a variable declaration. This variable is of a magic, SB-specific `Primitive` type that is a string, a decimal, and a dictionary at the same time. Generating it was probably easier than translating to C# and introducing real (static) types.
VB.Net lets an amateur achieve something quickly, with a UI! In my oppinion the most important thing a first language needs is very easy and quick UI tools. Prior to ASP/VB(script) I could code html, so it was super quick to get something on screen.
Are there flaws with VB, yes, but it's almost the perfect first "proper" language.
The lack of VB code examples on learn.microsoft.com was always a problem.
But that's fixed now that ChatGTP is writing all the code for us. /s