Microsoft has launched a new initiative: DevLabs. DevLabs consists of some developer-related projects and prototypes that might or might not make it into full products. The project I really like is Small Basic, a very simple programming language and IDE (if you can call it that) that takes me back to when I was younger and learned to program in BASIC on a Commodore 64. The language is very simple and imperative (not object-oriented!), which makes it ideal to teach kids to program. It's also a nice example of a WPF-application and its intellisense and auto-help system are very cool.
-
-
Ugh, I wrote basic on my C64 for like 2 months. Then I went to assembly code

A basic language sounds cool, it should seriously lower the threshold to start programming. -
This seems to be a really nice program of which I haven't heard so far. When it's ideal to teach kids to program it's also really helpful. The other advantages you mentioned about this program also sound really helpful.
-
I'm not so sure about learning to code at such a young age. I think it important to learn the concepts for sure, but it is imperative kids learn other engineering disciplines.
I'm a Mechanical engineer at heart, and most of those concepts are still applicable to computing, and I don't really miss the not learning a programming langauge at a young age. It is far more important to know Mathematics and be proficient in that. I know some people that started young (most tend to be 'merikan's) and most seem to get "burned out" in their mid-to-late twenties.
I think you really need a rounded education, incorporating an array of disciplies, developing a more erm... grounded "developer". BASIC is important, but Calculus even more so.
-
Why is it that all the interesting stuff coming out of Microsoft are projects that probably won't make it into actual products?
-
Looking at small basic, I was thinking... uggg... what a missed opportunity...
2 different looping constructs?
While ("True")
For i = 1 to 100
Really? First of all, there are so much unnecessary strange symbols like ("True ... what's that all about... I would've done looping this way.
Loop
Loop from 1 to 100
Loop [i] from 1 to 100
...
End Loop
Then there's the talk of no OOP... I see
pic = Flickr.GetRandomPicture("Rainier")
DeskTop.SetWallPaper(pic)
OOP? Yeah, it's there... Since there are only 14 keywords in small basic, the majority of functionalities are done through libraries. There's definitely a "context switch" from when you're using small basic, and from when you're using the libraries.
I don't think these things would stop kids from learning small basic, they do great with learning by example... But from what I see of small basic, I can only think what a wasted opportunity.
They should release the project to open source and I'll implement a REAL kid-friendly basic. -
I think theres plenty of other tools around that make creating an 'application' easy, like mashups or even stuff like automator? on osx.. a simple language is interesting, because you surely need a balance between how easy it is to write, vs how easy it is to screw it up.. although I guess they can do a lot of static analysis and make some pretty clear assumptions, to tell and even correct the users logic errors.
ps: pex is really cool, I tried it a few months back but haven't had the time to really get into it. -
Bad business case,..Bas said:Why is it that all the interesting stuff coming out of Microsoft are projects that probably won't make it into actual products?
We would like it, as a geek thing, but it wouldnt hold up in the real world. -
Ditto.Maddus Mattus said:
Bad business case,..Bas said:*snip*
We would like it, as a geek thing, but it wouldnt hold up in the real world.
Most real world application development is actually quite boring. Eric Lippert has a blog favoured by the Visual Studio start page, and it is clear that that is where the nuts and bolts of C# are turning.
Very few of us have the opportunity (some would say brains) to worry about such langauge minutae. As steveo_ states, mashups and popfly etc. are far more engaging for learners, because they can see the effects of their (cough cough) programming more instantly.
I still remember the first time got a do/while loop working in C++ in a console application. I still adore that. I started to see how a computer works, but for most people, it is rather demure.
-
Just because it's using objects does not mean it's an object-oriented language. Programming in Small Basic is still imperative. You don't have to know anything about classes or inheritance or polymorphism to program in Small Basic.Minh said:Looking at small basic, I was thinking... uggg... what a missed opportunity...
2 different looping constructs?
While ("True")
For i = 1 to 100
Really? First of all, there are so much unnecessary strange symbols like ("True ... what's that all about... I would've done looping this way.
Loop
Loop from 1 to 100
Loop [i] from 1 to 100
...
End Loop
Then there's the talk of no OOP... I see
pic = Flickr.GetRandomPicture("Rainier")
DeskTop.SetWallPaper(pic)
OOP? Yeah, it's there... Since there are only 14 keywords in small basic, the majority of functionalities are done through libraries. There's definitely a "context switch" from when you're using small basic, and from when you're using the libraries.
I don't think these things would stop kids from learning small basic, they do great with learning by example... But from what I see of small basic, I can only think what a wasted opportunity.
They should release the project to open source and I'll implement a REAL kid-friendly basic.
-
My point is that the variable = Class.Method(parameter) isn't straight forward language. And since small basic only has 14 keywords, the vast majority of code will be in this format.TommyCarlier said:
Just because it's using objects does not mean it's an object-oriented language. Programming in Small Basic is still imperative. You don't have to know anything about classes or inheritance or polymorphism to program in Small Basic.Minh said:*snip*
I do like the global, dynamic type system for beginners. That's a definite plus. I just see too much of a bind to the old... While ("True") c'mon... seriously...
With Flickr GetRandomImage("Rainier") => [pic]
or implicit import of a library...
Import Flickr
Which could do the link & namespace import all in one swoop...
Then you can just do...
GetRandomImage("Rainier") => [pic]
It's just too early to worry about namespace collision with the
Flickr.GetRandomImage("Rainier")
syntax.
It's a nice development environment, but right off the bat, seeing 2 loop constructs w/ an obvious bend to OOP conventions, leads me to believe whoever is doing this has a long way to go to understand what language simplification is.
-
Minh said:
My point is that the variable = Class.Method(parameter) isn't straight forward language. And since small basic only has 14 keywords, the vast majority of code will be in this format.TommyCarlier said:*snip*
I do like the global, dynamic type system for beginners. That's a definite plus. I just see too much of a bind to the old... While ("True") c'mon... seriously...
With Flickr GetRandomImage("Rainier") => [pic]
or implicit import of a library...
Import Flickr
Which could do the link & namespace import all in one swoop...
Then you can just do...
GetRandomImage("Rainier") => [pic]
It's just too early to worry about namespace collision with the
Flickr.GetRandomImage("Rainier")
syntax.
It's a nice development environment, but right off the bat, seeing 2 loop constructs w/ an obvious bend to OOP conventions, leads me to believe whoever is doing this has a long way to go to understand what language simplification is.
Do you really want to explain to a beginner what a namespace is and how to import a library or namespace? The advantage of Flickr.GetRandomImage is that the user does not have to know about libraries and modules and classes and objects: he just has to know that typing Flickr.GetRandomImage will get a random image from Flickr.
I do agree with your statement that While("True") looks horrible and that they should abandon legacy constructs like that in favor of simpler concepts.
-
This SmallBasic is awesome. It has some surprising methods (Network.GetWebPageContents(url) ?!?!) and a Turtle.TommyCarlier said:Minh said:*snip*Do you really want to explain to a beginner what a namespace is and how to import a library or namespace? The advantage of Flickr.GetRandomImage is that the user does not have to know about libraries and modules and classes and objects: he just has to know that typing Flickr.GetRandomImage will get a random image from Flickr.
I do agree with your statement that While("True") looks horrible and that they should abandon legacy constructs like that in favor of simpler concepts.
Plus every time you press F5, the program is compiled and you can distribute the .exe alongside with the SmallBasic.dll (219Kb). I wonder what I need to do to get this in the box with Windows 7...
-
Well, my suggestion of using a keyword to both import the assembly & namespace would alleviate the need to know about namespace. I just feel that SmallBasic doesn't do enough to make it easy for beginning programmers.TommyCarlier said:Minh said:*snip*Do you really want to explain to a beginner what a namespace is and how to import a library or namespace? The advantage of Flickr.GetRandomImage is that the user does not have to know about libraries and modules and classes and objects: he just has to know that typing Flickr.GetRandomImage will get a random image from Flickr.
I do agree with your statement that While("True") looks horrible and that they should abandon legacy constructs like that in favor of simpler concepts.
-
I've been a quite successfull developer for pretty much all my working life (except the last three years).vesuvius said:I'm not so sure about learning to code at such a young age. I think it important to learn the concepts for sure, but it is imperative kids learn other engineering disciplines.
I'm a Mechanical engineer at heart, and most of those concepts are still applicable to computing, and I don't really miss the not learning a programming langauge at a young age. It is far more important to know Mathematics and be proficient in that. I know some people that started young (most tend to be 'merikan's) and most seem to get "burned out" in their mid-to-late twenties.
I think you really need a rounded education, incorporating an array of disciplies, developing a more erm... grounded "developer". BASIC is important, but Calculus even more so.
I know diddly squat about Math. -
There is no import or namespace... Flickr is just a builtin group of functions.Minh said:
Well, my suggestion of using a keyword to both import the assembly & namespace would alleviate the need to know about namespace. I just feel that SmallBasic doesn't do enough to make it easy for beginning programmers.TommyCarlier said:*snip*
-
My suggestion would be to throw out the explicit class names and just use simple function names, like the BASIC variants of yore. Functions like MID, CHR, ASC, RND and the like could be modernized (abbreviating the name is no longer necessary). Paolo's example of Network.GetWebPageContents is what I mean: why not provide a simple function called DownloadText instead?Minh said:
Well, my suggestion of using a keyword to both import the assembly & namespace would alleviate the need to know about namespace. I just feel that SmallBasic doesn't do enough to make it easy for beginning programmers.TommyCarlier said:*snip*
-
There is Network.DownloadFile(url)TommyCarlier said:
My suggestion would be to throw out the explicit class names and just use simple function names, like the BASIC variants of yore. Functions like MID, CHR, ASC, RND and the like could be modernized (abbreviating the name is no longer necessary). Paolo's example of Network.GetWebPageContents is what I mean: why not provide a simple function called DownloadText instead?Minh said:*snip*
Thread Closed
This thread is kinda stale and has been closed but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.