Other Learning Basic Programming for Kids?

Hello,

There is for instance for Kids the famous Smallbasic from Microsoft (no, it is a joke):
http://smallbasic.com

What Basic would you advise to look at?

I like to think about C64 or CPC basic, really in a fullscreen embedded world.

I should run graphics (e.g. using X or other).
 
IMHO There are modern programming languages which are far better than Basic to learn programming. I have given a short look at some SmallBasic code and I dont see many step forwards
since QuickBasic, I don't reccomend it, there are far better high-level languages.

1] A good choice could be Python, it has programming structure similar to C/Java but it is far easier. It has the Tk GUI integrated. If I remember well there is a "Logo" like Turtle module which can be nice for kids. It has modern data structures built in like lists and hashes, programming with these two d.s. make it all more fun and easy.

Othre educational projects i tried in the past are:

2] Squeak, based on SmallTalk. It is integraed into a GUI.
http://squeak.org/

3] Racket, based on Scheme, it is integrated into a GUI.
As all Lisp-like languages, in Scheme there are a lot of parentheses but there are not "misterious" parsing rules. You may like it or not, matter of taste.
http://racket-lang.org/

4] I would add Ruby, because it is the scripting language I love most but, it does not have a default GUI, it is extra, you must install it. It is a well ordered programing language. The language motto is "Ruby, the programmer's best friend".

5] Javascript. This is not a nice language, it is very messy, its structure is similar to C/Java. There is a book to learn only what is good: "Javascript, the good parts". The good point about javascript is that kids can run code in their browser !! This can be a big big plus. They can see how the Web works, it can be fascinating.

Bye
Nicola
 
Today, you should teach kids Python. If they are too young for Python, start with Scratch. Then, learn them Python. The point of a first language is to get them interested, so let them accomplish a goal in a short time. If the programming interest sticks, the kids will soon discover that there are other languages to learn, and then they will start and continue discussions similar to this one, long after we are gone. :)
 
I still have an operational Commodore 64C with the Basic manual that came with it. :) I no longer have the cord or the monitor it connects to, but I have used it in the past.
 
Trihexagonal I also have my old C64 piled somewhere, it was a nice computer with a true manual:) ... oh memories of those cassette loading failing so often; eyes down to the counter, it is more than 32, doh, loading failed, let's reboot:) old days

About programming languages for kids I think another important point is the teacher.
If you Spartrekus will be teaching use a language you know and like, so, if you know Basic, stick with that and classes will be fine !
 
I still have an operational Commodore 64C with the Basic manual that came with it.
I'm a bit of a hoarder when it comes to vintage computers. I still have a C-64, C-64c, SX-64 and a C-128D. Most of it is stored away though, but it should all be in working order.

Today, you should teach kids Python. If they are too young for Python, start with Scratch. Then, learn them Python.
Those are probably good to start with. Back when I was at school it was mainly Pascal they taught as a first language.
 
if I had a nephew/son and I would like to introduce him to the world of computers (as my uncle did for me once upon a time with C64) I would probably choose the automation way. Hook up a BeagleBone Black with some led, a copule of sensors and a motor, then use BoneScript as programming language. I am pretty much convinced he would be fascinated;)
 
How old those kids are we talking about?

My first time using a computer was in elementary school. I was 6yo and we learned the "Turtle Thing" (Logo), but I had to transfer. I went back to computer lessons and Logo a couple of years later, but this second time didn't last for a month.

I got my first PC when I was 11, oblivious of programming - and many other things. Eventually, "hacking" became a "trend" among some parties at school... I was 14 or 15. I took VB5 classes for half an year. Of course, at first I felt "WOW!" about making forms and buttons and all this stuff... but a month, two months later, you want to do something other than move a butterfly pic and laugh the same old bad joke with a "running YES/NO" button.

I had neither maturity nor proper understanding, at the time, to realize what I wanted in a way more solid than high school noise and nonsense about "invading this and hacking that". As for the lessons, they were more interested in getting paid than actually teaching something for real. "Magical commands" like static dim x as integer were needed to make "magic" happen (so the pic moves, the button flees and so on). Frustration started to pile up as well, as my own PC at home would not behave the way it "should". I revised the "enchantment", again and again and again, and my "tutor" would always blame some alleged typo of mine instead of explaining about how config mishaps and even hardware specs could play a role in the issues I'd claimed.

So I got into college to learn CS. All problems solved - well, nope. As SirDice remarked, Pascal is (were?) commonly thought as "first" language... and of having some weird "educational" purpose. "Fit for teaching/learning, period" was the only explanation I ever got when I asked, and I didn't ask too many times since an year of Logo (in elementary school) and six months of Visual Basic 5 barely counted as experience with "programming". And then what? I just felt: "Programming sucks!". I don't think like this today, of course, but it was a long and rough path.

I'd rather wish your kids could learn and like it from the very start.

I'd say any language could work. My bad experiences were my own fault and the lack of proper orientation. Don't try to make the kids believe in "magic". Also, no delving at syntax and language specification is needed nor suggested of course. But there are other, simpler ways of talking about system memory, configuration, interpreters, debugging, and even the language itself (as they will learn the basics and ask for more). Change names, drop formalism, I don't know but find a way to teach. Leaving them just puzzled and in despair every time the magic do not work as expected could just feel way worse and be twice as discouraging.

You can fix a configuration mishap for them, or you can say a file was out of place. You will be doing the work at first, of course, but the next time something go wrong, the kids will surely ask for help... after trying to move, break, fix, hack, crack and phrack whatever they think the problem is. Then, and only then, will they ask for help but not the "help to fix the issue". Rather, the "help to learn the answer" they couldn't find or deal with by themselves. And if they fail to grasp the meaning of this or that, who cares? They are kids, they have a whole life to fully grasp whatever they really want to.

It could be interesting like a game for them. But no game can be fun if every time they feel a sense of accomplishment by "mastering a skill", the system changes the rules and they're back to square one. The game is fun when you know it's not magic, but even if you're no expert you can at least conjecture, imagine, have but the faintest idea (maybe a wrong one and that is fine) about what the problem is. And is not your typo nor have you learned "wrong". Their sense of accomplishment will remain there - fairly.

Sorry for a long and roundabout reply but.. it just felt important to say it. As for what language, perhaps it's better for you - and them, in due time, why not? - to decide. AFAIK even CPC BASIC should be possible with emulators (never tried myself though).

Wish for you and the kids to have a nice and enjoyable experience whatever language you decide upon.
 
What most people don't seem to know is that the BASIC on the Commodore 64 was actually written by Microsoft.

Commodore licensed BASIC from Microsoft on a "pay once, no royalties" basis after Jack Tramiel turned down Bill Gates' offer of a $3 per unit fee, stating, "I'm already married," and would pay no more than $25,000 for a perpetual license.
Good ol' Jack certainly knew how to handle Bill Gates :D

https://en.wikipedia.org/wiki/Commodore_BASIC
 
Basic256 is well accepted and easy for kids, loving gifs with cats, lines, rect, ... colors, and more.

Next comes Pascal, and the legendary C.

(Python, it's suicide :beer:, it's an Unix forum here not Linux ;) )
 
I think (and I talk to lots of people who teach computers, in elementary school with Lego robotics, high school, and college) that Basic is a particularly bad choice for teaching. It installs a purely procedural and goto-based view of programming. In the old days, Pascal was considered a better alternative, but it has fallen by the wayside.

Similarly, while teaching C (or actually in practice C++) is necessary for professional programmers, it makes a really bad educational language, because the students have to focus on minutiae, without learning how to organize data and structure programs.

At the high school / college level (teenager and up), I think Python and Java are the most suitable languages for teaching an introduction to programming. For little kids, that's a more difficult question, to which I don't know the answer.

Having spent 25 years making my money by programming computers, and hiring and mentoring lots of new people: Those people who have learned programming in Basic or C *only* are usually quite brain-damaged when they get into a job, and it takes a long time to turn them into functioning software engineers. Once they understand how to write real-world software, you can let them loose on C again. But if anyone thinks that learning coding in C teaches you software engineering, they are very wrong; on the contrary, it detracts from understand what good programming skills really are.

One of the jokes I always make when interviewing and hiring people is this: I really don't care about their coding skills per se. I can take any stupid monkey and teach them how to code in C or Java or Perl or Python or whatever the language du jour is (it seems to change every few years). But I can't teach them to think, and there are plenty of coders out there who are not able to think, but can edit C source code that will compile and run. On the other hand, if I have an intelligent person who can analyze problems and design solutions, that person will also easily be able to learn coding skills.
 
My first time using a computer was in elementary school. I was 6yo and we learned the "Turtle Thing" (Logo), but I had to transfer. I went back to computer lessons and Logo a couple of years later, but this second time didn't last for a month.

You guys had it easy IMO.

When I was in school they used desktop adding machines with a crank handle on the side and pocket calculators weren't invented till I was in High School.

There was no such thing as computer classes back then. I was in my 30's before I used a computer and had to teach myself to use it.
 
Take the kids to rosettacode and let them decide what they like. And offer them different languages, with different ways to think. Forth, Modula, C, Lisp, Assembler(!). Rubbing the magic lamp and see the geenie come out is all very well, but kids want to know HOW something works. Encourage the thinking and not the point-and-click programming.
 
Take the kids to rosettacode and let them decide what they like. And offer them different languages, with different ways to think. Forth, Modula, C, Lisp, Assembler(!). Rubbing the magic lamp and see the geenie come out is all very well, but kids want to know HOW something works. Encourage the thinking and not the point-and-click programming.
Why have them to check this long list themselves? Where many BS language still have a entry (EX: brainfuck)? Many languages have syntax looks beautiful, but when try to use them it's a pain in the ass.

For my own, I would suggest trying F4 IDE (Fantom language). Looked complex but in real usage is easy. I tried taught a eight years old and it worked. You have to set up the environment for them, and after that they live and works only with the IDE, don't have to care about the complex thing behind it.

EX: rather than this BS (child want their code to run correctly, don't care about this):

C:
    /*

     * C program to accept N numbers and arrange them in an ascending order

     */

 

    #include <stdio.h>

    void main()

    {

 

        int i, j, a, n, number[30];

        printf("Enter the value of N \n");

        scanf("%d", &n);

 

        printf("Enter the numbers \n");

        for (i = 0; i < n; ++i)

            scanf("%d", &number[i]);

 

        for (i = 0; i < n; ++i)

        {

 

            for (j = i + 1; j < n; ++j)

            {

 

                if (number[i] > number[j])

                {

 

                    a =  number[i];

                    number[i] = number[j];

                    number[j] = a;

 

                }

 

            }

 

        }

 

        printf("The numbers arranged in ascending order are given below \n");

        for (i = 0; i < n; ++i)

            printf("%d\n", number[i]);

 

    }

they just have to write inside the IDE generated main method:

Code:
L := [1,5,6,7,8,9,40,458]
echo(L)
echo(L.sort)

then it's done. Focus on inspiring them and do some real thing that works.
 
Interesting that you know what every child wants... the choice is theirs, not mine or yours. If junior one day wants to learn FORTRAN, then so be it. It will not hurt him, it did not hurt me or granny before.

And if he/she wants to know what makes the thing tick, daddy fires up the disassembler and starts explaining. Or, maybe after that, digs out the old SPARC with the cadence installation. And the verilog manuals. And when they want to program in brainfuck, let them! You can give them arguments and let them make their own decisions. You should not make these decisions for them.

And, by the way, please take a closer look at your C code. It has unwanted features. ;)
 
I think (and I talk to lots of people who teach computers, in elementary school with Lego robotics, high school, and college) that Basic is a particularly bad choice for teaching. It installs a purely procedural and goto-based view of programming. In the old days, Pascal was considered a better alternative, but it has fallen by the wayside.

Similarly, while teaching C (or actually in practice C++) is necessary for professional programmers, it makes a really bad educational language, because the students have to focus on minutiae, without learning how to organize data and structure programs.

At the high school / college level (teenager and up), I think Python and Java are the most suitable languages for teaching an introduction to programming. For little kids, that's a more difficult question, to which I don't know the answer.

Having spent 25 years making my money by programming computers, and hiring and mentoring lots of new people: Those people who have learned programming in Basic or C *only* are usually quite brain-damaged when they get into a job, and it takes a long time to turn them into functioning software engineers. Once they understand how to write real-world software, you can let them loose on C again. But if anyone thinks that learning coding in C teaches you software engineering, they are very wrong; on the contrary, it detracts from understand what good programming skills really are.

One of the jokes I always make when interviewing and hiring people is this: I really don't care about their coding skills per se. I can take any stupid monkey and teach them how to code in C or Java or Perl or Python or whatever the language du jour is (it seems to change every few years). But I can't teach them to think, and there are plenty of coders out there who are not able to think, but can edit C source code that will compile and run. On the other hand, if I have an intelligent person who can analyze problems and design solutions, that person will also easily be able to learn coding skills.

I discussed with univ. leaders in field of education (informatics and especially programming, well recognized institution).
They will re-implement education first basic introductions to programming with as follows:
- Pascal !!
Yes.
- I think that it is a good choice. Anyhow, any programming languages has some drawbacks.

Of course, python is popular.

C / C++ is the most important programming language, to be learned. Whatever people may say. It makes good sense to learn C / C++, over Python. At least,... you will get a job easier with knowing C / C++ than Python :)
 
Whatever people may say. It makes good sense to learn C / C++, over Python. At least,... you will get a job easier with knowing C / C++ than Python :)
Without this turning into a language war, I agree entirely. After all, most languages (i.e including Phantom) are themselves written or depending on C/C++. For example, Phantom requires a large bloated JVM or .NET VM to run... These monsters are themselves written in C++.

Reducing dependencies and cross platform portability are sometimes more important than a nifty language feature or slightly reduced number of lines of code. And they are not *much* harder to learn. I say, throw the kids in at the deep end! ;)
 
Back
Top