New Hampshire Unveils a Historical Highway Marker For The BASIC Programming Language (concordmonitor.com) 68
"It took 10 months to get it done, but the Granite State is now officially a Geeky State," writes Concord Monitor science reporter David Brooks.
"The latest New Hampshire Historical Highway Marker, celebrating the creation of the BASIC computer language at Dartmouth in 1964, has officially been installed. Everybody who has ever typed a GOTO command can feel proud..." Last August, I wrote in this column that the 255 official historical markers placed alongside state roads told us enough about covered bridges and birthplaces of famous people but not enough about geekiness. Since anybody can submit a suggestion for a new sign, I thought I'd give it a shot.
The creation of BASIC, the first programing language designed to let newbies dip their intellectual toes into the cutting-edge world of software, seemed the obvious candidate. Beginner's All-purpose Symbolic Instruction Code has probably has done more to introduce more people to computer programming than anything ever created. That includes me: The only functioning programs I've ever created were in vanilla BASIC, and I still recall the great satisfaction of typing 100 END...
But BASIC wasn't just a toy for classrooms. It proved robust enough to survive for decades, helping launch Microsoft along the way, and there are descendants still in use today. In short, it's way more important than any covered bridge.
The campaign for the marker was supported by Thomas Kurtz, the retired Dartmouth math professor who'd created BASIC along with the late John Kemeny. "Our original idea was to mention both BASIC and the Dartmouth Time-Sharing System, an early system by which far-flung computers could share resources. They were created hand-in-hand as part of Kemeny's idea of putting computing in the hands of the unwashed masses.
"However, the N.H. Division of Historical Resources, which has decades of experience creating these markers, said it would be too hard to cram both concepts into the limited verbiage of a sign."
The highway marker calls BASIC "the first user-friendly computer programming languages... BASIC made computer programming accessible to college students and, with the later popularity of personal computers, to users everywhere. It became the standard way that people all over the world learned to program computers, and variants of BASIC are still in use today."
In the original submission, an anonymous Slashdot reader notes that last month, Manchester New Hampshire also unveiled a statue of Ralph Baer, whose team built the first home video game sold as Magnavox Odyssey, sitting on a park bench. "The Granite State isn't shy about its geek side."
"The latest New Hampshire Historical Highway Marker, celebrating the creation of the BASIC computer language at Dartmouth in 1964, has officially been installed. Everybody who has ever typed a GOTO command can feel proud..." Last August, I wrote in this column that the 255 official historical markers placed alongside state roads told us enough about covered bridges and birthplaces of famous people but not enough about geekiness. Since anybody can submit a suggestion for a new sign, I thought I'd give it a shot.
The creation of BASIC, the first programing language designed to let newbies dip their intellectual toes into the cutting-edge world of software, seemed the obvious candidate. Beginner's All-purpose Symbolic Instruction Code has probably has done more to introduce more people to computer programming than anything ever created. That includes me: The only functioning programs I've ever created were in vanilla BASIC, and I still recall the great satisfaction of typing 100 END...
But BASIC wasn't just a toy for classrooms. It proved robust enough to survive for decades, helping launch Microsoft along the way, and there are descendants still in use today. In short, it's way more important than any covered bridge.
The campaign for the marker was supported by Thomas Kurtz, the retired Dartmouth math professor who'd created BASIC along with the late John Kemeny. "Our original idea was to mention both BASIC and the Dartmouth Time-Sharing System, an early system by which far-flung computers could share resources. They were created hand-in-hand as part of Kemeny's idea of putting computing in the hands of the unwashed masses.
"However, the N.H. Division of Historical Resources, which has decades of experience creating these markers, said it would be too hard to cram both concepts into the limited verbiage of a sign."
The highway marker calls BASIC "the first user-friendly computer programming languages... BASIC made computer programming accessible to college students and, with the later popularity of personal computers, to users everywhere. It became the standard way that people all over the world learned to program computers, and variants of BASIC are still in use today."
In the original submission, an anonymous Slashdot reader notes that last month, Manchester New Hampshire also unveiled a statue of Ralph Baer, whose team built the first home video game sold as Magnavox Odyssey, sitting on a park bench. "The Granite State isn't shy about its geek side."
Re:COLLAGE GRAD? (Score:4, Funny)
A collage graduate is a person who took a bunch of fascinatingly miscellaneous courses but could never settle on a major.
Re: (Score:2)
Let me guess - then glued them together as art.
Lisp (Score:1)
They named one for Lisp, but people kept getting lost in cul-de-sacs.
Re: (Score:2)
They named a toll road Comcast, and it keeps invoicing you even though you haven't driven on it for months.
Really? (Score:1)
Re: (Score:2)
if (get resource A == fail) goto end
if (get resource B == fail) goto free A
if (get resource C == fail) goto free B
do something useful, set initialization to true, return
free B: free resource B
free A: free resource A
end:
I did learn something tod
Re: (Score:2)
Gotos should always be used when cleaning up code that acquires resources but doesn't free them right away. I would fail anyone in a code review who tried to do the following with nested ifs. Nesting would makes the code unmaintainable.
As an amateur and not professional programmer, why is that?
I would have used nested ifs, which would follow the same process and cleanup your example code did, but I don't see how it is any more or less maintainable.
I'm pretty sure it's basically the same number of lines of code, excepting the fact I like to put my closing brackets on their own line, so adding 2-3
Is that what you mean by unmaintainable?
I'm also a bit confused by that 'return' after the do something useful.
Is all of your psudocode in its own
Re: (Score:2)
He is an idiot, that is all.
Never mind him, if you want to work in the business, you easy find interview partners that are not so moronic.
Re: (Score:2)
As an amateur and not professional programmer, why is that?
I would have used nested ifs, which would follow the same process and cleanup your example code did, but I don't see how it is any more or less maintainable.
Heavily nested code contributes to Cyclomatic Complexity [wikipedia.org], which makes it difficult for programmers (even the ones that wrote it) to understand what is happening and thus contributes to errors.
Cyclomatic Complexity (Score:2)
While you are right about heavily nested code, the same apply to heavily "gotoed" code. Indeed it's a good attitude to measure the cyclomatic complexity. If you do that you'd notice that:
if (condition) /* path #1 */ /* path #2 */
{
}
else
{
}
and:
if (condition) goto 1 /* path #2 */
goto next
1: /* path #1 */
next: /* ... */
both codes (assuming they are in the same enclosing function) have the exact same CC. Objectively the goto version induces a higher burden on the developer because he or she has to name every labe
Re: (Score:2)
1) That's an overly simplistic example.
2) That's not how I would use gotos.
3) Your mileage may vary.
Re: (Score:1)
I think it was just a bad example. You could do it with nested ifs fine:
if (get resource A == success){
if (get resource B == success){
if (get resource C == success){
do something useful, set initialization to true
free resource C
}
free resource B
}
free resource A
}
Apologies if that's wrong, I rarely consider myself good at this stuff, but I understand the original complaint about nested ifs versus gotos. Because in most code using 3rd party
Re: (Score:2)
Yes, and if you asked me such a stupid question I would fail you and not show up for the job.
That nonsense is neither necessary in C++ or Java. And I doubt in C#/.Net either.
In what funky century do you live, not in the current one, that is for sure.
Re:Really-Linus Torvalds (Score:4, Insightful)
Both the JVM runtime machine and CLI have JMP and branch instructions. All assembler and pseudo-assembler language, which basically emulate a sort of CPU instruction set, are going to have those kinds of opcodes. The languages that compile to bytecode need to have such primitives. It's the way computers work. Error handlers, no matter how pretty they look in an uncompiled code, are really going to do jumps and branches to some memory location or routine, however obscured that may be.
Re: (Score:1)
If you write that kind of shitty code I assume you are a young and inexperienced developer. Because what you blindly wrote, and yet you managed to get it wrong, is the root of unmaintainable code that I call "GOTO FAIL". Haven't you heard of structured programming and functions ?
if (get_resource(A) == success)
{
function_dealing_with_B_then_C();
free_resource(A);
}
Resource A is valid within the scope of the brackets.
BTW Linus and the kernel developers cr
Re: (Score:2)
Are you recommending breaking it into four functions and passing a ton of arguments among them?
The first to allocate A, call the second, and free A
The second to allocate B, call the third, and free B
The third to allocate C, call the fourth, and free C
The fourth to actually do any work
Re: (Score:2)
Many modern languages automatically produce the necessary "free resource" code and the necessary jumps as a side effect of the "get resource" code, so this is a poor example.
One place I have kept needing gotos is this sort of structure, except "f()" requires access to every single local variable in the surrounding code, and is also very very long (often about 90% of the code in the enclosing function):
if (test1) { // s
x();
Re:Really? (Score:4, Insightful)
That's because you're a n00b who's misheard the grownups talking.
Sometimes goto is the simplest and cleanest solution. I've seen clunky horrible crap trying to emulate it in languages that don't have it.
Re: (Score:2)
Put the goalposts back where you found them.
Re: (Score:2)
Sometimes goto is the simplest and cleanest solution.
Old BSD TCP/IP stacks had gotos in them. I saw them while implementing IPv6 in AIX back in the late '90s. I haven't looked at any BSD TCP/IP code for a long time, so maybe someone deep six'd them
And tcp_input.c had the best comment I have seen ever:
Re: (Score:3)
And behind the scenes, however you create error handlers in a modern programming language, underneath the hood there's going to need to be a JMP somewhere to jump to the exception routine. That modern languages make this seamless and largely invisible doesn't make the underlying concept go away.
Re: (Score:2)
Speaking of goto the sign has a lot of waffle when really it should have just read
10 PRINT "FARTS"
20 GOTO 10
Re: (Score:2)
Good grief. BASIC was inspired by COBOL and Fortran, both of which had GOTO statements. Not to mention here that assembly was a very common language at the time, and JMP and variants were all over the place. As ALGOL's descendants began to take over, all the old unstructured languages, including BASIC, began to adopt structured paradigms. But really, considering it was developed at a time when punch cards were a primary input method, it allowed non-programmers an easy on-ramp to coding, and if done well (us
Basic still has a place (Score:2)
Re: (Score:2)
In the 8 bit days, BASIC was the operating system. It would be pretty nightmarish to have a multitasking kernel that allowed programs to just go mucking around at any memory location they wanted. Not that most early multitasking operating systems prevented it, memory management was pretty limited in at least consumer grade operating systems, and such systems basically relied on the honor system. Preemptive kernels had to put more work into memory management, and pretty much all modern operating systems with
They should update the highway signs too (Score:2, Informative)
GOTO Manchester - 5 mi.
GOTO Concord - 24 mi.
And now ... (Score:2)
Geeks don't like BASIC (Score:1)
They recognize it for the utter crap it is. Pseudos and wannabes will feel honored by this action though.
Re: (Score:1)
Most of us geeks started programming with some form of BASIC no matter how unfashionable it is to reveal.
My sister started teaching me Basic on one of our Dad's many CP/M machines (he used to sell them - probably an SD System or a Kaypro or something, I can't remember) when I was 5 years old.
Eventually I moved on to assembly and C and C++ etc. etc. but BASIC was where I started.
I acknowledge it and I appreciate it for what it was.
My Dad stuck with Basic and Visual Basic and provided an amazing childhood for
Re: (Score:1)
It was a legitimate tool to introduce a student to assembler concepts.
Should never have been allowed to be used for anything else, of course.
It's no longer the Granite State (Score:2)
After the Old Man of the Mountain collapsed in 2003, NH lost its state icon, depicted on stamps and on the state quarter. So why not a rebranding for the coin?
10 REM NEW HAMPSHIRE
20 REM The BASIC State
30 LET ThisCoin = DOLLAR(1.0 / 4, 2)
I have one question. (Score:2)
Why is Microsoft's name attached to this article?
Perhaps the article should be about Bill Gates coining the term "Software Piracy" because he was taking to long to release BASIC to the ALTAIR after so many had already paid for it? (today that amount of time raises legal issues)
Microsoft did NOT create BASIC!
Re:I have one question. (Score:5, Informative)
>Why is Microsoft's name attached to this article?
Because Microsoft's BASIC is what most people in the world used. Long before Visual Basic, there were millions of users of Microsoft BASIC; more than any other software company's.
Did you ever use a Commodore machine (from the Commodore PET all the way to the 128 and some versions of the Amiga)? Then you used the BASIC [wikipedia.org] licensed from Microsoft. Or maybe you wrote some BASIC program on an Apple from the II+ onward? You used a BASIC [wikipedia.org] licensed from Microsoft. TRS-80, from 1977 onward [wikipedia.org]? Microsoft BASIC. Even Atari, who had their own BASIC sold Microsoft's BASIC as an upgrade. Heck, if you had an Altair 8800 [wikipedia.org], there was a BASIC from Microsoft available.
Re: (Score:2)
Microsoft ${basic software idea} is what most people of the world use. Giving Microsoft any credit for any of it is still problematic at best.
Re: (Score:2)
Wow, even Apple BASIC was licensed from MS too. I never knew that! :/
Re: (Score:2)
The story I'd heard was that, in the mid 80s, the Apple II was still selling decently well when its BASIC license was about to expire. So, Microsoft said, "hey Apple, about this whole Windows Look and Feel lawsuit" ... which quickly went away...
Re: (Score:2)
The Free State Project is far, far less popular that BASIC ever was. You're lucky if there are tens of techies moving here. We don't need newcomers coming to the state and then whining about it. Stay home, fix your own damn state.
BASIC vs. "advanced" languages (Score:2, Insightful)
Would you rather do this (BASIC):
10 PRINT "Hello, World"
or this (Java):
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello, World");
}
}
Is this progress? Is it any wonder people find coding difficult to learn nowadays? I suspect coding is more daunting for beginners now than it was in the 1980s because of "advancements" like this.