×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Learning Programming In a Post-BASIC World

Soulskill posted more than 2 years ago | from the have-you-tried-going-to-10 dept.

Programming 510

ErichTheRed writes "This Computerworld piece actually got me thinking — it basically says that there are few good 'starter languages' to get students interested in programming. I remember hacking away at BASIC incessantly when I was a kid, and it taught me a lot about logic and computers in general. Has the level of abstraction in computer systems reached a point where beginners can't just code something quick without a huge amount of back-story? I find this to be the case now; scripting languages are good, but limited in what you can do... and GUI creation requires students to be familiar with a lot of concepts (event handling, etc.) that aren't intuitive for beginners. What would you show a beginner first — JavaScript? Python? How do you get the instant gratification we oldies got when sitting down in front of the early-80s home computers?"

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered

510 comments

Shameful (-1)

Anonymous Coward | more than 2 years ago | (#36555918)

I bet Taco can't even code his way out of an Outlook mail rule at this point in time. Just shut this site down and replace it with an adwords blog, nobody would even notice the difference.

what I did (0)

Osgeld (1900440) | more than 2 years ago | (#36555926)

I wanted to try something new, and guess what Visual Basic 2010 express, so in a post basic world I am checking out the newest MS basic

its not the end all be all for everything, but its letting me whip out simple apps for windows which I am thankful for at work

Re:what I did (1)

The MAZZTer (911996) | more than 2 years ago | (#36555992)

I wouldn't call VB.NET a starter language. Maybe for someone who wants to get a bit more serious, since you have the visual designer and it'll generate skeleton event handler functions for you to fill in.

Re:what I did (1)

pyrrish (2202194) | more than 2 years ago | (#36556112)

Although I had QBASIC as a child, I also learned on VB and I think an "industrious" young person would have no problem picking up the basics in today's world of languages.

Re:what I did (5, Insightful)

i kan reed (749298) | more than 2 years ago | (#36556142)

God no. Visual basic is a very syntax sensitive language with huge libraries. It is like the anti-beginner language. Even microsoft's other major .NET offering(C#) is better.

My reccomendation is python, with a lean towards using graphics libraries like vpython. Being able to go mysphere=sphere() is glorioiusly simple and have it show up in 3d is grand.

Python has the following features that are great for learning:
interactive debugger- type your program line by and and see what each line does.
english-like syntax(except elif). As much as possible, python is designed to be written as it would be read out loud. eg: for item in array: print item
at the language level, absolutely no machine restrictions. Integers can get as big as your ram, no pointer math,

It's almost certainly the best choice.

Re:what I did (3, Funny)

fuzzyfuzzyfungus (1223518) | more than 2 years ago | (#36556300)

Are you implying that my habit of using "elif" in natural-language conversation may be marking me out as some sort of deviant geek weirdo?

Re:what I did (1)

navyjeff (900138) | more than 2 years ago | (#36556322)

Agreed. I suggest Python to any aspiring programmer who asks me.
Here's a great place to start. [learnpytho...ardway.org]
And another good one. [greenteapress.com]

Re:what I did (5, Interesting)

CastrTroy (595695) | more than 2 years ago | (#36556488)

Python is not a good solution. Especailly if you are worried about syntax sensitivity as your parent poster was. Sure white space is a good thing to organize your code, but the actual execution of your program shouldn't be changed by the lack of whitespace. Python is a pretty good language overall, but forcing beginners to understand that whitespace makes a difference in how something executes is asking for trouble.

Re:what I did (1)

rainmaestro (996549) | more than 2 years ago | (#36556482)

Definitely agree with Python.

In addition to all the points you made, there's one other that I find to be a great help for newbies: the sheer volume of libraries available. When 99% of the low-level stuff can be done with existing libraries, it allows the newbie to focus on the big picture and slowly work down into the details.

Nearly any language is a starter language (-1)

Rob Kaper (5960) | more than 2 years ago | (#36555952)

As a beginner, you're not refactoring OOP abstract classes to optimise compiler performance in a distributed system.

You edit string values generated by simple if/else statements in trivial pieces of code. And you can do that in nearly any language. You pick up more details as you progress. If you don't progress or lose interest, you're not a programmer. If you are, any language will do to find out.

Re:Nearly any language is a starter language (1)

revjtanton (1179893) | more than 2 years ago | (#36556446)

It's still important to get a good base going I think. Start with languages that did it first and understand the concepts then you're in a better place when you get to the more complicated functions.
http://wibit.net/ [wibit.net]

Re:Nearly any language is a starter language (0)

Anonymous Coward | more than 2 years ago | (#36556520)

I agree, and starting with a less pleasant language might weed out those who don't really have the aptitude for programming. Personally, I started with a mid-70's programmable calculator, and went from there the Fortran. If I'd started with C# or something easy like that I might not have become the programmer I am today.

And why doesnt BASIC still work? (5, Insightful)

ninthbit (623926) | more than 2 years ago | (#36555956)

And why doesnt BASIC still work? Any reason they can't still use BASIC?

Re:And why doesnt BASIC still work? (1, Informative)

tepples (727027) | more than 2 years ago | (#36556072)

And why doesnt BASIC still work?

Because Apple has banned it from the iPhones and iPads that most of the "cool kids" are using nowadays. In fact, Apple pulled a Commodore 64 game from the iOS App Store [google.com] solely because the player could reboot the emulated C64 into the REPL of ROM BASIC.

Re:And why doesnt BASIC still work? (2, Informative)

MightyYar (622222) | more than 2 years ago | (#36556460)

Because Apple has banned it from the iPhones and iPads that most of the "cool kids" are using nowadays.

Bogus. All interpreters are banned, not just BASIC.

And they run javascript sites just fine, some [calormen.com] of [osaware.com] which [yohan.es] implement BASIC [quitebasic.com].

Re:And why doesnt BASIC still work? (2)

chemicaldave (1776600) | more than 2 years ago | (#36556168)

It does still work. My, and my friends', first exposure to programming was with TI-BASIC on our TI-83+ calcs when we were in 8th grade. Assuming graphing calcs are still widely used, it seems like a very easy method of exposing first-timers to programming. Unfortunately, programming using the keypad is a huge pain, but can also be done on a computer.

Re:And why doesnt BASIC still work? (0)

Anonymous Coward | more than 2 years ago | (#36556396)

You had graphing calculators in 8th grade? Man, am I jealous...

Re:And why doesnt BASIC still work? (2)

mcvos (645701) | more than 2 years ago | (#36556226)

I suppose, but it's also a community thing. My brother learned to program at a young age mostly by typing BASIC code from hobby computer magazines, by recording binary from hobby computer radio shows. Do such magazines and radio shows still exist?

Well, of course there's the Web with more stuff than there ever was in the past, but that can also make it harder to find what you really need. For example, are there any introductory programming websites in Dutch? English might be an extra hurdle for non-native speaker kids.

Re:And why doesnt BASIC still work? (0)

exploder (196936) | more than 2 years ago | (#36556232)

I started programming on Apple ][ BASIC, and for a long time I believed that anything the computer could do, it could be programmed to do in BASIC. Eventually, I found out that you needed some machine language code to do a lot of things (even sound--the way you generated a tone on that computer was to "tick" the speaker in an explicit loop, and in BASIC you could practically hear the individual ticks!), but that didn't happen until I'd encountered and solved many problems on my own.

Even playing the best games of the time, I felt like given enough time and mastery of the language, I could produce something comparable in BASIC, and that drove me on, for a long time. Give a bright kid a BASIC interpreter now, and they'll ask you, "what's the point of this?"

Re:And why doesnt BASIC still work? (2)

TheCarp (96830) | more than 2 years ago | (#36556276)

I started with Applesoft BASIC myself.

Honestly, I, it took me a long time to get over the bad habits that BASIC taught me, as it is so far removed from modern languages that its barely worth discussing.

It only had the most basic concept of subroutines, no functions. Line number based references? No concept whatsoever of memory allocatio or lexical scoping....

I would say that C is great, even if the vast majority of the time, doing memory allocation "by hand" sucks and delivers no benefit. However, most work is going to be done in higher level, modern languages. Assembly is still worth tossing in there at some point (I wouldn't start there) to really drive home "how the computer works" and to give you some respect for the tools you have.

BASIC though? I loved playing with it but, I found that learning C after it basically meant starting from scratch.

Sorta (1)

Moraelin (679338) | more than 2 years ago | (#36556372)

Sorta. I dunno about others, but what got me interested in programming when I was a wee little lad was that I could make something fun and immediately see the results. All games on my parents' old ZX-81 with 1K RAM (yes, 1024 bytes of RAM, total) were really far more primitive than your typical cell phone game these days. It wasn't hard to get ideas like "I can do better" and actually do so. I actually invited a few friends to play my own primitive strategic bombing "simulator", and they actually found it fun.

But therein lies the rub. It wasn't just the possibility to use BASIC as such. BASIC was just a tool, and the Sinclair BASIC was a piss-poor tool at that, being easily the slowest BASIC of that era. I actually "graduated" directly to machine code after a year, because ZX-81 basic was just too slow, and 1K RAM wasn't enough to run an assembler or compiler.

What mattered was seeing some fun results.

Think of it, dunno, like the quests on WoW. Nobody would run across half the continent and back just for the sake of running across half the continent and back. But throw in a reward, and it becomes fun.

Similarly, nobody learned BASIC for BASIC's sake, and I can assure you that nobody who's not terminally schizophrenic would do something as horrible as converting assembly to hex codes by hand, just for the sake of converting opcodes to hex codes by hand. We did it for the sake of seeing some results at the end.

I'm not sure most of the BASICs around can work like that. I most certainly wouldn't have learned BASIC for the sake of programming a fucking spreadsheet or a Word macro. When you're a kid and do that in your free time instead of playing something or hanging with some friends, if your dream in life is to make a better spreadsheet macro, you need professional help. Plus, it's not the kind of thing you can brag to other kids about.

But I think all is not lost. If I were to get some kid interested in coding these days, I'd get them a moddable game. Scripting a new NPC or quest in Fallout New Vegas gets one a tangible reward in a reasonable amount of time, and some bragging rights after you upload it to a couple of mod sites. Or there are several games that are scripted in Python these days, which also has the advantage of being a skill you can take with you to the next game that uses Python for scripts.

Re:And why doesnt BASIC still work? (1)

Bengie (1121981) | more than 2 years ago | (#36556406)

I tried BASIC as a kid. Hated it, so I stopped learning to program. A few years later, I stumbled across C++, loved it, so I started to program. I found ASM much more fun than BASIC.

I felt like I was scripting with BASIC, wanted to tell the CPU what to do, not what the scripting engine should do.

Android (Java), Flash (Flex), Objective-C (OSX) (1)

Kenja (541830) | more than 2 years ago | (#36555960)

Off the top of my head, three languages and platforms with which one can quickly produce GUI based apps. Android's Java is very approchable and you can do your "hello world" type app in a few lines of code. Likewise, Flex (aka Flash for apps) is for lack of a better word, flexible and lets you use a nice combination of Actionscript and XML to build apps quickly. And finally, Objective-C is very user friendly and can be found bundled with OSX or you can get a copy of Borlands C++ Builder.

Re:Android (Java), Flash (Flex), Objective-C (OSX) (0)

Anonymous Coward | more than 2 years ago | (#36556076)

None of which are beginner friendly and very unlikely to generate interest from kids. You obvious have no idea what the poster means by their BASIC reference. Clue: it has nothing to do with VB, and goes back to 8 bit micros.

Re:Android (Java), Flash (Flex), Objective-C (OSX) (1)

Kenja (541830) | more than 2 years ago | (#36556126)

Yes, cause all them kids are screaming for GOTO commands and would HATE to make flash and android apps.

All three examples I listed are very beginner friendly yet let you build actual apps you can run on hardware and systems made this decade.

Re:Android (Java), Flash (Flex), Objective-C (OSX) (0)

Anonymous Coward | more than 2 years ago | (#36556414)

Obj-C is "very" beginner-friendly???? Fucking hell, what children have you been meeting?

Maybe this is hard for you to understand, since you obviously already know the languages. For a person who has never programmed in their life, Obj-C is not beginner-friendly. Neither is Flash. I've never used it, but apparently neither is Java.

Re:Android (Java), Flash (Flex), Objective-C (OSX) (1)

Anonymous Coward | more than 2 years ago | (#36556140)

We're talking about kids or adults who never had any programing experience. Do you honestly believe that Objective C is a good starting language? For beginners stick with BASIC, Python or other easy to use languages.

Re:Android (Java), Flash (Flex), Objective-C (OSX) (1)

Kenja (541830) | more than 2 years ago | (#36556492)

Depends on which platform I guess. For example, going back to the BeOS Objective-C making a window was just MyWindow = new BeWindow();. On other platforms it can be more complex. But in general I do find that Objective-C is approachable with the right tools. But Android or Flex would be better to get started with.

I like Ruby (4, Informative)

jarich (733129) | more than 2 years ago | (#36555966)

It's lightweight, portable, and has a ton of interesting projects for learning. Start here at http://www.ruby-lang.org/en/ [ruby-lang.org] Check out the "Try Ruby in Your Browser link" on the right hand side.

Re:I like Ruby (5, Informative)

mcvos (645701) | more than 2 years ago | (#36556258)

If I recall correctly, Ruby also has Hackity, a programming environment specifically for kids.

wxPython (1)

sgt scrub (869860) | more than 2 years ago | (#36555974)

wxWidgets and Python are a good combination of easy to learn and visually satisfying results. The later being for positive reinforcement. Oh. And using it to write more practical programs in the future isn't hindered by a boat load of patents.

Web browser provides instant gratification GUI (0)

Anonymous Coward | more than 2 years ago | (#36555988)

HTML4 is super easy, any middle-schooler could start there. Branching out to some client-side javascript is a cakewalk, and PHP from there is a pretty sort jump and surprisingly powerful. If you want to do some 'real' programming, SDL makes the GUI side a lot more accessible.

GUI? (1, Interesting)

fisted (2295862) | more than 2 years ago | (#36555996)

Beginners should not start with creating GUIs in the first place. (Neither did early BASICs support such a thing)

This story is re-run monthly under different title (2)

Shompol (1690084) | more than 2 years ago | (#36556006)

Just the top two google results:

http://ask.slashdot.org/story/08/07/22/0452225/How-To-Encourage-a-Young-Teen-To-Learn-Programming

http://ask.slashdot.org/story/10/07/30/2150208/How-Should-a-Non-Techie-Learn-Programming

Someone should keep track of them. Maybe stash them in some "Learn to Program" folder on Slashdot?

JavaScript (2)

tepples (727027) | more than 2 years ago | (#36556008)

I'd say go for the JavaScript. The learner already has the instant gratification of an HTML document. Then add a button whose onclick handler changes the button's value to "Hello World".

How is event handling unintuitive? "When this happens, do this and this and this."

Re:JavaScript (2, Insightful)

Anonymous Coward | more than 2 years ago | (#36556082)

I would say python. As event driven is not something people get right away. But people can think in sequences.

What trips people up is 'button click', 'magic happens', 'your code is called'. That messes with people for some reason as the 'magic happens' means they do not control it. When you are starting out you want some feeling that you control it.

Re:JavaScript (1)

mackil (668039) | more than 2 years ago | (#36556472)

When I got the opportunity to teach a programming class for the local Home Link group, I chose Javascript because of the network lockdowns that the admins had put in place in the classroom. That way I avoided running into any permissions problems or having to reinstall a compiler or JVM every time we had a class.

It worked great as a beginning course. The ability to just run the script in the browser, and to build something "cool" in a matter of minutes, really opened their eyes to a whole new world on the computer. A number of them have gone onto getting their CS degree, which is rather gratifying.

How is Python different than Basic? (1)

strangeattraction (1058568) | more than 2 years ago | (#36556012)

Python or JavaScript or whatever maybe be currently in vogue but the act of programming transcends languages. Just pick one and do it. Python can be used with or without the "back story" depending on what you want to do. Once you are in the GUI world it is pretty much all back story.

Good starter languages? (2, Insightful)

betterunixthanunix (980855) | more than 2 years ago | (#36556026)

I can think of a few, a little bit more advanced than BASIC but which should suffice for a beginner:
  • Scheme
  • Python
  • Shell scripting languages (I won't even try to list them all)
  • VBScript (as far as I know, this is still shipped with Windows)

Re:Good starter languages? (2, Insightful)

Anonymous Coward | more than 2 years ago | (#36556254)

Scheme?! You've got be kidding!

There's Alice (3, Informative)

rsilvergun (571051) | more than 2 years ago | (#36556032)

Google it. Especially if you like the Sims, try the 3.0 beta. Other than that I'd second HTML + Javascript. You can very quickly get up an running with something fun and interesting.

Bah! It is easy! (0)

Anonymous Coward | more than 2 years ago | (#36556038)

Learn electronics, then learn assembly language. You do it in that order to prevent brain damage. Then you learn C. Again, no brain damage.

Then you get a job and don't touch another language for the rest of your life. You'll get enough brain damage from the drinking you'll need to do to survive as a programmer.

BASIC is and has always been terrible (2)

Toksyuryel (1641337) | more than 2 years ago | (#36556052)

The only thing it will do for you is give you serious brain damage. Python is widely recommended as a good starter language that is also good as a serious language. Following from that you can easily branch to Perl, Ruby, Haskell, even C (which I recommend learning after Python if you can).

Re:BASIC is and has always been terrible (1)

revjtanton (1179893) | more than 2 years ago | (#36556508)

Agreed about BASIC! It's poo.
Python is a great scripting language, but I've got to disagree with your ordering of learning. I would recommend doing C, then C++, then move on. Get a strong core in OOP concepts will help you learn any other language you want.
http://wibit.net/ [wibit.net]

Powershell (1)

Ryxxui (1108965) | more than 2 years ago | (#36556054)

Alright, so I'm willing to accept that this is a strange position to take...but if I was asked to teach my girlfriend to write code, the first thing I would do would be to try teaching her Powershell. Powershell, for those of you who have never heard of it, is a sweet scripting language introduced by Microsoft in Windows 7 (although it is available for Vista and XP). I've heard it compared to Perl a bit; there's dynamic typing, little scope, and access to the lion's share of the usefulness of the .NET framework. I figure that if I gave her some of the basics (here's how to do some math, here's how to do string operations, here's how to find more information about this stuff) she'd be able to use the built-in help (it can be used as a command line or in an ISE, both installed by default in W7) and my advice to get her started. I just find PS to be incredibly simple to write in- not the command line stuff or their cmdlets so much as the basic math/string/IO crap that I find myself doing most of the time.

VB.Net (1)

Pendaelose (2241430) | more than 2 years ago | (#36556056)

Personally, I find VB.net a good choice for learning It's easy to use and gently teaches the fundamentals you'll use in all object oriented programming. Visual studio does most of the heavy lifting for you allowing the GUI to be drag and dropped into place. Double clicking on a button creates the event for it's click. Once you start building your app you can get into objects and events at a slow pace while focusing on the basics. It also has extremely forgiving syntax compared to many other languages. I've had to learn coding twice... 10 years ago I started coding with VB5 but ended up doing support instead of development so it had to put it away. Now, my support career has come full circle and I'm helping build the software I've been supporting this whole time. 10 years later I find myself re-learning all the basics in VB.net.

VB or C# (1)

DurendalMac (736637) | more than 2 years ago | (#36556060)

I can fault MS for a lot of things, but C# is nice, and their interface builder is a piece of cake that takes the agony out of building a UI. I'm pretty sure that Hitler and Stalin are building Java UIs by hand right now...

Great Idea (1)

wadeal (884828) | more than 2 years ago | (#36556062)

You could always get a Commodore 64 and learn BASIC on it. But what an awesome project that could be for an IT class. Find a PC at least say 15-20 years old and write a program on it.

'Hello World' book - using python (0)

Anonymous Coward | more than 2 years ago | (#36556066)

I like the approach taken by the Hello World! [manning.com] book. A nice introduction for beginner programmers to python and eventually gets to GUI stuff, which I never got to do with BASIC on my TRS-80 back in the early 80s...

any scripting language (0)

Anonymous Coward | more than 2 years ago | (#36556068)

and some kind of canvas to draw stuff to.

starter languages (1)

iplayfast (166447) | more than 2 years ago | (#36556070)

I think the language doesn't so matter so much as the time that is put into it. In the summary basic was given as an example, and I'm sure the basic he's talking about isn't considered good code these days. No object orientation, plenty of gotos and so on. The thing is he spent time on it, and from that language went to others.

With this in mind I would say that today there are plenty of good starter languages. My suggestion would be python, which introduces a number of good habits. It also has the advantage of being able to import loads of goodies which allow graphical programming.
Another suggestion is Delphi Pascal or C-Builder which allows you to quickly create windows applications. I hear that Microsoft has something similar with C#.

Any language is good, as long as time is spent playing with it. That's the thing that is important.

Processing comes to mind (0)

Anonymous Coward | more than 2 years ago | (#36556074)

It's got that same instant gratification that I remember from BASIC, while still teaching some of the logic, structure, and syntax of C++.

Depends on personal preference. (0)

Anonymous Coward | more than 2 years ago | (#36556094)

Python. Or Ruby, if you wanna use why's poignant guide. I'm not going to say there aren't superior alternatives -- JavaScript would probably showcase the immediate applicability of programming better -- but those two stand out to me as languages in which you don't have to get caught up in overhead, you don't have to explain a lot of stuff right off the bat, you don't have to say "ok, ignore these statements for now", you can simply start off with a one-liner and work your way up from there.

Ruby (0)

Anonymous Coward | more than 2 years ago | (#36556100)

Ruby. The correct answer is Ruby. Seriously.

Go with Ada (1)

Ada_Rules (260218) | more than 2 years ago | (#36556114)

I've never met a programmer that did not end up being better at their craft after spending time writing Ada. Some did not like it and shun it but even they seem to be better programmers in their language of choice after using it. (Though of course it is not magic and if you are not cut out to be a software developer, it is not going to fix that).

Alice (2)

ndogg (158021) | more than 2 years ago | (#36556132)

I recently heard (though not used) about Alice [alice.org], which sounds interesting for at least introducing programming concepts.

Do not pick a language -- pick visual environment (0)

Anonymous Coward | more than 2 years ago | (#36556134)

Use GIMP, ray tracing, games or any other interesting visual environments first.

Then use the language embedded in those environments as starting point. In otherwods, do not create a notion of a 'program'. Instead create a notion of 'tasks/logic' that are needed to do something interesting (and visually rewarding).

just use basic (1)

bhcompy (1877290) | more than 2 years ago | (#36556144)

Just use BASIC, or an older version of VB(VB3 comes to mind). Simple, little required in the way of GUI(even VB3 is extremely simple with GUI), and enough to teach the basic concepts. The fact that they're old doesn't mean that they aren't useful.

LOGO !! (0)

Anonymous Coward | more than 2 years ago | (#36556154)

Got that cute turtle. How can you go wrong !! (Don't put it in your vita !!)

Early 80's? (3, Funny)

numb7rs (1689018) | more than 2 years ago | (#36556156)

"How do you get the instant gratification we oldies got when sitting down in front of the early-80s home computers?"

By using a language that has lasted through that time to this one: Fortran.

Fortran is still one of the most widely used languages in scientific applications, and is a great starting point for beginners.

A concept with learning is the problem here (1)

Anonymous Coward | more than 2 years ago | (#36556160)

Yeah, so day one you're not going to put together a GUI. Is it that big of a deal? You're not going to be programming the next big FPS in two months either. I know it sucks to hear this but it's true.
 
Dumb little programs like "Hello World!" serve a purpose. If people with an interest in programming didn't think they were going to jump right in to making a functional program that served some greater purpose there would be a lot less let downs. Your average Sam's "Learn [insert language here] in 21 Days" book isn't going to get you writing any new and innovative code. It's there to introduce you to the basics.
 
Sorry guys but it probably takes *at least* 100 hours of banging out dumb little programs to get to doing a program that actually does something productive for you and even in that case there are probably 300 programs that are doing the same thing out on some programming tutorial site.
 
I really don't know what people expect out of their first few hours of coding. It's going to be limited. It's not going to produce anything useful. If you're not satisfied that you got it to work, you're not going to be satisfied by anything else in that starting stage.

DarkBASIC ftw (0)

Anonymous Coward | more than 2 years ago | (#36556166)

DarkBASIC is BASIC with DirectX bolted on, I wish schools taught with it.
Massive instant gratification.

Different expectations makes gratification harder (3, Insightful)

mhamel (314503) | more than 2 years ago | (#36556206)

When I was a kid, the computer i programmed for (trs-80), was one of the first computer I ever saw. There were not that many programs for it. So it was easy to get excited about almost nothing.

Now all the kids have been exposed to all sort of technologies. They'll never get excited by very simple things like I have been. The thing to remember is that it will never be has rewarding has it was at the time for such simple things and no language is going to change that.

Backstory is important for context (1)

revjtanton (1179893) | more than 2 years ago | (#36556212)

In my experience backstory is important to put languages and learning in context. A lot of students are just running head-long into Java but if they started with C++, and were explained why it's important to start with C++, then many of the OOP concepts would come more naturally when learning something like Java. Then things like Python or PHP would come like second nature since their more complicated aspects are the OOP concepts they implement.

I think a main problem in making programming fun is that it's always so monotone and repetitive. I say if you learn OOP concepts when learning C++ why re-learn those concepts when learning Java? Get to the good stuff! Teach about what is unique to Java, the syntax difference, and move on! That's what we do at http://wibit.net/ [wibit.net] and it's working for us.

Otherwise I'd say there is just a lack of creativity overall in programming learnin'. It's always the same "Hello World" projects teaching you how to build a Fibonacci sequencer or a tic-tac-toe game. Let's get real about this stuff and get linear and highlight the fun parts of development for the kiddies! Again, that's what we do at http://wibit.net/ [wibit.net]

No modern languages are hard (1)

Arkham (10779) | more than 2 years ago | (#36556214)

BASIC still exists, and so does Pascal, but honestly, why not use a real language?

Python has always been trivial to get started in. I taught my 9 year old to program in python in a few hours.
Java is easy to use, and the syntax is clean.
C# is basically a clone of java, so the same applies there.

You don't need to learn object orientation to use any of these languages. Sure, you probably SHOULD, but you can learn java programming solely in the main() if you just want to learn the basics. Even moreso with python, you can program in the interpreter at first, then move to running the code from files, then later migrate into an object oriented approach.

Website Programming (1)

Drafell (1263712) | more than 2 years ago | (#36556218)

To start with, teach PHP and HTML. These are good ways to get people used to the idea of GUI design and basic programming without needing to worry about complex event handling. When they are ready to move onto this you can introduce JavaScript and database integration through MySQL.

HTML/CSS takes care of the looks, and you learn about functions using PHP. It is easy to set up something 'live' that people can play with.

Throughout this they will be learning elements of C-based languages and it will make the transition to C++ and other languages that much easier.

Python + HTML/CSS/JS (1)

animeshpathak (873597) | more than 2 years ago | (#36556220)

I am teaching a friend the basics of programming, and Python is what I have chosen. Books such as Learn Python the Hard Way [learnpytho...ardway.org] [found its ref on StackOverflow, and liked it] are very good for someone who wants to learn programming on their own time.

That said, I think a lesson in the basics of flowcharting (inputs, outputs, conditionals, loops using counters and conditionals) goes a long way to prepare the student for programming languages.

HTML/CSS+JS is relevant given

  • how many apps are web apps now, and the developer will likely need to work on it anyway
  • Writing short snippets of markup + code can give some very instant gratification

The above is from feedback from my friend. YMMV.

-A

Probably not the root of the problem... (2)

fuzzyfuzzyfungus (1223518) | more than 2 years ago | (#36556236)

If anything, the post-BASIC world is far, far, better supplied with both explicitly pedagogical languages, application-specific rapid development tools(Processing, for instance), and fairly mature options that allow you to do anything from what is essentially shell scripting to full application development.

However, you run into the rather messy problem that off-the-shelf examples of software have(both in terms of software complexity and in terms of ancillary stuff like graphics and sound assets) Vastly increased in number, sophistication, and availability. This makes it harder to engage any would-be-learner who isn't explicitly interested in programming by sucking them in with the cool results.

Back when daddy borrowed the company Compaq Luggable so that he could work on spreadsheets on weekends, your choices for computer entertainment were pretty much "Lotus 1-2-3" or "Make your own damn fun with basic". Option two was pretty attractive even if you really just wanted some games and only became interested in what made them tick later.

Nowadays, when we have all removed the onions from our belts, hypothetical kiddo is enormously better tools and documentation at his/her fingertips; but is also comparing the rudimentary results of a beginner against products of 2-3 years of effort by a professional design team, backed by artists and sound guys, available for 20-50 bucks off the shelf. Even the sort of flash games that will load about as quickly as the Python 3.2 reference manual will are comparatively polished and intimidating.

Arguably, it might actually be better to start beginners out with more physical projects: Sure, robotics has also increased enormously in sophistication and power; but high end robots are still expensive and uncommon, and there is a more visceral "wow" factor to "Hey, I hammered out the feedback logic that allows my little *duio bot to follow lines" than there is to "Oh, I've just produced 10% of Zork; but less witty and 25 years late. Let's go play Medal of Life Half-Gear Assault 2011."

TI-BASIC (3, Informative)

gman003 (1693318) | more than 2 years ago | (#36556242)

Grab a TI calculator. Learn the slightly weird version of BASIC installed on them. That's where I got my start.

You can write an actually useful program in just a few lines. It's got a few simple data types (floats, strings, lists and matrices), has a few basic functions (Disp, Input), and all the common language constructs (If-Then-Else, For, While, Goto). There's a few oddities (assignment is reversed, instead of "a = 2" you have "2 -> a"), and there's no proper way to declare a function (you can either make another program and call it, or use goto), but you can do a surprising amount with it.

I programmed those for a year or so. Tried learning assembly to get around the limits of Basic (mostly the speed), couldn't do it. But I did get into C++, and later all the other "real" languages, and am now pretty much a real programmer.

JavaScript and Perl are not for beginners (0)

Anonymous Coward | more than 2 years ago | (#36556272)

Both JavaScript and Perl scripting languages have a strange nuance that can be difficult for beginners to grasp. I am in computation neuroscience where you get a lot of non-programmers. The flow of Matlab -> Python -> C++ seems to work the best. Where Matlab is only necessary for a semester before moving on. People will stop on the language that suits them the best.

AppleScript (1)

jomama717 (779243) | more than 2 years ago | (#36556282)

When my daughter is old enough I think I will introduce her to the applescript gui tool - where you can simply stick together existing applications into small macros, where the output of one application is piped into the input of the next. It is like visual shell scripting...but even simpler. You can include your own more complex shell scripts as steps in the overall script and really go nuts with it. I'm sure I'll get flamed for this, but to me it is a great way to introduce a (very) young person to the concept of input, output, and the foundations of procedural programming.

I have heard the argument that functional languages should be used to teach young minds how to program, but I just don't think a very young child would grasp the recursive nature of it.

Microsoft's Small Basic (1)

Anonymous Coward | more than 2 years ago | (#36556284)

Microsoft makes a free beginner's or kid's version of visual basic called Small Basic. It's a Visual Basic .Net compatible version with a subset of the full Visual Basic command set. It's really good for a young person to start out with and the programs created will work in the "Grown-up" version. http://msdn.microsoft.com/en-us/beginner/ff384126.aspx

VB.NET (0)

Anonymous Coward | more than 2 years ago | (#36556292)

Pretty easy to use and damn powerful....

My $.0317, because I feel like being an ass. (1)

japp1egate (2035368) | more than 2 years ago | (#36556298)

With the understanding that I have no knowledge of this language outside of it's name... How about Haskell? :P

Logo and ML (3, Interesting)

markov_chain (202465) | more than 2 years ago | (#36556310)

I learned BASIC first. When I was shown LOGO, I wrote a few lines of code to draw a Sierpinski triangle, and thought to myself: there is no fucking way this can be this simple. It worked, though, and sure got me to appreciate the weird academic languages.

Instant gratification is the problem (2)

MikeRT (947531) | more than 2 years ago | (#36556330)

A kid who isn't satisfied with very basic accomplishments is one who will never have a shot at writing a 3D game. I had to explain this to a younger guy the hard way a few weeks ago. It requires real work, drive and willingness to learn. If you can't delay gratification or find gratification in simple accomplishments along the way, you're not even a candidate for success.

Scratch got my 6 year old started (4, Informative)

ZekeSMZ (874386) | more than 2 years ago | (#36556338)

MIT's Scratch ( http://scratch.mit.edu/ [mit.edu] ) has gotten my kids started with programming. It's fun, and teaches all the fundamentals necessary for learning programming logic.

for the Mac users (0)

Anonymous Coward | more than 2 years ago | (#36556352)

I know it's a bit limited to Mac uses, but Carbon in xcode.

Open Object Rexx (0)

Anonymous Coward | more than 2 years ago | (#36556364)

Free, Simple to use, available on most of platforms, Open source. Although you can do objects and methods, it doesn't force you to do it that way. Easy I/O, and good debugging.. Lots of free extensions available (FTP, Sockets, concurrency, Windows GUI)

MOO (0)

Anonymous Coward | more than 2 years ago | (#36556376)

Check out MOO code. A MOO is like a MUD (remember? The text based RPGs of yester-year?) MOO code offers instant gratification as just a few lines of code can produce something that the beginner user can use right away and see that their adventure in to coding can see immediate results. The syntax is somewhat easy to follow and I've found that learning MOO gives the user a basic understanding of code allowing them to read (not necessarily code in) just about any language.

Simple stuff has been done (5, Interesting)

fermion (181285) | more than 2 years ago | (#36556380)

It is not so much abstraction, but required basic skills. What one needs to do today is different from what a person had to do 20 years ago. Today only a small subset has to be able to manage memory, or write sort routines, or think carefully about parameter passing. Now the skills are designing objects, applying design patterns, writing short segments of procedural code, and, increasingly, writing code the will run parallel. I can code, but that last one is nearly beyond me, but will be critical for anyone who wants to do serious work.

I too started with basic in middle school but it did not teach me much. In high school we did fortran, which taught me mad skills, then I taught myself C and C++. I still think C is important for people who want to do serious programming as it does not have the cruches of the other languages, is simple enough to be put in a two hundred page book, and will teach everything one needs to know about debugging and basic design.

In terms of instant gratification, I would suggest writing web apps in python. Most of the GUI stuff is taken care of by the browser, Python takes care of parameter passing to and from the user, and one can teach all the concepts, aside form parralel programming. A kid can write any number of games and if one has access to a web server, it can be run anywhere there is internet access. Such a thing can be great motivational tool.

Good Open Source Games (1)

Normal Dan (1053064) | more than 2 years ago | (#36556434)

I got my start in BASIC when I my mom bought me a book on the topic. However, what really got me into it was modifying games. At our school's computer lab we had a set of games created in BASIC. I would get into the code and make modifications to these games. Back then everything was simple enough I could find my way around as a kid. It was also simple enough I could look at the code, compile it and run it all on one machine without the need to download a bunch of software. I have no clue how to recreate such an experience in today's world.

WTF? (0)

Anonymous Coward | more than 2 years ago | (#36556436)

Did you say Python deliberately to sound cool around ./? Nobody uses that, except the crackpots at Google. Another unique endemic weirdness is Perl -- used exclusively by Slashdot. Normal people use PHP. I thought you weren't trying to sound cool.

Small Basic (1)

smitsco (677534) | more than 2 years ago | (#36556452)

There is Small Basic from Microsoft. http://smallbasic.com/

From the website FAQ:

Who is Small Basic for?
Small Basic is intended for beginners that want to learn programming. In our internal trials we've had success with kids between the ages of 10 and 16. However, it's not limited to just kids; even adults that had an inclination to programming have found Small Basic very helpful in taking that first step.

Scratch -- the latest from MIT for kids... (3, Informative)

mengel (13619) | more than 2 years ago | (#36556468)

You should definitely look at Scratch [mit.edu], which is designed for kids, even (especially?) kids who don't type very well yet, yet it teaches them programming skills. This is the same crowd who initially did Logo all those years ago, and they think this is better...

real students (1)

the_hellspawn (908071) | more than 2 years ago | (#36556538)

a real student will just do everything in assembly to learn about computers and to program. Only the garbage coder will learn using C# or some other BS language.

This again? (1)

ElectricTurtle (1171201) | more than 2 years ago | (#36556574)

It seems like a version of this comes up on /. at least every quarter. What does it say about programming that so many people look back at BASIC with a mix of nostalgia and disdain? What paradox is embodied in the idea that BASIC isn't good enough for any 'serious' programming and yet nothing else is as good as BASIC in providing an easy to use interpreter that introduces programming concepts and structures in a way that satisfies the neophyte?

Sure, everybody will trot out supposed successors like Python or JavaScript, but the fact that we still ask ourselves the same question, 'is anything as good as BASIC', every few months betrays the fact that many people must not accept that these successors accomplish the same results for whatever reason.

No other language I know of has the same instant gratification as BASIC. The strength of BASIC for me was if I wanted to draw a box, all I had to do was set the screen resolution and the coords of the box. That was it, two lines. I didn't have to load a bunch of libraries or write a bunch of arrays or design some placeholder interface to put the box into. I don't think any language will be able to take BASIC's mantle until it regains that level of simplicity and the ease of running and testing what would be to most other languages wholly incomplete or broken programs. There's a lot more opportunity in BASIC to just ask oneself 'what would happen if I did this?' without worrying about creating some huge framework just to test one concept.

From the age of 12 to about 15 I was really into QBASIC, but all the bad habits I learned from not having to structure things made it basically (heh) impossible for me to move into a 'real' language. I don't know that the paradox can be reconciled that BASIC's strengths are its weaknesses and vice versa. With 'successors' like Python there is an intent for the language to be 'valid' as a 'real' programming language, so it has to be structured in a less forgiving way than BASIC which makes it less approachable, but it makes it easier for those who do work with it to transition to other languages.

Maybe its better to accept the barriers to entry than to try to come up with another language that is a fun dead end. In some ways BASIC is a trap that should be avoided.

3D Modeller & Scripting (1)

3CheeseMac (693439) | more than 2 years ago | (#36556578)

These days it is free to try 3D Studio, Maya, or Softimage and they all have scripting built in. These packages make it easy to see the results of logic and equations in real time. I started messing about with BASIC on a C64 when I was seven, but never really got into programming until I started working with these type of 3D modeling/animating/rendering packages in university and my early career. This path eventually led to "real" languages (C++ these days) and full application development. As a bonus, these 3D packages will offer people an artistic outlet which might be of more interest to them. Cheers, 3CM
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account

Loading...