Why Jonny Can't Code
-
Why Jonny Can't Code[^] I think this guy's got a point. Things are very, maybe too complex for simple PRINT "Hello World!" type programs today. A lot of today's technologies are not very approachable... You don't start out mountain climbing by first tackling Mt. Everest. You start out much much smaller and work up to Mt. Everest. Where's the BASIC of today. Can you even get BASIC nowadays?
Download a C64 or Atari simulator. Voila - BASIC. And you can do cool things like poke characters on the screen, write garbage into the keyboard buffer, and create your own 8-bit chip tunes!
-
Why Jonny Can't Code[^] I think this guy's got a point. Things are very, maybe too complex for simple PRINT "Hello World!" type programs today. A lot of today's technologies are not very approachable... You don't start out mountain climbing by first tackling Mt. Everest. You start out much much smaller and work up to Mt. Everest. Where's the BASIC of today. Can you even get BASIC nowadays?
The article has a point. When you first learn to program, it's overwhelming because a beginner has to learn a wide variety of "mini-skills" all at once, in order to get the simplest thing working. Miss even one of them, and the program fails, and the beginner often doesn't have a clue what's wrong. Sure there are most sophisticated platforms out there. But a sophisticated platform is counterproductive to the initial programming learning experience. BASIC is simple, which makes it ideal to learn the concepts of programming. It's interpreted so you can bypass the concepts of compiling and linking. Line numbers and gotos are intuitive. Even as simple as C is, there are still complexities (for the beginner) like main () and #include <stdio.h> that distract, must be explained, and add more unnecessary uncertainty to the initial programming experiences.
-
Why Jonny Can't Code[^] I think this guy's got a point. Things are very, maybe too complex for simple PRINT "Hello World!" type programs today. A lot of today's technologies are not very approachable... You don't start out mountain climbing by first tackling Mt. Everest. You start out much much smaller and work up to Mt. Everest. Where's the BASIC of today. Can you even get BASIC nowadays?
The guys a decent writer, but he's a bit too nostalgic, or just really bad at finding things online. He's totally obsessed with a particular version of BASIC, for some reason. He even mentions QBASIC in his article as one he passed up. That's how I learned to code - after having a TRS 80 16k I was thrilled to get QBASIC on an PC. He keeps going on about how he just wants the kid to able to sit down and punch stuff in with out the hurdles, but QBASIC is actually easier AND better. You don't need line numbers, you have an actual text editor so you don't have to retype a whole line to fix a mistake, etc. He could easily have sat the kid down with QBASIC and punched in all those examples. And if he doesn't like that there's SmallBasic, or Ruby, or for that matter he knocks Python for being too high level, but you can enter BASIC examples in Ruby or Python with only trivial syntax changes. And they're interpreted just like BASIC, so no dealing with a compiler. Basically he just wanted to whine about 'how good it used to be' instead of downloading some of these things from the interwebs. But then I guess he wouldn't have an article.
-
The guys a decent writer, but he's a bit too nostalgic, or just really bad at finding things online. He's totally obsessed with a particular version of BASIC, for some reason. He even mentions QBASIC in his article as one he passed up. That's how I learned to code - after having a TRS 80 16k I was thrilled to get QBASIC on an PC. He keeps going on about how he just wants the kid to able to sit down and punch stuff in with out the hurdles, but QBASIC is actually easier AND better. You don't need line numbers, you have an actual text editor so you don't have to retype a whole line to fix a mistake, etc. He could easily have sat the kid down with QBASIC and punched in all those examples. And if he doesn't like that there's SmallBasic, or Ruby, or for that matter he knocks Python for being too high level, but you can enter BASIC examples in Ruby or Python with only trivial syntax changes. And they're interpreted just like BASIC, so no dealing with a compiler. Basically he just wanted to whine about 'how good it used to be' instead of downloading some of these things from the interwebs. But then I guess he wouldn't have an article.
... and just to be clear, I'm not saying he doesn't have a point. I learned through punching in BASIC line by line and i think everyone should experience that. I'm just baffled that he insists that experience is so inaccessible nowadays.
-
Worst I ever got was a high-pitched squeal, like a dog-whistle. I can "hear" CRTs tube whine. I was really glad when we switched to LCD.
"The activity of 'debugging', or removing bugs from a program, ends when people get tired of doing it, not when the bugs are removed." - "Datamation", January 15, 1984
Richard Jones wrote:
I can "hear" CRTs tube whine. I was really glad when we switched to LCD.
Me too. At least, I used to. I also couldn't understand why people had these fancy CRT's and graphic cards but would keep the refresh rate at 60Hz. The flicker would drive me nuts. Marc
I'm not overthinking the problem, I just felt like I needed a small, unimportant, uninteresting rant! - Martin Hart Turner
-
Richard Jones wrote:
I can "hear" CRTs tube whine. I was really glad when we switched to LCD.
Me too. At least, I used to. I also couldn't understand why people had these fancy CRT's and graphic cards but would keep the refresh rate at 60Hz. The flicker would drive me nuts. Marc
I'm not overthinking the problem, I just felt like I needed a small, unimportant, uninteresting rant! - Martin Hart Turner
Not everyone is susceptible to flicker. I only ever notice 60hz flicker from 10' and a 45* angle; meanwhile higher resolution is always useful and the highest generally are where the CRT bottoms out at 60hz max. OTOH I've never met anyone who could use the 85hz interlaced (42.5 effective) mode on 90's era systems; which makes me wonder why they ever offered it.
The latest nation. Procrastination.
-
dighn wrote:
and do "Hello World" in minutes.
Not much beats: 10 Print "Hello World" run Marc
I'm not overthinking the problem, I just felt like I needed a small, unimportant, uninteresting rant! - Martin Hart Turner
Beats the VB/C# equivalents: VB
Imports System
Namespace Tutorial
Public Class Hello
Public Shared Sub Main
Dim name As String
Console.WriteLine("Please enter your name.")
name = Console.ReadLine()
Console.WriteLine("Hello there, " & name & "!")
Console.ReadLine()
End Sub ' Main
End Class ' Hello
End Namespace ' TutorialC#
using System;
namespace Tutorial {
public class Hello {
public static void Main() {
string name;
Console.WriteLine("Please enter your name.");
name = Console.ReadLine();
Console.WriteLine("Hello there, " + name + "!");
Console.ReadLine();
} // end method Main
} // end class Hello
} // end namespace TutorialI'll be nice and not post the 200+ line Windows CE VC++ version... :-\ Flynn
-
Beats the VB/C# equivalents: VB
Imports System
Namespace Tutorial
Public Class Hello
Public Shared Sub Main
Dim name As String
Console.WriteLine("Please enter your name.")
name = Console.ReadLine()
Console.WriteLine("Hello there, " & name & "!")
Console.ReadLine()
End Sub ' Main
End Class ' Hello
End Namespace ' TutorialC#
using System;
namespace Tutorial {
public class Hello {
public static void Main() {
string name;
Console.WriteLine("Please enter your name.");
name = Console.ReadLine();
Console.WriteLine("Hello there, " + name + "!");
Console.ReadLine();
} // end method Main
} // end class Hello
} // end namespace TutorialI'll be nice and not post the 200+ line Windows CE VC++ version... :-\ Flynn
Flynn Arrowstarr wrote:
I'll be nice and not post the 200+ line Windows CE VC++ version... Shucks
I'll be unholy and post the Malbolge hello world program:
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>I'll only link to the 99 bottles of beer program due it it's length. http://www.99-bottles-of-beer.net/language-malbolge-995.html[^] Edit: fixed escaping problems.
The latest nation. Procrastination.
-
I'm sorry. The article does appear stupid to me, but I did fly off a little bit. I'm just not having a good day. The point appears to me to be that languages with line numbers and no OO are a better starting point than any modern language. I don't really agree. You can create a simple VB.NET project and write plenty of VB code, without having line numbers, which are only useful for arbitrary goto statements, something I don't think people need to learn about.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
I first started programming in pascal and I found it was a good starting point not too complex but not too simple either. I don't think that a line number language is needed to learn the basics because i still found a small gap jumping from procedural programming to object oriented stuff. It was like learning all over again. I mean you wouldn't want to start a beginner with something like the windows api, but a nice procedural language would be good enough. What i would say is that I think a programmer should be well "read" in a variety of languages even if they are out dated and not commonly used. PS i don't believe in non object oriented languages like how i don't believe in Santa clause :)
-
Wow - do you know anything about programming at all ? Visual Basic is, along with C#, one of the most popular languages for Windows development today. The writer is an idiot. He must be looking for a specific version of BASIC. The problem with programming today, is that there's so much drag and drop, point and click, write no code stuff going on that people are taking contract work and hitting a wall the moment they find they need to write code after all, and hitting our ASP.NET forums predominantly, although I notice a real increase in the WPF forum of late. The problem is that people assume it's easier than it really is to write good code, or just plain don't care about good code, and are glad that todays GC environments allow them to write crap that won't actually crash the system, and then sell it.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
The point is, I think, that modern languages are all about objects and GUIs and handling datasets for, largely, business purposes. The learning curve towards doing anything actually useful is long and steep and uneven. The advantage of the old BASICs was that they were - interpreted, giving instant feed back - had a relatively short, easily assimilated set of reserved words - very small or non-existent libraries - limited graphical capability - used on computers with miniscule RAM and steam-powered CPUs So, learning curve was short but a feel for programming was necessary to do anything at all. So, by and large, people, including quite young children, learned to actually program. Is there a modern equivalent? A pseudo interpreted, multi-paridigm, dynamic language like Python fits the bill very well. It can be used as a spare, procedural language and leave the use of its object-oriented and functional aspects and extensive libraries until you are ready to use them productively. As an aside, its extensive use of lists and dictionaries makes it, in my view, even easier than the BASICs and pascal I used in the 70s.
-
Why Jonny Can't Code[^] I think this guy's got a point. Things are very, maybe too complex for simple PRINT "Hello World!" type programs today. A lot of today's technologies are not very approachable... You don't start out mountain climbing by first tackling Mt. Everest. You start out much much smaller and work up to Mt. Everest. Where's the BASIC of today. Can you even get BASIC nowadays?
Liberty BASIC. It's a Windows BASIC, and but it can also handle advanced API calls, to introduce more complex concepts. It's what got me started on programming, and I've moved on to do VB, VB.Net, C, C++, Java, and lots of scripting languages. http://www.libertybasic.com The Community site: http://libertybasic.conforums.com He also has a completely free version, that is less functional, Just BASIC: http://www.justbasic.com
-
ahmed zahmed wrote:
Can you even get BASIC nowadays?
Maybe the next Code Project programming competition should be a BASIC interpreter, complete with a simple editor, syntax checker, and the ability to do cursor positioning in an 80x25 character grid, so basic (har har) character graphics could be done. Remember the good ol' "poke" statement? ;) Marc
I'm not overthinking the problem, I just felt like I needed a small, unimportant, uninteresting rant! - Martin Hart Turner
-
Richard Jones wrote:
I can "hear" CRTs tube whine. I was really glad when we switched to LCD.
Me too. At least, I used to. I also couldn't understand why people had these fancy CRT's and graphic cards but would keep the refresh rate at 60Hz. The flicker would drive me nuts. Marc
I'm not overthinking the problem, I just felt like I needed a small, unimportant, uninteresting rant! - Martin Hart Turner
If you set the refresh rate at 70 Hz, but you can't compute the next image fast enough, you only update at 35 Hz. You'll have less flicker than at 60Hz, but a less smoothly moving image as well...
-
Why Jonny Can't Code[^] I think this guy's got a point. Things are very, maybe too complex for simple PRINT "Hello World!" type programs today. A lot of today's technologies are not very approachable... You don't start out mountain climbing by first tackling Mt. Everest. You start out much much smaller and work up to Mt. Everest. Where's the BASIC of today. Can you even get BASIC nowadays?
Why not Javascript? Easy to get into and no need to download anything (except maybe a browser that supports a canvas if you want some painting).
-
"The problem with programming today, is that there's so much drag and drop, point and click, write no code stuff going on that people are taking contract work and hitting a wall the moment they find they need to write code after all" Amen to that. If I have to explain to one more stupid f**k how to loop through an collection, or or use a base page class I'm going to go gehad on their drag n' drop a**. 5 years ago I taught myself how to programm by reading books and tutorials online. I started with VB.NET and now do mostly C#. These days I make a good living building enterprise software. So I think .NET is a great place to start. I have tried several other languages and have not been impressed after working with .NET. I feel like nothing truly compairs. If I can become the developer for a software consulting company just by reading books and make the kind of money that good developers make with no colege degree, just by reading books. .NET is a great place to start. If you cant figure it out, maybe you are fresh out of college where they didn't teach you anything practical, or maybe this industry just isn't for you.
-Adam N. Thompson
AdamNThompson wrote:
5 years ago I taught myself how to programm by reading books and tutorials online.
Hey, Adam, I think that's great! You probably got yourself a book like Beginning C# and read through it starting at page 1. I do find it odd that people trying to learn something don't try this logical approach. Although, I must dissent with the forum on one topic: coming out of college, my peers and I appear to have the reverse of the problem described here. We have deep training in x86/MIPS assembly, C, Verilog, and Java SE languages. The problem most of my colleagues faced upon entering the workforce is that real work is done on top of a platform. Be it Java EE on WebSphere, .NET on IIS, Coldfusion on Tomcat, .NET Micro on ARM 9, or whatever. Imagine just knowing the Java SE 1.2 language: that doesn't make you a productive programmer. You need to know how to use the tools, designers, APIs, databases, and servers out there. Raw languages are just academic and don't help you solve your clients' business need. Am I making sense here?
modified on Wednesday, October 14, 2009 7:05 PM
-
Actually, I think the author must be stupid. First, it took me less then 30 seconds to find qbasic.com where you can download guess what: a BASIC interpreter. But beyond that, I never learned Basic. And most of the programmers I know never learned Basic. I don't think it has a place in modern computing. I would say go download the free .NET version of Visual Studio and pick either VB.NET or C#. I was driven from programming from the attitude that you learn by suffering through things like how to get your program into the computer. After one semester of COBOL, I wrote off what is a great profession for me. Eventually I figured out there was no need to suffer with the things that made me hate that class. I will never subject my kids to Basic. They can learn from a usable language. They can go through bad phases in a way that at least will transfer to something useful.
Kirk Wood wrote:
I will never subject my kids to Basic. They can learn from a usable language
QuickBasic is very usable, from a beginner perspective. Sure, you're not going to use that language in a real job, but it is fun for very small programs. And much of that programming transfers over to other languages. Not sure I would restrict a beginner student to a certain language just because it is more useful in the real world. Guess it also depends on what they want to do. If they want to make buttons and text boxes and such, C# might be the way to go. If they want to draw some pixels to the screen to make games or physics simulations, QuickBasic would be good. If they are older and interested in a career, something like C# would probably be more ideal. But if they are still in middle school or high school, no harm in having them play with programming for a while.
Visual Studio is an excellent GUIIDE.
-
Why Jonny Can't Code[^] I think this guy's got a point. Things are very, maybe too complex for simple PRINT "Hello World!" type programs today. A lot of today's technologies are not very approachable... You don't start out mountain climbing by first tackling Mt. Everest. You start out much much smaller and work up to Mt. Everest. Where's the BASIC of today. Can you even get BASIC nowadays?
I'm confused. Other than the single line "The "scripting" languages that serve as entry-level tools for today's aspiring programmers -- like Perl and Python -- don't make this experience accessible to students in the same way." there is no mention of the easiest two entry points into programming I can think of. What exactly is wrong with either language? Most of the web is written in Perl... And how can you get any closer to the line numbered experience that the author so forlornly laments than the python interpreter?
-
What's an arbitrary GOTO statement?
Gary Kirkham Forever Forgiven and Alive in the Spirit The men said to them, "Why do you seek the living One among the dead? He is not here, but He has risen." Me blog, You read
I'm not sure if you were serious about this question or not, but it actually points to what seems to be the real point of this topic. Learning good programming practices. Early versions of BASIC had an arbitrary GOTO statement that could go to any line of code, not just those that were labelled. That may have been what was meant, but when I think of an "arbitrary" goto, I tend to think of something else. To me, the problem wasn't the language, but the way it was used. I would, therefore, say that an arbitrary GOTO statement is one that doesn't follow a well known and easy to follow pattern. One that leads to what's called spaghetti code. I learned BASIC on my own and learned very quickly to organize my IF, GOTO, and GOSUB statements so that they were easy for me to follow. I was never told to do this, but I learned by example from seeing programs that had been well written. When I got into high school and took a computer programming class (which was a joke for me), I would finish my projects so quickly that I ended up helping other students. That's when I saw the importance of what I had already learned by example. In fact, I ended up polishing my programming style from the examples presented to me in that class (the only thing I did learn from that class). Some of the other students tried to imitate those examples as well and generally had well written and relatively easy to debug code. It would look something like this:
10 x = 1
20 if x <= 10 then goto 60
30 print x
40 x = x + 1
50 goto 20
60 endThis is the BASIC encoding of a while loop (a bad one, since an FOR loop would be easier, but I didn't care to do something more practical for a while loop, such as reading a set of values until no more values remain). I forget what version of BASIC it was now (I learned so many =p). What the other students wrote (those who didn't catch on to the examples)... well, its hard to show with this simple of an example, but when you had more complex statements with any level of nesting, they would fail to structure their code in a way that made it easy to tell what was going on and they would have goto statements that crossed one another (loops would overlap instead of being nested, for example). I could still pick out the path of logic that their program would actually follow, but they couldn't. And my first step in fixing it would have been to organize it into meaningful structures in any case. Of course, when I was helping other students, I couldn't do that for them, and so I spent most
-
AdamNThompson wrote:
5 years ago I taught myself how to programm by reading books and tutorials online.
Hey, Adam, I think that's great! You probably got yourself a book like Beginning C# and read through it starting at page 1. I do find it odd that people trying to learn something don't try this logical approach. Although, I must dissent with the forum on one topic: coming out of college, my peers and I appear to have the reverse of the problem described here. We have deep training in x86/MIPS assembly, C, Verilog, and Java SE languages. The problem most of my colleagues faced upon entering the workforce is that real work is done on top of a platform. Be it Java EE on WebSphere, .NET on IIS, Coldfusion on Tomcat, .NET Micro on ARM 9, or whatever. Imagine just knowing the Java SE 1.2 language: that doesn't make you a productive programmer. You need to know how to use the tools, designers, APIs, databases, and servers out there. Raw languages are just academic and don't help you solve your clients' business need. Am I making sense here?
modified on Wednesday, October 14, 2009 7:05 PM
Ya, in some cases you may be right. It's just that the programmers that I have that are stright out of college have acidemic knolege but no real practical knolege of how to buld software. These are the ones i end teaching how to step through their veribles in debug mode using break points and stuff like that. They have no idea what a delgate is. And forget get about new language features. I admit that may not be the so in all cases as some people are just more passionate about their work than other. If you'e building a simple app to track Magic Cards. I cold teach a high schooler how. But whe it comes to buildign enterrnrtprist applications. There is a lot to know
-Adam N. Thompson
-
I have to peek a little first in order to get excited enough for the poke to be effective.
Visual Studio is an excellent GUIIDE.