Why Jonny Can't Code
-
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.
Christian Graus wrote:
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.
The guy was expressing his opinion. You have to respect that. He obviously is fond of his roots. I too started with Basic and undoubtedly would not be where I am today otherwise (thanks Commodore). The Basic language is a tool like any other. It has pros and cons like any other language.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
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 think the reason might be something different entirely. I've noticed that the Jonnys of today have no interest, curiosity, fascination with, or drive to explore computers and how they work. Of course they use technology voraciously. This may be a generational thing. Today, they are so swamped with technology and take it all for granted, and don't even see it as a field worth pursuing. I may date myself, but having grown up when there were no PCs at schools, and getting my first introduction to them in college has left me with a life long appreciation for them, and subsequently writing code. I see the same at work (Not an IT company), those with the most interest and drive are older. Of course the same young generation doesn't read, for example books by Ray Kurzweil such as The Singularity is Near. Those few Jonnys who have that interest and drive are still there, creating the future companies and products. Think Google, Facebook, etc...
-
It seems to me that you can't teach "structured programming" unless you've introduced the class to its opposite. Regardless of language, have the student(s) try to implement something with just if and goto for flow control. X| Then introduce patterns, like for and while loops (with if/goto), then progress to real for and while loops. On the other hand, you have to know your audience. If the class just wants to be able to write some simple programs then by all means skip all that. As far as any students who intend to be serious developers, I believe that experiencing "the olde ways" is very important. It's why we had to learn a little Assembly, Fortran, and COBOL.
PIEBALDconsult wrote:
It seems to me that you can't teach "structured programming" unless you've introduced the class to its opposite.
that's ridiculous in the extreme. so if you want to learn math you must first learn non-math? or to learn to cook you must first learn to non-cook?
-
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?