Had an ooollldd IBM card printer/sorter combination across the hall from where I worked at Boeing in the early 90's. Looked like a 50's Studebaker. Boeing had to pull some guy out of retirement to program this thing. Programming consisted of pushing relays and resistors into pin holes on a circuit board with worn out marking saying things like "GANG HOLE PUNCH". You had to see it to believe it; it was Boeing's original finance computer, but was then being used for spare parts inventory.
We had to flip our relays with carefully manipulated horseshoe magnets which we had to extract from real horses. And we were bloody grateful, I tell you!
Pfft. N00b. We had to carry our ones and zeros uphill three miles through the snow. Each bit weighed 20 pounds, making each byte 160 pounds. But it was good for you and we ENJOYED it.
If you really read the question it is about the *first* programming language you've used, not the best. I guess Lisp was common (ha!) enough to be included, but Smalltalk? To say nothing of Erlang....or a not yet released language.
I only hope that the majority who voted for basic (about 80% as I write this) were being ironic.
I started programming only seven years after Dijkstra wrote his infamous indictment of BASIC, and on a machine that cost just under 100GBP in 1982. At that time, on hobbyist computers, with no additional software, the choices were BASIC, machine code (some machines offered a built-in assembler, but these would have been closer to 400GBP), or Forth if one had a Jupiter Ace [jupiter-ace.co.uk]. Having subsequently learnt machine cod
Being able to draw weird spirally patterns was loads of fun when I was a kid. I never really comprehended real PROGRAMMING until many years later, but Logo helped create my life-long interest in "making computers do nifty things".
Later versions had more involved programming. I remember examples had music (musical memory game)! I actually bought the newer version and hacked the samples to make my own.;)
Logo was the greatest! When I learned BASIC, afterwards, I could not believe why PCs were so underpowered compared to a TI computer. And that line numbering nonsense, GOTOs and GOSUBs! where were my repeat loops?
Right now, only python looks as easy as LOGO felt, and only javascript gives me the instant gratification I got from it.
Logo certainly lets you do a lot of things that are arguably not programming. Some logos [microworlds.com] more than others [softronix.com]. I grew up using MSWlogo, and while it's suitable for kids, it's a powerful piece of software that lets you play with everything from 3D graphics (extending the turtle graphics model with yaw, pitch, and roll, among other capabilities) to robotics through control of the parallel port. It's certainly a more worthy programming language than basic, and more suitable for exploration than any of the others in this poll.
Back in my old days we didn't have these fancy programming languages you whippersnappers have now. I remember when I started I was issued a magnifying glass and a magnetic needle, and I was etching little zeros and ones directly on the hard drive. That is, after I made my way to the factory through waist-deep snow. Barefoot. Uphill. Both ways...
Back in my day it was all binary, and all we could do was line up pretty pink ponies & pretty pink unicorns in a straight line. The unicorns of course were on, and the ponies were off. Those were the days!
My first programming language was BASIC, but not this new-fangled "interactive" basic: I programmed by mail!
Absolutely not kidding. We learned about computers from a math teacher, and she mentioned she knew a mainframe programmer at some big company. I subsequently went to the public library, found some crufty old book on basic, learned a bit about it, wrote a very stupid program on lined notebook paper, and had my teacher post it (via real physical mail, mind you, not email) to her friend. A few weeks later, I received a return letter, containing the line-printer output from my program! Wow, it worked! I was hooked!
When I entered high school, they had a PDP-8s (the "slow" PDP-8, with a serial ALU) connected to an ASR-33 (a real teletype) running at 110 baud, complete with program save/restore on paper-tape. Luxury...!
Logo's gotta be the most underrated "languages" for teaching programming ever. If it weren't for hours and hours of driving that little Turtle (more of a triangle... but you can use your imagination) around, I probably wouldn't be a programmer today, 20 years later.
After that, I moved on to C64 BASIC, G(ee)W(hiz)BASIC, and Pascal to learn on.
Actually, I think it's quite the opposite. Latin, for a human language, is very well-structured and considerably less free-form than many other languages. As such, it is an excellent introduction to language in general. Studying latin at school has helped me to better understand English, and to better approach the study of other languages.
Perl on the other hand is a syntactic shocker, and would be one of the worst introductions to coding that I can think of (as I believe parent was suggesting).
Actually, I think it's quite the opposite. Latin, for a human language, is very well-structured and considerably less free-form than many other languages. As such, it is an excellent introduction to language in general. Studying latin at school has helped me to better understand English, and to better approach the study of other languages.
Latin?!? If you want an even better introduction to languages in general, you should skip all the ad-hoc baggage that comes with Latin by trying a nice, clean designed language such as Esperanto [lernu.net].
Although it's certainly not perfect, learning Esperanto has several advantages over Latin:
In Esperanto, there are practically no irregularities. You can spend your time learning grammar and structure instead of memorizing Latin's ad-hoc tables of irregular conjugations and declensions.
Esperanto vocabulary includes not only Latin roots but also germanic and slavic roots. This is a huge help in building your vocabulary in most European languages.
Esperanto is more flexible than crufty languages like Latin. Translations from other languages into Esperanto can retain elements of the original which would have to be completely reworded in other languages. This means Esperanto can give a better feel for how other languages work by allowing translation without so much obliteration of form.
Esperanto is a living language and has a larger community than Latin. People use and contribute to the Vikipedio [wikipedia.org]. New terms are coined as needed, original literature and music are produced. It's not a "Read-Only" language.
A lot of literature from all over the world has been translated into Esperanto. There are current publications, a few magazines and news sites, and several regular radio broadcasts in Esperanto (many available over the 'net, of course). Not in Latin.
You can meet and talk with interesting people speaking Esperanto. Not Latin.
There is documented proof that Esperanto accellerates the learning of other languages. Students who took one year of Esperanto followed by three years of French were more fluent in French than students who had taken four whole years of French... and they had the added advantage of learning two languages instead of just badly learning the one.
Did you know that even the Roman Catholic Church, one of the last bastions of the Latin language, has been moving away from Latin as their official language? The new Pope has been an Esperanto speaker for many years.
Some people say that they object to Esperanto because it was invented. They call Esperanto "artificial" and they say that Latin is a "natural" language. Well, Latin is about as 'natural' as the city of Rome. Having two millenia of accumulated cruft is not an advantage. Using Latin as a "beginner language" is like feeding cold, left-over haggis to a baby.
Seriously. For propaedeutic use, Esperanto is a much better option than Latin. If you never thought you could really be fluent in another language, try it. You'll like it.
Did you know that even the Roman Catholic Church, one of the last bastions of the Latin language, has been moving away from Latin as their official language?
In 3rd or 4th grade the school bully picked a fight with me, and I pinned him, the teacher came over, principal said we had to write 100 times "I will not get in a fight on the school playground." I asked if I could type it and he said yes. Dad showed me the nifty cartridge for the Atari 800 and my first program was.
10 For I = 1 to 100 20 lprint "I will not get in a fight on the school playground" 30 Next I
; Uses S-C Assembler variant. ;.or is origin ;.as is ASCII String ;.hs is Hex String .or $300 main ldy #$00 .1 lda str,y beq.2 jsr $fded ; ROM routine, COUT, y is preserved iny bne.1 .2 rts str.as "HELLO WORLD" .hs 0D00
Assembly (8086/DOS):
.MODEL tiny .CODE ORG 100h HELLO PROC MOV AH,09h LEA DX,msg INT 21h;Display Hello World
MOV AX,4C00h;Exit to DOS INT 21h HELLO ENDP msg DB 'Hello World$' END HELLO
Fortran:
PROGRAM HELLOW WRITE(UNIT=*, FMT=*) 'Hello World' END
Pascal:
PROGRAM HelloWorld;
BEGIN WRITELN('Hello World'); END.
BASIC:
PRINT "Hello World"
C:
#include <stdio.h>
main() { printf("Hello World\n"); }
Java:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }
Perl:
print "Hello World\n";
The lameness filter is truely lame. And why doesn't Slashdot (of all places!) allow some sort of HTML/CSS that preserves code indentation (<tt> should work, but doesn't.)
I also wanted to paste some COBOL code for "Other" but that wouldn't let me get past the lameless filter. Maybe it's not completely lame after all:-)
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut erat sapien, pretium vitae, ullamcorper nec, consequat ac, quam. Integer sit amet metus eu turpis posuere ultricies. Fusce luctus neque lacinia purus. Pellentesque ante nibh, sodales quis, fermentum sed, rutrum quis, risus. Praesent at augue et pede pretium bibendum. Fusce interdum ultrices sapien. Vestibulum lacinia augue ac tellus. Nullam nec ante at mi rhoncus ultrices. Maecenas ullamcorper justo. Morbi convallis est quis neque elementum dignissim. Maecenas iaculis ante vel urna. Maecenas nec felis. Phasellus mi libero, commodo quis, placerat quis, rutrum ac, lorem. In elit. Etiam et lorem vel lectus condimentum hendrerit. Aenean enim diam, elementum ut, sollicitudin eu, lacinia nec, velit. Quisque dictum lorem a ante. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse potenti.
Vivamus quis enim. Ut ultrices dignissim ipsum. Proin sit amet magna ut arcu vehicula venenatis. Pellentesque porta elementum diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus sit amet nibh et ipsum tincidunt consectetuer. Ut purus est, tempor sed, faucibus et, elementum sed, massa. Sed tincidunt augue. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec metus. Praesent scelerisque. Ut sed magna sed leo scelerisque volutpat. In pede arcu, egestas ut, porta vitae, blandit vitae, lectus.
Ut et turpis. Cras egestas neque sed lorem. In condimentum. Proin consectetuer lacus id justo. Phasellus accumsan velit in sem. Vivamus erat erat, bibendum eu, facilisis sed, viverra rutrum, magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean ornare aliquet tellus. Duis varius malesuada velit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Phasellus quam odio, dictum nec, ornare id, aliquam sed, lacus. Sed id neque at enim pulvinar cursus. Donec adipiscing purus non purus. Fusce mauris. Morbi bibendum. Pellentesque turpis augue, acc
No, really. My first computer program was written with plastic straws.
In 1964, when I was four years old, my father took me to his office to see the company's new computer, an IBM System/360. It was a big beast, with blinkenlights, tape drives, keypunch machines, card readers, card sorters, and a printer the size of a VW Beetle. The programmers and admins actually wore white lab coats. I was enthralled, and I wanted one.
"I want a computer" was my constant refrain for weeks afterwards. Well, my father eventually gave in and indulged me, buying the only computer [computermuseum.li] a home user could buy in 1964 (Wikipedia link [wikipedia.org]). It wasn't much more than a binary adder, programmed by placing 1" lengths of plastic straw on various pegs (which defined input values) and then pulling a lever to "cycle" the mechanism, producing a result on a 3-digit binary display. I was more than a bit disappointed, but I did get an understanding of Base-2 math that would serve me well later. I suppose it was $6 well spent.
As for "real" languages, well, BASIC was my first. My high school had a Wang micro (not really much to speak of, but it had a built-in CRT, cassette storage, and IIRC 64KB RAM). I wrote a bunch of programs, like a tarot card reader and a program that took the scut work out of generating the permutations of a dodecaphonic tone row (inverse, retrograde, and inverse-retrograde). I was more of a music geek than a computer geek and I had ambitions of becoming an avant-garde Serialist composer in the style of Schoenberg or Webern. Fortunately, drugs and minimalism disabused me of that notion right quick.
Oh, but here's the beauty part. BASIC got me laid. Really. No shit.
So, I go to music school up in Boston, and it's a real sausage-fest. Like 90% guys. Fortunately, there was an all-women's school down the road, Simmons College. I'm at a mixer there on a Friday night, and I meet this girl who can't stop going on about how hard her Intro to Computers coursework is. I even remember her particular complaint: "What's with 'A=A+1'? Either A is A or it's A+1! How can it be both?".
Of course, I mention that I know BASIC. Next night, we're at my apartment, using my room mate's TI Silent 700 to log into the Wellsley PDP/11 (Simmons didn't have their own computer) via its acoustic coupler and the phone's handset. I check her work, fix a few mistakes, and run her program. Looking over the results, printed out on that thin thermal paper, our eyes meet...
I cut my teeth on BASICA on the IBM PC in the mid 80s when I was barely in my teens. Made a couple of programs and I was curious how they made EXE files so initially, I actually renamed my.BAS files into.EXEs. Really silly looking back, then I stumbled into Turbo Basic. I was so fascinated with how they turned my BASIC files into EXEs. My computer teacher told me that professional programmers used either Pascal or C. He gave me a copy of Turbo Pascal 4.0 and I converted my programs into Pascal. No google or internet back then, and books were sooo expensive, especially in the Philippines in the 80s. After skipping lunch for a couple of weeks, I managed to buy a Pascal book. After about a year, another person told me that real commercial software was written in C. The transition from Pascal to C was easier than BASIC to Pascal was. I managed to hunt down a copy of Turbo C 2.0.
I then found a cheap, reprinted copy of Peter Norton's Assembly Language Guide and cut my teeth into assembly (with TASM 1.0) on that one. When I found out how to interface C with assembly, rest was history for me.
No option for COBOL. Sure you younger guys might think there was no programming before the personal computer, but many people worked to create what laid the foundations.
COBOL was taught at my secondary college (I 'spose this would be an American Senior High?) and I took it on to university and then out into the real world.
Aaa... those were the days. My first computer was a PC made by Nokia (MikroMikko 2 with an Intel 80186 processor inside). Some information can be found from here [old-computers.com] (that's actually the older model, but there is a mention about the version 2 also. Also the machine itself was almost identical, a large clumsy-looking brick).
I had a huge urge to learn to program, because all of my friends had Commodore 64 computers and they did some pretty neat things with those machines. For some reasons (maybe it was the money) by parents didn't want to buy a C64 for me, so instead they managed to get cheaply this weird piece of hardware from some engineering company. It had a modified MS-DOS 2.xx as an operating system. For some reason, that version didn't ship with any kind of BASIC interpreter, so the only thing I had, was the DOS debugger, DEBUG, and a brief introduction to assembly language at the machine handbook. So, I didn't have any choice. I started to learn, piece by piece, what different keywords meant and over the time, I was able to do some pretty primitive programs with DOS DEBUG. Mind you, I didn't have any other references available except the machine handbook and.COM-applications (DEBUG.COM, COMMAND.COM, etc.) and some old article copied from some computer magazine, which had a small utility program written with assembly language and "compiled" with the DEBUG.
But I think that my programming hobby really started to bloom after I had my second computer. That one included a modern 3.3 version of the MS-DOS and with it came the GW-BASIC and the full reference manual for the language. Oh boy, I still can remember the feeling, when I was able to animate a pixel in graphics mode for the first time.
The interesting thing is that after learning to really do some useful stuff with the GW-BASIC, I came back to DEBUG. I was able to buy myself a Norton programming guide and the Ralf Brown's PC Interrupts book (these two books were like a bible for me at that time. Two big books full of assembly code snippets and interrupt descriptions). I still have these two at my bookshelf as a reminder of simpler times.
I don't know why, but apparently I have a soft spot for assembly language and the primitive, yet flexible nature of it.
But then came the Turbo Pascal 3.x, 5.5, and Turbo C++ 3.0. After that I started to do programming as a job and the variety of languages grew from there to include all sorts of modern languages with widgets and stuff and other fancy things.
Still, to this day, I have this urge to learn new languages just for the sake of learning. And the assembly language still has this special place somewhere inside of me...
My first exposure to programming was through Basic back in the 80s (early years of elementary school). However, the programming language that really sparked my interest in programming was Turing back in High School. It was simple to use and all of the concepts translated nicely into C which was my next language. I think Turing is an excellent language to introduce the basic concepts of programming to new students. It teaches them the basic of data types (unlike php/perl), logic, data storage, basic graphics,etc, without blurrying these concepts with the pitfalls of C or the Object Oriented facet of Java which can both be introduced later on.
Given that C has been around since the early seventies, and C++ since the mid-eighties, I'd gather the difference between those who would have chosen C (old farts like me) over C++ (not as old farts) would have been interesting to measure.
Incidently, the years in which I applied language skills due to some programming project at hand: C 1983 C++ 1991 Objective-C 2005 C# 2006
It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
Yeah, it was BASIC for me. But I think it would make so much more sense to teach kids assembly as their first language. It doesn't matter too much which assembly you teach them, but a simple one would be nice -- or possibly a subset of a complicated one (like x86). For starters, beginning with a low-level language and working up to a high-level language (like BASIC) would match the way computer programming has evolved. And, it would just make more sense to them.
If this is your first program:
10 PRINT "HELLO"
then you learn pretty much nothing. You learn that the "PRINT" keyword in BASIC will magically make a word appear on the screen. But to get there, you've unknowingly made hundreds of assumptions and omissions. Like, for example, the fact that "HELLO" is a string, and probably has a null byte hiding at the end, and that "PRINT" actually loads an entire block of code and interrupt handlers to get the job done, etc... Imagine if this was your first program, instead:
mov ax, 5
You type that in and run it, and use your debugger (or whatever) to show the contents of the AX register, and sure enough, it's five. Nothing mysterious there, no hidden assumptions. And from there, you learn how to add, multiply, and within a couple of weeks, you'll be printing "HELLO" on the screen, but you'll actually understand why and how those five letters actually get there, on some level. And when you do take that BASIC or C++ or Java course next quarter, you'll have a great appreciation for how much easier it makes your life as a programmer to have high-level constructs like for-loops and call/return.
We don't start kids off in math by showing them an example of a triple integral and then working backwards to adding and subtracting.
I voted Basic, but now thinking about it, I suppose the first bit of "programming" I did was a bit of DOS scripting, changing my parent's computer's autoexec.bat file to display (echo!) "This computer will self-destruct in 10 seconds if 18-digit security code not entered", wait 10 seconds, and then finish booting up. Man, that got quite the reaction =)
I think I got the code to that little trick in some computer magazine, which reminds me of bit of Basic also learned from a textbook or magazine somewhere, and led me to start fiddling with the colors of "Hello world!" printed out to the screen on my first day in computer programming class in middle school:
Teacher walking past suddenly says, loudly and right behind me: "What are you doing?"
"I'm -- I'm making pretty colors..." I stammer.
"Good job! That's the next thing we're doing!"
And with that, I now return to my real job -- debugging C# code! (before my boss asks me a similar question, which will doubtfully result the same happy conclusion as that programming class ["Alright employees, next task is to waste time posting on Slashdot! Get to it!"])
This brings up the question "What is writing a program?" If you add a few lines to a script, does that qualify as programming for this pole? What about a lot of lines? How about those of us who used to program (loose use of the word "program") our TI-55s to solve one polynomial equation while we did another one by hand during a test - was that programming?
I had the same sort of existentialist reaction as you did...what does it mean to be a programming language?
My first thought was my first CS class where they taught Lisp. But then I realized I used to code a ton of little things (pong, bricks, semi-3D flying game) on my TI-85. But then I realized that my first experience with a language that instructed a machine on how to proceed was musical notation. A bit of an odd assertion, but musical notation does have goto's, code blocks, loops and somewhat of an if-then construct.
So, in the end, I chose other because none of my language choices were listed as possibilities, but it was still a fun thought experiment.
That brings up an interesting question: Is musical notation Turing-complete? It has loops and branches (repeat signs, DC, etc), and is at least superficially similar to a procedural language. Hey, if brainfuck is, why not Bach?
Musical notation does not have any concept of data storage (or self-modifying notation). As such, it is in the same computational class as regular expressions and finite automata, i.e. not Turing-complete. You can still write some quite complex programs in a non Turing-complete language, however. Just ask a Perl programmer, and they'll tell you how powerful regular expressions can be.
Muscial notation's only use of state is "repeat N times", or "repeat again, but change in this fashion", which both require you to know how often you've repeated so far. This is finite state, and a very flat, simple form at that. No recursion; nested iteration is rare and not easily notated; and complex conditionals (other than variant endings after loops) are also rare and not easily notated.
If you haven't made a hard drive walk, you haven't written a real program. If you don't know how to program in FORTRAN, C, and at least one archaic assembly language (VAX Assembler is good, x86 is right out) you aren't a real programmer. Additionally if when you hear the word 'macro' and the first thing you think about is MS Office, then you aren't a real programmer -and- you deserve a beating. Oh, and if you don't know how to trace the stack, you aren't a real programmer -and- you deserve to be tarred and feathered. Any questions?
The way that was worded makes you sound like a bitter, elitist old fart. I am sure that is not what you intended, though.
How about:
You aren't a real programmer unless you have the intelligence to adapt your skills for the task at hand and the wisdom to use the right tool for the job.
I wish I had mod points to give you. What fucking good is VAX Assembler going to much anyone today? It doesn't matter what programming languages you know as long as you understand the basic concepts and can apply them regardless of language.
What fucking good is VAX Assembler going to much anyone today?
Who do you think has the higher price tag, one of the millions of VB programmers, or the handful that can still do VAX assembler? There are still VAX systems in production.
That brings back memories. I remember being taught Logo at school (watch the turtle move!) I can also remember visiting the Exploritorium in San Francisco as a child and for a while they had a small bank of computers you could sit at and program in Logo.
I wrote a heck of a lot of programs in Basic on my//e as well. I think my crowning acheivement was being able to program the computer so the Koloa Pad could be used as a touch sensitive keypad. It was really a great thing to sit around and think of something and then try to figure out how to make the computer do it.
I never really did any programming after the stuff in Basic on the//e; And I'm glad I never persued it as a job path.
But oh, the memories.
]10 PRINT "PICK A NUMBER BETWEEN 1 AND 9, AND TYPE IT" ]20 GET A ]30 PRINT "WRONG!!! TRY IT AGIAN, AND THIS TIME TRY TO DO IT RIGHT" ]40 GOTO 10
I remember TI BASIC, that was the first machine I ever programmed as well, except my dad taught me (grandma hated computers). It was missing a whole slew of commands that interpreters like GWBASIC had, and I eventually grew into the PC (and then Pascal, Assembler and C). I still loved that machine, though, and I have one in my basement that I found at a Goodwill for $12. Parsec for the win.
Man, I thought that there's be more votes for Perl.
It was a great first language, IMO. Explicitly labeling variables, arrays, and associative arrays with "$", "@", and "%", respectively, made it very easy to read. I miss that in some other languages, where data types can sometimes be hard--or at least time-consuming--to determine when reading unfamiliar code.
I'd hate to try to do complicated work with arrays in any language *but* Perl, for that very reason. It makes it so much easier to keep track of your various levels in multi-dimensional arrays, not just when you're writing it, but when you come back to it a few months later and have forgotten most of what you did, or when reading someone else's code. I could never have done some of my early coding projects in other languages; I'd have hit a brick wall of incomprehensibility and given up.
But yeah, I've switched to PHP for web coding. It's Perl-like enough that it was an easy switch, and they took out damn-near everything that made Perl sometimes obtuse as a CGI language.
The TRS-80 with 8K of RAM (I couldn't afford the extra $285 to bump the RAM from 8 to 12K) only had beginners all-purpose symbolic instruction code on it.;) But at least I had the cassette tape interface so that I could keep my programs after turning the computer off.
- I remember once filling the RAM with a program and not being finished. Hours of typing for nothing.
I used to speed up routines in my TRS-80 basic programs by writing the assembly on paper, assembling by hand, then POKE into memory (very carefully) then use the CALL keyword to jump the the routine. Great way to speed up small routines for "graphics".
But, I did have the Model 4 (64K RAM!!! plus 2 floppy drives!!!).
[nerd] "If you see a red sign at the back of the mall that says ELECTRONICS STORE, it's the--" [chorus girls] Radio Shack!! Radio Shack, baby!
I'm runnin' down my Radio Shack batteries Can't use my calculator, or even worse, my vibrator
"I've got me a computer, it's as big as a whale, My floppy disk gets hard at a Radio Shack sale. I don't got a life, I don't got a lady, I'm a dork! My best friend's a TRS-80!"
[chorus girls] The Radio Shack is a nerdy little place where Dweebs can blow their fuses Radio Shack, baby "Radio Shack, baby!"
Radio Shack! Radio Shack! ("Clip-on ties!") Radio Shack! Radio Shack! ("Geeky guys!")
"Woofers and tweeters, Tandy voltage meters, Join the Battery Club at Radio Shack."
Well he don't got a girl, got a metal detector He don't got a condom, got a pocket protector
"My power is droppin', but I can go shoppin' 'CAUSE THE NEW CATALOG CAME IN TODAY!!"...
Damn you, swg101! DAMN YOU TO HELL!!!!!!!!!!!!!!!!!
Yeah, but typing out 4000 DATA statements to make your dragon move across the screen was the greatest for a 13 year old:o) But it also sucked ass when my sister recorded her Loverboy album over my tape:o(
We didn't have a VCR in 1985. They weren't common then.
I don't see what's so weird about recording audio on an audio tape. She would hold the mic pickup of my mom's boyfriend's a tape recorder (big, brick-like device) up to the TV speaker, for an hour. She liked to listen to the recordings at night, before bed. She was in love with a character named Paul, IIRC. She would freak out if she missed a day, even though she was sitting there watching it anyway, while she was taping. No audio tape in the house was safe.
If I recall correctly, my brother spliced the cassette connector to a mini-rca connecter (we didn't have the Commodore tape drive - we just used an audio tape recorder - then plugged it into the "mic in" on our vcr (yeah, Dad bought a Sony Betamax). There was a dubbing feature on our vcr that left the video track in tact, but the sound for "Friday the 13th" was replaced with whatever he'd programmed...
We later went on to dub audio over that movie with our own story line. But that's a story for another day;)
I hear ya! I can remember my friend and I writing a program to convert a "board" game (turn based strategy game we had built 1/32 scale models for, built all of the terrain like a model railroader would, laid out the grids/spaces- this "map" was 4 ping-pong tables 100% covered-this was the "board"- rolled dice to play the game) into a PC game we could play on his Tandy Color Computer. Not more than 3 weeks after we wrote the program (took 3 weeks), he replaced the TCP for a Tandy 1000 and we got to re-write the whole mess for the T1000. Wasn't as bad as having to start from scratch, but whew! It was a cool game, about 6 of us across the USA would play sorta online. We would call each other to set a date and time to start a battle, then everyone could setup their own "board" and then we would connect with the T1000 via modem to play. Usually we could all 6 take about three turns each during a 4 hour session- took months to finally finish one game. Lot's of fun back then, planning your moves all day, getting home, finding out what you planned went to hell the first move-LOL, just like a real battle!
In many languages (for example C/C++/Java/C#), instead of explicitly using multidimensional arrays you would typically create a single-dimension array of structs/objects, each of which contains another array. That helps conceptualize things a lot better in many cases. I'm not so sure having a language encourage direct use of multidimensional arrays is a good idea for readability.
It's quite readable. Every variable and array has what is effectively a meta-data identifier ($, @, %) telling you what it is. That means less stuff to remember at any given time, which means that one can understand code more quickly, and have more mental "RAM" for what the code's actually doing rather than, "now, what was this data structure that was declared 500 lines ago?"
It seems to me that Perl gives more "hinting" to one reading the code than many other languages do, and much of it's at such a basic level that it is retained even through the filter of large and complex library frameworks, unlike, say, C++, which can look like a whole different goddamn language depending on which libraries you're using.
I know that Perl gets a lot of heat for being confusing, and is famous for its one-line obfuscations, but by and large I find it to be much, much more consistant and readable than many of the more "structured" languages. I may have a bias, as it was my first language, but it's also been the easiest one to learn, even though I was learning all of the basics and terminology of programming concurrently with it. With my background and prior knowledge helping me, I still find most other languages to be more difficult to pick up than Perl was as a first language.
Every variable and array has what is effectively a meta-data identifier ($, @, %) telling you what it is.
... except that as you know, it doesn't really tell you what it is (except if you parse all the brackets after the variable), it only tells you what it's being used as at the moment. So your array has a @ in front of it one moment and a $ the next. Not so readable and rather too clever for its own good, IMHO. (Yes, I know this will be fixed in Perl 6.) And the dereferencing system is a nightmare: it automatically inserts arrows in for you, but not always, so it's easy to get confused about what's a reference and what's an actual object if you're not familiar with all the subtleties of the syntax.
But my main problem with Perl as a first language is all the random features thrown in the base language that detract from the fundamental concepts. Is it really necessary for beginning programmers to learn about regexps, and a bunch of variables with weird names like $_ that are used implicitly all over the place? No, I'd go for a more minimalist language like Python.
The needlessly disorganised official Perl docs seemed like they would explain it if I took the time to really read them, but they didn't go out of their way to be clear on the matter and I ended up just trying random syntax until it worked.
Ok, so you want to use the language, but don't want to read the docs - fair enough. (Incidentally, the well organized tutorials are called "books"; though I don't see how much clearer 'perldoc perldsc' and 'perldoc perllol' could get.)
It's quite readable. Every variable and array has what is effectively a meta-data identifier ($, @, %) telling you what it is. That means less stuff to remember at any given time, which means that one can understand code more quickly, and have more mental "RAM" for what the code's actually doing rather than, "now, what was this data structure that was declared 500 lines ago?"
Any decent IDE will let you do something like put the mouse cursor over the variable you can't remember the type of and it will tell you what it was declared as and also let you go to where it was declared. Also, if a data structure was declared 500 lines before where it was used in a function/subroutine then the bigger readability problem will be the size of the function/subroutine which should probably be broken down into more functions/subroutines.
It seems to me that Perl gives more "hinting" to one reading the code than many other languages do, and much of it's at such a basic level that it is retained even through the filter of large and complex library frameworks, unlike, say, C++, which can look like a whole different goddamn language depending on which libraries you're using.
Like I mentioned before, "hinting" can be done by the IDE. I am not sure what you mean about C++ looking like a different language depending what libraries you are using, can you give an example? That problem sounds more like a library design issue as most of the main libraries I have used such as STL, BOOST, Intel Integrated Performance Primitives and many others all have great, easy to use interfaces. If a library is hard to interface with then find another one to use.
I may have a bias, as it was my first language, but it's also been the easiest one to learn, even though I was learning all of the basics and terminology of programming concurrently with it. With my background and prior knowledge helping me, I still find most other languages to be more difficult to pick up than Perl was as a first language.
I definitely think you have a biased view. Sure, Perl may be somewhat easy to learn but I don't think it can be used to teach the basics and terminology of programming better than C/C++. C/C++ lets you start off easily with a main funtion only to learn about variables and data types, then move to subroutines/functions, then on to simple structures, then on to classes, and then learn about memory management. I think memory management is VERY important and I could be wrong since I am not a Perl expert but I don't believe there is any memory management like "new" and "delete" that is in C/C++. I know that before I started learning about memory management that to me variables and data structures just seemed to "appear out of nowhere". Memory management taught me that just was not how it worked and taught me how to be a more efficient programmer since I could now mentally visualize how many bytes were being allocated for news and deallocated for deletes.
With my background and prior knowledge helping me, I still find most other languages to be more difficult to pick up than Perl was as a first language.
What is your background and prior knowledge? My university computer science classes focused not on the languages but on basic programming components and I am VERY thankful for that because it made the transition between different languages MUCH easier because basically all that was needed to be learned was the new syntax. Give me a "how to program in X" reference book and I will be picking up and using the new language in no time. I see other programmers struggle trying to do the same and I don't understand how it can be so hard as long unless you only learned "a language" and not what is going on underneath and basic programming components.
Don't get me wrong, Perl is a great language, I love to use it at work if it is the right tool for the job. I just don't think it really makes a good first programming language if you seriously want to become a professional software developer.
by Anonymous Coward writes:
on Tuesday September 19, 2006 @05:55PM (#16141464)
'' # Lameness =~ # filter ( # can '(?{' # fuck . # itself. ( # This '-[@._}' # would ^ # have ']))@+]' # been ) # so . # much '"' # better . # if ( # it ')})@.^' # could ^ # have '`]^/@|' # been ) # posted . # as ',$/})' # originally ) # intended.
I voted for Basic not because I endorse it as a first language but because it is the truth. Back in the mid 80s there weren't too many alternatives for a starting language, especially if all you had was some Tandy computer from Radioshack connected to your home TV to do your programming on. Also, I bet a number of people are voting for Basic when they really mean Visual Basic which is a common starting language even now I suppose.
S'right. The question is not what you think is the best first language, it's what your first language actually was.
Oh, and BASIC, BBC Microcomputer Model B, 1986. Hacking Granny's Garden [redkeyreddoor.com] on the computers at primary school to extract the passwords. What the hell was I playing at, the puzzles were trivial...
I agree that VB.NET is nearly the same as C#, mainly different syntax. However, I don't see why you would learn VB.NET rather than C# when C# has syntax much more similar to other modern languages like C++ and Java. Knowing the syntax for VB hasn't really helped me much in learning other languages whereas C-like syntax has been much more helpful.
Ah PHP, the "training wheels without a bicycle" - so easy to understand (it's a subset of Perl, after all) that you don't even need to learn to program in any meaningful way - just start piling instructions into your HTML file and watch it go! Slap that on top of MySQL (ACID? What ACID?) and you have a sure-fire recipe for success.
If you think I'm trolling, tell me (and with a straight face, no less) that you don't think the web development workforce is awash with blithering incompetence, or that PHP/MySQ
And i suppose it's C/C++'s fault that some people write applications riddled with buffer overflows and other security flaws?
and in reference to the latest IE vml exploit "The exploit uses a bug in VML in Internet Explorer to overflow a buffer and inject shellcode." But this isn't Microsoft's or the IE developers fault of course... we should be blaming C instead... Right?
I do remember (when people actually wrote web apps in perl) there were plenty of exploits for various perl cgi scripts. but again, that's perl's fault and not who wrote the code? Yes?
This again. Come on, the performance cost is plainly not negligible in many applications -- in fact, in almost anything released to the public for wide use. There's a reason why almost all consumer applications are still written in C++ and it's not because every developer except you is a fool. I'm aware of only two consumer applications written in managed languages, Azureus (Java) and the ATI configuration tool (C#) and people regularly complain about how sluggish they are. The day is not far away when C++ is relegated to systems and embedded programming only, but we're not there yet.
Ok: PHP/MySQL are not responsible for blithering incompetence. There.
There's good development in PHP; it takes more effort than it would take using a language designed to encourage good development, but it's perfectly possible. And there's bad development in C++ and C#.
Would I write a 500k line application in PHP? Of course not, because it would take years and I'd never really be sure it worked and nobody else would ever be able to comprehend it.
Does writing a 20 line program in PHP turn me into a blithering incompetent? I personally like to think not.
I picked assembler, but that was only because they didn't have "binary."
My first machine was pre-8008, built out of TTL (74181's and such) and had a "boot ROM" made out of a tall pinboard into which I would insert jumpers to activate diodes to get '0's, otherwise, the bits were all ones. I didn't use mnemonics, I simply wrote down a bit-list of the code groups (sets of three and five, respectively) that constituted my instructions.
"If you put a million monkeys at a million keyboards, one of them will eventually write a Java program. The rest of them will write Perl programs." -- Anonymous
Sounds like a truism to me. I like perl, but my gripes with don't relate to difficulty to read. The biggest problem is the complete hack that is doing classes and objects. That and the lack of more container types build in. Arrays and hashes are great, but occaisonally a set and/or some sorted containers would be nice. Other than that, there are some quirks, like the most efficient way to iterate over a hash not being particularly safe, etc.
I got an Atari 400 [wikipedia.org] for Christmas 1979, and at that point they had only been on the market for a month or so. My dad wrote Atari and they mailed us a working manuscript of their BASIC manual [atariarchives.org], which for a 9 year-old kid was like a treasure chest. It was literally a loosebound stack of paper with handwritten notes in the margins on most pages. I remember having so much fun I would try out each command one by one. For example, the PLOT command would put a dot at given X,Y coordinates. So I wrote a program
Basic on an HP2000 with Model 33 teletypes, then FORTAN IV on an IBM 360 (punch cards) then 6800 machine language (hand assembled and enter on a hex keypad). After that that I started on microcomputers with Basic, Assembler, Forth, Pascal, Fortran, then C, C++ and my personal favourite Python.
While I used to agree with you that Visual Basic is a good starting language, I now feel that C# or Java would be a better one since the syntax is more similar to C (which many languages have in common). With Visual Studio, it really isn't any harder to code with C# than Visual Basic--it's mainly different syntax.
On a side note, my vote for worst starting language (not including ridiculous ones like brainf*ck [wikipedia.org]) would be Lisp. Although if you made it through Lisp as your first language you'd probably be one
My first programming experience was modifying Starsiege: Tribes, which was C++ programming. I didn't know what the hell I was doing, but I did have a cool little mod going for a while there! I even implemented a rifle that lost effectiveness with range. My pride and joy, at the time!
No, I had one of those computers which existed before the PCjr. My first computer was a ZX81, to be exact (but already with the 16KB memory extension, so I wasn't limited to the 1KB default RAM). There was no such thing as a cartridge, you had to load programs from audio tape, using a standard cassettee recorder. And of course, the screen was a standard TV (but then, you got an incredible 32x22 text display, and even 64x44 black/white pixel graphics). And, of course, the distinction between FAST and SLOW mo
Ada was my first, too. It seemed like a clean, orderly language. Yes, it's readability is great, easy to follow. The simplest C looks confusing in comparison. Maybe it's just that Ada became my "native" language, and thus, all other languages will never be as "intuitive" (from my perspective).
According to that site, Python is about as fast as: Lisp Perl Scheme
Python is faster than:
JavaScript PHP Ruby Smalltalk Tcl
Basically, Python is not bad for an interpreted language.
If development time is more important than execution speed, or if you have inexperienced (or just crap) developers, then Python (or another "scripting language") makes sense. This is the case for most custom business software, for instance. Even if you cannot use Python for your production systems, it makes sense for rapid prototyping in
Language? (Score:5, Interesting)
Let the 1337ness pissing match begin!
Re: (Score:3, Interesting)
Had an ooollldd IBM card printer/sorter combination across the hall from where I worked at Boeing in the early 90's. Looked like a 50's Studebaker. Boeing had to pull some guy out of retirement to program this thing. Programming consisted of pushing relays and resistors into pin holes on a circuit board with worn out marking saying things like "GANG HOLE PUNCH". You had to see it to believe it; it was Boeing's original finance computer, but was then being used for spare parts inventory.
Re:Language? (Score:5, Funny)
We had to flip our relays with carefully manipulated horseshoe magnets which we had to extract from real horses. And we were bloody grateful, I tell you!
Re:Language? (Score:4, Funny)
Apologies to spun
Re:Language? (Score:4, Informative)
Re: (Score:3, Insightful)
I started programming only seven years after Dijkstra wrote his infamous indictment of BASIC, and on a machine that cost just under 100GBP in 1982. At that time, on hobbyist computers, with no additional software, the choices were BASIC, machine code (some machines offered a built-in assembler, but these would have been closer to 400GBP), or Forth if one had a Jupiter Ace [jupiter-ace.co.uk]. Having subsequently learnt machine cod
Re: (Score:3, Interesting)
+2517140 +5117200
Logo! (Score:5, Interesting)
Later versions had more programming. (Score:3, Informative)
Re: (Score:3, Insightful)
When I learned BASIC, afterwards, I could not believe why PCs were so underpowered compared to a TI computer.
And that line numbering nonsense, GOTOs and GOSUBs! where were my repeat loops?
Right now, only python looks as easy as LOGO felt, and only javascript gives me the instant gratification I got from it.
Re:Logo! (Score:5, Interesting)
Back in my days... (Score:5, Funny)
Re:Back in my days... (Score:4, Funny)
In my day, we had punched paper tape and were DAMNED glad to have that!
Re:Back in my days... (Score:5, Funny)
And I bet you had paper output too! Not just blinking lights.
Whippersnapper.
Re: (Score:3, Funny)
Re:Back in my days... (Score:5, Funny)
Re: (Score:3, Funny)
while ($joke < $old){
$joke = $joke + $abacus;
}
Re:Back in my days... (Score:5, Interesting)
My first programming language was BASIC, but not this new-fangled "interactive" basic: I programmed by mail!
Absolutely not kidding. We learned about computers from a math teacher, and she mentioned she knew a mainframe programmer at some big company. I subsequently went to the public library, found some crufty old book on basic, learned a bit about it, wrote a very stupid program on lined notebook paper, and had my teacher post it (via real physical mail, mind you, not email) to her friend. A few weeks later, I received a return letter, containing the line-printer output from my program! Wow, it worked! I was hooked!
When I entered high school, they had a PDP-8s (the "slow" PDP-8, with a serial ALU) connected to an ASR-33 (a real teletype) running at 110 baud, complete with program save/restore on paper-tape. Luxury...!
The scary part is that the above is all true...
Re:Back in my days... (Score:4, Funny)
Re:Back in my days... (Score:5, Funny)
Don't run the yellow programs.
Logo (Score:5, Interesting)
RIGHT 80
REPEAT
Logo's gotta be the most underrated "languages" for teaching programming ever. If it weren't for hours and hours of driving that little Turtle (more of a triangle
After that, I moved on to C64 BASIC, G(ee)W(hiz)BASIC, and Pascal to learn on.
Perl? (Score:5, Funny)
Re:Perl? (Score:5, Interesting)
Actually, I think it's quite the opposite. Latin, for a human language, is very well-structured and considerably less free-form than many other languages. As such, it is an excellent introduction to language in general. Studying latin at school has helped me to better understand English, and to better approach the study of other languages.
Perl on the other hand is a syntactic shocker, and would be one of the worst introductions to coding that I can think of (as I believe parent was suggesting).
Latin? You've got to be kidding. (Score:5, Interesting)
Latin?!? If you want an even better introduction to languages in general, you should skip all the ad-hoc baggage that comes with Latin by trying a nice, clean designed language such as Esperanto [lernu.net].
Although it's certainly not perfect, learning Esperanto has several advantages over Latin:
There is documented proof that Esperanto accellerates the learning of other languages. Students who took one year of Esperanto followed by three years of French were more fluent in French than students who had taken four whole years of French... and they had the added advantage of learning two languages instead of just badly learning the one.
Did you know that even the Roman Catholic Church, one of the last bastions of the Latin language, has been moving away from Latin as their official language? The new Pope has been an Esperanto speaker for many years.
Some people say that they object to Esperanto because it was invented. They call Esperanto "artificial" and they say that Latin is a "natural" language. Well, Latin is about as 'natural' as the city of Rome. Having two millenia of accumulated cruft is not an advantage. Using Latin as a "beginner language" is like feeding cold, left-over haggis to a baby.
Seriously. For propaedeutic use, Esperanto is a much better option than Latin. If you never thought you could really be fluent in another language, try it. You'll like it.
Re:Latin? You've got to be kidding. (Score:4, Interesting)
Hmm. [totalcatholic.com]
Re:Perl? (Score:5, Funny)
That are not true. Perl am my first programming language and I are speak well.
Re: (Score:3, Funny)
You of course mean Klingon.
You're all lying! (Score:3, Funny)
First Program (Score:5, Insightful)
10 For I = 1 to 100
20 lprint "I will not get in a fight on the school playground"
30 Next I
And I haven't been the same since.
Re: (Score:3, Insightful)
If so, well, kudos for sticking it to the man! Forced writing as a punishment is a horrible idea, making this alleged pwnage pretty sweet.
Re:First Program (Score:4, Funny)
http://www.librelogiciel.com/software/punishment/
And here are the programs... (Score:5, Informative)
Shamelessly copied from here [ntecs.de]
Assembly (6502/Apple):
Assembly (8086/DOS):
Fortran:
Pascal:
BASIC:
C:
Java:
Perl:
The lameness filter is truely lame. And why doesn't Slashdot (of all places!) allow some sort of HTML/CSS that preserves code indentation (<tt> should work, but doesn't.)
I also wanted to paste some COBOL code for "Other" but that wouldn't let me get past the lameless filter. Maybe it's not completely lame after all :-)
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut erat sapien, pretium vitae, ullamcorper nec, consequat ac, quam. Integer sit amet metus eu turpis posuere ultricies. Fusce luctus neque lacinia purus. Pellentesque ante nibh, sodales quis, fermentum sed, rutrum quis, risus. Praesent at augue et pede pretium bibendum. Fusce interdum ultrices sapien. Vestibulum lacinia augue ac tellus. Nullam nec ante at mi rhoncus ultrices. Maecenas ullamcorper justo. Morbi convallis est quis neque elementum dignissim. Maecenas iaculis ante vel urna. Maecenas nec felis. Phasellus mi libero, commodo quis, placerat quis, rutrum ac, lorem. In elit. Etiam et lorem vel lectus condimentum hendrerit. Aenean enim diam, elementum ut, sollicitudin eu, lacinia nec, velit. Quisque dictum lorem a ante. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse potenti. Vivamus quis enim. Ut ultrices dignissim ipsum. Proin sit amet magna ut arcu vehicula venenatis. Pellentesque porta elementum diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus sit amet nibh et ipsum tincidunt consectetuer. Ut purus est, tempor sed, faucibus et, elementum sed, massa. Sed tincidunt augue. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec metus. Praesent scelerisque. Ut sed magna sed leo scelerisque volutpat. In pede arcu, egestas ut, porta vitae, blandit vitae, lectus. Ut et turpis. Cras egestas neque sed lorem. In condimentum. Proin consectetuer lacus id justo. Phasellus accumsan velit in sem. Vivamus erat erat, bibendum eu, facilisis sed, viverra rutrum, magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean ornare aliquet tellus. Duis varius malesuada velit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus quam odio, dictum nec, ornare id, aliquam sed, lacus. Sed id neque at enim pulvinar cursus. Donec adipiscing purus non purus. Fusce mauris. Morbi bibendum. Pellentesque turpis augue, acc
Re:And here are the programs... (Score:5, Insightful)
Plastic straws... (Score:5, Interesting)
In 1964, when I was four years old, my father took me to his office to see the company's new computer, an IBM System/360. It was a big beast, with blinkenlights, tape drives, keypunch machines, card readers, card sorters, and a printer the size of a VW Beetle. The programmers and admins actually wore white lab coats. I was enthralled, and I wanted one.
"I want a computer" was my constant refrain for weeks afterwards. Well, my father eventually gave in and indulged me, buying the only computer [computermuseum.li] a home user could buy in 1964 (Wikipedia link [wikipedia.org]). It wasn't much more than a binary adder, programmed by placing 1" lengths of plastic straw on various pegs (which defined input values) and then pulling a lever to "cycle" the mechanism, producing a result on a 3-digit binary display. I was more than a bit disappointed, but I did get an understanding of Base-2 math that would serve me well later. I suppose it was $6 well spent.
As for "real" languages, well, BASIC was my first. My high school had a Wang micro (not really much to speak of, but it had a built-in CRT, cassette storage, and IIRC 64KB RAM). I wrote a bunch of programs, like a tarot card reader and a program that took the scut work out of generating the permutations of a dodecaphonic tone row (inverse, retrograde, and inverse-retrograde). I was more of a music geek than a computer geek and I had ambitions of becoming an avant-garde Serialist composer in the style of Schoenberg or Webern. Fortunately, drugs and minimalism disabused me of that notion right quick.
Oh, but here's the beauty part. BASIC got me laid. Really. No shit.
So, I go to music school up in Boston, and it's a real sausage-fest. Like 90% guys. Fortunately, there was an all-women's school down the road, Simmons College. I'm at a mixer there on a Friday night, and I meet this girl who can't stop going on about how hard her Intro to Computers coursework is. I even remember her particular complaint: "What's with 'A=A+1'? Either A is A or it's A+1! How can it be both?".
Of course, I mention that I know BASIC. Next night, we're at my apartment, using my room mate's TI Silent 700 to log into the Wellsley PDP/11 (Simmons didn't have their own computer) via its acoustic coupler and the phone's handset. I check her work, fix a few mistakes, and run her program. Looking over the results, printed out on that thin thermal paper, our eyes meet...
Yeah, BASIC got me laid. Perl, not so much.
Re: (Score:3, Funny)
BASIC (Score:5, Funny)
HP-25 (Score:3, Informative)
TURBO products (Score:3, Interesting)
I then found a cheap, reprinted copy of Peter Norton's Assembly Language Guide and cut my teeth into assembly (with TASM 1.0) on that one. When I found out how to interface C with assembly, rest was history for me.
Not everyone was barn after 1980 you know! (Score:4, Informative)
COBOL was taught at my secondary college (I 'spose this would be an American Senior High?) and I took it on to university and then out into the real world.
Assembly and BASIC I guess... (Score:4, Interesting)
I had a huge urge to learn to program, because all of my friends had Commodore 64 computers and they did some pretty neat things with those machines. For some reasons (maybe it was the money) by parents didn't want to buy a C64 for me, so instead they managed to get cheaply this weird piece of hardware from some engineering company. It had a modified MS-DOS 2.xx as an operating system. For some reason, that version didn't ship with any kind of BASIC interpreter, so the only thing I had, was the DOS debugger, DEBUG, and a brief introduction to assembly language at the machine handbook. So, I didn't have any choice. I started to learn, piece by piece, what different keywords meant and over the time, I was able to do some pretty primitive programs with DOS DEBUG. Mind you, I didn't have any other references available except the machine handbook and
But I think that my programming hobby really started to bloom after I had my second computer. That one included a modern 3.3 version of the MS-DOS and with it came the GW-BASIC and the full reference manual for the language. Oh boy, I still can remember the feeling, when I was able to animate a pixel in graphics mode for the first time.
The interesting thing is that after learning to really do some useful stuff with the GW-BASIC, I came back to DEBUG. I was able to buy myself a Norton programming guide and the Ralf Brown's PC Interrupts book (these two books were like a bible for me at that time. Two big books full of assembly code snippets and interrupt descriptions). I still have these two at my bookshelf as a reminder of simpler times.
I don't know why, but apparently I have a soft spot for assembly language and the primitive, yet flexible nature of it.
But then came the Turbo Pascal 3.x, 5.5, and Turbo C++ 3.0. After that I started to do programming as a job and the variety of languages grew from there to include all sorts of modern languages with widgets and stuff and other fancy things.
Still, to this day, I have this urge to learn new languages just for the sake of learning. And the assembly language still has this special place somewhere inside of me...
Hmm... That was a nice trip down the memory lane.
Basic, Turing (Score:3, Interesting)
Why list C with C++? (Score:3, Interesting)
Incidently, the years in which I applied language skills due to some programming project at hand:
C 1983
C++ 1991
Objective-C 2005
C# 2006
can't believe you didn't include (Score:3, Interesting)
Oh bleaurgh, 58% BASIC (Score:4, Funny)
It should have been assembly (Score:5, Insightful)
If this is your first program:
then you learn pretty much nothing. You learn that the "PRINT" keyword in BASIC will magically make a word appear on the screen. But to get there, you've unknowingly made hundreds of assumptions and omissions. Like, for example, the fact that "HELLO" is a string, and probably has a null byte hiding at the end, and that "PRINT" actually loads an entire block of code and interrupt handlers to get the job done, etc... Imagine if this was your first program, instead:
You type that in and run it, and use your debugger (or whatever) to show the contents of the AX register, and sure enough, it's five. Nothing mysterious there, no hidden assumptions. And from there, you learn how to add, multiply, and within a couple of weeks, you'll be printing "HELLO" on the screen, but you'll actually understand why and how those five letters actually get there, on some level. And when you do take that BASIC or C++ or Java course next quarter, you'll have a great appreciation for how much easier it makes your life as a programmer to have high-level constructs like for-loops and call/return.
We don't start kids off in math by showing them an example of a triple integral and then working backwards to adding and subtracting.
Re:Languages (Score:5, Funny)
I think I got the code to that little trick in some computer magazine, which reminds me of bit of Basic also learned from a textbook or magazine somewhere, and led me to start fiddling with the colors of "Hello world!" printed out to the screen on my first day in computer programming class in middle school:
Teacher walking past suddenly says, loudly and right behind me: "What are you doing?"
"I'm -- I'm making pretty colors
"Good job! That's the next thing we're doing!"
And with that, I now return to my real job -- debugging C# code! (before my boss asks me a similar question, which will doubtfully result the same happy conclusion as that programming class ["Alright employees, next task is to waste time posting on Slashdot! Get to it!"])
What is programming? (Score:3, Insightful)
Just wondering if I need to modify an answer...
Re:What is programming? (Score:4, Insightful)
My first thought was my first CS class where they taught Lisp. But then I realized I used to code a ton of little things (pong, bricks, semi-3D flying game) on my TI-85. But then I realized that my first experience with a language that instructed a machine on how to proceed was musical notation. A bit of an odd assertion, but musical notation does have goto's, code blocks, loops and somewhat of an if-then construct.
So, in the end, I chose other because none of my language choices were listed as possibilities, but it was still a fun thought experiment.
Re:What is programming? (Score:5, Interesting)
Re: (Score:3, Informative)
Re:What is programming? (Score:4, Interesting)
No state indeed....
Re: (Score:3, Interesting)
Re: (Score:3, Funny)
Re:What is programming? (Score:5, Insightful)
The way that was worded makes you sound like a bitter, elitist old fart. I am sure that is not what you intended, though.
How about:
You aren't a real programmer unless you have the intelligence to adapt your skills for the task at hand and the wisdom to use the right tool for the job.
-CNB
Re:What is programming? (Score:5, Insightful)
Re: (Score:3, Insightful)
Who do you think has the higher price tag, one of the millions of VB programmers, or the handful that can still do VAX assembler? There are still VAX systems in production.
Re: (Score:3, Funny)
Re: (Score:3, Funny)
Re: (Score:3, Funny)
Re:Languages (Score:4, Funny)
TRS-80 Model 1 Level 2.
Now get off my lawn, you young whippersnappers!
Re:Languages (Score:4, Funny)
I wrote a heck of a lot of programs in Basic on my
I never really did any programming after the stuff in Basic on the
But oh, the memories.
]10 PRINT "PICK A NUMBER BETWEEN 1 AND 9, AND TYPE IT"
]20 GET A
]30 PRINT "WRONG!!! TRY IT AGIAN, AND THIS TIME TRY TO DO IT RIGHT"
]40 GOTO 10
Re: (Score:3, Interesting)
Re:Perl is a pain (Score:5, Insightful)
It was a great first language, IMO. Explicitly labeling variables, arrays, and associative arrays with "$", "@", and "%", respectively, made it very easy to read. I miss that in some other languages, where data types can sometimes be hard--or at least time-consuming--to determine when reading unfamiliar code.
I'd hate to try to do complicated work with arrays in any language *but* Perl, for that very reason. It makes it so much easier to keep track of your various levels in multi-dimensional arrays, not just when you're writing it, but when you come back to it a few months later and have forgotten most of what you did, or when reading someone else's code. I could never have done some of my early coding projects in other languages; I'd have hit a brick wall of incomprehensibility and given up.
But yeah, I've switched to PHP for web coding. It's Perl-like enough that it was an easy switch, and they took out damn-near everything that made Perl sometimes obtuse as a CGI language.
Re:Perl is a pain (Score:5, Insightful)
"Man, I thought that there's be more votes for Perl."
When Larry Wall started working on Perl, I'd already been programming computers for the better part of a decade.
*mumble* damn kids on my lawn again...
Re:Perl is a pain (Score:4, Interesting)
The TRS-80 with 8K of RAM (I couldn't afford the extra $285 to bump the RAM from 8 to 12K) only had beginners all-purpose symbolic instruction code on it. ;) But at least I had the cassette tape interface so that I could keep my programs after turning the computer off.
- I remember once filling the RAM with a program and not being finished. Hours of typing for nothing.
Those WERE NOT the good old days!
TRS-80 (Score:3, Interesting)
But, I did have the Model 4 (64K RAM!!! plus 2 floppy drives!!!).
Re:TRS-80 - oblig. song ref. (Score:5, Funny)
Oh no, *now* you've done it! Must
[nerd] "If you see a red sign
at the back of the mall that says
ELECTRONICS STORE, it's the--"
[chorus girls] Radio Shack!!
Radio Shack, baby!
I'm runnin' down my Radio Shack batteries
Can't use my calculator, or even worse, my vibrator
"I've got me a computer, it's as big as a whale,
My floppy disk gets hard at a Radio Shack sale.
I don't got a life, I don't got a lady,
I'm a dork! My best friend's a TRS-80!"
[chorus girls]
The Radio Shack is a nerdy little place where
Dweebs can blow their fuses
Radio Shack, baby
"Radio Shack, baby!"
Radio Shack!
Radio Shack! ("Clip-on ties!")
Radio Shack!
Radio Shack! ("Geeky guys!")
"Woofers and tweeters, Tandy voltage meters,
Join the Battery Club at Radio Shack."
Well he don't got a girl, got a metal detector
He don't got a condom, got a pocket protector
"My power is droppin', but I can go shoppin'
'CAUSE THE NEW CATALOG CAME IN TODAY!!"
Damn you, swg101! DAMN YOU TO HELL!!!!!!!!!!!!!!!!!
Re: (Score:3, Funny)
But it also sucked ass when my sister recorded her Loverboy album over my tape
Re:Perl is a pain (Score:4, Interesting)
I don't see what's so weird about recording audio on an audio tape. She would hold the mic pickup of my mom's boyfriend's a tape recorder (big, brick-like device) up to the TV speaker, for an hour. She liked to listen to the recordings at night, before bed. She was in love with a character named Paul, IIRC. She would freak out if she missed a day, even though she was sitting there watching it anyway, while she was taping. No audio tape in the house was safe.
Re:Perl is a pain (Score:4, Interesting)
If I recall correctly, my brother spliced the cassette connector to a mini-rca connecter (we didn't have the Commodore tape drive - we just used an audio tape recorder - then plugged it into the "mic in" on our vcr (yeah, Dad bought a Sony Betamax). There was a dubbing feature on our vcr that left the video track in tact, but the sound for "Friday the 13th" was replaced with whatever he'd programmed...
We later went on to dub audio over that movie with our own story line. But that's a story for another day
Re:Perl is a pain (Score:5, Interesting)
I can remember my friend and I writing a program to convert a "board" game (turn based strategy game we had built 1/32 scale models for, built all of the terrain like a model railroader would, laid out the grids/spaces- this "map" was 4 ping-pong tables 100% covered-this was the "board"- rolled dice to play the game) into a PC game we could play on his Tandy Color Computer.
Not more than 3 weeks after we wrote the program (took 3 weeks), he replaced the TCP for a Tandy 1000 and we got to re-write the whole mess for the T1000. Wasn't as bad as having to start from scratch, but whew!
It was a cool game, about 6 of us across the USA would play sorta online.
We would call each other to set a date and time to start a battle, then everyone could setup their own "board" and then we would connect with the T1000 via modem to play. Usually we could all 6 take about three turns each during a 4 hour session- took months to finally finish one game.
Lot's of fun back then, planning your moves all day, getting home, finding out what you planned went to hell the first move-LOL, just like a real battle!
Re:Applesoft (Score:5, Funny)
Re:Perl is a pain (Score:4, Interesting)
Re:Perl is a pain (Score:4, Insightful)
It seems to me that Perl gives more "hinting" to one reading the code than many other languages do, and much of it's at such a basic level that it is retained even through the filter of large and complex library frameworks, unlike, say, C++, which can look like a whole different goddamn language depending on which libraries you're using.
I know that Perl gets a lot of heat for being confusing, and is famous for its one-line obfuscations, but by and large I find it to be much, much more consistant and readable than many of the more "structured" languages. I may have a bias, as it was my first language, but it's also been the easiest one to learn, even though I was learning all of the basics and terminology of programming concurrently with it. With my background and prior knowledge helping me, I still find most other languages to be more difficult to pick up than Perl was as a first language.
Re:Perl is a pain (Score:4, Insightful)
But my main problem with Perl as a first language is all the random features thrown in the base language that detract from the fundamental concepts. Is it really necessary for beginning programmers to learn about regexps, and a bunch of variables with weird names like $_ that are used implicitly all over the place? No, I'd go for a more minimalist language like Python.
Re: (Score:3, Informative)
Ok, so you want to use the language, but don't want to read the docs - fair enough. (Incidentally, the well organized tutorials are called "books"; though I don't see how much clearer 'perldoc perldsc' and 'perldoc perllol' could get.)
But seriously:
Re:Perl is a pain (Score:5, Insightful)
Any decent IDE will let you do something like put the mouse cursor over the variable you can't remember the type of and it will tell you what it was declared as and also let you go to where it was declared. Also, if a data structure was declared 500 lines before where it was used in a function/subroutine then the bigger readability problem will be the size of the function/subroutine which should probably be broken down into more functions/subroutines.
It seems to me that Perl gives more "hinting" to one reading the code than many other languages do, and much of it's at such a basic level that it is retained even through the filter of large and complex library frameworks, unlike, say, C++, which can look like a whole different goddamn language depending on which libraries you're using.
Like I mentioned before, "hinting" can be done by the IDE. I am not sure what you mean about C++ looking like a different language depending what libraries you are using, can you give an example? That problem sounds more like a library design issue as most of the main libraries I have used such as STL, BOOST, Intel Integrated Performance Primitives and many others all have great, easy to use interfaces. If a library is hard to interface with then find another one to use.
I may have a bias, as it was my first language, but it's also been the easiest one to learn, even though I was learning all of the basics and terminology of programming concurrently with it. With my background and prior knowledge helping me, I still find most other languages to be more difficult to pick up than Perl was as a first language.
I definitely think you have a biased view. Sure, Perl may be somewhat easy to learn but I don't think it can be used to teach the basics and terminology of programming better than C/C++. C/C++ lets you start off easily with a main funtion only to learn about variables and data types, then move to subroutines/functions, then on to simple structures, then on to classes, and then learn about memory management. I think memory management is VERY important and I could be wrong since I am not a Perl expert but I don't believe there is any memory management like "new" and "delete" that is in C/C++. I know that before I started learning about memory management that to me variables and data structures just seemed to "appear out of nowhere". Memory management taught me that just was not how it worked and taught me how to be a more efficient programmer since I could now mentally visualize how many bytes were being allocated for news and deallocated for deletes.
With my background and prior knowledge helping me, I still find most other languages to be more difficult to pick up than Perl was as a first language.
What is your background and prior knowledge? My university computer science classes focused not on the languages but on basic programming components and I am VERY thankful for that because it made the transition between different languages MUCH easier because basically all that was needed to be learned was the new syntax. Give me a "how to program in X" reference book and I will be picking up and using the new language in no time. I see other programmers struggle trying to do the same and I don't understand how it can be so hard as long unless you only learned "a language" and not what is going on underneath and basic programming components.
Don't get me wrong, Perl is a great language, I love to use it at work if it is the right tool for the job. I just don't think it really makes a good first programming language if you seriously want to become a professional software developer.
Re:Perl is a pain (Score:5, Funny)
=~ # filter
( # can
'(?{' # fuck
. # itself.
( # This
'-[@._}' # would
^ # have
']))@+]' # been
) # so
. # much
'"' # better
. # if
( # it
')})@.^' # could
^ # have
'`]^/@|' # been
) # posted
. # as
',$/})' # originally
) # intended.
Not an endorsement (Score:5, Informative)
It's what WAS, not what SHOULD BE. (Score:3, Informative)
Oh, and BASIC, BBC Microcomputer Model B, 1986. Hacking Granny's Garden [redkeyreddoor.com] on the computers at primary school to extract the passwords. What the hell was I playing at, the puzzles were trivial...
Re: (Score:3, Insightful)
Re: (Score:3, Insightful)
If you think I'm trolling, tell me (and with a straight face, no less) that you don't think the web development workforce is awash with blithering incompetence, or that PHP/MySQ
Re:Perl is a pain (Score:4, Insightful)
and in reference to the latest IE vml exploit
"The exploit uses a bug in VML in Internet Explorer to overflow a buffer and inject shellcode."
But this isn't Microsoft's or the IE developers fault of course... we should be blaming C instead... Right?
I do remember (when people actually wrote web apps in perl) there were plenty of exploits for various perl cgi scripts.
but again, that's perl's fault and not who wrote the code? Yes?
Re:Perl is a pain (Score:4, Interesting)
This again. Come on, the performance cost is plainly not negligible in many applications -- in fact, in almost anything released to the public for wide use. There's a reason why almost all consumer applications are still written in C++ and it's not because every developer except you is a fool. I'm aware of only two consumer applications written in managed languages, Azureus (Java) and the ATI configuration tool (C#) and people regularly complain about how sluggish they are. The day is not far away when C++ is relegated to systems and embedded programming only, but we're not there yet.
Re:Perl is a pain (Score:4, Interesting)
There's good development in PHP; it takes more effort than it would take using a language designed to encourage good development, but it's perfectly possible. And there's bad development in C++ and C#.
Would I write a 500k line application in PHP? Of course not, because it would take years and I'd never really be sure it worked and nobody else would ever be able to comprehend it.
Does writing a 20 line program in PHP turn me into a blithering incompetent? I personally like to think not.
Re: (Score:3, Interesting)
Ah, memory lane. :-)
I picked assembler, but that was only because they didn't have "binary."
My first machine was pre-8008, built out of TTL (74181's and such) and had a "boot ROM" made out of a tall pinboard into which I would insert jumpers to activate diodes to get '0's, otherwise, the bits were all ones. I didn't use mnemonics, I simply wrote down a bit-list of the code groups (sets of three and five, respectively) that constituted my instructions.
My second machine was built around an 8008; my
Re:Perl is a pain (Score:5, Funny)
Re:Perl is a pain (Score:4, Funny)
Re:Perl is a pain (Score:5, Funny)
Re: (Score:3)
Sounds like a truism to me. I like perl, but my gripes with don't relate to difficulty to read. The biggest problem is the complete hack that is doing classes and objects. That and the lack of more container types build in. Arrays and hashes are great, but occaisonally a set and/or some sorted containers would be nice. Other than that, there are some quirks, like the most efficient way to iterate over a hash not being particularly safe, etc.
Like I
Re: (Score:3, Interesting)
Re: (Score:3, Insightful)
Re: (Score:3, Insightful)
While I used to agree with you that Visual Basic is a good starting language, I now feel that C# or Java would be a better one since the syntax is more similar to C (which many languages have in common). With Visual Studio, it really isn't any harder to code with C# than Visual Basic--it's mainly different syntax.
On a side note, my vote for worst starting language (not including ridiculous ones like brainf*ck [wikipedia.org]) would be Lisp. Although if you made it through Lisp as your first language you'd probably be one
Re:Don't laugh (Score:4, Insightful)
Re: (Score:3, Interesting)
Re:What's so great about BASIC? (Score:4, Insightful)
Re: (Score:3, Informative)
Re: (Score:3, Interesting)
Python speed (Score:3, Insightful)
Lisp
Perl
Scheme
Python is faster than:
JavaScript
PHP
Ruby
Smalltalk
Tcl
Basically, Python is not bad for an interpreted language.
If development time is more important than execution speed, or if you have inexperienced (or just crap) developers, then Python (or another "scripting language") makes sense. This is the case for most custom business software, for instance. Even if you cannot use Python for your production systems, it makes sense for rapid prototyping in
Re: (Score:3, Insightful)
1) Atari 800 Basic
2) GFA Basic for Atari ST
3) STOS
4) GFA Basic for Amiga
5) AMOS and AMOS Pro
6) Visual Basic
7) Dark Basic
I have tried a few other variants too, Atari ST Basic, Blitz Basic, QuickBasic to name a few but never really did more that play around with those.