hamster
Posts: 23
Joined: Fri Sep 23, 2011 10:20 pm

Re: Best first language

Fri Dec 02, 2011 4:15 am

I know that this is not really the place to use the 'A' word, but I'm sure that a lot of you have tried small embedded development projects with Arduino. (For those who haven't it is just a nice GUI wrapper around gcc and a few libraries it is very,very swish and very usable).

It makes it ideal for entry level hardware hacking. So much so that if I was asked to teach some tweenies to program I would be tempted to use Arduino and something like a Pololu 3pi robot, which I simply adore (http://www.pololu.com/catalog/...../resources).

- Drag racing (harder than you think - you have to maintain traction!),
- line following
- using the LCD and buttons
- playing music
- navigation
- dealing with the real world
- maze solving

All very good fun... (well I think so).

And all the time you are learning C, with the nasty bits largely hidden away.

Panyk
Posts: 2
Joined: Mon Oct 24, 2011 4:39 pm

Re: Best first language

Fri Dec 02, 2011 5:18 am

Well, I'm not so sure about best, but the language I started with was Object Oriented Turing. It doesn't make you muck around with anything too deep, while still allowing for the range of experimentation that a kid would want, including built in simple graphics. On the downside, it's very lenient, which meant I had to learn my way out of the stupid tricks it made me pick up. It's very visibly a teaching language, but in this case that's not a negative.

User avatar
Luny
Posts: 113
Joined: Tue Nov 29, 2011 12:29 pm
Location: Ewell, Surrey
Contact: Website

Re: Best first language

Fri Dec 02, 2011 10:56 am

Quote from jamesh on November 17, 2011, 14:39
I think that might put off more people than it attracts! Modern Arm assembler is pretty complicated.

Really? A reduced instruction set? OK pipes etc might get a bit complicated, but if you just taught the basic registers, storing and loading, logic & branching, that shouldn't be too taxing. Simple functions for drawing lines & rects onto the video should be a good tutorial. ARM is a lot easier than say x86 architecture.
Luny

steve_spt
Posts: 7
Joined: Wed Nov 16, 2011 6:30 pm
Contact: Website

Re: Best first language

Fri Dec 02, 2011 4:38 pm

When I got hold of a RPI I will be working / teaching in Forth!

andreblum
Posts: 1
Joined: Sat Dec 03, 2011 12:48 am

Re: Best first language

Sat Dec 03, 2011 1:13 am

30 years ago, I learned programming from books from the public library. I didn't even have a computer back then, but that didn't stop me. About 10 years old, I typed out BASIC programs on a typewriter, just to satisfy the itch for programming these books generated. In the mean time I was dreaming of having a computer of my own.

With the Raspberry Pi's price tag, I can now actually imagine a kids programming book on display in a bookstore with a Raspberry Pi shrink-wrapped in and the words "NOW INCLUDES THE COMPUTER!" printed on it.

The language is not really important, though I'd personally use Python for this. What is important is that the author of such book knows where to stop. It's just to make the start, you know. Plenty of info beyond that can be found online or in other books.

UPDATE: after some googling, found this, which looks nice: http://www.briggs.net.nz/log/w.....-for-kids/

nullstring
Posts: 178
Joined: Sun Oct 02, 2011 3:05 pm

Re: Best first language

Fri Dec 09, 2011 1:36 am

My personal opinion:

First programming language as a hobby- php

Way easy to get something thats actually useful.
Follow C-esk syntax
But it's really sort of terrible, so, it's a bad language for a course.

First programming language as a course- C

hamster
Posts: 23
Joined: Fri Sep 23, 2011 10:20 pm

Re: Best first language

Fri Dec 09, 2011 2:54 am

Quote from nullstring on December 9, 2011, 01:36
My personal opinion:

First programming language as a hobby- php

...
But it's really sort of terrible, so, it's a bad language for a course.


I like PHP - it's sort of the "rocky horror" of languages... a language that is so bad that it's good.

Mike

Lakes
Posts: 267
Joined: Wed Aug 24, 2011 2:17 pm

Re: Best first language

Fri Dec 09, 2011 11:13 am

Quote from andreblum on December 3, 2011, 01:13
[snip]
With the Raspberry Pi's price tag, I can now actually imagine a kids programming book on display in a bookstore with a Raspberry Pi shrink-wrapped in and the words "NOW INCLUDES THE COMPUTER!" printed on it.

£20 is a bit steep for a magazine,maybe a magazine series, with a voucher in each issue that you collect, a number of vouchers gets you a Computer. :)

EDIT: Oops!, Sorry!, I just reread that, where did I get magazine from?? :)

aho
Posts: 3
Joined: Sat Dec 10, 2011 3:26 pm

Re: Best first language

Sat Dec 10, 2011 3:37 pm

I believe that the first language doesn't really matter, but I do think that it's important that the language itself is very simple. It doesn't need to be a "good" language.

I even think that BASIC is fine, because it can show you how bad GOTO actually is.

hamster
Posts: 23
Joined: Fri Sep 23, 2011 10:20 pm

Re: Best first language

Sun Dec 11, 2011 12:32 am

Quote from aho on December 10, 2011, 15:37
I even think that BASIC is fine, because it can show you how bad GOTO actually is.

Hey! I like gotos in C! :-)

Using them is many times better than nested if/else blocks for dealing to exceptions. The main flow of code stays clean, and on error it jumps to a nice structured cleanup. Like shown in this guy's blog: http://eli.thegreenplace.net/2.....ling-in-c/

And to quote "The Tao of Programming" (which really needs to be updated for the new century):

There once was a master programmer who wrote unstructured programs. A novice programmer, seeking to imitate him, also began to write unstructured programs. When the novice asked the master to evaluate his progress, the master criticized him for writing unstructured programs, saying, ``What is appropriate for the master is not appropriate for the novice. You must understand the Tao before transcending structure.''

User avatar
johnbeetem
Posts: 945
Joined: Mon Oct 17, 2011 11:18 pm
Location: The Mountains
Contact: Website

Re: Best first language

Sun Dec 11, 2011 12:51 am

Quote from hamster on December 11, 2011, 00:32
Hey! I like gotos in C! :-)

Using them is many times better than nested if/else blocks for dealing to exceptions. The main flow of code stays clean, and on error it jumps to a nice structured cleanup.

That is so true. Structured programming involves having clean control flow, and goto is often cleaner than a bunch of flags. Along with exception handling,it's also useful for breaking out of nested loops and/or switch statements. If the flowchart it clean, it's structured.

OTOH, longjmp is a pain in the neck. Don't forget to #include <afterthoughts.h>.

Bakul Shah
Posts: 324
Joined: Sun Sep 25, 2011 1:25 am

Re: Best first language

Sun Dec 11, 2011 12:17 pm

If you want to go somewhere,
goto is the best way to get there.
-Ken Thompson

You guys may appreciate this: How to read code from top to bottom

wizbit
Posts: 4
Joined: Sun Dec 11, 2011 9:32 pm

Re: Best first language

Tue Dec 13, 2011 11:06 pm

Interesting thread... from long perusal here and following fo links the promising ones seem to be:
- Turtle Art in sugar (with note that sugar may be a pig to get working under RPi)
- Python (with note that it will be the education focus of RPi)
- Scratch (more due to the number of positive references in related discussion on the web)
- Kodu (for very different hardware)

Not knocking the others in any way. Just these seem to have the support and accessability for teaching my child. I would also note that my thinking is based on my daughter being very visually inclined (though maybe all kids are I only have experience of one so far) so something like Turtle Art or Kodu really appeal.
Scratch may end up higher on the list once I know more about it and Python is definately a moving onto later (she's 3 so not even sure she'll get that much out of turtle art... but we'll see how she reacts).

... on the slightly off topic goto subject here's another quote for you:
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
- anon (might be John Woods)

hastklass
Raspberry Pi Certified Educator
Raspberry Pi Certified Educator
Posts: 34
Joined: Mon Dec 12, 2011 11:20 am
Location: Cambridge

Re: Best first language

Thu Dec 15, 2011 12:00 pm

wizbit,
Your summary is spot on - LOGO for 4 to 8 year olds - then onto Scratch. Your daughter would probably like GameMaker - very visual and fun. You can design and create games with her. I read recently that the creator of GameMaker - Mark Overmars (Yo Yo Games) is aware of the R-Pi and is eager to see GameMaker running on it. I would put GameMaker alongside Scratch for its motivational appeal. It also represents a fantastic introduction to OOP.

User avatar
DavidS
Posts: 4334
Joined: Thu Dec 15, 2011 6:39 am
Location: USA
Contact: Website

Re: Best first language

Thu Dec 15, 2011 4:09 pm

I would have to say that there should be a couple levels in teaching kids a first programming language:
1) For the very young (4 to 7 [first time programming]) something that illustrates algorithms in a fun way (eg LOGO).
2) For kids that already have step one down, or kids that have a slightly higher level of education, move on to at least 2 simple interpreted languages (that can be compiled), that are procedure oriented. Perhaps Pascal and FORTH, or interpreted C and BASIC, or something else of equal simplicity.
3) Once they have these down they should be taught at least one RISC assembly, and one CISC assembly language.
4) Once they have all the above teach them multiple module compiled procedural languages, like C, Pascal, Ada, etc..
5) Apply the above concepts to multi module assembly.
6) Conceptual teachings (this should be held till they are at least 12years of age) such as tree parsing, analytic geometry, etc..
7) Teach them to put it together by having them write there first compiler from the ground up.
RPi = The best ARM based RISC OS computer around
More than 95% of posts made from RISC OS on RPi 1B/1B+ computers. Most of the rest from RISC OS on RPi 2B/3B/3B+ computers

tufty
Posts: 1456
Joined: Sun Sep 11, 2011 2:32 pm

Re: Best first language

Thu Dec 15, 2011 4:19 pm

Quote from wizbit on December 13, 2011, 23:06
Interesting thread... from long perusal here and following fo links the promising ones seem to be:
- Turtle Art in sugar (with note that sugar may be a pig to get working under RPi)
- Python (with note that it will be the education focus of RPi)
- Scratch (more due to the number of positive references in related discussion on the web)
- Kodu (for very different hardware)


KidsRuby is probably worth looking into, as well. Already running on the Pi, and has a turtle built in...

Quote from wizbit on December 13, 2011, 23:06
... on the slightly off topic goto subject here's another quote for you:
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
- anon (might be John Woods)

Hah.

User avatar
DavidS
Posts: 4334
Joined: Thu Dec 15, 2011 6:39 am
Location: USA
Contact: Website

Re: Best first language

Sat Dec 17, 2011 7:01 pm

Ok we all seem to agree that it needs to be something simple, interactive, and instructive. So beyond this I say leave the rest of the decision to what the instructor is comfortable teaching.
RPi = The best ARM based RISC OS computer around
More than 95% of posts made from RISC OS on RPi 1B/1B+ computers. Most of the rest from RISC OS on RPi 2B/3B/3B+ computers

User avatar
scep
Posts: 1062
Joined: Sun Nov 20, 2011 8:53 am

Re: Best first language

Sat Dec 17, 2011 8:16 pm

Quote from DavidS on December 15, 2011, 16:09
I would have to say that there should be a couple levels in teaching kids a first programming language:
1) For the very young (4 to 7 [first time programming]) something that illustrates algorithms in a fun way (eg LOGO)
.....
7) Teach them to put it together by having them write there first compiler from the ground up.

So what should I teach them after I bring them out of the basement for the first time on their 14th birthday? ;)

Seriously though: computing should be fun, not some Shaolin Temple of Coding. And concepts could and should be taught much earlier on - kids don't even need to touch a computer to get their heads around the basics and to start thinking. See for example the excellent Computer Science Unplugged.

wizbit
Posts: 4
Joined: Sun Dec 11, 2011 9:32 pm

Re: Best first language

Sat Dec 17, 2011 9:08 pm

Okay so KidsRuby and Gamemaker on the reading list and being sat alongside scratch on my list.
Will take a while to read through all that and get started but I'll ping my experiences and findings either here or on a new topic if this is lost in the mists of time by then.

Quote from DavidS on December 15, 2011, 16:09
So what should I teach them after I bring them out of the basement for the first time on their 14th birthday? ;)

I say keep 'em down there.. even cheaper than offshoring.. could be the business model of the future.

User avatar
Burngate
Posts: 6372
Joined: Thu Sep 29, 2011 4:34 pm
Location: Berkshire UK Tralfamadore
Contact: Website

Re: Best first language

Sun Dec 18, 2011 10:27 am

The Bung-hole method of Child-rearing:
When a child is born, place it in a barrel, nail on the lid, and feed it through the bung-hole.
When it reaches adolescence, hammer in the bung.

zeeteex
Posts: 43
Joined: Sun Dec 25, 2011 10:59 am

Re: Best first language

Sun Dec 25, 2011 11:35 am

I have read up about the different languages that can be tried, and after experimenting with Java (spent a few months with books and eclipse on my PC) I kind of gave up with a defeatist attitude. So, I'm hoping (Seen as I'm only 15) to get my RasPi as soon as possible and I'm going to try and learn how to use Perl. It seems relatively flexible and versatile, and it can also be implemented on Windows.

Exciting Stuff 
Raspi
arm_freq=1150
sdram_freq=600
gpu_freq=500
over_voltage=8

Wooloomooloo
Posts: 92
Joined: Fri Nov 25, 2011 10:52 am

Re: Best first language

Sun Dec 25, 2011 1:07 pm

Oh, you mean like running Strawberry Perl on Raspberry Pi...?

...yeah, I know, that's a Windows distribution that wouldn't run on the Pi, but this was hard to miss... :)

zeeteex
Posts: 43
Joined: Sun Dec 25, 2011 10:59 am

Re: Best first language

Sun Dec 25, 2011 3:28 pm

Wooloomooloo said:


Oh, you mean like running Strawberry Perl on Raspberry Pi...?

...yeah, I know, that's a Windows distribution that wouldn't run on the Pi, but this was hard to miss... :)


Haha! I didnt even think of that :P
Raspi
arm_freq=1150
sdram_freq=600
gpu_freq=500
over_voltage=8

dylansmith088
Posts: 1
Joined: Fri Dec 30, 2011 4:58 am
Contact: Website

Re: Best first language

Fri Dec 30, 2011 5:05 am

It is really hard to say but it would also depend on the kid's interest. Perhaps instead of languages you could go in for teaching html or dreamweaver or photoshop or flash which can be useful in creating animations. These would at least appeal to them. What say? Check out more on training.

User avatar
riffraff
Posts: 307
Joined: Tue Sep 27, 2011 3:17 am
Location: Newnan, Georgia, US

Re: Best first language

Fri Dec 30, 2011 9:16 am

I downloaded Scratch for Windows recently to see what the hubbub was about. I was really amused by what was going on in the left hand and middle panels. It resembled an IDE helper I'd cobbled up for Visual Basic many many years ago.

I was confronted with a cheating problem when I was teaching. All of us instructors were "encouraged" to produce exams with only multiple choice or T/F answers. Since this made it too easy for students to pass answers, the use of multiple test versions was "suggested".  I could see this was going to be a major asspain, so I sat down one night and built myself a test generator in Access.

Each record contained a course module, exam topic and question subject header followed by a text references, the question, an alternate wording of the question, a list of possible answers with a radio button for the correct answer, and a BLOb field for an accompanying diagram if desired.

The report used the selected exam topic to generate three unique tests, each with a randomized order of questions with alternate phrasings and randomized answer order along with a key.

The first time I administered one of these, I wish I'd videotaped it. The reactions were hilarious. Heads swiveling, feet and pencils tapping, hands wringing, sweating and swearing. As I expected, when I graded them, only one student passed. I got called everything but a child of God. Then I informed them they'd get the real exam in two days and handed out copies of a study guide created from the question subject header and text references. Every instructor wanted to copy my tests, so I gave them all floppies with the Access database instead.

A few months later I was working on several VB projects and I took that same gadget and converted it into code library. It made it simple to select all of the function calls, procedures, lib dependencies and associated support code so I could create a preliminary code structure for my projects. All that remained was to connect the dots.

I was delighted when I saw Scratch, the left and middle panels do exactly what I'd wanted to do if I'd had the time to polish that custom IDE. The goal was to have a TOC tree in the left panel containing all available procedures and function calls, a drag and drop workspace in the middle and a display of the resulting code on the right.

I haven't done a lot of programming in the last ten years, so I'm not familiar with what development environments are out there. That's something I aim to correct in the near future, but I would hope in this day and age that there are IDE's like this that allow the user to focus more on the programming goal and less on the vagaries of syntax.

AND, it needs to either be interpreted or have some sort of run time emulation so that the code can be tested quickly and often.

I'm not trying to belittle the need for learning to create well structured, correct and commented code, but understand that if you want something to succeed in a classroom environment you have to do something to accelerate the learning curve. You're dealing with limited class time and the limited attention span of post-media-explosion minors who need to see results immediately to remain enthusiastic. Patience and precision only come with maturity. You just have to start with a paradigm that harkens to Legos or K'NEX (BTW, I think both boys and girls should be given some sort of construction toys at a very early age) and keep reminding them that big boys and girls don't need the crutch.

What language you choose, C++, Python or a structured BASIC matters less than the environment it's presented with.  You need to start with the IDE like Scratch and take the student through a process of evolution that maintains that kind of structure. Remember that you ultimate goal is not to create a C programmer, or a Java programmer or Python, BASIC or Perl - you are trying to create a problem solver. It's more important to give them a development environment that helps build that "theater of the mind" where all programming scenarios will be played out in their future. The richer the tools you provide them to do that with, the more productive they will be in adulthood.

Return to “Staffroom, classroom and projects”