none
How long should i use Small Basic as a learning language?

    General discussion

  • Hello

    I've been wondering what a good (reasonable) period of time would be to spend learning exclusively with Small Basic before moving on to another language?

    It would probably depend on individual objectives, but I would love to hear peoples thoughts on this.

    My plan was to spend 1 to 1.5 years tops. Then C# and probably a mix of other .Net stuff.

    Tuesday, April 01, 2014 12:08 AM
    Moderator

All replies

  • SB is an introductory language, as it is Scratch, App Inventor, Alice, Kodu, etc.
    But each 1 got its own particular approach method!

    We should stay in a beginner's language as long enough to become familiar w/:

    • Variables
    • Arrays
    • Conditional branches
    • Loops
    • Request input from user
    • Load local & remote files
    • Save files
    • Animate sprites
    • Create rudimentary GUIs
    • Tame events/callbacks

    We might say that most of those is in the PDF which accompanies SB anyways!  :P


    Click on "Propose As Answer" if some post solves your problem or "Vote As Helpful" if some post has been useful to you! (^_^)

    Tuesday, April 01, 2014 1:05 AM
    Answerer
  • I see that you're very interested in following .Net Framework path.
    C# is the most logic next step after SB. I see it more similar to SB than VB.NET!
    Although due to its high complexity, C# is more like a giant leap!  LoL

    If you end up finding OOP a little too diff., I'd suggest you to have BlueJ's Java IDE as a helper.
    That IDE has a neat approach to OOP & class instantiation.
    We can easily see the contents and invoke methods from objects:

    http://BlueJ.org

    Click on "Propose As Answer" if some post solves your problem or "Vote As Helpful" if some post has been useful to you! (^_^)

    Tuesday, April 01, 2014 1:23 AM
    Answerer
  • Even though traditional locally running languages like SB, C#, Java, D, Go, Python, Rust, etc. are important, we can't ignore "online" languages which run inside our browsers!
    Among them, JavaScript reigns almost supreme!

    Khan Academy got a neat & easy introductory computer science course which uses JS w/ Processing's framework API:

    KhanAcademy.org/cs

    However, when it comes to OOP, JS is the most diff. language I've seen!
    There isn't a formal class structure to define an object in JS (neither in Lua)!

    That's why some helper languages were invented to abstract away those diff. parts!
    Most famous is CoffeeScript, which I'm currently learning:

    CoffeeScript.org

    And a brand new 1 w/ lotsa potential -> Dart:

    DartLang.org

    Well, those are my tips!  :P

    Click on "Propose As Answer" if some post solves your problem or "Vote As Helpful" if some post has been useful to you! (^_^)

    Tuesday, April 01, 2014 1:40 AM
    Answerer
  • This is my idea.  I like Small Basic because it's easy to make short programs.  But I feel difficulty for large programs in Small Basic.  I sometime use [Graduate] button to convert a Small Basic program to a Visual Basic program.  Then I can use Visual Studio debugger for the large one.

    The other side, I'm trying to make Go game program with JavaScript.  At least, if you have a text editor and a web browser, you can make JavaScript programs.  In my case, I use an IDE "Aptana Studio 3".  Most attractive point of JavaScript is that the program can run on many platform such like Windows, OS X, Linux, Android, iOS, Wii U, ... and so on.  Also Windows store application can be made in JavaScript.

    I've not used C# yet.  But, some day I will use C#.  I already bought a book about C#.  Most possible way to use C# for me is to make extensions of Small Basic.  I already have Visual Studio Express.  So I once used it for testing a TechNet Wiki article about Small Basic extension.

    If you use other languages, I think you can find attractive points for each language.  So my recommendation is to use Small Basic and other languages also.


    Nonki Takahashi




    Tuesday, April 01, 2014 3:15 AM
    Moderator
  • Thanks for your replies.

    If anyone started out with sb and have moved on it would nice to hear some quantitative feedback too. e.g. how long.

    To Goto and Nonki, thanks, very helpful.

    Both your replies hit on things relevant to me:

    I've done everything on goto's list of techiniques as well as:

    • optimising (worked out some more on this: loop headers, and build ups in arrays), will share later;
    • unit testing and end to end test
    • writing extensible & reusable code, e.g. my dd menu code is copy/paste in and then set and use (it works)
    • focus stuff, if your program/game loses focus then secure it (I use showMessage for this)
    • pre-emptive processing: e.g. if you're nearly finished level 1 then load level 2 in the b/ground. to do.

    Nonki's thoughts on big programs. That's where I'm at now. I'm currently trying a bigger build and SB is making me get real organised. A lesson in structure and modulating for me. There's a lot to be careful of if you want to build a big program and maintain later. I suspect big build is the last thing I really want to do before moving on. Nearly there.

    Oh... DEBUGGING, nearly forgot.

    I love debugging (some might think me crazy). It's very satisfying to nail down your mistakes and fix them. I'd rather minimise then in the first place though (testing).

    I find using GW.ShowMessage() really good for debugging. I use combo of TW and GW.showmessage.

    And finally:

    • enough physics to do what I want
    • and enough math

    My physics and math are pretty weak but I do a little on the side and I'm just about there. (I don't like plugging into formulas I can't derive). So it's true you don't have to be a mathematician or physicists to code. P/up enough as you go.

    Program and game design are definitely something I'm interested in. $$

    If Tackling the bigger tasks?......then DON'T GIVE UP.. I've gotta a few issues in my bigger build program, I'm glad I have, that's why I did it. There's a reason for the bugs and i'll find and fix them. I do something else when I get a tuff bug, I take break and have an awakening moment, usually after a sleep then fix it.. :)

    I struggle a bit with graduate to vb because I have to redim multi dimensional arrays.

    That's my takeaway on my sb journey thus far. Very happy.

    Tuesday, April 01, 2014 5:39 AM
    Moderator
  • I also use GW.Title instead of TW.WriteLine to show some value for debugging.
    For long source code with tight bugs, I sometime print out the source list and write ideas and debug information onto the paper.  That will help to organize logical thinking.

    Graduate with multi dimensional arrays... Yes, you should rewrite the code only to use the array with single dimensional index.  For example:

    SB:

    a = b[i][j]

    VB:

    bi = b(i)
    a = bi(j)

     


    Nonki Takahashi



    Tuesday, April 01, 2014 6:40 AM
    Moderator
  • Awesome... thanks for the vb tip Nonki. Will try that soon.

    re print outs. I went paperless years ago as an experiment so I haven't got a printer. I can use the library pretty cheap  for printing and hand held device for scanning.

    I found some blank paper in the council clean up so I've got some scratch paper. I'm a freegan and like watching how tech alleviates environmental pressures and solves social inequities.

    I'm thinking about getting a tablet with stylus.

    Good debug tips Nonki
    Tuesday, April 01, 2014 7:45 AM
    Moderator
  • If you're comfortable with all the stuff in the SB tutorial then I think you are probably ready to move on, and my personal view is that C# is a good way to go.

    I wrote a tutorial on moving from SB to C# some time ago; it shows you how to incorporate the SB library into a C# program so you can use all of the great graphics that you already know but using C# in Visual Studio. I've structured the tutorial around the SB one so you get to see the equivalent constructs of SB in C# and C# versions of the SB tutorial programs.

    You can find a link to it in the Additional Small Basic Resources thread - the second post, I think. 

    If you like creating reusable and extendable code then you'll love OOP - that is what it is all about!

    Also, you are right to consider how to construct large programs but you'll find that it is much easier when using an OO language than with SB. If you go too far in trying to construct large programs in SB, you might find yourself having to unlearn things when you get to C#.

    Here's the link to the tutorial:

    programmingprof.blogspot.com

    Wednesday, April 02, 2014 5:59 AM
  • The conversion to VB doesn't translate the C#-like syntax of multidimensional arrays in SB correctly. You could use only single dimensional arrays, as Nonki says, or you could edit the VB to be correct.

    SB:

    a = b[i][j]

    in VB, the dim statement should look like this:

    dim b(100,100) As Primitive

    and the assignment should look like this:

    a = b(i,j)

    I chose to dimension b as a 100 by 100 array; you should substitute whatever values you need.

    Wednesday, April 02, 2014 6:43 AM
  • outbyone, Thanks for those points.

    Great tutorial.

    re: too far w large programs. I agree, could be counterproductive. Good point. I like the idea of finding out what a language is good for and using it for that.

    I liked your comment in the blog, "learning to program w sb". For me there's 2 thing in that. You learn the language and use it, to learn to program. Happens simultaneously more or less but I think 2 distinct things. At times i've read code in vb, c#, java .... and used the methodology in sb.

    I think I'll love oop too. I've worked through a little bit of Bob Tabors video tutorials. Really good (just me having a look round the corner). 1st lesson was to write hello world in a text file, then write a script and compile it without the ide. Was like learning 3 things at once.

    Anyway thanks for sharing your thoughts. Very helpful.

    Wednesday, April 02, 2014 8:08 AM
    Moderator
  • Thanks for your comments Jibba Jabba, I would have continued the tutorials but there doesn't seem much of an audience for them :-(

    There is a little bit of OOP in SB. For example, the GW is an object that has attributes you can change (colours, title, size...) and things you can do with it (show, hide). So you can create objects that SB supports but you can't create new classes (a class being a kind of template for an object). In C#, Java, VB.NET etc. you can do this - so, for example, in a game you might create a class to represent a Space Invader which would have attributes like size and position and the abilities to move and explode. You could then create as many of these custom-made objects as you like. OO can get quite complex but fundamentally it is quite straightforward.

    By the way, compiling without the use of an IDE is a great learning experience but when you start getting big and complex with a bunch of different files and libraries, I think I'd stick to using an IDE :-) 

    Wednesday, April 02, 2014 4:29 PM
  • Cheers outbyone

    For me SB has allowed me to conceptualise oop a bit. I've learnt that SB classes (objects) have properties and methods.

    Properties are things that the object has and methods are things that it can do.

    An article 1st published by litdev (a great getting started read) made mention of re-usable code. A MUST read for beginners I reckon.

     http://social.technet.microsoft.com/wiki/contents/articles/15081.small-basic-programming-tips.aspx

    ps..

    You never know who reads what on the web. I read stuff and more often than not don't leave comments. Content once done can always be updated, re-posted and relocated. For most articles I check the last revised/updated date. I intend on building a bit of content as I go.



    Wednesday, April 02, 2014 9:28 PM
    Moderator