Democratic Underground Latest Greatest Lobby Journals Search Options Help Login
Google

Why Johnny Can't Code

Printer-friendly format Printer-friendly format
Printer-friendly format Email this thread to a friend
Printer-friendly format Bookmark this thread
This topic is archived.
Home » Discuss » Topic Forums » Science Donate to DU
 
phantom power Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 09:40 AM
Original message
Why Johnny Can't Code
I was exactly that 12-year-old kid who got hooked on programming starting with BASIC, on our Apple-II computer. I question whether BASIC is necessarily the only option here. For instance, Java's development environment is a free download, and you don't have to climb a huge learning curve to write your first "hello-world" Java program. But there was a definite simplicity to accessing BASIC on the old-school machines.

(you can read the rest of the article without a Salon subscription, via an ad click-thru)

Sept. 14, 2006 | For three years -- ever since my son Ben was in fifth grade -- he and I have engaged in a quixotic but determined quest: We've searched for a simple and straightforward way to get the introductory programming language BASIC to run on either my Mac or my PC.

Why on Earth would we want to do that, in an era of glossy animation-rendering engines, game-design ogres and sophisticated avatar worlds? Because if you want to give young students a grounding in how computers actually work, there's still nothing better than a little experience at line-by-line programming.

Only, quietly and without fanfare, or even any comment or notice by software pundits, we have drifted into a situation where almost none of the millions of personal computers in America offers a line-programming language simple enough for kids to pick up fast. Not even the one that was a software lingua franca on nearly all machines, only a decade or so ago. And that is not only a problem for Ben and me; it is a problem for our nation and civilization.

http://www.salon.com/tech/feature/2006/09/14/basic/

Printer Friendly | Permalink |  | Top
SteppingRazor Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 09:47 AM
Response to Original message
1. "only a decade or so ago..."
What this lady doesn't seem to comprehend is that, in computer years, a decade is a couple millennia. So BASIC has gone the way of Latin. What's the big deal?
Printer Friendly | Permalink |  | Top
 
Viva_La_Revolution Donating Member (1000+ posts) Send PM | Profile | Ignore Sun Sep-17-06 11:31 AM
Response to Reply #1
38. Learning BASIC back in Jr. High is why I can even comprehend how
computers work these days. I'm just talking about the User end of things, I haven't tried to write anything since Win 3.1

I can build my own machine, and configure almost any software because I have the basic :) knowledge of how things work. Trying to teach something new to someone who doesn't have the first clue about the workings is so much harder than teaching someone who does.

my $0.02 fwiw
Printer Friendly | Permalink |  | Top
 
harlinchi Donating Member (954 posts) Send PM | Profile | Ignore Fri Sep-15-06 09:48 AM
Response to Original message
2. Learning to develop today is facilitated by OO exposure.
Trying to transition from a mainframe (e.g., COBOL or Ideal in MVS) environment to the development of online apps in Java is difficult because of the differences in perspective, at least it is for me. If one were to use BASIC as an instructive tool, I'd imagine he would have to go to the lengths of explaining machine language, stacks, pushes and pops, etc.

When beginning, we learned about card readers. We did not, however, use them.
Printer Friendly | Permalink |  | Top
 
phantom power Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 09:58 AM
Response to Reply #2
6. One might make the argument that OO requires some "maturity..."
I've seen plenty of programmers who write perfectly good code in a functional programming language, whose coding just goes completely ape-shit when they start working in something like C++ or Java. I've been doing OO for 10 years, and I have to say that I'm still always learning little quirks and tricks regarding the effective and sane use of OO techniques.

By contrast, a functional language like C, or Pascal (talk about Latin) has a (relatively) small "solution space." Data structures, and functions, and the arbitrary nesting of them.

And a line-by-line language like BASIC is even simpler. And, it does sort of map onto lower-level languages like assembler. For control structures, you've got branching, and "goto" :-)

To argue the other side, it's also not very hard to just use most OO languages as functional languages. Just ignore the OO features of the language. I often do that, just to keep simple tasks simple.
Printer Friendly | Permalink |  | Top
 
bananas Donating Member (1000+ posts) Send PM | Profile | Ignore Sat Sep-16-06 05:56 AM
Response to Reply #6
35. C and Pascal are not functional languages!
They are procedural or algorithmic languages.
Lisp and Logo are functional languages.
Printer Friendly | Permalink |  | Top
 
phantom power Donating Member (1000+ posts) Send PM | Profile | Ignore Sat Sep-16-06 10:27 AM
Response to Reply #35
36. True, that. Probably should have stuck with "3gl"
Printer Friendly | Permalink |  | Top
 
bananas Donating Member (1000+ posts) Send PM | Profile | Ignore Sat Sep-16-06 06:58 PM
Response to Reply #36
37. C++ and Java are also 3GL
Most "modern" languages (BASIC, C, C++, Delphi, Java, and including COBOL, Fortran, ALGOL) are third generation.
http://en.wikipedia.org/wiki/Third-generation_programming_language

Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:19 AM
Response to Reply #2
19. Nonsense.
> If one were to use BASIC as an instructive tool, I'd
> imagine he would have to go to the lengths of explaining
> machine language, stacks, pushes and pops, etc.

Nonsense. A BASIC programmer never need encounter any of
those complexities (and, in fact, often *CAN'T* encounter
any of them).

Tesha
Printer Friendly | Permalink |  | Top
 
harlinchi Donating Member (954 posts) Send PM | Profile | Ignore Fri Sep-15-06 11:27 AM
Response to Reply #19
23. Not that a Basic programmer would encounter such terms but...
...but that such a discussion would be the logical result of investigating Basic as a means of understanding how computers work. I know BASIC programmers would not use machine language. I'd suspect that one looking into how computers work by investigating Basic would get to the point where a knowledge of such items would further their cause.
Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:40 AM
Response to Reply #23
25. It would be the logical result of anyone looking deeply-enough into ANY...
> I know BASIC programmers would not use machine language.

Actually, you'd be surprised. I come from an environment that
allowed the free mixing of *ANY* supported langauge and it
wasn't uncommon to see programs that had modules written in
a variety of languages.

But in any case, learning about the deeper topics of how
programs actually get executed (meaning: interpretation,
compilation, assembly, linking, loading, execution, etc.)
would be the logical result of anyone looking deeply-enough
into ANY source language. This is especially true as your
target programs become more and more sophisticated.

Tesha
Printer Friendly | Permalink |  | Top
 
hunter Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:30 AM
Response to Reply #2
24. I did fortran on punched cards.
Put the cards on a shelf, get the printout the next morning.

Error, line 50. Rinse and repeat the next day. During final exam week the computer labs stank of sheer terror and people were down on their knees praying their work would compile and run.

Geez, I'm old. I wrote my first BASIC program on a teletype machine when I was a kid, sometime in the late 'sixties. (The language was developed at Dartmoth College in 1964.) I used to be able to write programs for 1802 and 6502 processors in machine language -- not assembler, just a string of numbers entered on a hexadecimal keypad. I could sketch a rough program out on a scrap of paper and make it work a lot quicker than I could do it using assembly language, especially when the only storage available was a cassette tape. Many of my early code listings are hand written.

When my kids got interested in computers I thought long and hard about how I would go about introducing them to programming. I started with html and javascript, and gave them their own websites to play with. They were more excited about that than anything else I could have done because they could easily share their work with with friends.

As a practical matter, kids are not starting out on the ground floor anymore in a way that learning BASIC might be useful to them. They have so much more to build upon than I did when I was their age. As a practical matter most modern day coding is a cut and paste. It would be insane to build things from scratch. Nobody builds Heathkit televisions anymore either.

My oldest child is a little bit interested in Python and MySQL in a "how'd they do that?" kind of way, and they both have played around with various video game toolkits, but for the most part I think they would see BASIC as too primitive a tool to build what they want to make.

Sure, dad can make a bloody mean spear out of a random chunk of flint and a stick, but look what I can make with a hammer, some steel, and a forge.
Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:41 AM
Response to Reply #24
26. You're lucky!
> Put the cards on a shelf, get the printout the next morning.

You're lucky! I used to put the cards on the shelf only to
find out the next morning that the card reader was broken.
And the next day, the line printer. ;) ...

Tesha
Printer Friendly | Permalink |  | Top
 
bemildred Donating Member (1000+ posts) Send PM | Profile | Ignore Sun Sep-17-06 06:51 PM
Response to Reply #24
45. IBM 1130 (I think) using FORTRAN in 1967
Used to go up to the lab at 1:00AM because I owned it then, card punch, reader, CPU, and all.
Printer Friendly | Permalink |  | Top
 
GAspnes Donating Member (1000+ posts) Send PM | Profile | Ignore Thu Sep-21-06 10:32 PM
Response to Reply #45
59. those were the good old days
'though the 1130 was my third 'real' computer. Having it all to yourself at 1:00 AM was the only way to go. 16K RAM; pizzabox-sized removable disks; flashing lights; and a console keyboard. Even IBM occasionally referred to it as a 'personal computer' since organizations other than giant corporations could afford one.


Memories aside, I failed utterly to interest any of my sons in programming. One's a passable computer geek, the other three view it as an amazing tool for doing things that interest them. C'est la vie.
Printer Friendly | Permalink |  | Top
 
bemildred Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-22-06 07:21 AM
Response to Reply #59
60. Me either.
Nobody wants to grow up to be like Dad anymore. All users, no hackers.
Printer Friendly | Permalink |  | Top
 
lapfog_1 Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 09:48 AM
Response to Original message
3. Almost all PC's could, with open source software,

compile Java, C, C++.

C or B would meet the requirement of being a Line by Line (or procedural) language.

However, there isn't any reason for Johnny to learn procedural languages or even the
basics of how a computer works (other than general concepts like computer anatomy).

Printer Friendly | Permalink |  | Top
 
crispini Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 10:00 AM
Response to Reply #3
8. Um, hello?
Programming jobs!

Give a kid an early exposure to something like that, and they may very well stay in the field. No early exposure and the chance is lessened.
Printer Friendly | Permalink |  | Top
 
lapfog_1 Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 10:11 AM
Response to Reply #8
13. Personally, having spent my entire life writing software

started at age 12, now 50.

I think I'd recommend a different field anyway. Software isn't ever going to pay as well as it once did.
India is graduating 100,000s of software engineers every year. And while there will always be a need
for new software, I wonder how much?
Printer Friendly | Permalink |  | Top
 
davidwparker Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 10:55 AM
Response to Reply #13
17. We keep writing the same software again and again, depending on
what is in fashion. There was the mainframe -- and still is. Then, client-sever. Then, application servers. In the 20 years that I've been writing code, we've gone from everything running on one machine with a text-based mainframe screen back to everything running on a backend machine with a browser-based user interface.

When the next big thing happens, we'll rewrite it again.
Printer Friendly | Permalink |  | Top
 
crispini Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:57 AM
Response to Reply #17
29. Ain't that the trewth. :) It's like Sisyphus!
Although it's not always just "fashion" -- there certainly is a reason to rewite as OS's get better and as better user interface design comes along.
Printer Friendly | Permalink |  | Top
 
crispini Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 12:00 PM
Response to Reply #13
30. It's better than flipping burgers at MickeyDs.
Yes, offshoring is real, but you still people who know what they're doing to oversee the offshoring effort, and I think lots of jobs will stay here for practical reasons. Offshoring is a PITA.
Printer Friendly | Permalink |  | Top
 
phantom power Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 10:28 AM
Response to Reply #3
15. I'll play devils advocate here...
Bear with me, this is a soapbox topic for me.

I worry frequently about how prevalent the philosophy of "there isn't any reason for Johnny to learn X" has become in America. There are certain things that I believe all people should learn a little bit about. Even if they never use it again. For instance:

Not everybody has to learn Object oriented programming and advanced C++ template techniques, but everybody really should write a 10-line BASIC program (or whatever simple language) once in their life.

Not everybody has to learn calculus, linear algebra, etc, but I really do think everybody should be able to solve equations like "3x = 2x + 1"

Not everybody has to learn quantum physics, but everybody should learn Newton's three laws of motion.

Anyway, you get the idea :-) I truly don't think requirements like that represent an unreasonable burden of education. For better or worse, our entire civilization runs on foundation of concepts like this, and today we're seeing the result of raising so many citizens that never learned them, even a little bit. It isn't pretty.

Or, maybe I just had too much coffee.
Printer Friendly | Permalink |  | Top
 
lapfog_1 Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 04:13 PM
Response to Reply #15
34. I used to teach CS (for 5 years)...

I don't think there is any practical value to teaching a specific computer programming language to
people who are not going to use that language.

Basic computing (how they work), yes.

How to use them, yes.

How to problem solve. YES.

For example, in my "Intro to CS" class, the first day, I would try to engage people in problem
solving. I would draw a tic-tac-toe game on the blackboard (yeah, pre-white boards). I would
then challenge everyone in the class to a game. I would make a move and then ask the class to
make the next move. THEN I would ask them "why make that move"... and then the fun (and learning)
would start. All in English... all the way down to a "computer program" that played tic-tac-toe.

But teaching them Basic would be like teaching Latin as a foreign language... actually less useful, since
Latin is the root language of so many modern spoken languages... whereas Basic is not the root of any
widely used computer programming language today.
Printer Friendly | Permalink |  | Top
 
mccoyn Donating Member (512 posts) Send PM | Profile | Ignore Sun Sep-17-06 04:16 PM
Response to Reply #3
40. The only reason for Johnny to learn basic is he might actually like it.
Edited on Sun Sep-17-06 04:23 PM by mccoyn
When I was in middle school I typed something like this:
print "Does this work?"

After looking through some menus to figure out how to run it, suddenly I had a computer program that did something. It worked and I did it. What else can I do? The simplicity of the langauge was a good introduction, not because it was useful knowledge, but because it was easy to get results.

A few years later I attempted to create a windows app the did the same thing. This lost interest pretty quick because it took a lot of learning to do the first thing. Why bother.

HTML with scripting is probally the most approachable thing today. You still need lots of stuff, <HTML>, <script...> before it does anything.

The result of all this is that when Johnny first sits down and says lets program something he fails.
Printer Friendly | Permalink |  | Top
 
ixion Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 09:51 AM
Response to Original message
4. having also been one of 'those' kids who learned to program in BASIC
I would say there the opportunities today are greater than ever before.

HTML and Javascript are just two examples of languages that can be written and tested on any box.

BASIC, as a language, is historical, although you can still find variations on it out there today. So if someone wanted to learn it, they could, just like java.
Printer Friendly | Permalink |  | Top
 
crispini Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 09:59 AM
Response to Reply #4
7. HTML isn't line by line, though.
And I wonder if Javascript is really simple enough to start off with. I cut my teeth on LOGO myself... anyone remember that? ... and did some BASIC after that too.
Printer Friendly | Permalink |  | Top
 
TlalocW Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 10:23 AM
Response to Reply #7
14. I do!
We played with LOGO in 5th grade, which was 1984-1985 for me. I graduated on to BASIC on an old TRS-80 that I bought from my friend's dad (mainly programming music), Pascal on Apple IIGS's in high school, C and C++ in college and then jobs involving Digital Control Language on an openVMS system (don't laugh), 4GL (likewise), UNIX, various flavors of SQL, Coldfusion, PHP, HTML, Javascript, etc.

One of these days I should probably learn .NET.

TLalocW
Printer Friendly | Permalink |  | Top
 
crispini Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:54 AM
Response to Reply #14
28. My friend had a "Trash-80" :)
Edited on Fri Sep-15-06 11:54 AM by crispini
We had a TI994/A at my house. :rofl:
Printer Friendly | Permalink |  | Top
 
phantom power Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 10:29 AM
Response to Reply #7
16. Totally! You're making me all misty-eyed...
Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:24 AM
Response to Reply #7
20. Javascript is too baroque to be used for instruction.
Edited on Fri Sep-15-06 11:24 AM by Tesha
Compared to most languages, Javascript is too baroque to be
used for instruction; the initial learning curve is just too
high.

Nearly any other language would be better.

The real beauty of old-time BASIC, of course, was its IDE:
Integrated Development Environment.

The editor was the syntax checker and the runtime environment,
and the best BASICs just let you stop a program and then
debug by just by typing more BASIC statements. This was
very easy for newbies to grok.

Tesha
Printer Friendly | Permalink |  | Top
 
Ready4Change Donating Member (1000+ posts) Send PM | Profile | Ignore Sun Sep-17-06 04:29 PM
Response to Reply #20
43. I disagree.
It CAN be done easier. For example:

http://www.w3schools.com/js/js_examples.asp

Just using a page like one of those linked to on the page above removes most of the backgroubd complexities, letting newbies concentrate on the language, rather than the support structures.

And just because a language can use functions and objects etc... doesn't mean newbies have to be exposed to them. Teach them a variable declaration, a control statement, and an output statement, and they're on their way.
Printer Friendly | Permalink |  | Top
 
hunter Donating Member (1000+ posts) Send PM | Profile | Ignore Mon Sep-18-06 01:25 AM
Response to Reply #43
48. Yeah, very good example. See how that works?
Easy. Take a look at this one, it's very similar to something you might have done in BASIC.

http://www.w3schools.com/js/tryit.asp?filename=tryjs_prompt

But you don't even have to type it in, just cut & paste, and maybe edit a little.

Anyone here can play with it.

Try it, and yes it is "baroque," but connected to the internet it's got a lot more potential than the usual beginner BASIC programs ever did.
Printer Friendly | Permalink |  | Top
 
MrPrax Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 10:03 AM
Response to Reply #4
12. Good point...
BASIC is a good introduction -- but letting kids build their own web pages from scratch (notepad!) is a good start for most to get their feet wet.

They learn practical things about the Net whether they pursue it or not...and they can see the results immediately. A lot of computer schools these days don't even bother with BASIC and a lot of old 'gen' programming isn't even mandatory -- like ASM, which maybe a blessing...I got like C (barely) in that one.
Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:26 AM
Response to Reply #12
21. But being able to write text in a mark-up language isn't programming.
HTML, unfortunately, is just a mark-up lamguage; it doesn't
teach people anything about how computers are actually
programmed.

Tesha
Printer Friendly | Permalink |  | Top
 
Ready4Change Donating Member (1000+ posts) Send PM | Profile | Ignore Sun Sep-17-06 04:23 PM
Response to Reply #21
41. What Tesha said.
Edited on Sun Sep-17-06 04:24 PM by Ready4Change
HTML is not programming. I say if it doesn't loop, it's not programming. HTML doesn't loop.

Even if you're handcoding HTML, writing it line by line, rather than using a GUI webpage design tool, you still aren't programming.

To program, you must be dealing with things like variables, control structures, conditional statements, and input/output operations. Even in the world of objects, you still are dealing with those things.
Printer Friendly | Permalink |  | Top
 
Prophet 451 Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 09:52 AM
Response to Original message
5. I miss BASIC
And for exactly the same reasons, it was so bloody simple to teach people how to use it.

Try VB. It's OOP based but pretty simple to pick up.
Printer Friendly | Permalink |  | Top
 
Ravenseye Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 10:00 AM
Response to Original message
9. Well I think BASIC is a good teaching language
I mean for absolute beginners. Forget about peeking and poking, but just doing a line by line, I think it's an excellent educational tool. Too bad it's apparently that difficult to get going these days. The problem with Java is that it throws a whole bunch of stuff into the mix way too fast. Objects, functions, compiling, etc. An educational tool that uses BASIC (something in a program that doesn't exist) would allow a kid to write code, hit a button and see it happen. It's a first step and if the kid were interested they'd move beyond it almost immediately, but it's better for initial immersion than Java.

I think something maybe even easier than straight Java might be Javascript. That way a kid only needs a text editor, and a browser. Save it as HTML and do stuff. Heck you could start it really simply and then get very comlex. Once they've mastered Javascript, the leap to full Java would be easy. With javascript though, it's easy, simple, usefull, and no additional programs are necessary on even older machines. Just a text editor and a browser.

<script type="text/javascript">
document.write("Hello World!")
</script>
Printer Friendly | Permalink |  | Top
 
phantom power Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 10:02 AM
Response to Reply #9
11. It just occurred to me, Python would be another solution of that kind.
You can even run it in command-line mode, like BASIC.
Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:27 AM
Response to Reply #11
22. Python or Perl are both excellent choices for teaching programming. (NT)
Printer Friendly | Permalink |  | Top
 
kenny blankenship Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 10:01 AM
Response to Original message
10. Certain companies decided they wanted a strict boundary drawn
separating programmers of personal computers from the personal computer users, who were to know nothing about their computers and who unlike programmers would only be able to use their computers for tasks and functions which were defined and fulfilled by proprietary programs.
Users were given "help" in becoming pure consumers by removal/non-inclusion of scripting environments, compilers etc. They were dumbed down by design.
Printer Friendly | Permalink |  | Top
 
mccoyn Donating Member (512 posts) Send PM | Profile | Ignore Sun Sep-17-06 04:26 PM
Response to Reply #10
42. And people bought the computers that didn't require programming knowledge.
Certain companies got very rich because they realized that most users didn't care about programming.
Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:17 AM
Response to Original message
18. Visual Basic or VBA. RealBASIC. Lots of alternatives.
> We've searched for a simple and straightforward way to get the
> introductory programming language BASIC to run on either my Mac
> or my PC.

Visual Basic is still pretty basic, and even on a Mac, if you have
the Microsoft Orifice installed, you can run VBA (Visual Basic for
Applications).

Then there's RealBasic, also pretty good and not requiring you to
come within a country mile of Microsoft.

I'm sure there are others.

Me, these days, I'd use Perl to introduce a newbie to programming.

Tesha
Printer Friendly | Permalink |  | Top
 
phantom power Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 11:47 AM
Response to Reply #18
27. These days I prefer Python to Perl. More consistent in it's constructs.
Perl was always a bit quirky in it's syntax. I assume that if it confused me, it would confuse a newbie.

Then again, maybe I assume too much...
:dunce:
Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 12:05 PM
Response to Reply #27
31. I think I probably agree with you, but haven't done enough in Python yet.
Edited on Fri Sep-15-06 12:09 PM by Tesha
There's only one minor Python application that I maintain,
and I haven't yet tried writing anything from scratch.

Tesha
Printer Friendly | Permalink |  | Top
 
hunter Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 12:27 PM
Response to Reply #27
32. Yeah, too many people running around naked in Perl.
OMG, I didn't want to see that!

People are more likely to be wearing swimsuits on the Python beaches.
Printer Friendly | Permalink |  | Top
 
htuttle Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-15-06 01:27 PM
Response to Reply #27
33. Perl? Quirky?
It's been said that Perl is the only language that looks the same after the scripts are UU-encoded...

Just remember the Three Great Virtues of any Perl programmer: Laziness, Impatience, and Hubris.
Printer Friendly | Permalink |  | Top
 
RoyGBiv Donating Member (1000+ posts) Send PM | Profile | Ignore Sun Sep-17-06 03:37 PM
Response to Original message
39. I think, perhaps, the larger point is being missed ...

I'm not what one would call a programmer; however, I can write very basic programs when the need arises using Java. I taught myself enough of dBaseIV to construct an inventory control and pricing system, which isn't exactly programming but close enough for these purposes. I can also write scripts on my Linux box, which could also be considered a form of programming, and if forced, I can do some HTML markup, which isn't programming but uses some of the same principles.

I've never taken a computer class of any variety in my life. I've read a few books on programming but quickly become bored with them. I mostly just use reference guides that include examples and modify the examples to suit my own purposes.

The only reason I've even attempted doing any of this is because I could make my TRS-80 COCO sing using BASIC. When I first got that little gray box with its one included game cartridge, I quickly realized if I wanted it to do anything useful or fun I was either going to have to do it myself or copy what others did. I spent hours upon hours typing in code published in Rainbow magazine, then spent more hours looking for the inevitable typos. Over time I became able to see the typos without comparing the code on my machine to what was in the printed pages because I began to understand the logic and syntax of how things worked. That, in turn, grounded me in the basic (no pun intended) concept of how writing out commands to make a computer do something worked, and eventually I wrote my own stuff, including a rather nice (if I do say so myself) text adventure game that became rather popular among COCO users.

I could go through the progression here in some detail, but I'll keep it short. Because I had become so comfortable with typing out commands and writing basic programs to make my machines do what I wanted, I intensely resisted the GUI with all its limitations and need to guess where this programmer decided to hide this or that option in the often confusing menu systems. When forced to work with a Windoze 3.1 machine, I still did most of my work from the CLI. I wrote batch files that did what I needed done far more quickly than using the various GUI based apps I'd need to do the same thing. When I started using Linux, the transition for me was relatively easy.

And I think somewhere in here is the real point of this. It's not necessarily about learning to program so one can get a programming job. It's about not being a slave to what others tell you that you are allowed to do with you computer. It's about the fact that Windows, especially, but to a certain extent Macs provide a user interface that is "friendly" but that doesn't allow for a lot of flexibility when you need to do something the developers of these systems didn't account for, or more to the point, for which they don't provide an option unless you pay them more money.

The author of this article is probably using BASIC as an example for the same reason I would. I don't use BASIC for anything now and haven't in years. For someone today, I personally would suggest starting with something like scripting rather than a formal programming language because scripting very basic things is very easy, and you can witness some powerful results from just a few lines of code. But whatever one thinks is best, the point, for me, is to get away from the GUI occasionally and interact with your machine on a more basic level.

Printer Friendly | Permalink |  | Top
 
bemildred Donating Member (1000+ posts) Send PM | Profile | Ignore Sun Sep-17-06 06:39 PM
Response to Reply #39
44. In the beginning was the command line.
Printer Friendly | Permalink |  | Top
 
RoyGBiv Donating Member (1000+ posts) Send PM | Profile | Ignore Sun Sep-17-06 06:58 PM
Response to Reply #44
46. Fargin' Brilliant!!!

I'd never seen that.

Beautiful piece. Thanks.

Printer Friendly | Permalink |  | Top
 
bemildred Donating Member (1000+ posts) Send PM | Profile | Ignore Sun Sep-17-06 07:08 PM
Response to Reply #46
47. My pleasure. One of my faves. nt
Printer Friendly | Permalink |  | Top
 
Lithos Donating Member (1000+ posts) Send PM | Profile | Ignore Tue Sep-19-06 08:11 AM
Response to Original message
49. There is a misperception here
Knowing how to code and knowing the underlying Engineering sciences behind it are two different things. Learning to code is easy, learning how to properly program is difficult.

What Johnny needs first before he really starts coding in any language is a Pen and Paper. The first problems they should solve should be explained in English (or French or whatever language they use colloquially). The first programming books I would recommend are language agnostic and apply anywhere. These include "Programming Pearls" by Jon Bentley and "The Pragmatic Programmer" by Andrew Hunt. Once the person understands how to start thinking in terms of objects, interfaces and process (I'm using this on purpose to avoid the term "procedurally" which has specific meaning), then it really doesn't matter which language to start. At that point your letting the engineering drive the solution, not the idiosyncracies of the language which is often the case with languages such as Basic.

Computer languages are nothing more than AFT (Another "Fine" Tool). The emphasis is on Tool. They each are good at solving certain types of problems and are poor at other types. Cobol does have it's place still for some solutions, though obviously it is a poor choice for many other types. As for learning, I would suggest a cleaner language than Basic which in most implementations is NOT an object oriented language, but rather object based (it uses objects, you can create objects, but it is not object oriented). Some suggestions include Python and Ruby which are more scripting based and thus are more immediate. Perl and Java are okay but have faults in either being too esoteric (Perl) or requiring the use of an intermediate step (Java). Python does have the added benefit of now serving as the scripting engine for several game platforms (I can't remember which), so this may have immediate payback.

The reason I do not suggest either VB, VB.net or C# is complex. Programmers who start with VB as their first tool of choice generally pick up some very bad code habits which usually require major intervention to fix. They let the tool dictate their thinking as opposed to controlling the tool and letting discipline fill in the gaps. VB.net is a sham and should be removed. It's a verbose mangling of C#. C# fundamentally is a good language, but to run it well you need MS's very expensive IDE (people often confuse their "love" of .Net with their love of the IDE, not the language). Without it, you are better off with Java which has better IDE support.

L-
Printer Friendly | Permalink |  | Top
 
mainegreen Donating Member (1000+ posts) Send PM | Profile | Ignore Tue Sep-19-06 08:20 AM
Response to Original message
50. I learned on GWBASIC. Took a long time to break those bad habits.
Never. Learn. On. Basic.
Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Tue Sep-19-06 11:40 AM
Response to Reply #50
51. It.Depends.Which.BASIC
Modern BASICs (and I mean anything from RSTS/E BASIC+
onwards) have very little that forces you into bad habits.

Long variable names? Check!

Ability to define clean subroutines (perhaps through
the DEF FN interface)? Check!

Ability to avoid line numbers cluttering things up? Check!

Array bounds checking? Check! (Which C (etc.) notably
*DOES NOT HAVE*)

Strong data typing? Check!

High-performance file processing, record locking, etc.? Check!

Where's your beef?

Good programmers can program (with varying ease) in any language.
Bad programmers can write bad programs in any language.

Tesha
Printer Friendly | Permalink |  | Top
 
hunter Donating Member (1000+ posts) Send PM | Profile | Ignore Tue Sep-19-06 02:01 PM
Response to Reply #51
52. I look at that Democratic Underground "duboard.php?="
And I can justify my great fondness for html-php-SQL, especially in teaching.

If you want to visit a strange BASIC world try xbasic...

http://www.xbasic.org

It's my personal opinion that BASIC causes insanity.

Max Reason
Tom Pittman
Bill Gates

etc. etc.

Printer Friendly | Permalink |  | Top
 
bemildred Donating Member (1000+ posts) Send PM | Profile | Ignore Tue Sep-19-06 06:49 PM
Response to Reply #51
53. I thought VAX Basic a rather good language.
Although I learned eventually to prefer C and C++, I always missed certain conveniences from their compiler BASIC.
Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Wed Sep-20-06 08:35 AM
Response to Reply #53
55. Thank you, I agree.
I greatly enjoyed BASIC+ on RSTS/E.

I thought BASIC-PLUS-2 was a major step backwards, but that
was also how I felt about a lot of the rest of RSX-11M and
the programs, languages, and tools that it spawned.

And VAX-BASIC remedied most of the back-steps of BASIC-PLUS-2.

The cool part about the VMS environment, of course, was the fact
that the VAX calling standard allowed *ANY* of the supported
languages to directly inter-operate, so you could write a program
using modules written in any of the panoply of languages and then
link them to form a single executable.

Tesha
Printer Friendly | Permalink |  | Top
 
bemildred Donating Member (1000+ posts) Send PM | Profile | Ignore Wed Sep-20-06 10:45 AM
Response to Reply #55
58. Yes, on all points.
I had one large program that was constructed of modules written in Fortran, MACRO, VAX C, and a proprietary special purpose language. A language "toolbox" in the true sense.

And a good environment, too. The one complaint I came to have was that is was all quite verbose, like Windoze, a thing that can have advantages, but that makes extra work for the coder.
Printer Friendly | Permalink |  | Top
 
htuttle Donating Member (1000+ posts) Send PM | Profile | Ignore Tue Sep-19-06 08:00 PM
Response to Original message
54. Three of Nicolas Wirth's languages were designed with teaching in mind
Pascal, Modula and Oberon were all developed and originally used for academic and research purposes. Unfortunately, with a few legacy exceptions (such as Delphi), none of them are in use much anymore. However, GNU compilers are available for all three (and Oberon System-3 is kind of cool, if any geeks out there haven't checked it out yet...).

Nowdays, thinking about all the languages I know (many computer ones, only 1 human one), I'd have to say that Java might be the best compromise for a modern teaching language. There are a lot of tools and documentation, lots of libraries, it's free, and has a fairly well-described and rational syntax. Better than the nightmare that is C++ (which I've been programming in for about 12 years professionally), in any case.

The only drawback is that Java does not deal with pointers or memory on that level. From a development point of view, that is good. From a teaching point of view, it leaves a huge blind spot in students' knowledge that they might smack their forehead into if they ever pick up C (or other 'down to the metal') language later.

I think Smalltalk is still another great language to teach people with, but it puts them in a completely different state of mind after they first learn it. They aren't good for much other than becoming Mac programmers after that...:evilgrin: (speaking as an exclusively-Mac programmer).

Nope -- probably Java would be the best first one.

Hey, anyone for Prograph? (an entirely pictoral, but very interesting, dataflow-type language, and very nearly completely dead).

Printer Friendly | Permalink |  | Top
 
Tesha Donating Member (1000+ posts) Send PM | Profile | Ignore Wed Sep-20-06 08:39 AM
Response to Reply #54
56. About C++...
> Better than the nightmare that is C++ (which I've been
> programming in for about 12 years professionally), in
> any case.

A fellow I knew who was on the C++ *STANDARDS COMMITTEE* used
to make the following joke:

"'C++' is to 'C' as 'lung cancer' is to 'lung'."


C++ was a great idea as Bjarne Stroustrop's early writings
make clear. That great idea was then trampled into crap as
everybody piled on with their favorite feature.

There's still a great language lurking inside there, if you
just know which subset of the features to use and which subsets
to consider "cancerous".

Tesha
Printer Friendly | Permalink |  | Top
 
hunter Donating Member (1000+ posts) Send PM | Profile | Ignore Wed Sep-20-06 10:18 AM
Response to Reply #54
57. I've kept my Silver Book. Pascal was a wonderful thing.
Good and bad.

I think I memorized Jensen & Wirth's "Pascal User Manual and Report" and I also played around quite a bit with UCSD pascal & the associated p-code, which in many ways is Java's ancestor

A quick survey of what they teach now in University was a little depressing for me. There was a very rich smorgasbord of languages and approaches when I was in school, and a lot of excitement that doesn't seem to exist anymore. Now it's just C++, Java, Visual Basic, Perl, etc... get the job done kind of crap.

The excitement I remember has moved outside the universities and into the internet wilderness. Both C++ and Java seem to be served up at universities with an implicit apology, like okay, this is what came to be, deal with it and move on. There are little sputters here and there of fire (things like Microsoft tainted C# perhaps?) but fewer assaults on the fortresses.

Maybe it's a sign of maturity, but mostly I think it sucks.
Printer Friendly | Permalink |  | Top
 
Imperialism Inc. Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-22-06 07:41 AM
Response to Original message
61. Python is a reasonable replacement
Edited on Fri Sep-22-06 07:45 AM by WakingLife
Though it has many advanced features such as OO and procedures etc it can be used in a line by line fashion as well. It has "goto" and "comefrom". I would argue that those commands shouldn't be used though. Understanding procedures is not all that difficult and indeed in a moderately large program the clarity it adds is even an improvement over goto. It is interpretive and can be entered and run one line at a time if you wish. That level of interactivity is a definite boon to learning especially at the very beginning.
Printer Friendly | Permalink |  | Top
 
hunter Donating Member (1000+ posts) Send PM | Profile | Ignore Fri Sep-22-06 01:31 PM
Response to Reply #61
62. Quick Python Overview for Johnny's old BASIC dad...
Printer Friendly | Permalink |  | Top
 
DU AdBot (1000+ posts) Click to send private message to this author Click to view 
this author's profile Click to add 
this author to your buddy list Click to add 
this author to your Ignore list Fri Apr 26th 2024, 04:19 AM
Response to Original message
Advertisements [?]
 Top

Home » Discuss » Topic Forums » Science Donate to DU

Powered by DCForum+ Version 1.1 Copyright 1997-2002 DCScripts.com
Software has been extensively modified by the DU administrators


Important Notices: By participating on this discussion board, visitors agree to abide by the rules outlined on our Rules page. Messages posted on the Democratic Underground Discussion Forums are the opinions of the individuals who post them, and do not necessarily represent the opinions of Democratic Underground, LLC.

Home  |  Discussion Forums  |  Journals |  Store  |  Donate

About DU  |  Contact Us  |  Privacy Policy

Got a message for Democratic Underground? Click here to send us a message.

© 2001 - 2011 Democratic Underground, LLC