How Did You Learn How To Program?
theodp writes "'Every programmer likely remembers how they learned to code,' writes GeekWire's Taylor Soper. 'For guys like Bill Gates and Paul Allen, the magic began on the Teletype Model 33 (pic). For others, it may have been a few days at a coding workshop like the one I attended for journalists.' If you're in the mood to share how and in what ways your own developer days began, Soper adds, 'cyborg anthropologist' Amber Case is collecting stories to help people understand what it takes to learn how to code. Any fond computer camp stories, kids?"
Basica on DOS on an 8088 clone PC. Then I had to UNlearn that and learn how to really program in college.
When I was 10 I had a Ti-99/4A and subscribed to Compute! magazine. I'd type the BASIC programs in each month, and through the process of typing in thousands of lines of code, and then wanting to make modifications to the games (adding more lives, etc), I simply began to understand how the software controlled the behavior of the computer.
Better known as 318230.
2KB of RAM BABY! Unit with so little processing power, it didn't even have a BASIC tokenizer, you essentially typed the program pre-Tokenized with hard-coded keywords on the keyboard.
The real one though was the Commodore 64, and the fine line of books from Compute!, including the "Mapping the C64 and C64C" and the "6502 Assembly Language" book.
Good times with a T!-83 in the back of math class...
LibertyBASIC and then moved to game programming with Bloodshed Dev C++. The good old days for me. Now it is mostly business glue in .NET with C# in cubicleville.
'We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.' RPF
Bought a C64 to find out about this "computer thing". When Basic turned out to be dog-slow, taught myself assembler.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
I can't but I have a 100k piece of paper saying I can and that is how I got the job said our code is a mess and they keep passing over people who can code and don't have that piece of paper.
just kidding.
BBC Basic on a BBC and then asm to make it faster.
Really, BBC BASIC wasn't a bad language. Allowed proper structured programming with functions, procedures, local variables etc.
I still remember that CHR$(141) does double height text in teletext.
This has not been a useful thing to remember.
SJW n. One who posts facts.
I first learned to code by reading the BASIC manual of my Sinclair ZX-81 and laboriously typing out programs one keyword at a time on that little keypad (after assembling it myself). It's amazing what you can do with 1K of RAM.
Commodore BASIC was bloody horrible even by the standards of the 1980s, but it was my first programming language & I still have a soft spot for it somewhere. I was only a kid though, and my programs were simplistic and crap.
BBC basic was next, followed by GFA basic on the Atari ST. Then I went to uni, got an introduction to structured programming via PASCAL, taught myself C and eventually learned all the things I was doing wrong.
I think if I made the mistake of finding any of my early code I would probably end up with bleeding eyes & vomiting :)
That was the name of the textbook, and we did it on an HP 3000 timeshare minicomputer in 1976. First high school in the city to get its own educational computer system, I think. The class was "Computer Math", and it changed my direction from architecture to computer science. Spent 4.5 years at the state's science & technology campus helping my engineering major friends with their mandatory FORTRAN class. :-P In Computer Science in those days we did a lot with PL/1. Got a job in a small shop after graduation and was in the right spot at the right time just when Unix got commercialized and I got the task of figuring it out. :-D
Hacking up genetics algorithms, and word processing, Junior High, 1969 :-) )
(Before that was a Wang programmable calculator, not sure that's programming
QBASIC on I think a Toshiba T2200. I thought my Dad was a brilliant programmer, but actually he was converting old BASICA games from a different system. I learnt from those snippets.
On a commodore 64 and later on a pc. After doing a few programs, I started breaking the code down, making changes. I must have been about 7. When I was 9, I took an official BASIC course at the local junior college in their college for kids program. In high school, I took Pascal, then majored in Computer Sciences in college where I learned C, Cobol, Java and Assembly.
TRS-80 Model I with 4K of RAM. I was 6 and the thing came with a wonderfully put together BASIC programming manual. The beauty of the system is that you didn't need a lot of theory (any really) to get started.
10 CLS
20 PRINT "JOE WAS HERE"
30 GOTO 10
This was amazing to me. I ended up writing a few games, some math function and anything else I could do in 4K. Later on I went into programming as a career before turning to the dark side of management.
See my journal for slashdot ID's by year. Mine created in 2005. http://slashdot.org/journal/289875/slashdot-ids-by-year
SOFOR == Southampton University Fortran. It ran on an ICL 1901a and we punched our own cards.
Then it was An ASR-33 connected to the Open University (UK) or Hatfield Poly DEC-10's and we used Basic.
Now I write software that runs large parts of an airport.
Bashing programs from magazines into Zx81 and Spectrums.
Talk about an 80's flashback. I learned basic on a CoCo, the color computer from radio shack. Picked up Hot CoCo, Rainbow Magazine and others and my technique improved a lot. Then I got into OS-9 and learning the basics of linux, pascal and a number of other things. Just wish that assembly had made more sense to me at the time. It's also when I started hardware-hacking my machines for better memory and a variety of other things that radio-shack never intended to support. I want to give a shout out to Chris Burke for making the first and best commercial hard-drive interface for the Coco... thanks Chris, you were a game changer. I've often wondered why people made fun of my chicklet-keyboard back then on my first battleship gray coco but now all laptops have them and its considered trendy. *laugh*
I got a ZX Spectrum when I was 13 this was when having a home computer was a relatively new idea. So I taught myself on there, then on the shite commodores (Vic 20 and the Pet with the built in casset tape drive) they had in school (I was better at it than the maths teach who taught computer studies though he always beat me at calculus :D). Then I got some actual work experience (Dbase II on a Dec laptop circa 1985) then I went to college and learnt some more (Cobol etc) and I'm going to stop now because this is starting to read like Mien Camp :-/
Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.
Apple II BASIC, T.I. 99/4A Basic, Extended Basic, Super Extended Basic, GWBASIC - all while in middle school through highschool.
During my Sr. Year, I started working as an intern for a small company learning to program in Progress 4GL RDBMS (1986), sh, awk, sed on a Burroughs XE-550 running Centix (UNIX that loaded over the top of CTOS).
Sat in the local Tandys (Radio Shack) all day, every Saturday on their TRS-80 Model I, and later the Model IV. With thanks and much appreciation to the store dude Chris, who allowed me to do this week in, week out, as long as no customers were affected.
College.
I got a diskette with two games (Nibbles and Gorillas) written in Microsoft's QBasic back in the 90ies when I was 8. Got me started... but I wanted something with a compiler so I learned Pascal - Borland's TurboPascal was still around back then and later I used the Delphi IDE for ObjectPascal. Added PHP, Perl, bash and R later, but never quite managed to learn C properly.
I learned by reading books and self study. My school had a terminal to a mainframe in a collage in a different city, and only seniors were allowed to take a programming class.
I "borrowed" the programming book for the system and made a copy of it (my dad had a home office with photocopier), and read through the whole thing. I would then "sneak" into the computer room and run games and programs.
I eventually saved up my summer earnings to buy an Apple IIe to continue learning to program. By the time I got my first official computer class, I was already well versed in basic and assembly, and had even hacked my apple to add new key words to the interpreted basic.
First a VIC20, where coding a loop to print "Asshole" was the pinnacle of achievement :) Then moved on to C64, where I became more proficient in Basic and some of the graphics and sound stuff. But it was the Amiga (first 500, then later 3000 and 4000) where I taught myself C and later C++. From there about a year using Windows, and then to Linux.
As I look back, I now notice that almost every system I was ever drawn to was programmer-centric. I never realized it back then, and even into post-secondary education it took a while to realize that CS was my destiny.
In high school I took a math course that required graphing calculators. The course tought simple programs to graph curves. Wasn't long before I was doing more complex stuff. Its a shame smart phones don't come with a programming app pre installed.
What little "programming" I've done (bash scripting, HTML, MySQL, a bit of Scheme from SICP for fun) doesn't really count. What I've learned, I've taught myself based on information found online and in books. I know enough to write some useful scripts for my office Linux server, but I leave the real programming to real programmers.
It was 1972 and I had just gotten out of the Army. DEC hired me to work at their Oakland, Ca. office and had sent me to the mill for 3 months of training. The one-week class on PAL-3 assembler was the best part of it. I also puttered around with FOCAL a bit.
"Eve of Destruction", it's not just for old hippies anymore...
Here's a picture:
Picture not unlike it looked
Learned machine code and graduated to assembler. Those were the days you learned a machine.
That's how.
I learned BASIC by typing out a clock with an hour and minute hand that strobed from a magazine, it was the most disappointing (no minute hand) and yet exciting moment of my childhood. Two days later I was told that Santa Clause was a lie, between Santa and the missing minute hand it was a disappointing year for a geeky 7 year old.
Started with BASIC programming class in high school on Commodore PETs. While in school got lent a TRS-80 at home for a bit (was a donation they didn't have any use for) so I was reading a lot more books and magazines than the class curriculum. After graduation earned enough for a VIC-20 and started getting into assembly language (ahh. hand assembly, that was fun).. and just kept going from there.
"Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
FORTRAN on cards in 1980. Before the course was 1/2 over I discovered I could ...
use the teletype and skip the cards. Next was Pascal on a CDC-6600, then our school
got a VAX 750, my advisor and I installed Berkeley Unix, I learned "C" and
I got my 1st computer, an Atari 800XL from my grandmother in Germany as a First Communion present. When I got bored of playing Donkey Kong, I took a look at the manual, wrote the first example, and ran it. I was so amazed, that I started tweaking the numbers in the code and saw which effect they had. That's when I discovered the power XD
I started with a basic linux administration manual and apache2 on a compaq presario 4200. From there I expanded into PHP and then into the real programming languages like C and C++. Anyone remember pico? Yep.
I picked up coding somewhat by accident. I had access to a C64 and accidentally printed out a program listing instead of a directory listing one day. I realized that, among the symbols I didn't understand, were words that obviously related to how the program appeared on the screen. Making minor adjustments to the code listing altered how the program ran. Statements like "print" and "accept" were pretty easy to figure out.
After a lot of trial and error I went from making minor mods to existing code to creating small programs on my own. My parents (and an uncle) encouraged me and dug up some BASIC reference manuals for me to try and I found some books in the library which explained a little game making. Eventually, years later, I took formal courses in high school and college which taught proper structure and library usage, assembly, object oriented models, etc, but for the first six years I was self taught by trial, error and some terse BASIC references.
The programmable plastic computer with 3 bits of memory.
http://en.wikipedia.org/wiki/Digi-Comp_I
10 PRINT "HELLO WORLD"
20 GOTO 10
RUN
wonders how games are made..??
Enough said.
Learned AppleBASIC in elementary school from an old comb-bound AppleBASIC manual, then gwBASIC and qBASIC in middle/ early high school, then finally C++ in AP Computer Science senior year of high school, which was actually the first year C++ was the AP language.
My dad would order disks and little booklets from computer shopper for me that would contain BASIC programs. Plus he taught me what he knew from work, although I think he used a language called JCL there in the limited capacities his job required.
Then I picked up Perl in middle and high school.
"The problem with socialism is eventually you run out of other people's money" - Thatcher.
And, at about the same time, Basic on a CP/M machine at my high school...
Later more Basic on Commodore 64, moved on to Pascal and Modula-2 on Atari ST.
The right to offend is far more important than the right not to be offended. (Rowan Atkinson)
I had a commodore 64 and learned from the manual. The earliest thing I remember is copying the balloon sprite code and modifying it to make a simple car game. Then saving it to.... CASSETTE tape!
The machine was a workstation that I used at my father's office. I think is cost the government something like $8,000 and it had a green screen with something like a 20 MB hard drive and 1 5.25 floppy drive. I went to the DUCK 2 week summer camp (Duke University Computer Kamp) twice in '82 and '83 and that's where I really learned how to truly write software for the first time in BASIC. I was 10 years old. The second time I went to the camp I learned how to program in Pascal using the Borland compiler (Turbo Pascal) which was brand new at the time.
I learned with a pencil and paper you insensitive clod. The teacher of my C++ class didn't allow computers in the classroom so we had to wright every bit of syntax down, then take it to a computer lab where we did our coding. It was hell. I cried my way through that first class, then changed my major. My second coding class was java script, with the aid of a computer in class, I breezed through it.
X's and O's on a blackboard. We had to develop our own playbook, with blocking schemes and pass routes included. It turned out to be really easy, because my team had a fullback who could...wait. Uh, never mind; that was football camp, not computer camp.
Everything is better with chainsaws.
First experience with programming was my uncle teaching me a few commands in C64 BASIC. Where I really learned to program was on a Radio Shack MC-10 with 4k onboard and a 16k cartridge for a whopping 20k! Say what you will about the quality of the Radio Shack/Tandy computers, but they had some of the best manuals going, and I must have read my MC-10 BASIC manual from cover to cover a hundred times.
Where I think I really crossed the line and became an actual programmer was when I was loaned a VIC-20 with a bunch of RAM expansion modules and I decided one day, for no real reason that I can remember, to develop my own BASIC interpreter written in Commodore BASIC. I never got it much more complex than being able to do user input, store variables and do some basic branching, but it taught me much of what I know about array handling, string tokenization and even some low level stuff like a pretty primitive stack and program counter.
The world's burning. Moped Jesus spotted on I50. Details at 11.
This is like asking a novelist or journalist how they learned to read and write. Even the most basic parts like recognizing the letters and tokens take time. And the higher-order stuff is a skill developing all the time: choosing the scope of your story, knowing your audience, composing an overall written structure, and going back to edit for flow and accessibility. Everything I just described are elements of programming as well as writing natural language. The main additional task of programming is to eliminate groundless arguments and illogical rhetoric that might work to sway human readers but always fails to impress computers.
I started to do some minor programming on the MicroBee computer, for later do some real programming on Commodore 128, after that followed Amiga that lead me to a number of different programming languages. And I was stuck, programming on calculators, PCs and what ever I could get my hand on.
I learned to code by writing scripts for the infamous MacroQuest tool for EverQuest. Man, those were the days!
-Phican, Povar Server
on the definition of "program". To preface, I'm not a programmer, but I can write basic code. I did Apple BASIC in elementary and middle school. Dabbled in Pascal, C, and VBA in college. I would plant my "learned how to program" flag in my last year of college, when my roommates and I downloaded Slackware floppy images over a modem, downloaded Merc 2.2 source code, learned to compile it, then rewrote 80% of the code.
I failed my "computing workshop" class in highschool on the first month. Where I live, it was pretty common to have had at least some computer exposure by the time you were a teen. Only that I didn't have such experience until I was enrolled in a brand new private school. I was enrolled in this school only for my senior highschool year, so everyone else had a 2 years advantage over me in this particular class. The first month I failed miserably, with a grade of "0". I didn't even knew how to turn on the damn thing, and everyone else was starting to learn Dbase and Clipper to store music playlists. I became so obsessed with learning that I asked my mother's boss directly to give me one of the very old computers they were just about to throw to the garbage. It was an IBM 286, at the time when 486's were starting to pop up on marketing materials. I remember installing the thing in my living room (without an instruction manual, and thinking it was pretty much the same as hooking up the stereo system) and copying MS-DOS and Dbase into a 5 1/4 single density diskette. From there, I learned everything myself by writing the "help" command. With my newly gained MS-DOS literacy, I remember the first time I felt absolute awe when firing DBASE by myself and drawing a screen with one input field for "name". Seeing the program running and knowing I had the actual power to make the computer do whatever I wanted felt like the most mind blowing experience for me at the time. From there, I never looked back. In a matter of days I was already correcting my teacher, and never again I got a lesser than maximum grade in anything directly related to computers or programming.
A friend and I wrote a text based Baseball simulator on our own. And we did it without using "GOSUB" because we didn't know it existed.
You can look it up (apparently anons don't get links), Google images has some nice pictures.
My high school had one in 1966 as a tax write-off. This was before ASCII; we typed on a Frieden Flex-o-writer.
It had 16 (and a half) instructions, a 32-bit word -- the least significant bit was cleared when you stored, so 31 bits in memory.
We first programmed in machine code and only later did we graduate to assembler.
The extra half-instruction: the conditional jump would jump if the accumulator had the sign bit set _or_ the sign bit of the conditional jump instruction itself was set and the "transfer control" button was on.
My father sat me on his knee when I was 3. Then, he typed BASIC into his TRS-80. This was back in the mid 80s. I grew up learning BASIC before I learned algebra in school. I was typing in "LET X = 3" before even understanding what it meant.
GhanBuriGhan's Morrowind Scripting Bible
I started modding Morrowind when I was 13 (around...2002ish). I had wanted to learn something that would allow me to make more advanced mods (instead of just adding static objects), so I decided to pick up scripting. It was tough going at first, but totally worth it. I continued modding for Oblivion, and got over 40000 downloads on the ones I made, which was quite the confidence boost for a high-school nerd.
I played Morrowind on a single-core 1.0GHz (pretty sure), 256 MB RAM, and a 32MB gfx card. I ran it in the crappiest resolution and got about 20 fps, but I played the hell out of that game. Probably put over a thousand hours into it.
Homebrew 8080 with 1k ram, homebrew TV video with 256 bytes and a converted Selectric typwriter. Later, an Altair then IMSAI with a VDM and a real keyboard to Apple II rev 0 without the chroma blanking. Wirewrapping an 8K ram board for the IMSAI was the last of the homemade stuff, what a pain in the ass.
i played this game called Alkabeth where you could get turned into a Lizard Man and have super abilities if you found a witch or something deep in the dungeon. I hacked it to allow me to be lizard man anytime i wanted.
I convinced my mother to buy a Laser 128, which for those not familiar was a apple ][ clone priced more like a C64.
Anyway, got it home and the only software it came with was a copy of Copy II+, a disk cloning product. It did come with a nice reference manual though.
Money being tight and all, my supply of games/etc was very limited. So instead I started reading the manual, and trying to understand all basic keywords and technical jargon. By the time I was in HS, I was pretty proficient with that machine having learned enough BASIC and assembly to write my own editor/assembler, and a number of 1/2 hearted attempts at my own games.
Traded with a neighbor, lawn mowing for programming lessons and computer time.
First learned it the wrong way - VIC 20 / C64 - Basic (with the C64 'programming manual')
Then learned the right way - PDP11/23 at the high school where I started programming first in Pascal and later in C... - in fact, I didn't really study it - It was not mandatory teaching but the school had a PDP11/23 clone and they offered "voluntary" courses for pupil. I couldn't join so I complained so loudly until they gave me an account on that machine "just to shut him up" - and I started learning programming "the right way"... Self-taught.
I first learned to program in BASIC on an Apple II.
I just wonder how kids are going to have the opportunity to learn to code by the time iPads and other closed devices have displaced general-purpose home computers for a large chunk of the population.
I barely remember. I didn't speak english back then and many things didn't make sense. But gradually I learned english and HyperTalk, HyperCards programming language. The concept was simple enough that even with many gaps in my knowledge, I could build something. My first usable program I completely built on my own was a game, "Memory". The first version took like 20min to shuffle the cards. Over a couple of iterations I got it down to something like 5s and was really proud of that. I even implemented computer enemies which simulated "forgetting" cards, or jumbling up where they saw it.
All in all, HyperCard was a lot of fun.
3-2-1 Contact Magazine had some little BASICA games and the like in back that you could type up and run... still have a soft spot in my heart the one where you were setting up a sea turtle preserve. After that, I was on to taking a hex editor to Rogue to try to change all monster damage to 0d0. Still didn't beat the damned game.
When the disk drive broke I started messing around with BASIC.
"When information is power, privacy is freedom" - Jah-Wren Ryel
on a Burroughs B6700 mainframe, with punch cards, in Algol
We also had a minicomputer. To boot it, you entered the boot code in binary, with toggle switches. After booting, it loaded the OS from paper tape
BASIC ? Compilers ? pffft, whatta bunch of pussies...
007: "Who are you?"
Pussy: "My name is Pussy Galore."
007: "I must be dreaming..."
I was extremely interested in being a Chemist like my father until in 9th grade; we were given our calculators for math and science courses. A couple of kids with older friends shared some very simple games with everyone. Everyone else thought it was cool that they could play games in school. I did to for about 5 minutes until I found I could look at the game as a set of weird psuedotext lines. The cool part came when I changed the numbers then the game changed. At that moment, I went from Chemist to Programmer.
When you accidentally hit the table the 16KB memory extension it used to erase the program before you could save it to tape.
After that, Basic and assembler on Commodore Plus 4, then Amiga, Macintosh Plus, and Pascal, CommonLisp, and Prolog on various university machines - Sun workstations and Next cubes, if I recall correctly. I've never programmed professionally, though, and am currently being paid for doing logic by hand on paper as opposed to using a theorem prover. :-)
I had previously dabbled in logo, basic, Applesoft basic, et cetera.
Heard we were being deployed to Wake Island for a downed aircraft recovery (interesting term when the aircraft is in 17,000+ feet of water...)
So, I bought a little book titled "Learn C in 3 days" - http://ecx.images-amazon.com/images/I/61OPqyHTH%2BL.jpg
Then I bought a copy of Turbo C++.
Installed it on the log room computer when the Chiefs weren't looking and coded away the long trip to Wake Island from Hawaii at 8-12 knots (and the way back.)
I'd always been good with computers before, but after this I was totally hooked on coding.
Loading...
The good old Apple II (not a GS or C to C+) . My elementary school had an Apple II lab with like 25 machines and everyone learned how to type on the computer and play educational games like number munchers but the lucky ones in the gifted and talented program you got to do all sorts of stuff with them. I lucked out and got to program apple soft basic, logo, and even got exposed to the Lego logo environment. Then my family got an Apple II C+ when I was in 4th or 5th grade and I just ran with it reading all sorts of books and figuring out how to translate QBASIC and Quick Basic programs to run on it and eventually learned 6502 assembly (I still have the book for that somewhere in my collection).
Time to offend someone
My high school was part of a pilot project for rural schools in Minnesota in 196x. We got boxes of pre-punched, numbered (in columns 73-80), FORTRAN statements and would assemble programs from them. The teacher would send the student programs down to the Univ. of Minn. via bus and we'd get the printouts back for the next week's class. It got me hooked for life.
"Almost every wise saying has an opposite one, no less wise, to balance it." - George Santayana
In 3rd or 4th (1990ish) grade we had an amazing computer teacher, started out just drawing cool designs, then learned more, and ended up making a digital clock from scratch, meaning I had to create procedure to draw the numbers and a control program to trigger the process with time delays.
I learned through typing in BASIC programmes from magazines (like Computer and Video Games, Personal Computer World or Practical Computing) into a Sharp MZ-80K. It was a good way to learn how to find typing errors too.
It also taught me the importance of frequent saves; I tripped over the power cable after 3 hours of typing and no backups. After typing everything in again (and saving every 15 mnutes), the game wasn't worth it (Defender written in BASIC? Not a good combination)
Ahh, happy days. And the magazines I listed really show my age.
Jr high - back when Illinois schools rocked.
The computer was 60 miles away and we "hacked' the phone lock to get more time on the machine.
I first started programming on a TI-85, and later toyed around with perl and Delphi. Took a few HTML classes in highschool.
When did I actually learn how to program? College.
Logo at computer camp when I was 11, followed by basic on a TRS-80 color computer, then eventually basic on a 8088 machine, Pascal, PDP-11 assembly and C in university, and some interesting chances to do some bare-metal programming along the way.
I still don't meet a lot of people who have done interrupt-level programming and accessing hardware directly via registers and writing your own interrupt handlers.
Good times.
Lost at C:>. Found at C.
I remember this lol, I was at home on the computer and opened QBasic.exe. I remember looking at the window and being like WTF? So I went out to the library and got a book on QBasic and that was it! I moved from QBasic to ASM and HTML then to C.
I wonder if anybody else remembers some issues of Ranger Rick having BASIC program listings? My first program was typing in one of those, which ended up playing a tune from Bach on the computer speaker. I was really blown away by that.
I made so many typos that it didn't work the first 3 or 4 times I entered it.
My first programs were written in BASIC on Commodore PET and C-64 in 1981. Then a Model III TRS-80, 16K with Cassette, BASIC and later a little Assembly. Won a Junior High team programming contest in 1982 or 1983... Up to 48K and 2 Seagate 5 1/4 floppies, and Pascal in High School, all still on the Model III.
Then I started using PCs, entered college, and I started using software instead of programming. I still fool around with VB in Excel and do the occasional this-or-that.... but I can't say that I 'code' or 'program' anymore to any significant extent.
Started in 1972 with 110 (?) baud dialup on an ASR-33 teletype from Junior High to the High School's DEC PDP-8 mini running TSS88. IIRC it had 8K 12-bit words of memory. Had to dial (yes, rotary dial) the phone number and put the handset into the Acoustical Coupler. Off line storage was to paper tape. Started with BASIC, then moved on to assembler and FOCAL. Then in High School they upgraded to a PDP-11 running RSTS/E. Wow -- was that thing FAST! <grin>
Typed in many, many basic programs from DECUS, and whatever other sources we could find. There were about 4-5 of us who would hang around the "computer room" and grab whatever unused half-hour time slots we could.
First computer I bought was an Ohio Scientific Challenger 4P. Later purchases included: Atari 800, Commodore 64, IBM Clone 286@10MHz.
Besides "Compute "magazine, I also subscribed to "Run", "Byte", and later "PC Magazine". Typing and debugging and trying new things. That was key. An insatiable curiosity as to how things worked and how could I make it do what I wanted it to do.
Ah, good times.
It was 1972 and I was in the 8th grade. Our math teacher thought it would be fun as we flew through the course requirements.
My first major project was in 1979 and I had to debug a stats suite written in Fortran. Translated that into BASIC for a Tektronic Graphing station and then again to BASICA for the PC.
Does hard-wiring lab setups count? What language would that be?
In grad school I used an old PDP8 to control the lab. ( Did anyone ever come across SKED? ) And by then, I was reading every computer book I could find.
....by debugging Excel macros.
The best language to start with.
When I was 9, my mother got a Vtech laptop for me since I was always playing around with electronics stuff previously. (like taking apart a VCR and fixing it, some sort of wizard powers, who knows)
And on that, it had BASIC. I began playing around with it.
Year later made a simple database system that could be printed in some sort of encoding system I can't remember now, but I still have the print-outs of the code sitting around somewhere.
Made a few other things, including a text adventure.
It wasn't my first exposure to programming, though.
My first exposure was spectrum a few years previous, and I can only just remember it then. Including playing Dizzy and Trap Door.
Still not 100% sure which was my first game.
A lot of my stuff is self-taught, using open source projects, guides and everything else in between.
Lucky I got in to this, if I went the architecture route in my life, or electronics, or even art, I'd likely be super depressed.
Why? Crohns disease pretty much wrecked by life. All of these things, along with being out with friends, exercising, parkour, etc. Then life is just "nope".
This is the only escape I have now, and I guess digital art too. (and games, also gamesdev)
Hypercard and Hyperstudio! I played around making all sorts of silly games, slowly learned how to add in some scripting on my own, tinkering about. Had a course in highschool that went into more depth, and then a class in Java.
couple years later took a Pascal class then a C++ class.
outside of those it was necessity. I'm doing the same calculation repeatedly, I'll pull together a bit of code to automate the routine.
lately, my programming has been on PLCs
I first learned *about* programming when I was 10 (1977) by reading a small paperback book about the Basic language. I wrote on paper with pencil to learn some very rudimentary programming. I didn't learn on a real computer until 1979 or 1980 - at my junior high school - and that was originally using an Atari 400 or 800. We also learned on an IBM card reader connected to a university unix server using only a wide-carriage printer as the output, no screen at all. I also learned on a Tandy TRS-80 and an Apple IIe. The first language I learned: Basic, on an Atari computer. The 2nd: Turbo Pascal on an Apple IIe. I remember being taught some very preliminary machine language / assembly at that time as well but that was from fellow students. It never stuck with me.
I didn't own a computer for most of the time I was most interested in programming one. When I was really eager to learn programming the most (say 1981 - 1984), my parents couldn't afford one and they felt it was a frivolous purchase. It wasn't until 1994 that I dove into programming seriously. That ended up being Perl and Oracle PL/SQL that I learned and used extensively at that time.
Because I can! [Brainrub.com]
Grade 5, dad gets an Atari 800XL.
I asked for games, he bought in few books that had code for games in BASIC, 1000s of lines had to be punched in and saved on cassette tapes.
Soon enough I learned how to cheat with friends where I would get an unfair advantage during game play, the rest is history.
"The three great virtues of a programmer are laziness, impatience, and hubris." ~ Larry Wall
Why you learned is as important as how.
1987, Apple IIe, 4th grade. My brother comvinced my dad to buy one for the house 2 years before and after one of the first "we've got to computers in the classroom!" pushes there was one in every classroom too...collecting dust because the teachers didn't know how to use it.
My brother had taught me "Hello World" in BASIC, and that combined with the Basic Apple BASIC book let me write terrible programs where the computer would ask you a name, and when you typed it in the computer would say '$name is a nerd!"
I discovered I possessed at least the first of Larry's virtues in order to avoid boring social studies projects. We'd get week-long projects where you had to "make something" about the states, or the presidents or the biosphere, so kids would make flash cards or a mobile or whatever. I wrote a quiz program ("Name That State!") that would ask you, at random, from a set of hard coded questions (ripped from the book) about the states and then tell you if you got the answer right or wrong and tallied your score at the end. This was wizardry to the teachers and I got an A.
Well they didn't really understand code reuse, and so when the next week I'd hand in "Name That President!" which was the exact same program with the questions swapped out, A again. That same code got reused for at least four years in different classes. "Name that type of cloud!" "Name that Biome!" "Name that Export of Honduras!" (Hint, it was probably 'bananas').
You'd think at some point they would have caught on and told me to do something different. Maybe they did but didn't say anything. But I kept getting As so I kept turning in the same stupid project with a 10 minute change. Kind of explains Windows, too I guess.
We don't have a state-run media we have a media-run state.
Actual talk in a Brazilian store:
-- We have these models, the best is an HP-25, which is programmable... and this English one by Sinclair, which just has the four basic operations.
-- You don't have a less expensive one?
-- Well, there's another one, but it's from Japan.
At that time -- 1974, probably -- being from Japan wasn't still a meaningful advantage as today.
So, the HP-25 won. HP programming is actually great, because it's akin to assembly and, in HP's case, it's stack-based -- just like Forth.
All in all, I surely can't complain.
When I was in high school, I had access to a PDP-11, and when I went to college I worked on a VAX 11/780. The VAX was an amazing machine. It *never* crashed no matter what us college kids would throw at it. Of course, let us never forget that computers of today owe a nod to the VAX architecture.
Writing machine code on our school's Videoton 1010B mainframe.
Designed in 1971-1972, it took nothing else - no assembler, nor any higher level language.
The machine is so old that I cannot even get an image of it online.
(Thus it also breaks rule #34.)
http://en.wikipedia.org/wiki/Videoton_%28company%29
The computer was decommissioned from the state-run radio station next door and donated to the school.
I once forgot to place a boundary check on a hard disk block delete utility I wrote, thus wiping the entire 64 kB disk.
Sweet childhood...
Other notable computers we used a bit later - about 1985 and 1986 onwards -
"Iskra", http://www.wang2200.org/iskra-226.html
"Agat", http://en.wikipedia.org/wiki/Agat_computer
Those interpreted BASIC, could do graphics and were really easy to work on, compared to the Videoton beast.
Then we moved on to a class of MSX Yamaha computers. The bright guys who managed the computers later created Skype.
However, the eerie feeling of knowing every single byte in your Videoton memory, following through the long printouts of hex code, and working with the heavy-duty 16x80 text terminals is still somewhere in me.
First with Apple ][e , self taught by books at 12yo:
In the order:
- Applesoft BASIC , spaghetti code
- 6502 Assembly, no assembler, spaghetti code
- 6502 Assembly with LISA assembler, still spaghetti code
Then on PC, with school courses at 18:
- Turbo Pascal: the revelation of structured programming
Later: OO programming (by courses and books), and then many languages self taught.
What I see is that I needed a good mentor to get rid of bad habits and silly programming techniques.
Self taught with language reference books is not enought to do well.
Back in the early 80's, I remember the scene clearly. Math class, there was a computer (TRS-80 Model III) in the back of it one day. Teacher had each of us during class type out:
10 PRINT "OUR NAME";
20 GOTO 10
Needless to say, i was hooked. Started teaching myself basic, and started hexediting. Didn't know what assembly was (wish I did), but I loved looking at programs with a hex editor. Which lead me to being able to copy copy protected samples my typing teacher would get later when I was in high school. She'd give me a disk and say, "Can you make a copy of this? The school won't buy me anymore" and generally it was something stupid like the format wouldn't copy 1 part of the disk, which I could just use a hexedit program to put in the correct value. =)
During early high school, my parents bought a C64, which I used to type in programs from Compute! and other sources. Wasn't till I was 20 before I got my own computer, and IBM PC, which I then taught myself C on.
I haven't bothered to learn anything other then C, I don't see the point. Granted I am sort of teaching myself assembly on an apple II.
Be seeing you...
Actually maybe even before that, it happened incrementally. Back in the mid-60's my Father and his business partner had a consulting firm they ran out of the basement. They built all sorts of custom hardware for mostly the Air Force. He taught me basic electronics, and then when he went to work for another larger company we'd go into work on Saturday and I'd type in FORTRAN programs onto punch cards for him (but I didn't know what they did exactly). Eventually, sometime circa 1970 he was working for a place where most of what he worked on was software, and I'd play around with the PDP-11C (which had a tty). You could run BASIC and interact, so by age 7 I could use the computer like a calculator.
It wasn't until later that I really learned to seriously program. In high school we actually had A computer (TRS-80 Model 1 IIRC) which I finagled the librarian to let me play with, and I learned at least a bit. My uncle also gave us a typesetting machine that you could program in assembler using CP/M and reading the PACE assembler book I finally got the key concepts. The year after that I went to college and took FORTRAN. Hard to say in there where exactly i got to "can program" from "cannot program" but I'm sure in this day and age it would be MUCH easier and happen sooner.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
These young kids and their high level languages! I learned on a home-built (that includes etching the printed circuit board) Z-80 system with 2k of memory and a simple monitor EPROM. Assembly language, hand-coded to produce object code loaded by a keypad, was the only option. Yes, I could blink lights, but that's about all.
ZX Spectrum Basic. I was 6 at that time.
First I learned how to create cool looking patterns using series of PRINTs and graphical symbols.
Then I learned how to use DRAW, PLOT and CIRCLE to create pictures.
Then one of my parents showed my how to use FOR loop to draw a sinusoid.
Learning BASIC on Spectrum was quite easy even without any manual. Due to a fancy input system all the keywords and functions were printed on the keyboard. I learned what they do by trial and error.
I learned on a C64. I wrote a program in BASIC. Then I ported it to a PrimeOS6 at my school. substr(A, B, C) did not behave identically. on one, SUBSTR(x,a,b) Part of the character string x that starts at the ath character and is b characters long. On the other SUBSTR(x,a,b) Part of the character string x that starts at the ath character and stops before the b-th char. I hated programming for the next 3 years and didn't touch a computer until I needed a job!!
It was Apple II basic. Then QBASIC, then Visual Basic, then ZZT, then Kilk & Play, then Games Factory, then C++ and assembly, then C#.
I've taken classes in Basic, C++, Java, other languages. I've read "exceptional" and "effective" and other books to improve my craft over the years.
But building from the ground up in an introduction to digital logic class way back in 1978 still had the most profound impact on my ability to know what's happening in a computer and on my ability to understand what's really going on "under the hood", even 35 years later.
It literally started with diodes and transistors. Building 'and' and 'or' and 'nor' (and...) gates. Hooking them together to make a flip flop. Then taking pre-built gates and making a counter. On to a simple cpu (that only knew a couple of 'instructions', IIRC). When I built an 8080 based computer, I actually knew how it worked. There has always been something comforting knowing that, deep down inside even the most powerful processors, it's still just a bunch (ok, a WHOLE LOT) of gates.
Unless this whole quantum thing gets properly defined and implemented and catches on. Maybe I'll get to start over.
Strictly speaking, I started with a TI 50 step programmable calculator in the late 70's but I would say for me, it really started when I got an Atari 400 and used to type in the game listings from Computer & Video Games mag in the UK. When the game wouldn't work, I'd compare my version with the magazine and after a while got to recognise what commands did what. Then I got a book on Basic and learned it properly. I also picked up 6502 assembler. Then I moved on to Lattice C & 68k assembler on the Atari ST. Having fought off doing IT as a job for 10+ years I eventually went for it and moved on to VB4 then VB6, did my MSCD courses and exams, added maybe 5 or 6 operating systems and at last count about 20 more languages of varying levels of obscurity. Along the way, I've read an awful lot of books, studied other people's code and so on. Apart from the 1 year spent on MCSD/VB6 it was all self taught but I think the amount of experience picked up along the way has meant I'm pretty decent within the areas I work in. I basically write finanancial software - databases, billing systems etc. I *like* documenting, write structured heavily commented and pretty much bullet proof code. Generally, if there's a bug, it's down to vague design or me misunderatanding the design rather than code errors per-se.
I want a list of atrocities done in your name - Recoil
My Mother would drop me off at Kmart in the electronics section every Saturday for a couple of hours while she went shopping. They had a C64 and people would write stupid little programs that printed text on the screen. I watched them, figured out how to stop the running code and get into the editor and by trial and error figured out how to change the text, make it repeat in different ways and add colour.
Nagged my parents into buying me an Amstrad CPC464 and got a book on how to write text adventure games on the Amstrad CPC464. The first real program I remember writing was a random character generator for Dungeons and Dragons. Never did get it to generate an all 18's character despite running it hundreds of times! :)
GW-BASIC and an old Wang Labs BASIC manual my dad found lying around. That, combined with some friends of similar interests. This was in middle school, back in about 1992-3.
In SOVIET RUSSIA... erm...NSA AMERICA, the Internet logs onto YOU!
Dylakor DYL-260 on an IBM System 360/40 running DOS, then IBM Assembly Language on 370's & 4300's running VSE/AF.
Video Genie EG3003 here. TRS-80 clone. I was 19 or so and into electronics. Friend of mine had a lightning strike nearby, fried his system. We tried for weeks to repair the machine until he gave up and bought another one. I was stuck with the smoldering remains.
So I cut each and every TTL chip from the two boards and replaced them one by one. That got it back to life! So once I has a computer, now what.
Well, my friend was into Z80 assembly programming and after studying his code I made small changes, which became bigger and bigger. Eventually I built my own CP/M system from scratch, wrote my own BIOS routines and built a SASI harddisk interface for it. That experience launched my career as support engineer for a tape drive company, where I taught myself to program in C. I wrote tape drive diagnostics which are used even today.
Later I got into embedded stuff on Z80 and Atmel microcontrollers, which I still program today.
That one lightning strike started it all. Thanks Sipke, for allowing me to futz with your system.
To Terminate, or not to Terminate, that's the question - SCSIROB
I punched in TI BASIC code from the magazine pages and saved my programs on a cassette tape. I also learned some TI LOGO. That was in 1983. In '84, I remember programming in Atari BASIC in a school club.
In machine language loaded from punch cards. At least once I entered the code using the toggle switches one byte at a time.
In '77, my dad got a TRS-80 (model 1, level 2, cassette drive). My brothers and I (well, mostly me) learned basic (Dad would buy us a game at RS if we demonstrated a working program). When my programs started to look more peek & poke than print, he got a debugger so I could edit the machine code directly in hex.
You save only 59 seconds over 8 miles by going 75 instead of 65. Do you really have to pass that guy? Do the Math!
http://www.youtube.com/watch?v=mttyoaspa7U
LOAD "SIG",8,1
LOADING...
READY.
RUN
Started on a VIC20 with Compute! magazine. Got a job a chicken joint when I just turned 16 and the owner had an Apple ][ in the back; he was paying Robotwar and looking for an opponent. Learn to program the Robotwar bots. That led me to take a course in programming at high school on Apple ][e. Still program today: iPhone apps and Arduino.
I learend some assembly on the Apples but not much. I was always more of a hardware hacker. I could rewire, jury rig, and repair like no ones business. I could get a cranky tape drive or out of speed floppy back in line.
In middle school we had a small lab of apple 2's, I had class right before lunch. Being largely a hick school, most people went to computer class for games or to slack off. Consequently the hardware was frequently abused. We had several machines that would not read commercially produced floppies, but would read ones they wrote. I did some testing and discovered that they would not read other computers discs or vice versa. My puny brain said the drive is working, it is not at fault, what could cause this.. I serripitously popped a case and saw the trim pots on the drive controller. Then one day I stayed through lunch. The teacher left, I created a small test file on a known good machine, popped the case of a bad one, and started adjusting the pot, fully clockwise then by quarter turns till I found the butter zone. I did not know about the internal timing marks in the drive. Right as I got the file to read, the teacher came back and saw me inside the computer. She flipped, thought I was destroying equipment. Once she calmed down, screaming for me to go to the principal, I explained that I fixed it. She was in disbeliefr, and was not sure it was one of the broken ones to start. So I offered to repeat my feat, which I did. Instead of suspension, I got a letter of thanks (with a reprimand for not getting permission--which I never would have received), and they then sent me around all the schools repairing Apple ]['s that would not read discs and were acting as paperweights. God knows they had to get Oregon Trail and Carmen San Diego back up for the hicks.
After that I took a short hiatus. Then at the end of high school I got a 486 sx 25. I did not do much programming, but I learned dbase and quattro pro (and a bit later wolf 3d). I then went to community college in 1993, we were supposedly the first in the country (community college that is) to be on the internet. The first computers connected were donated NeXT workstations. 68040 @ 25mhz IIRC. I started learning unix, CSH, TCSH, and SH scripting, as well as helping to administer our first web server (on a NeXT cube), gopher server, and irc server.
During the day I was working in the labs, helping studnts, at night I was playing with early versions of slackware or hosting Doom LAN parties in the lab, until the governor mandated no games on state PC's except for learning purposes.
My first attempt at web design for my own personal site still resides in the wayback machine. It is so ugly I am not going to link to it.
The rest is history.
Silence is a state of mime.
We had an Apple II (then IIe) and my dad subscribed to Nibble magazine. This was also the glory days of Byte magazine and Beagle Bros. Every month I'd take the magazine and type in the programs in it. Then I'd spend hours debugging my code for typos. In the process I learned about program flow, subroutines, memory location calls, etc. It was better than any programming class I've had.
It is by the juice of the coffee bean that thoughts acquire speed, the teeth acquire stains. The stains become a warning
Can't remember if it was an Apple c/g/gs, but it was one of the earlier models. I had been playing Zork, Wizardry & The Bards Tale, and thought it would be fun to write my own games. They were all basically of the endless quest variety, with letters in front of the options. Nothing too difficult, just basic GOTO type stuff. If only I had the knowledge I have now back then, or the motivation I had back then now...
Taking guns away from the 99% gives the 1% 100% of the power.
In the 70s, my dad brought home the manual for the 9825 desktop computer, and it had nifty BASIC tutorials. My school didn't have any computers, so I wrote programs on paper for fun.
I started programming Commodore PETs in 1982, in 5th grade. My teachers had ordered a box full of cassette games and I asked me to evaluate all of them and write a paragraph explaining each game. I wanted to know how the games worked so I started reading the BASIC source code. BASIC is so readable that I was writing my own games in about a month. In 6th grade we had a C64 and I started taking a self directed class for BASIC. My parents bought me an Apple //e (a HUGE fight ensued over the cost). That summer I went to National Computer Camps in Connecticut (back then it was at Westminster Prep School) and learned to program 6502 assembly language.
The rest is history. All of my learning was self-directed. There were no programming classes anywhere in my elementary school or the nearby highschool.
I have fond memories of the sound that a Commodore PET makes when you turn it on... *chink chink chink... bzzzzzzt ... POP*
https://www.accountkiller.com/removal-requested
40 years ago when I was 15, I was an Explorer Scout (yeah, I was a bit of a nerd). Bell Labs (now Lucent) opened up their doors every week and taught teenagers how to program computers. I learned Basic, Fortran, some other obscure but similar languages, and even a bit of machine language. As I recall, the computers we used were PDP 11s with Teletype machines for consoles. We saved our work on paper tape. For those of you who have worked with punch cards and keypunch machines, punch cards are a step up from paper tape. I had no idea at the time that it would later become my career.
Hi, Geezer here...
I learned to program on a DEC Linc-8 by using toggle switches to load the machine language program into "core" memory (12 bit machine) one step at a time.
Real men use toggle switches.
I don't read your sig. Why are you reading mine?
http://en.wikipedia.org/wiki/Timex_Sinclair_1000
2k of RAM. Not a typo. The user's manual started with "10 PRINT 20 GOTO 10" and ended with accessing memory with PEEK and POKE. Spent many, many hours with that thing from 12-13.
Personally I don't think the language and hardware are that important. They are "implementation details", important, but perhaps more important for more advanced stages of learning to program. :-)
... One of the interesting things here was the different approaches given a RISC vs a CISC CPU. This carried over to C/C++ as well, in general that there is sometimes no universal solution to a problem, that the correct solution depends on one of those "implementation details", the hardware. In short, don't just copy a solution from a book (or in more modern terms don't just cut-and-paste a solution from the web). Take a little time to see what the code you are looking at is doing and think about how appropriate this implementation is.
I think learning to program starts with picking something you are curious about. Ex: How could I do [insert problem here] on a computer? Then figure out how to do it using the hardware and language at hand.
For me one example was a blackjack card game. As I learned more, both in a formal CS program and in my own "independent studies", the details of the implementation changed. The hardware and language also changed as appropriate. From a single player game written in BASIC on an Apple II to a real time multiplayer game written in C on MS-DOS using an novell ipx network.
Another example was more assembly language oriented. Matrix and vector multiplication functions for 3D graphics. 68K, i386, ppc, amd64,
My first programming environment was Basic on the TRS-80, but I never got very good with that. I wrote some trivial programs, even a wee bit of hand-assmebled Z80 machine language poked directly into memory, but I couldn't write a program of any real size yet.
Then I got a disk-based C compiler and a copy of the old 1st edition of "Kernighan and Ritchie", and taught myself elementary C over a three-day weekend. That's when it really took off.
I got better by continuing to read programming articles in magazines.
Around 1984 or so I wrote my first really architected programs, with features logically separated into functions, code re-use, separation of code and data, different builds for different deployment environments/feature sets, and an event-driven user interaction model (in some builds).
(It was a set of programs to help me run 1st edition D&D games, set up so I could run it in different execution environments, eg. with/without graphics, with/without mouse. I named most of the different builds after different witch's familiars from Shakespeare. "Graymalkin" was of course the coolest version, with all the optional features turned on.)
I also learned on the same model of Teletype as those famous guys.
It was Fall 1973 at MacDonald High School in the West Island, and we Grade 10s had access to a PSBGM [1] system over a 110 baud modem. Under watchful eye of Mr. Seddon, we programmed in BASIC and his own invention, MALASIM [2], with its own instruction set. You could also sign up for time after school, and the fights for the time slots were sometimes violent. (You know you're a geek when ..)
The first major code I actually saw written on this platform was a program that my Dad wrote, to see how the distribution of blood types changed over generations. He's an actuary, so being able to simulate something was fascinating for him. Conway's Game of Life (as first seen in the pages of Scientific American) was also fascinating to him.
Part of my early fascination in programming was reading through the entire BASIC manual, trying to understand all of the available syntax. Thus, when our assignment was to format our output, I used an IMAGE statement (PRINT USING ..), and was able to get very fine control for an invoicing assignment. Two of the four terms in Grade 11 I got perfect, but due to PSBGM's lame report card application, they'd only left two digits for marks, so it had to be recorded as a 99.
Good times.
1. Protestant School Board of Greater Montreal.
2. MAchine LAnguage SIMulator. It may have been MALASYM, I don't remember.
... NOT being distracted by Facebook and Twitter. Good thing those and the whole internet were not around back then.
now we need to go OSS in diesel cars
This was back when it was 100% free. I think it's called Graal Online Classic now. As stupid as it sounds, the in-game language is a great learning tool with instant results of "cool" stuff. Most languages don't give this kind of instant gratification as in-game languages do, and with a good distribution system in place, you can instantly share your "cool" levels with friends (I just used forums, p2p clients, and sometimes email). The language was (maybe still is?) very similar to C/C++. I had no problem transitioning to C++ with a book (either Complete Idiot's Guide or Dummies, can't remember). I got stuck on arrays for a bit (I was young and new), but everything else was a breeze, even classes, polymorphism, and memory allocation. Graal's language really just set the foundation for loops, math in a programming language, rudimentary data structures, and "thinking" as a programmer (e.g., thinking from top-down; from first step to last step. even with threads, you have to think this way within each thread's logic).
The G
Basic and Assembler there (modifying programs out of Byte magazine). Later got a C64 at home, and my friend's dad got us in to use the Harris 4 mini at his office. Loved writing JCL on that machine - I wrote a routine that gave a quick status of who was logged in to what terminals, and what they were running on the machine - heard that the company was still using that utility about 10 years later!
1964 Started with coding sheets for running enquiries in Find on ICT mainframe. Moved on to coding FILETAB screen queries on dumb terminals then used SQL and SOLARIS for database manipulation via VTs.
Home computing Sinclairs and BBCs basic, assembler - now Linux and Android in my retirement.
My grandparents had a C=64 at their house when i was 6 or so. My older brother and I would take the (Compute or some sort of C=) Magazine and copy the games out of the back of the magazine. It would take us a LONG time to finish sometimes. We would then play the game for a few minutes. After that we would start looking at the code and changing some of it after we realized things like 'this is the color of the wheels on the car'.
Great times. I turned into a programmer myself. My brother on the other hand never fell in love with it.
What got me interested in even wanting to program in the first place though was the NES. Because of the tile-based nature of the graphics you could kind of pick the game apart with your eyes, and see how things like collision detection could work, or triggers, simple animations, etc.
I borrowed a book from the library that had simple BASIC programs, and I learned by modifying parts of the program, which was already simple to understand since it could be typed out as one routine that ran from A to Z with simple GOTO statements and IF THEN logic. I figured out that in QBASIC, you could press F1 on any keyword and it would tell you about the syntax, and would give you an example routine. This was invaluable. Coupled with the Find function in QBASIC, I could type in something that had to do with the functionality I wanted, and the Help system would show me the commands that would let me accomplish this.
After a few years of doing this, I started Visual Basic, then Delphi, which was great for my job, but I wanted to do more... I was able to download a tutorial by VLA off a BBS that taught me x86 Assembly, and when SDL came out, there were many great tutorials and I started learning that with C/C++.
Twinstiq, game news
I can't remember what they were called, but every quarter the schools would pass out these book ordering forms and inside them was a series of books that featured a kid named Orion.
The books were kids adventure novels, but the unique part about the book was that every chapter or two the kid would come across a clue and for you to "learn" what the clue was, you had to type in a basic program and execute it on your computer. This would reveal whatever the answer was and they were generally pretty short 20 lines or so. But having done this for 10 or so books I really looked forward more to the little programs than I did the books after a while. They started me down the line of figuring out what these programs did in 2nd grade on an Apple IIe
on the ZX81 in 1982, my first program?
10 PRINT "CHRIS ";
20 GOTO 10
Yay for British computing!
I learned to program by reverse engineering software protection schemes on Apple ][.
10 years old learning Basic and Pascal on the family's Apple ][+ back in 1980. If I remember correctly, Pascal was available through a special memory expansion card that we added.
By the late 1960s, the US panic over Russia's launch of Sputnik had resulted in a significant increase in investment in science education at all levels. In particular, an experimental program was started at the public Bronx High School of Science in New York City, with the goal of exploring whether high school age students could successfully program computers. (Computers often cost hundreds of thousands or millions of dollars, so this felt a bit like seeing whether students could fly a jetlineer). The school procured a number of small systems including several of the legendary Olivetti Programma 101s.
The school's main machine, though, was an IBM 1620. It was a decimal (not binary) machine, and the high school's was had the minimum 20K digits (not bytes!) of memory. Originally, input and output was only via punch cards and the built in typewriter, but by 1968 or 1969 an IBM 1311 disk drive, which was itself the size of a small washing machine, added 2 Million digits of persistent storage, and a 1443 lineprinter was also added.
Students were taught, in this order: machine language, then FORTRAN II, then assembler. That's not a typo. Since the machine was decimal, it wasn't too hard to type in raw machine code onto cards, which could be loaded directly into memory by a short self-booting loader program, which was included on the front of each card deck. There was an assember, but until the hard disk showed up the assembler required that an intermediate deck be punched and loaded each time an assembly was attempted. So, for moderate size programs, it was often easier to write machine code directly. This typically involved manually computing and setting the absolute target of each branch. Here's a picture of the cover of the textbook that students used to learn 1620 programming.
This experiment was, in my opinion, wildly successful. I'm aware of at least 4 quite well known computer scientists who started their programming careers in the 1960s on that machine at Bronx Science. In general, many programmers from that era learned on 1620s. Like PDP-11s and Apple-2's later, 1620s were machines that an individual could get easy access to, and could learn to program at both a low level (machine or assember) and higher level (FORTRAN, LISP). Famously, the 1620 did not have a general purpose adder implemented in hardware: the add instructions would not produce the usual results until software loaded a table of partial sums into a fixed location in memory. The machine's nickname was thus CADET: Can't Add, Doesn't Even Try.
Started in 1981, summer course at a local college, programming BASIC on a typewriter interface using 11 x 17 fan fold paper. No idea what the computer was called. In the following summer, there was a single mono chrome video display. Still remember the noise of the dozen or so kids running the programs.
I play around with learning all kinda of stuff. I wouldn't say I've mastered anything, but I really like the material at codeacademy.com. It's a great place for beginners to start IMO.
And yes, I *am* old, thanks for noticing.
Back in the early 90's. I remember using software for games things like map swappers or such or apps that made single player missions into multiplayer missions. I remember thinking "I could write something better". So I sat down and learned. I read anything and everything I could to learn asked those that knew what suggested reading and set about doing it.
I am Bennett Haselton! I am Bennett Haselton!
The world's first "Service Bureau" was reputedly C-E-I-R, in what is now Crystal City, VA. I went to work there in 1962 (or 63?) with no programming experience, but a real grasp of electronics and transistor circuitry. Fortunately, I worked with pioneers in the field of Linear Programming (Bill Orchard-Hays, Eli Hellerman), and with an incredible team of programmers (people like Ed Yourdon) who freely shared code around the offices.
:-)
I'd ask someone how to, for example, write code to read data off a tape drive. They wrote a short subroutine in Assembly Language for the 1401. Then another person needed it, and she added robust code for backup and re-reading in an attempt to overcome errors on the media. Then another guy added another feature. I even, as a novice, added a couple of features, too.
To my mind, it was that tight team that taught me how to program...and we were all learning from each other.
That tape drive reading/writing subroutine was the beginning of my learning. We added more and more to that desk of punched cards until it was about 6" thick, and called it CELIB (C-E-I-R Library). It became a mainstay of programming at the company until the S/360 was announced. And, about 10 years later, while I was consulting in Canberra, Australia, I came across a government agency still using CELIB on their now-ancient 1401s!
I used to take home the 6" thick printout of the kernel of the 7090 IBSYS operating system, so I could read it and understand how it accomplished its' marvels. I learned it before there were any classes, any courses, not even technical schools teaching the field. I learned from close people who were, quite literally, only a month or two ahead of me on the learning curve, and from acknowledged experts who wrote that O.S. What an exciting time that was to be a young geek
My first computer was a Timex Sinclair 1000 with a very useful manual on every command and 2 useful programs explaining each command. In fairly short order I was making up lots of my own programs. Later I was programming a VIC20, then and Amiga1000 (I figured out where to overwrite the addresses for the video and graphics and other useful places). Then PC's, and onto Electronics Engineering and then Computer Science. I wrote my own math libraries (programs to calculate sin/cos/tan/exponents/logs/roots and their arc functions in high precision before I took CS, and likewise didn't have a hard time with artificial intelligence as I had made my own backtracking algorithms years before. I was half was through CS when I compiled my first operating system (LINUX, YAY!) with my own modifications to it (I had to change the interrupt of a CD rom drive, and also patch in drivers for the sound card --that was kernel 1.2.13 back in 1994). Since then I've been writing stuff 'closer to the metal' drivers for a little USB display and also GPU drivers for my video card.
Maybe you should have opted for the English degree instead.
Just sayin'.
TRS80 and Apple ]['s when I was in 6th, 7th grade. Went to college for electronics but I'm a sr level software engineer today.
First app was around 1980 on a Navy communications computer (I think it was a ugc20). It was an octal computer. To manually program it, you had to enter each byte by pressing a series of 9 buttonLights; 8 for the byte, 1 to accept the byte. It took 10+ hours to write a simple program. We had to do that to be "combat ready". Normally, to program it, we used a 5 baud punch tape which took seconds to load a program. There was also a cassette tape if the paper tape broke. If neither was avail, you were rewarded w 10+ hours of punching lights.
After I got out of the Navy, I advanced to MS C++ (4 if I remember). Then branching out to dBase 4, Access2, VB 4-6. Then C#. Now? I'm sick of MS and learning to program on Linux platform.
An old 16k Apple ][ in 1979, in a logging camp in Southeast Alaska. First integer BASIC, then Applesoft BASIC, then assembly via the Sweet16 mini-assembler. Then Pascal. Then I graduated and went to college and learned how to program.
And I wrote my "One Time, at computer camp...." a long time ago.
Microsoft is to software what Budweiser is to beer.
My family had moved to a rural area. With no friends nearby and lots of time over the summer in 5th grade, I read my dad's C++ books and started coding on my off-brand 486.
My first program was an HGR of a sword. Plotted the damn thing pixel by pixel because I didn't know about loops; I just sat down and started typing. I later wrote and ran a BBS - The Red Dragon Inn. Tried to write an online dungeon crawler called GrimaceGrounds, but I left the disks in the computer lab one day and lost months of work.
Then I lost my virginity and my interest in computers went all to hell.
Ignorance and prejudice and fear
Walk hand in hand
Cutting class in high school and spending my lunches in Butte Hall helping CSUC undergrads use the CSU CDC timesharing system and telling them where to submit their stupid fortran batch job homework probably did more for me than 90% of all the time I wasted in K-9. Wrote a RSTS/e Basic + program to archive files together so that a user account didn't have to waste 80% of its allocation on unused "blocks" (the disk geometry of that machine was described in "blocks") got me in to the same school. Also wrote a MACRO-11 assembler program to give me SU privs. That almost got me kicked out. Fortunately I didn't do anything with it except show it to the instructor, who in turn almost got me kicked out. Luckly the provost was a reasonable sort.
Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
We had a local club, sponsored by the government, where there were many many, oh so many computers :D
We waited every early morning, at the entrance, for a chance to laid hands on this wonderful machine.
The rest is history.
My very first "programming" gig was disguised as a game: It was a maze on a graphing paper with obstacles. We have to write down the direction and steps to get our "character" to move to the exit. Then we moved onto the computer. Same game, different platform.
Second was LOGO on the computer with shapes that we were told to do, including a circle. After mastering that, we moved to BASIC.
Like many others here, started on C64 with BASIC. Really WANTED to learn assembler, but never found any books or software on how to do it on C64. Was a bit frustrated by limitations and slowness in BASIC limiting my designs. Started programming text-based adventure games inspired by magazines with code printed out. A little sprite and sound, but not too advanced. Always doing it my way though, rarely copying code verbatim. Never finished any adventure games.
Got to play on my dad's laptop in the early 90s. CGA got a bit boring for the games. Decided to learn more programming. My brother recommended Pascal, which I quickly learnt and started debugging. Simple drawing stuff.
Since I never got to really learn assembler, I decided I wanted to try it out. Loved it. Made libraries of sound (synthesized samples through pc speaker, ad-lib and soundblaster, music (ad-lib), artificial life running live code modifyinf itself and "competing" against other threads in real time (interrupt-based, never got it to do anything complex other than failing on some obscure code that we'ren't trapped), a car-game with perfect vertical synched scrolling, messing with horisontal retrace to create horisontal lines on PC (yay, almost as good as Amiga huh?). Never finished any games and libraries are still rotting in a zip-file in backup.
When my brother mentioned C++ was too difficult, I quickly learnt C++ and "OO". Loved it. Made libraries for: 3D CPU-based textures, AI (fuzzy neural network of my own design, gave up when I couldn't prove it could converge using college math - which I never truly could stand to learn), standard templates libraries and more. Never really got to USE my libraries for anything worthwhile.
In college, programmed some areas on some MUDs in LPC (MudOS and DGD). Fun times, but really really alot of work, especially when I tried to make a new text-based MUD which should be like a story, not rooms-based. Proved too ambitious and too hard to "sell".
All in all, I feel I've done it all. Even several years of software development in the corporate world, which finally killed off all inspiration to do anything with programming computers. Now I use Ruby, ActiveRecord, Postgres, or anything when I _need_ and _want_ to, not for fun anymore. It's been a great learning experience though, and I feel if I really had a great idea I wanted to pursue, I could complete it, if I wanted to.
The problem is, nothing ever really completes. I easily get bored and move onto new things, and being a perfectionist, I'd rather ditch the project than spend eternity hacking on the same thing over and over. It's been interesting, but I now see the computer more as a tool than trying to shape the universe with it. Some day someone else will implement all my ideas anyways, and that's their headache.
In 1984 I was working between stints in college at a lab that was instrumenting buildings to find out how people used energy. (The local electric utility was trying to figure out if it was cheaper to build new dams or buy people energy-efficient appliances.)
My boss came into my office one day with an HP 100 'laptop' and told me that he wanted me to program it to get real-time readings from one of our data loggers. "But I don't know how to program, Bill." He didn't blink. "That's ok. You're smart. You're cheap. You'll learn." He put the computer on my desk, walked out, and shut the door behind him.
I went to the library. Eventually I had the computer sending ASCII control signals and reading responses through the serial port in interpreted BASIC.
Started to experiment with C64 basic somewhere in the 80's using mostly the 3 C64 "programming" books in the local library. I was the only (sad?) kid in our small town to borrow those books.
I taught myself to program on a VIC-20 when I was 7 years old by reading the manual. First program was a recipe database for my mom that saved its data on cassette tapes. She found 3x5 index cards more practical, so I switched to writing games. Taught myself assembler by reading Byte and Compute! and the like. Taught myself LOGO while visiting family one weekend when I was 8. Learned Pascal in computer camp as a pre-teen.
My parents had a system for hardware upgrades... if I got straight A's in school with no exceptions, they would pay for half of the next piece of hardware, as long as I worked my paper route and earned enough to pay for the other half myself. That's how I got my floppy drive, and man, did I ever appreciate that thing.
-1 Uncomfortable Truth
Shell scripting, learned out of necessity, working as a sys admin. Now, years later, I am web developer working primarily with PHP and Perl.
I learned in summer school in the 1970's on the old MECC timeshare system in Minnesota.
My kids are now a product of the same school district, and due to a changed world, summer school
offerings are now limited to remedial courses, and so they have less opportunity to learn programming
at school than I did.
Moving a silly turtle around lots of years ago to draw silly things. Next question?
Oh, here I come in the thread for aged started-on-TI people. Started on a TI-57. That was fun. Amazing what we could do with 50 steps of machine-language like code...
Slashdot, fix the reply notifications... You won't get away with it...
I'm not sure what qualifies as "programming".
When I was eleven I had a TI-83. They have crude programming capabilities. Trial and error are an inefficient way to learn vaguely phrased commands, but I did get the basic idea of an if-then flow and what a program/execution *is*. Does that qualify? How about the next school year, where I learned an extremely casual grasp of HTML?
Pseudocode is used as a shorthand to sketch out structures; often the average Joe can deduce it. Even flowcharts are an algorithm. Does the question refer to learning a little/some/all of the syntax of a "programming" language?
When I was 8 I started programming in BASIC but I really didn't understand what the hell I was doing. For some strange reason, I thought the Atari BASIC command prompt I was using, was hooked to the FBI / CIA and if I entered correct BASIC commands and the prompt, and the prompt wrote "OK" I thought I was getting closer to hacking a bank or the government.
Later, when I got more serious about programming (~age of 11), I used to print out the source code for the programs I found written in C/C++ and Amiga E. I would try to memorize the source file (like you memorize a song) without really understanding what the program was actually doing. It was really hard understanding things in the beginning, like hitting your head against a wall because you couldn't understand what all these codes meant. I would force myself to memorize the entire source file and practise writing it out from memory.
Later, at the age of 14/15 things started to get easier and the concepts of programming started to crystalize in my head, and i was no longer a huge struggle to understand basic program flow.
One of the counsellors at our high school got into programming, and he decided to teach us. This was an after school class for no credit, and our programs were to be run on the school district's IBM 1440 (mostly used for payroll, I think). The only language we could use was assembly, although on our one field trip to see the computer we were shown a huge stack of cards that we were told was a Fortran compiler that they never used. We punched our cards in the evening on the key punches used by the key punch class during the day, then he took the programs to the district center where they were run at night.
I programmed Conway's game of life and got to run. I felt guilty about how much paper I used. I recall that someone else tried to compute square roots, but was misled by a popular article on how to do it. Starting off using assembly language really helped understand what was going on in there.
a,e,i,o,u and sometimes w and y (at be if of up cwm by)
My dad made a bet with a few of the professors at the University.
The professors said programming(part of the college of buisness at the time) should be restricted to upper graduate students.
my dad said he could bring in a dozen elementry and jr high kids and have them coding in under an hour.
he won.
In 7th grade, I don't even know what machine it was, it looked like an adding machine (w/paper roll output), but you could program it with punched cards. It had a few registers of memory. Early programs were, e.g., printing a series of prime numbers. Later, in high school, got to program FORTRAN on punch cards one semester, then on terminals the next semester, at Rockwell International via an extension class. They sometimes let us play a dogfight game on a graphics terminal that had Asteroids-like graphics.
When I was a senior at a college in China (~1981), our university had a home built computer using vacuum tubes. The language we learned was ALGO-60 and program was loaded by flipping toggle switches and read from paper tape. I have no idea how much memory that thing had. All I remember was that our first and only project was to calculate first 100 prime numbers!
I learned to punch in machine instructions on a Honeywell DDP-516 on the console. Coding was difficult as I was performing FA&T on them at their Framingham plant and we had to skip certain instructions that didn't work yet. Also, often, certain bits were either stuck on or off, so you had to figure those in as well. I lament the old days, as programmers today can barely run a GUI/Desktop and are confused by concepts such as memory leaks.
I had a commodore VIC-20 and learned from the manual. Whatever I coded in basic was saved to CASSETTE tape hehe. Ahhh the memories.
Tired of my customary (Score:1)
Good old machines. My first computer purchase was the TRS-80 Level 1 4K, a pretty limited machine for it's time even.
Who remembers Softside Magazine?
Dark Reflection
After having read several textbooks on BASIC, 8080 machine code, and 6502 machine code before I had access to a computer in rural Indiana, I wrote hand-assembled 6502 machine code by hand and POKED it in as binary numbers into RAM via BASIC. (By that point, I was bored by writing programs in mere interpreted BASIC.) Within a year, I had built my own 8088 IBM PC clone and wrote my own 8088 assembler in Turbo Pascal.
LEGO Logo
A PC running DOS
Turbo Pascal
Chaos by James Gleick.
The simple text and graphical outputs of Turbo Pascal and DOS, and the obvious outputs of LEGO bricks, allowed me to focus on syntax and algorithms, rather than window managers, objects and weird system APIs. By programming my own versions of cellular automatons, fractals, chaotic attractors and the like I learned about boundary conditions, debugging, algorithm analysis, recursion, etc... All self-taught by thinking "I want to do X" and looking for X in the index, rather than structured tutorials. I was playing with a fun toy, essentially.
yep - started with a commodore pet 3032 at school, aged i think it was 8. very unusual that a school actually had a computer. i watched someone type in a program:
10 FOR I = 1 to 40
20 PRINT TAB(I), I
30 NEXT I
40 GOTO 10
and the number scrolled 123455bababababa in a diagonal line, and i went, "ah that's obvious".
from there, i went on to work out how to read the keyboard (GET), we typed in a "would you like a cup of tea?" program (if N goto 10) which explained all about how you needed to make tea. from there i began to write games after someone else brought in an Apple IIe (as a personal computer!) and it had "castle vulfenstein" where you shot german soldiers all very politically correct.
the games i wrote were much simpler (40x25 screen, go figure) and usually involved drawing and moving of dots as "bullets", which could be stopped by on-screen ASCII characters if you were lucky. we set up 3 sets of keys so that 3 of us could play (wasx and z for fire, tghb and okl,) and soon discovered something called "keyboard matrix scanning limitations" whereby one player could hold down keys that cause the other players' controls to be non-functional.
by age 11 we'd moved to skelmersdale, where several neighbours had weird machines like superbrains, jupiter aces, tangerines and one guy even had a Z80 that he clocked by hand with LEDs on the outputs just to see what it did. he actually took notes when i explained what i'd been doing with keyboard input (interactive no less!) and things like screens.
after wrecking my eyes borrowing a neighbour's ZX80 with a ZX81 ROM upgrade, and playing chess in 1k of RAM (unbelievable) and typing in 1-line BASIC programs that would scroll binary across the screen, my parents bought me a ZX Spectrum (and a thermal printer, wow!). and a 16k RAM pack eventually. after several months of typing in games and programs, and playing jet-pac and lemmings, i actually bought my first computer software: a BASIC compiler. it could do 26 variables (A to Z) as integers, no floats, and no strings. cost me 30 quid.
by school aged 13 to 18 i'd moved to BBC Micros - the school had 6 of them, all connected via Econet. memorable times there included writing a program which sent notes to each computer on the network so that tunes with more than 3 notes could be played across all 6 computers; writing networked games and creating something similar to "Risk" which was stolen by one of the kids, hidden under carpet where feet destroyed the 5.25in floppies irretrievably. the lab also had one of those digital programming interfaces, with GPIO, ADCs and DACs, which i used on a BEEB to do strange experiments out-of-hours.
so, naturally, when it came to a choice of university and a choice of degree, perhaps unsurprisingly i picked Theory of Computing at Imperial College. there we had a Gould Terminal system that could connect and route over 2,000 VT100 terminals to a configureable array of servers (micro-vaxes, SunOS 4.1.3 and so on). that started to get interesting, especially when someone did "cat /bin/csh | lpr" by mistake. if you're familiar with line printers, you'll now how bloody fast they are and how much of a racket they make. "cat /bin/csh | lpr" churns out 600 pages *real* fast.
all good fun...
I was exposed to LOGO very early on, but only got more serious when introduced to TI-Basic on my TI-81 by a fellow student in high school that had a TI-82. Soon I switched to a TI-85 which was quite a bit faster, then toyed with Z80 asm throughout high school. None of this was structured and I shudder when I see my old code after going to college and learning object oriented languages and programming in C++ these days.
Typed some code in directly from a manual each middle school lunch break in a demo Radio Shack TRS80 Model 1 at the local Radio Shack
After taking an IQ test at age 10 in 1980, my school pulled me out class and sat me down in front of a Commodore PET with some BASIC programming books stacked nearby. I stayed after school nearly every day for the next two school years trying out all sorts of stuff. I got a VIC-20 around 1983, then a 64 and my 128 carried me into high school and Freshman year at college. By 1987, I was writing 65C02 Assembler directly in hex on paper. I also took COBOL, PASCAL and Advanced BASIC classes in high school, and took similar classes over the summers at a local community college just so I could skip ahead during the regular school year.
By the time I got my first PC/AT, I was done programming and understand know that I knew back then that I was destined to design solution architectures, not be a developer. At one point in the late 90s, after going through three Junior Admins, I ended up writing a series of EXPECT scripts that helped me manage my OS/2 environment over the course of about 5 months. I've never served as a professional developer, but I can work my way around various scripting languages and IDEs like Eclipse. In my role I don't need to perform all those roles -- I only need to understand what's happening and how they are meeting the business goals.
I first learned to program in a college classroom. Programs were generated at keypunch machines on IBM (Holerith) cards - one line of code per card. Card decks were submitted and and returned with results. It was painful to receive returned decks for out-of-order cards, compile time errors, and eventually run-time errors that had to be fixed for the next submission. Card decks were typically only run once or twice each day at the computer center making program debugging a long, painful process.
I'm a software developer. I've written programs for paying customers and a few for fun in Objective-C, C#, C++, C, Java, Object Pascal, Delphi, Visual Basic and Python. I've taught myself based on information found online and in books. Well, that and experimentation ("I wonder what changing this does?").
:)
If you keep at what you are already doing for a longer period of time and try it with some real programming languages, which are actually easier and less arcane than Bash scripting anyhow, you'll end up being a real programmer yourself too.
Big apple, new Yorik, undig it, something's unrotting in Edenmark.
Straight from university with a BSc Maths, learning on the job programming a fixed-point division function, I think. An obscure 2k 'words', word length 18bit, computer in an experimental radar system. Programming in assembler. However this was 1965.
When I was a teenager the "In" thing was MajorMudd, a BBS Door Game. Using the Telemate Terminal Software's Scripting language my friend wrote a script to walk me around while I was in middle school and level my character. Reading through the code is what inspired awe and the curiosity to get into program. Now I mainly write C# on Windows Systems and occasionally Python scripts in Linux. Ah how times have changed.
"Chance favors the prepared mind." ~Me
TI-86 Basic I wrote my own top down shooter, it ran slow but I made it and your ship could shoot lasers or missiles., I cloned a puzzle block game, I wrote a version of minesweeper, I wrote a notes editing program and I wrote a drawing program that could save as images or as sequences of draw commands to save space
Snowden and Manning are heroes.
When I was 15 or so I didn't have a PC, so I programmed my TI-85. Then after loading some assembler games onto it that disabled its screensaver and breaking it, I got a TI-86. I wrote a two-player tic-tac-toe game (no computer player), a Chemistry program, a base-10 to binary converter that supported arbitrary length numbers (built in converter was way faster but overflowed on I think 16-bit numbers), oh and a Physics program.
I even sold a copy of the Chemistry program in High School. So technically I was a professional programmer (got paid for doing it, right?) by 17.
I'm now have a BS in Computer Science and I've been a programmer ~8 years specializing most recently in Java.
Question everything
Started with ST Basic on the Atari 520ST, taught me how to control flow and break steps down. Followed with TurboPascal in college, it was ancient then but taught me a lot about strict languages and how to do a lot with a little. University - time for OO. Objects First with Java was a great book, because it taught how to think OO - have since done professional work in C++, PHP, Ruby, Python, Java, C#. I'll never stop learning - if a new tool can do something better than my current toolbox, I need to know it before everyone I know or work with it, only way to stay valuable.
My first experience was with a SHARP PC1500A and a book full of games in BASIC to type and run.
Then wanting to change these games (more lives, more/less difficulty/speed...) I learned how these programs worked and the meaning of each instruction.
Later on a Sinclair ZX81 I followed this practice with another book with games in BASIC. Then an book on assembly for the ZX where you did have an example of assembly code equivalent for each BASIC instruction and an explanation for all the Z80 op-codes. From this I started learn assembly.
With the help of a reference book describing the hardware of the ZX and lot of magazines articles, I started to add memory (2K, 16K, then 128K with a 8K window like EMS for the PC), mechanical keyboard, sound generator, eeprom memory to store code/data between reset/shutdown, logical and analogical I/O, speech synthesizer...
Years later I received a PC (TANDY 1000 EX) with GW-BASIC, followed by a copy of TURBO PASCAL with its incredible online help and the SWAG archive. With the help of the reference 8086 documentation I began to learn x86 assembly to boost my pascal programs.
VISUAL BASIC let me create windows easily, but was quickly replaced by BORLAND PASCAL.
Way more later, at school, I learned C on a HP 9000, Fortran on HP 1000/RTE, 68000 assembly on a development board, IBM S/360 assembly on a VM of a S/390, SmallTalk, Prolog, Lisp (CLISP) and Smeci.
I got one in 1988 at age 4 with a dozen games and a book about how to code BASIC. I am now a software engineer. I still have that commodore 64.
My father was gifted an Apple IIc as a retirement gift in the mid 80s. I would bike to the downtown library in Los Altos and check out all (3) of the programming books they had at the time. I'd type in BASIC programs from those books and magazines, initially not understanding the code at all, but just fascinated I could make the computer do something. I remember calling out and embarrassing a classmate in a seventh grade computer class for copying a fractal graphics program and claiming to have authored it himself. I spent a summer writing a Hi-Res BASIC game with a friend. We couldn't figure out sub-routines that would call each other so when the space bar was pressed to fire the missile at the plane, the plane would remain frozen in the air...we were much more devoted to the animation of the plane crash on the edge of the screen. I also remember "hacking" into an Apple IIe at the Monterey Aquarium and typing up a quick BASIC program that would beep and flash a message that the computer was about to blow up and watching elderly people walk by it and freak out.
I'd bike up to the local Jr High School where there was an IBM 1130 in its air-conditioned room. We'd wait for the operators to reload the OS, and switch the balls on the selectrics and we'd be off programming in APL... 1971. Learned greek symbols at the same time.
'Mad Libs' was my first program. Took home the printouts and poured over them, writing changes in the margins to update the next day.
Anyone else remember "domino" commands, i.e., Quad-backspace-divide?
tl;dr: Games
I'd just installed some Slackware build (the one where the kernel was 1.2.13), and I wanted to learn assembly. I'd been told that fast graphic routines were written in assembly. I learned mnemonics, registers, algorithms and some other useful stuff. Then I became a game developer.
Especially when the 9815S and 9825A came out the increased space for lines of code was an incentive to expand the options of the standard programs.
We were given some basic instruction on how to use the system en do fault finding in the software but mostly it was a matter of printing it out on the paper roll, cutting it up to subroutines and just trying to figure out what it all meant.
A problem was the thermal paper would only remain readable for so long in the heat of the African and Middle Eastern deserts
A productive time with a tool that did not have a very steep learning curve.
"The likes of Facebook and WhatsApp are free to those whose privacy is of zero value."
College: Turbo Pascal -> Java -> C/C++ -> Python , Haskell, FP, LISP, Prolog -> Objective-C -> C# -> ...
Work: JavaScript, PHP, SQL -> ... -> SAP ABAP
...whatever that is. Got pissed at the keyboard, smashed some keys, and bam - paper ejected from the printer.
When I saw how easy it was to manipulate the printer, I decided to manipulate other things.
Now I'm a programmer.
and sitting at the teletype of an IBM iron beast, and hacking away!
Ah, the good ol' days!
I predict a backlash against closed devices in the future. Things like this are cyclical and when the pendulum swings hard one way
What's the period of this pendulum? Video games in controller-oriented genres, for example, have been most commonly played on closed consoles since 1985.
Found the computer science center at school on my own, fascinated by the 026 keypunches everyone was using. A class later gave out a name and account number, but then stated we could use it but that they were not going to teach programming. I got a Guide to Fortran IV Programming by Daniel D. McCracken and taught myself. Programming involved punching out a stack of punch cards and them submitting them into waiting trays, Every few hours a trained monkey would wheel in a cart and take away all of the full trays. A couple more hours later the cards and printed output would be deposited in numbered bins. You typically would see an error that the compiler caught, punch more cards, and start the cycle again. I eventually moved up to the much faster ASR33s and KSR33s, where after you edited and submitted it, your job might only wait in the queue for 10-20 minutes before it got a chance to compile (longer if it actually got through the compiler and got a chance to run). I taught myself how to read and modify CDC-6500 assembly code at the octal level for my hacking interests, and could patch existing code for some hacking needs, but it wasn't until the summer when I found a decent library book that really explained machine language well that I was actually able to write my one assembly code (in spite of a poorly presented after-hours free class on assembly for the CDC-6500, which really didn't get the key points across).
This, of course, was long before the C64 or Vic 20 or other personal computers. My first "personal computer" was a PDP-20, assembled from scrapped boards where I repaired many of them myself. At the time, electrical engineers at the company where I was working would hear about it and ask questions like "You have a WHAT?" and "What in the world do you use a computer for at home?". People who had their own computers at home were strange and to be talked about in whispers.A couple of years later the the first Altair came out and there started to become more of us, although I had already been playing with the 4004 chip by then.
I'm an American. I love this country and the freedoms that we used to have.
I was 6 years old and my older brothers (17 & 19) taught me some basic stuff on their TI-99/4A. Wasn't long before I started experimenting and looking for books in the library on programming it. Wrote games for TI calculators in high school that probably lowered the grades of a number of kids. I was out of the country and away from technology for a couple years right when the internet took off and went from primarily BBS to the WWW. When I came back it was quite a shock. MP3s came into popularity while I was gone... I had a whole new world of programming to learn. Taught myself HTML and ended up in a job cleaning up css on php pages. Taught myself php by going through and fixing their code as I cleaned up the css. Now I have been the senior developer and db admin for several startups.
QBasic -> pascal -> C++
My first programming was on my old Atari, but I never did anything really interesting there.
Next, in high school, we were told to program a slot machine program. I finished before my classmates did so I added betting on the result and then added a loan shark who would lend you money if you ran out but you'd need to pay him back in a certain number of turns or he'd break your arms and legs.
In college, I took computer science courses as a minor while pursuing my physics major but switched majors to computer science when I realized that I was struggling in Quantum Mechanics but not even paying attention in computer science and getting straight A's. (Plus, the job market for computers vs. physicists looked better.)
After college, I continued to learn by teaching myself all I could. That part continues to this day. Any programmer who stops learning risks time passing him by.
My sci-fi novel, Ghost Thief, is now available from Amazon.com.
I first read the only book my small-town high school library had on computers. It had the listing of a FORTRAN II program to (IIRC) calculate the first few digits of pi. I found a book on SNOBOL programming in the library of the large town in my county - I read that cover-to-cover. Then, when a friend three years older than me had his first programming course in college a year later, I had him lend me his intro programming book. I read that cover-to-cover and it sort of clicked. He made me give him the book back at the end of that term because he needed it. Two years later I went to college, finally getting my hands on a computer during my second semester there - well, hands-on is a bit of misnomer, because the only thing we were able to lay hands on was a keypunch, which I used to learn programming in FORTRAN and PL\I and the joys of print statement debugging on an IBM360\195. Next came assembly language programming on a PDP11/05 running RT-11.
As my college years went on, I supplemented the classes required for my Computer Engineering degree with additional CS and programming classes and read extensively in the CS literature. Being the days of the programming language explosion in the mid-late 70's there was a variety of programming language structures that I learned about. Procedural was well known, modules were coming out, and early AI languages provided a wealth of event-driven languages. In addition to this, I had plenty of exposure to different OS'es, command languages, and editors through my research assistantships and other jobs. During one semester, I figured I was working on about a dozen OS'es, all with their own editors and command languages. One job alone used RT-11 on a PDP-11/10, RMS on a PDP-11/34, JCL and PL\I and FORTRAN on an IBM 360-195, and Compass on a CDC 6600 - and that was only one position (I had two assistantships over two departments every semester to make work a full-time job equivalent) - the other position had just as many different machines (TOPS-10 on a PDP-10 - yum). The first job i mentioned was also where I read my first article (in Datamation - OMG) on Smalltalk and learned about the basic principles of OO programming.
I could wax on about work, where I read about (and played with) Backus' FP, looked at ICON, Self, etc., took additional classes to learn things like PROLOG, worked with C++ in the cfront 1.0 days, ginned up my own OO system out of a procedural language with procedure pointers, learned about ML and Haskell, and tried to figure out how to put all of these paradigms together. I could talk about how I continue to look at new languages today.
This is not to mention the numerous frameworks that you also have to learn today. The last thing I've looked at is YUI, the new features of CSS3, and HTML5. It's always at least a bit interesting (if not particularly surprising any more).
So, how do you learn to program? Like anything else. You learn by doing. You learn by reading. You learn by listening. Keep learning new languages and systems. As long as you make every day a new opportunity to learn something, you're probably on the right track.
That is all.
at UNSCC running KRONOS. 60 bit words, non-ASCII character set, MEGABYTES of washing machine sized storage, PPUs more powerful than many competitors CPUs, and an awesome dual persistent CRT console desk.
We used TTY33 KSR terminals mostly, plus a bare handful of ADM3 glass TTYs, BASIC and MNF (Minnesota FORTRAN) except for a couple of assignments where the instructors made us use the card punches and submit the jobs via batch (hand them to the operator and wait 20-60 minutes for output so we could debug and resubmit).
There was also a Tektronix 4014 graphics terminal that we snuck time on when we could.
The system as upgraded to NOS the second year.
My third year the Cyber was taken away from undergrads (only grad students and official university usage) and we got stuck on a pair of Harris H800 minicomputers running the Vulcan OS. Linking was called 'vulcanizing' (snark). They were ok. By then the labs had many more advanced terminals including DEC VT100s.
Fourth year we had access to a VAX 11/750 running BSD 4.2 (and internet!) and had our first chance to use a C compiler, and assembly was taught on both the Harris systems and Apple ][s. I had my own Apple ][+ then and did a lot of Applesoft BASIC and 6502 assembly for fun.
Good times
Will there not be Javascript implementations of BASIC with comparable features to an Apple II?
Even if there are, how well a BASIC interpreter written in JavaScript would run on an iPad or Surface depends on to what extent Apple and Microsoft make the appropriate web APIs available for use in Safari for iOS and Internet Explorer. For example, Apple already refuses to make WebGL available to anything that isn't an Apple-approved iAd. And even those web browsers that support offline web applications already severely limit how much data a web application can store while working offline.
Back in high school, my friends and I loved to write little text games on our TI-84s, which was my introduction to declaring variables and making if statements. My knowledge was very limited, though one of my friends learned how to do a bunch of other things like basic graph-ics. Except he was like the opposite of the open source movement and wouldn't let anyone know where he learned about it (and I knew not the raw power of googling). One year we were able to take a two-week elective on game programming, where I learned (the basics of) DarkBASIC. In college I decided to take an intro class on Java, found it too easy, and moved on to the more advanced version (which was also my intro to command-line Linux). From there I decided I could at least take a minor in CS, and after my roommate showed me Project Euler and another comrade showed me Python, writing those solutions without worrying too much about syntax rekindled my love of math, so I took a Math major with CS emphasis, and now I show engineering students how not to suck at Matlab. To this day I thank Turing for the TI-84 and Python (and the people who actually made them, I guess).
My first computer was an 8086 Epson Equity II monochrome screen, dual 5.25" floppy disks, no hard drive so the only thing I can do on it that was worthwhile was make my own text adventure games. I followed GW-BASIC book and had a blast! I made music using sheet music and painstakingly convert notes into Hz and made silly games. Granted I was about 9 or 10 years old at the time, but I was annoyed I couldn't do more. Eventually when I got a colour computer (CGA), I had a blast playing with colours and different graphic modes (or screens as it was in QBasic, I think it was screen 12 that I liked the most. I heard about C/C++ and I thought it was stupid, thought BASIC was the way to go (I was a tween or so), then when I got into high school we started playing with Pascal. I found some site in the Netherlands that was a Pascal god doing crazy shit with assembly and I emailed him for help and he graciously did, and my teacher used my rocket ship as an example of what the students were doing on back to school night (it was the centre piece, other students had theirs up too). It was pretty cool. When I became a senior the college board switched from Pascal to C++ so I retook Intro to comp sci to learn C++ and I am glad I did. Not only do I love the language now, loathe basic (ironic, isn't it?), but it helped learn so many other languages that are C-based. While I never formally learned K&R C, I been meaning to pickup their book for quite some time. I think it'll help with learning Objective C, but anyway, I digress. To answer the question I am self taught to get the basics (no pun intended) and was formally educated after getting a descent elementary grasp. I suppose in Elementary school, we were taught Logo, so I suppose that counted, but I guess I never saw it as programming other than maybe scripting or telling a computer to draw something, so yeah I guess it does count. Though in middle school, we had Lego Logo which was sick, having lego projects interact with the logo code we wrote.
Yes, I started out on a C64 learning to program in basic mainly to run all the pirated games the computer came with. I estimate the C64 my family purchased came with around 500 or so titles all on 5 1/4 disc. Anyhow, later on I was excited to be enrolled at a C/C++ computer camp for kids when I was 13 years old. They locked us in a room and made us code all day. The only readily available drink was Coca-Cola or Mountain Dew mysteriously every drink there had loads of caffeine in it. At the end of the day we stayed up all night in our dorm (it was on a college campus) talking about video games, music, and what we were going to do when we got out of there. While I was there I saw a kid strike another kid in the face with a 25 pin serial connector over losing a Doom tournament. There actually was a 25 pin imprint on his face afterward. We mainly programmed using Borland Turbo C++ but I was one of the few kids that wanted to learn it and not just play games all day. This computer camp experience was the closest thing to working in an office I would ever encounter but I just didn't know it then.
My parents bought one when it came out in 1986, but I didn't start programming it 'til around 1992 (I was born in '86). My brother was studying computer science in college at the time and he'd come home on holidays and in the summer and teach me how to write code in BASIC. :) My parents hung onto that thing until it finally broke in 1995, and they got a Pentium 1, which I started using Visual Basic on. I didn't actually use a bracketed language until C and Java in college. And now I have a job working with VB.NET... hah.
Soldered a Sinclair (NOT Timex-Sinclair) ZX81 kit shipped from England as part of the electronics merit badge in scouts as my dad taught me electronics. The kit contained the case, the board, and bags and bags of individual parts. Got some help from an engineer at Bell Labs to change the video out from PAL to NTSC. Typed lots of code and saved onto tape. Was thrilled when we got the 16K memory expansion pack.
I started programming about 7 years ago with visual basic 6, now I'm finishing my sophomore year of college (CS major). When learning new languages, I would start out with beginner tutorials and then move on to writing my own projects as quickly as possible. I would then do all my learning from experimentation and online resources (google, stack overflow, etc). Now I have enough experience that when I learn something new I can jump right in and start making stuff. But I've never learned from books. I tried a few times, but they just seemed boring/slow paced. I learn so much quicker from google anyway. I don't think I'm really missing out on any in-depth knowledge from not reading books--I try to research things I don't understand quite heavily, and works quite well as far as I can tell. I often hear other programmers talk about how they learned/learn from books, but I figure I just learn differently. I never read the text books for my c++/java classes either. I find that half-paying attention in class and then researching anything I don't understand on my own time is much more efficient.
Anybody want a peanut?
Anyone can learn to optimize algorithms. It takes wisdom to know when and why to do so. Anyone can learn to write a sort function. It takes experience to know which one to choose, and why... and not only that, why it matters. Anyone who programs will eventually learn how to debug their mistakes. It takes insight to learn the Tao of the Debugger.
It's possible for someone to learn these things on their own (obviously the first hackers did somehow, eventually), but if you learn them early, from someone that you deeply respect, a) the lessons *stick*, and b) you don't have to spend your time and effort learning them on the job later, so you have time to focus on all the other things you need to learn to do whatever you end up doing.
Half an hour to 'boot', then more to load yer pgm & data... I liked the night shift, since you could read a good book whilst listening for the ominous 'clunk' when a card got rejected and everything ground to a halt.
Mixing up the cards was a traditional welcome for the newbies.
Things improved when we got a 2MB hard disk. Yup, that "two" whippersnappers.
What did it teach me that's relevant today? Urm, don't drop a box of hundreds of unnumbered cards into the snow? /getoffmylawn
More seriously, carefully planning your logic and data flow (on a piece of paper those days) really helps you create clean and compact code.
Think about what you want to do before you start on the 'how' bit.
My dad was a big dreamer, and he saw lots of potential in early arcade games. We had a Pong game in our house in 1979, because my dad thought he could rent it out. Eventually he offered to buy me a game system to get me off the Pong game, and I asked for an Atari 400, mostly because I thought it was better than the 2600, so I could lord it over my friends. My friends weren't impressed because of the smaller game catalog, but I nearly melted that chiclet keyboard as I taught myself to program in BASIC with it. By age 13 I had designed my own version of Breakout (better than Pong, because I could play it by myself) and was working on adventure games.
Buy a kid a computer with any programming language, and they will learn it.
Genocide Man -- Life is funny. Death is funnier. Mass murder can be hilarious.
Yes, I learned in BASIC on an Apple II in the '80s too. So did most everyone else responding here.
I would have expected a slew of "html and javascript writing web pages in '00", because that's when everyone and their brother was entering programming due to the dot-com boom. But I don't see anyone saying that. It's all BASIC in the '80s or earlier.
Um. Perhaps we should give high schools a bunch of extremely limited machines equipped with BASIC compilers, if we want people to get into computer science?
Started with punch-card (not IBM format) programming a Wang desktop beast, hand-inserting one card at a time. Rebooting (which was needed more often than I care to admit) required walking down the hall to the closet where the "brains" of the thing lived. I then graduated to a PDP-8 that was sitting in a corner waiting to be installed for a remote-access telescope, programming by entering Basic commands via a TTY. Finally they let me at the observatory's new CDC 6600, reading data from paper tapes (down from the mountain) and programs from punch-card decks. That's when I learned Fortran (II), which is still my main language. I also had to walk 12 miles to work in the snow every day (in Tucson). The alternative was to wait for the stage coach.
As an avid user of mIRC I started out creating handy aliases and snippets. I quickly progressed to automatic chat responses, quiz bots, services that queried websites, etc. I still remember the mIRC help file :)
so many say "I figured it all out myself" ... but having good instructors and support in school really got me coding seriously and well with an awareness of CS concepts, too
FORTRAN class.
After two semesters of that I was able to enroll in the PL/1 class. Programming on a CRT terminal instead of a keypunch, woot!
You never really know how close to the edge you can go until you fall off.
Thinking back, one of the earliest things that hooked me was a Big Trak they brought into my grade 1 class. I was fascinated by the idea you could give this thing a sequence of instructions and it would carry them out.
Of course there was Logo on some school computers (Apple II's?) to play around with.
Then there was an illustrated children's book on BASIC programming from my local library... used robots running around putting things in boxes (ie, memory) to illustrate the concepts. It seems impossible to find similar books these days, which saddens me. I wrote my first programs on paper (we didn't own a computer) based on stuff I learned from that book. My first bona fide code was written on a C64, on display at a K-Mart. (10 PRINT "BRIAN" 20 GOTO 10)
Later, we borrowed a VIC-20 from a friend for a few months, and I began programming in earnest. Wrote a text-based casino game that quickly exhausted the 5K of user RAM.
Eventually I convinced my parents to buy a C64. Actually mucked around with assembler on that. Then (much later), our first PC, a 386... GW-Basic, QBASIC, Turbo Pascal (and more ASM), etc.
"Mind, as manifested by the capacity to make choices, is to some extent present in every electron." -Freeman Dyson
It is arguable, though, that I actually programmed. We had to come up with a project for the class so I wrote a really simple form that processed responses - however I didn't actually write it. I went into a book store and took some Christmas money my dad had given me and bought a Pascal book that had a simple form processing example. I effectively stole that for the class project and the teacher actually liked it. I can't recall what kind of grade I got but it may have been a "B."
Mentally I obviously hadn't gotten my head around programming yet.
My first "real" programming efforts were vague attempts at writing C/C++ apps for OS/2's Presentation Manager - VERY hard to do for an utter novice (try figuring out how to build skeletal code to do the most things in a GUI like draw a window when you barely know how to program!) and then a Visual Basic 4 application to process web form responses. That little app was actually functional but I quickly moved on to Perl/CGI for form processing (here I was, back at form processing) which I created for a signup application for the tiny ISP I worked for - i.e., so we could hand out "signup disks" (yep, actually floppy disks back in the day). It worked and had a very basic database locally (SQLite IIRC) but the ISP never used it. They were always sorely lacking in ambition which kept them very small.
Later on it was more Perl/CGI stuff then not much later I moved on to the traditional LAMP stack where I've stayed ever since - 14-15 years at least. I've looked at and dabbled in Python and occasionally will use Perl as a sysadmin because sometimes it's the best tool for the job - along with shell scripting of course.
I eventually got my head around MVC programming so am developing a decent-sized application in CodeIgniter in PHP these days. It certainly saves massive amounts of time and makes the code easier to comprehend. It's worth it on the front-end to learn MVC (be it PHP, Ruby, Python, whatever) to save a great deal more time later on. I had developed pretty good-sized apps - not huge, but a few thousand lines total maybe - that were a mish-mash of PEAR libraries and were very, very messy so MVC is a nice transition to cleaner, more logically segmented code.
I was very young when I was first exposed to this, and it made a lasting impression. I made some pretty complicated little programs the karel bot would run. Some basic wall following stuff that came up again when I was building simple robots...
I'm actually way late to this game. We had a Tandy 1000 and TI-99/A4 since before I can remember, but the idea of programming them was foreign. Programs were not something you made at home. You bought them or, well, we got a disk in the mail like a digital magazine (Big Blue Monthly) which was neat. But I dunno, I'm not entirely sure why I never tried programming those machines.
My first programming experience was on a x86 box running windows 95. I was in highschool and I found Advanced T-Robots. A programming game that took in (it's flavor of) assembly and controlled some tanks to shoot each other. I think the trick was that it had visual feedback. That's what got me hooked. I could see the effects of what I was typing in. My brother had some BASIC programs he copied out of a magazine, but that didn't impress me when I was 8. At 13 though, I could write some cludgy AI for a tank and I could see it trying to launch shells at each other and that was the spark.
Technically, it was applesoft basic on a Bell & Howell Apple ][ in 5th grade science class. The teacher had written a program in applesoft basic to drill simple arithmetic problems, and another to drill spelling words, both including simple animation and sound. I was enthralled (even before I saw the thing actually do anything, since it sat there for weeks for lack of an RF Modulator to connect to a TV, which the teacher eventually built from simple parts, much to my amazement). I looked at his code and immediately began writing simple games (text adventure, tic-tac-toe, pong, etc.) and even "ported" his original program to the C64 and TI/99-4a -- though I think in many ways my learning to program started much earlier, since I was always taking apart (and sometimes putting back together) various machines, appliances, electronics, what have you, from a young age, and developed a basic empirical understanding of mechanics, electricity and electronics, which translates somewhat into basic logic, and perhaps more importantly the willingness to learn from (and copy) "prior art" and to not be afraid of breaking stuff or making mistakes. There's a (potential) drawback though to empirical learning, in that it makes it more difficult to fall into academia and established theory, since unlearning is sometimes more difficult than learning, though personally, I have no regrets in that regard, since it also makes acquiring new skills much quicker. I wish I could pick up new human languages as quickly as I can pick up new programming languages.
My dad brought home a commodore and I subscribed to Compute's Gazette (I think that's what it was called) -- a magazine with a lot of commodore stuff in it. One thing they had was pages and pages of bytecode that you had to type in with no debugger or syntax to speak of. I learned a LOT from that, and from the built-in basic the OS had. The first thing I really remember programming to completeness was a Julia and Mandelbrot set generator... in Commodore basic. It was not fast; I could see the program drawing pretty much every pixel. Good times.
I ended up with a degree in computer science, but I'd say that was more an opportunity to practice than it really was how I "learned" to program. Algorithms and Operating System classes had some concepts that I hadn't run across, and every class was an opportunity to learn or find new snippets of knowledge. But the formal things I learned like "Bresenham's circle algorithm" and topological sorts, or anything from the Dragon Book, the volumes of Knuth (ah), or the Numerical Programming books were important conceptually... probably good to make efficient code, and great ways to not recreate the wheel. But the only way to "learn" to code is to code.
After that trial by fire, C++ was a breeze.
Tell me about it! And the TI-57 manual Making Tracks into Programming was phenomenal.
I just wish I knew about the constant memory trick with the infinite loop blanking the display back then. Where *was* the internet!
patch cords on a card tabulator in the early 1960's
I was 17, just got into an Engineering college in India. Never saw a computer up close till then. We had to take either Thermodynamics or Computers in first semester (and the other in the second semester). Thank God I didn't take Computers in first semester, or else I may have hated it.
So, during winter time, I went to the computer center (nice, air conditioned place). Outside weather is horrible, and the computer center let us take printouts - that could be used for note books (I was/am a cheap ba*tard). So, it started with writing small math codes (my first program was something like "sin(x**3) = 1; print x", and a guy next to me nicely said, "well, you can write anything you want, but it won't work!". My second program was a =1; b = 3; print a+b!) I've spend hours together to solve problems that would take minutes to do if one read up related stuff in a book! No games, not much fun, just trying to make a piece of mathematical code working -- worked harder, not smarter! Only reason I can think of is that the climate control of the computer center.
Loved the computers ever since -- been close to 25 years! Was in a different field for majority of the time. Eventually moved over recently to applied computing.
I started off on C64s and Apple ][s in middle school, which upgraded to Mac LCs around 8th grade. Started off in BASIC, fiddled with stuff like Hypercard under the Mac.
That summer as I was going into high school my parents got me a Tandy PC1000. Family friends helped me with upgrades, software, etc. I eventually got my hands on a full copy of QuickBASIC, Turbo Pascal, and Turbo C. I wrote my own database app, even wrote my own mouse drivers in assembler, linked them in through C and QB, started expanding my own library of that sort of code.
My first 'paid' gig was for a friend of my father who owned a TV repair business. I wrote a program that monitored a modem to pick up caller ID info and store it in a database; searchable, printed reports, etc. Networked it to pass the caller ID info to PCs in other buildings on his property. My 'payment' was in hardware, software, and 100 packs of 3.5" floppies, which I was more than happy with at the time.
I went to college for CS, but learned more in my job at a research institute on campus than I did in the classes. I actually had a couple professors who, after the first semester with them, just came to me later with "You know this already, don't you? Here's the test schedule, just show up for the exams if you want." I dropped out after a couple years and managed to get a decent job before the first major dot bomb bust.
I did some coding for a year or two after that, but mostly moved up the food chain. Most of my coding these days consists of shell scripts, awk, some PHP, but little 'new development.' Today I effectively operate as a liaison between support teams and development teams since I have the skillset to give a better technical analysis of an issue as well as the coding background to debug issues as well as know what is and is not possible on the dev side.
And 100? How about when you turned 101? 110?
Were you the only kid in class that could count to 11111111 using your fingers and no thumbs?
Did it impress your teacher or did she give you a pair of F's for being a smarty-pants?
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
haven't learned much since then and I'm now 35.
Great simple IDE.
Lacking loads of industry standards, but all those features that come in fully features IDEs are just way to confusing to add on top of learning coding for the first time.
Troll is not a replacement for I disagree.
Our high school got a teletype/paper tape reader/punch in the math lab and all of us who were interested got 5 minutes of computer time on the Cyber over at the Oregon State campus through a 150 baud acoustic modem. I fooled around with FORTRAN a bit but mostly we played a Star Trek game* that one of my classmates had written. When I actually got to OSU I took a regular FORTRAN class where we used punched card decks for our programs. But I didn't really get serious about programming until the early 1980's when I went back to school after my ski bum years.
*The Star Trek game was a pretty amazing piece of work by a guy who went on to MIT and got a Masters in Aerospace Engineering in under 4 years. It was played in a hemispherical space with stars and gravity in it. There were 4 ships, the Enterprise, the Vulcans, the Klingons and the Romulans. They all had limited fuel and photon torpedoes as well as phasers. Gravity affected the flight of the photon torpedoes as well as the ships. Each team would put in the moves for their ship then the program would take that in and send back a representation of the new situation printed on the teletype and wait for the next moves. We wasted hours on that thing.
On my dads VIC-20 from his computer magazines.
Weee had to walk 10 miles to the University computer center. And it was uphill in each direction.
And we had to enter raw machine code in binary using the front-panel switches, which we did until our fingers bled. And we liked it!
I started about the same time on a Ollevetti 401 I believe. A glorified numeric key pad for input and a red light, a green light and a cash register style tape for output.
I believe you will never really understand how a computer works until you have done two things:
built a compiler/parser and have done machine language programming (which was what you did with the 401).
Average Intelligence is a Scary Thing
I first started learning about programming on my Commodore 64, real minor stuff around 10.
Then I got a dial up modem, and found a wonderful program called mIRC, and I started learning to script.
After learning to write scripts in mIRC for 2 years, and transferring to a new school, I tried getting into the AP classes in high school. The only problem is that they only offered the classes to juniors and seniors... Once I was finally able to take these classes (Turbo Pascal and VB) I was finally knew what I wanted to do with my life.
Luckily once I got to college these classes helped me jump to second year courses and fly by all the BS intro to computer classes.
I went to a progressive high school that taught programing BASIC on a WANG computer and COBAL on a Burroughs computer in 1974.
They also had classes in ALGO and other Computer Languages.
I sat in front of an Apple ][ when I was a kid and just started typing. A friend had a Vic-20 and some magazines with BASIC code in them and we typed them in. By 14 I jumped feet first into C. Not the easiest thing to do but that's where I first did some real original coding. I later learned some Pascal, COBOL, assembly and C++. I gave that up to do sysadmin professionally but I still enjoy hacking together shell script.
1978 - Processor Technology Sol-20
1979 - 8K Pet
1981 - 32K Pet
1983 - IBM XT
1989 - PC Clone
Some great stories here! Never too young to start, or old to learn! Very cool :)
I started on in 1978 (I was 12-13) and my dad bought me a Sol-20 from a colleague of his. It was sold as either a kit computer or a completed system and I remember the dude from whom he bought it, so I think it really was bought as a kit rather than pre-assembled. It came with 8K of static ram, a tape recorder and a copy of their 5K integer (no strings) Basic. Do that math; that left 3K for program space.
Other than hello world programs, my dad also bought me a copy of Creative Computer's Book of 101 Basic Games. I found a few of the smaller games (many wouldn't fit into 3K), diligently typed them in from the book, and watched them fail (SN-ERROR AT LINE 10). Thus began my world of debugging and adaptation. I learned that this basic would not handle strings, data reads, or matrices (only arrays). But the debugging and modifications gave me the foundation to start writing my own work. Wrote a dice-rolling game, then a horse-racing game (horses ran according to their odds). My dad bought me another 8K S100 card a year later, and I could run the advanced basic on that.
In high school I sold the Sol-20 and bought an 8K Commodore Pet computer, which was handy since my high school had about six of them, and I could trade programs (Creative computing games!) with the other kids.
I bought a DEC LA-100 printer cover from a local surplus store in 1981 which had an acoustic coupler built into it. Got a wiring diagram and Steve Punter's modem program (I'm a Toronto boy like Steve, and he was at the TPUG meetings), and I was off to the telephonic races! I quickly became a junkie of the Toronto BBS scene.
First thing I did in 1983 when I got my IBM XT was to find BBS software (written in basic - sloooow), and re-write it so I had my own BBS software. Found the PC-BBS source (in basic), stripped out everything other than the parts that worked the modem, and wrote the rest from scratch. It was sluggish (interpreted Basic) and not ENTIRELY bug free ;) Dropped messages here and there; we ended up calling our first BBS the Black Hole.
Re-wrote the entire thing in Borland Turbo Pascal 3.0 in 1984, and it motored! By then my friends and I were running 4-5 Vanguard BBSes in Toronto. This was when FIDONet had started batching mail between their systems, so we set out to design a multi- topology short/long haul mail routing system.
The rest as they say is history :)
Taught myself Basic programing, typing in programs listed in the magazine 80 Micro http://en.wikipedia.org/wiki/8Micro
Then when the programs wouldn't run, going back and debugging them taught me a lot. I had also taught myself
Assembly language and was going strong in that direction.
When I bought my first Amiga, (500), first thing I did was start to write programs in Basic, but none
ever ran right; in fact I had to quit as it was making me mad enough to toss the Amiga 500 through a wall.
The Amiga put a screeching halt to my programing; while I speak of the Amiga God machine it really screwed me in that respect.
I haven't really programed since. I tried AREXX but never went far with it.
Apparently Amiga's Basic program never did work right and pulled from later upgrades.
It wasn't until the mid-90's when I discovered MOOs (https://en.wikipedia.org/wiki/MOO) that my desire to be a programmer was really ignited. Being an English nerd in high school, MOOs were like interactive fiction, living, breathing worlds made of text. I was intoxicated and so got into programming inside the various MOOs I was inhabiting. To my very great surprise, I found I really enjoyed programming. That interest led me to learn VB, VBScript, Javascript, amongst others and a programming career that is nearing 20 years.
I say with my dad and wrote a Pokedex for the computer in VB 4/5. Then I used the internet to find hackey ways to manipulate Windows and copied other people's code in to my own mash-up of features. Things like Window Enumerators and API calls. I can't count the number of times I ruined his install of Windows. Then I learned what a web-server is and installed Apache and started writing in PHP.
I first learned to program during my freshman year of high school. Me and a friend of mine suddenly got an insatiable desire to learn all we could about computers. We did most of our experimentation on school computers for some reason. Every day, we got to first period Computer Apps class 15 minutes early, logged on and started screwing around. We started out with simple stuff. We figured out how to unlock the command prompt and wreak havoc by shutting down networked computers, and we thought we were so smart. Then we got into batch files. We didn't know at the time that we were actually programming however. Later we started tinkering with VBS and we had some good fun with that. Then one day my friend showed up with a CD with something called Python on it. He had been messing with it over the weekend, and started learning it. I thought it was pretty neat, so I started learning it too. And it began a long and wonderful relationship which continues to this day between me and Python, which is still my favorite language.
Gosh, I remember like it was yesterday. I had just bought my first Alienware desktop with an intel i7 processor and 64 Gigs of RAM(That was alot back then) and enrolled in an online computer course at my local university. We were using Visual Studio 11 and our first assignment was to create a fullly functional windowed text editor program. I recall distrinctly once I was in the IDE, I could select the option "File > Create a Fully Functional Text Editor". 20 seconds later I was running my first ever program I created by myself! It was a magical experience for me. Programming was tough back then.
It was fun to write code that let me print on the thermal printer. The rubber keyboard was such a pain to use.
You say things that offend me and I can deal with it. Can you?
Tucson Public school district started teaching computer programming (EDP) classes while I was in high school. The 029 keypunch was in an obscure corner of the basement of the school. Punch your program, submit it, and it would be back in two working days.
The year I took the course, you didn't have to put blank cards behind the code so the the binary could be punched then run into the machine to run. Heaven help the person that didn't put enough cards behind their deck.
AUTOCODER was the language that I first learned on the IBM 1401. Took me all Christmas break to punch the instructions to play a simple hand of Gin Rummy. Took a half hour to load and run, I was told.
Fortran IV free course at the University of Arizona was the intro to higher level programming.
Learn the machine language, as it was, then on to higher levels, the only way to go.
In my high school days I was fascinated by computers and bought myself a brand-spanking new Apple //e. I wanted to use it to write a paper for school but I had no money for software. So I cracked open the BASIC manuals and wrote myself a super-cheesy word processor. Okay, that's too generous. It collected typed characters into one long string, and I could even backspace to delete them. That's it. After entering about a page of text, garbage collection kicked in every couple of characters and froze the machine for seconds at a time. But hey, I got the paper turned in! (And got a decent grade, too, despite having spent far more time coding the program than actually writing the paper.)
I also wrote a database manager (before I'd ever even heard that term) to store information about my music collection. And I wrote a few little games.
My school offered a BASIC class my senior year, so I signed up. I already knew way more than the teacher and I blew through the entire textbook in a few weeks. He wanted me to start in on another textbook but I refused. I told him that if he had anything serious for me I'd gladly do it, but I wasn't about to plow through yet another remedial book. We eventually worked something out where a buddy and I did custom programming for other teachers in the district who wanted to try out this new "computer" thing in their classrooms but didn't know what to do with it.
Then I went to college and ended up learning assembly for the 6502 (my Apple), the 8080 (for a EE course) and the school's mainframe (for a CS course) all in the same term. Good times, good times...
Chelloveck
I give up on debugging. From now on, SIGSEGV is a feature.
It was in tech school.
6800 processor on an STD Bus card.
It had a VERY EXPENSIVE 256-BYTE (not MegaByte) memory chip installed.
This card was nailed to a piece of wood.
It had a hex keypad and a 4-digit LED display hooked up to it (also nailed onto the board).
We had to map out the hex machine instructions, and punch them in, set the PC to the first one, then hit go.
Early nineties, XCom Apocalypse has been announced, so in excitement after playing XCom Terror From The Deep I start up BASIC and start drawing a logo of XCom Apocalypse using line commands. :D
Well, I've ended up working as a computer programmer specialized in graphics. But I'm probably still as inefficient in getting the job done
No "computer camp" or even much coding outside school. Was taught BASIC and basic language concepts in the 7th grade, then Turbo Pascal in the 9th and 10th grades. After that I think we were taught a bit of FORTRAN and some x86 assembly in an advanced placement class. In hindsight I wish they'd skipped the Pascal, FORTRAN and assembler and just taught us C. At the time, though, Pascal was the language being used on the AP Computer Science exam, so that's what we learned.
I started out at the age of 8. My Dad taught computers in school (not programming) and so he would bring a couple Apple IIe's home on weekends. I too tried the compute magazine programs, but got bored with that and started making my own. I learned from magazines and books but mostly from doing. A few years later I found out that my Dad actually knew "The Dragon" and he lived a 30 minute drive from our home. When I was 10 my Dad was teaching a spreadsheet course at a local college, he had some meetings to go to that week and so my Mom drove me and I answered questions and taught the class while he was away. Not sure if you could get away with that today.
1958, ALWAC IIIE with 512 byes of memory in a recirculating drum. Huge mass storage of 32K bytes that could be loaded into the 512 bytes in blocks of 128 bytes. Software 32 bit floating point used up 128 bytes of the 512. A good system to learn some good habits and some terrible ones. Of course, there was no assembler at first, but once you learned the hex codes a later assembler forced one to do silly things like not use instructions for data so who needs a higher order language?
Discovered Eric S. Raymonds 'How to become a hacker' as a 14 year old kid. Then started out with HTML from Dynamic HTML For Dummies, went to C++ and even, contrary to his advice, VB6.
My rural high school's science teacher got a group of us non-athletes involved in the Botball tournament back in 2000-2004. We began learning the Interactive C programming language to navigate our Lego robots around a white game board with black tape. The programs ran on the RCX board and a Handy Board and consisted of various motors, precision servos, light sensors, IR sensors, sonar, and later on a camera. I went on to dabble in HTML and had a high school programming class for qBasic but the Botball stuff really broke me into the inspiration of programming. Seeing your programs execute on a computer is one thing, having them come to life in the real world was entirely different.
This lead to me and a high school friend going into Computer Science in college where we now have degrees thanks to Botball. Hopefully the robot revolution comes soon so we can get to doing more interesting things beyond the general business app development that most programming careers consist of.
EAMON.
Any other alumni out there who spent the summers of 1986-1987 in the basement with the mainframes? Do you remember artspeak, prolog, lisp, prolog, C++ and Professor Mullish?
I loved Creative Computing. It was always a challenge translating BASIC from one machine dialect to another. Apple Basic used to really peeve me off because, you would add all of these nice spaces to make comments readable and without permission it would strip them out, leaving a horrible mess. Basic on the TRS-80 though was a work of beauty. Not only peek/poke/vaptrs that allowed embedding of machine language into basic for the advanced guys, but the language itself was easy to learn, easy to understand and easy to publish in magazines and extendable (as in Chroma-Basic for the TRS-80 which a good friend wrote) The computer language downfall came with PASCAL. It's impractical to teach this to a lay person an make them productive in a 15 minute setting; the whole concept of data hiding used in these structured languages only makes reading the code confusing because stuff is hidden, programs are long, lean and obscured by non-sense data types; like polymorphic ad-hoc virtualization. Try teaching that to a 7 year old.
I was taught CODE at university and on courses my employer sent me on.
I learnt HOW to code maintaining various business systems - modifying other people's code to do whatever the business now needed, in ways that hopefully wouldn't make it harder for the next guy, sometimes being dragged out of bed at two in the morning to sort out bugs in the batch runs before the start of the next working day. Along the line I got some pretty good ideas of what was good practice and what was awful, that stood me in good stead across numerous languages, platforms and techniques. I got sent on lots of theoretical courses along the line; none of them ever taught me half as much as changing other people's code, both good and bad. And along the line, sadly, I worked with far too many people who never learned the difference.
TL;DR: Learning a language and learning how to program are NOT the same thing.
My first exposure to programming - as well as to how to pause a program - came on the C64. I had a class in middle school that taught us "how to type" on a C64, which bored me to tears. I eventually learned that I could escape out of the typing program and go back to the C64 BASIC environment - I could go back in to the typing program but seldom had the chance to do so.
Our class was a half-hour of typing, followed by a half-hour of lunch, then another half-hour of typing. I would finish so far ahead of the typing drills on any given day that I would have extra time on my hands before lunch, so I would usually go write a trivial loop before leaving for lunch. Almost invariably I would get back after lunch to find that the teacher had reset my computer. This wasn't all bad, though, as it gave me something to do in the second half.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
Back in the 1990s there were all of those AOL hacks that allowed you to do crazy things with your fonts, access hidden areas of the program, I forget most of the details... Anyway, someone posted the source code for one of them and it was VB5 or VB6. I downloaded both the IDE and the code and started looking around. At first I could only do things like changing the text of the forms, then I started experimenting with VB6 by itself and doing basic math and making message boxes with the results and so on.
I'm really surprised I got so far, back then I didn't know how to debug or walk through code, and I always put "On Error Resume Next" at the top on every method. I somehow made things work.
Wish I was forced to start off with C++, as unlearning bad habits was a pain when I eventually made the switch, but those were the days!
I started when I was around 12 years old, on a Philips VG8010. I believe my friends had 386 PCs at that time. I did not have a lot of games on tape so I started reading the computer user's manual (which teaches programming). The book was a really good introductory material because I managed to learn pretty much everything by myself ... well except sprites, which was only a few years later that I actually managed to understood how they worked :P
Nobody else here starting with a MSX ??
It's really simple: I was curious. The first time I saw a computer I couldn't help myself, I had to find out what you can do with it. And there was no turning back. It also helped that since I was a 6 grader we had after-hours optional computer classes in school, which wasn't usual back then. My first pc was a c64, as fÅ'r many others. I've been using, learning of, or working on computers continuously since then. The point is, you have to make programming interesting for youngsters to care, otherwise they'll just stick to simply using devices. And today this is harder then most would think. We don't have the interesting-factor anymore to make coding fun, since pcs and all kinds of devices are too common now.
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
10 FOR I = 1 to 16384
20 FOR J = 1 to 16384
30 POKE J(I)
40 POKE I(J)
50 POKE -J(-I)
60 POKE -I(-J)
70 NEXT J
80 NEXT I
RUN
Wait for the computer to blow it's brains away (requires hard reset, pulling power plug, waiting for 60 seconds for all capacitors to drain to get it to boot back up).
My 8th grade shop class had a Bell & Howell "Black Apple" II+. My instructor lent me a really great book on AppleSoft BASIC. I remember sitting at home with the book, my brain on fire, scribbling code on paper, and then taking it in the next day and typing it in expecting wondrous things to happen. But, of course, none of it worked right away. I'd like to find a PDF of the book somewhere. None of the net copies of various AppleSoft BASIC manuals from the day seem to match. I think it had the old multicolor apple logo on it. And I remember it being very fun in it's tone, unlike the very dry business-like manuals apple produced later.
A Mattel Aquarius- I programmed a star cluster gravity simulation from an article I saw in Scientific American. Dots roaming around a screen. Fun but lost interest trying to get a stable starting config on the stars trajectories.
TUTOR language on the http://en.wikipedia.org/wiki/PLATO_(computer_system) That's possibly a picture of me at FSU School of Business, or if it isn't, it might as well have been.
From November 1976 at age 12 all through middle and high school, I literally ran to FSU every day and stayed on their PLATO system until midnight when they shut it off. My first program was to make a frog jump to where the user touched on the screen. The TUTOR language was mainly for educational software but was fully capable of writing fun games, with raster and vector graphics.
Sorry for AC, don't have my slashdot password here and didn't want to reset it.
I think most of us did some sort of basic, qbasic or off shoot on a commodore or an Atari first, but it wasn't until I was in college and played the first generation MMORPG -> MUDS (Written in C/ LPC) that I received my first experience programming for purpose.
After reaching the highest level on KOBRA (A Star Wars Mud) you were granted access to be able to program/build monsters, areas, and even parts of the engine (called the MUDLIB (Multi User Dungeion Library)
Some of the best programmers I have ever known happily donated their time and energy to create a free place for people to gather and spend their time.
By the way, 20 years later, Kobra Mud is still going strong. Google Kobra Mud.
~Stormrider
Started in Secondary school, 8th grade. /40. /70, but someone else remembers differently.
Basic on a school system, not sure what it was, i think an HP for a bit till they delivered the PDP 11. I think it was a
Teletypes and teleprinters.
Hello 130, 3
( I remember that!!!!! )
They upgraded to another PDP 11 later, I remember it being a
Did the class assignments, learned Basic, Fortran, Pascal, PDP assembly ( won a "write a shorter routine than the prof thing" ).... Did a compiler course.
Mom got a Vic20 for me and my brother and sister.
Then I had to enter the real world, worked for a time, then went to Jr College, did pascal and C on Apple II's.
Moved on to C++ after college, then added VB, C# and VB.net ( where I am currently stuck ).
emt 377 emt 4
My high school (ca 1972-1975) had a computer lab with 3 or 4 desktop programmable calculators. I think they were CalComp or Monroe. They had a system where you could write a program on one to three punch cards that the calculator would read in and execute. The punch cards were standard IBM size, but they had pre-perforated holes that you would push out with a stylus on a special card holder. You could fix a mis-punched hole by gluing the chad back in place.
I spent a lot of time learning all about those machines and exploring their limits. I wrote many programs that used the maximum number of instructions possible, and learned a lot about program optimization that way. I discovered some undocumented op codes that allowed some interesting printer operations and wrote a program to print sideways banners on the tape printer.
Comment removed based on user account deletion
IBM 1620, junior year of high school (1971, Cass Tech, Detroit, MI). I took an elective computer programming class. (And 8 semesters of Electronics, complete with motor-generator lab, so got a wide exposure to then-current and not-so-current technologies...)
Machine-code punched on punch-cards, one instruction per card. Decimal (BCD, actually) machine. Instructions were strings of decimal digits.
After we learned machine code, they let us use Fortran II.
Those guys could prototype the theft of up to 300 dollars from a Scientology Org with cobol or fortran.
BTW, for great fun, put a bunch of high school kids with minimal supervision in a motor-generator lab with the possibility of wiring-up a series-wound DC motor:
http://www.wisc-online.com/Objects/ViewObject.aspx?ID=IAU12508
I started in a FORTRAN class on the university's CDC-3600, with punch cards and overnight turnaround of course. Eventually I'd spent enough time hanging around the Physics department that they let me try out the HP 9100-series (9100B, I think: I remember it had TWO memory pages of 192 instructions each). In retrospect, the wallet-sized cards to store your programs were very reminiscent of what a lot of subway systems now use for paper farecards. I tried but failed in my attempt to burn out the plotter with my planetary orbits program, for which I was grateful at the time.
As a kid - Tandy CoCo2 with Basic - this learning was trial and error learning.
In High School - IBM PCs with Borland Pascal. This was formal programing instruction with emphasis on algorithms and complexity theory.
In College - a formal CS curriculum in Java/C/C++ and Sparc assembly.
You know that opening scene in the Simpsons intro where Bart is scribbling a bunch of sentences over and over again? My first clue that programming could be profitable was from an incident like that. I had started to learn BASIC on my dad's Apple II+. Due to some stupid classroom punishment, I had to write some stupid sentence 200 times. I went home and put in 3 lines of BASIC code to automatically generate and print that sentence 200 times. This is what I turned in. My neighbor saw this, and a couple days later, he paid me $5 because he had a similar punishment. I happily accepted the cash and punched in the code. The rest is history.
My dad worked on the old-school IBM mainframes (CICS, Cobol, etc), and taught me a fair amount of what he knew for his work, as well as some BasicA and later some C. After that, I was hooked, and started messing around with the IBM PC that my family had lying around but weren't using for anything.
So I benefited, from the beginning, from parental support and training. I'm not going to demand that any kid I may have in the future gets into it, but I do my best to mentor those of my friend's kids who are thinking about a technical profession.
I am officially gone from
I learned using BASIC on a Commodore PET. My dad bought it when I was around 10. It didn't come with any games, but he bought a programming book that listed the BASIC code for a bunch of applications and games. I went right to town programming in the games (i.e. moon lander, hangman, etc.).
My job doesn't include programming, unless you include configuring routers and switches, but knowing how to program has come in handy for writing scripts, etc.
Parents only allowed me play games for an hour. However, if I was programming BASIC, I could use the computer for as long as I wanted!
"Why", not "how". I read this in 3rd grade, probably around 1967 or '68? Piqued my interest in computers that lasted and that I finally got to explore senior year in high school. One thing I /think/ recall from the plot is suspicion that Danny was cheating by using the computer, but it turns out he needed to undestand the problems & the solutions better than the other kids in class in order to be able to do the programming. http://www.scholastic.com/browse/book.jsp?id=854
Learned BASIC in high school on ASR-33 teletypes connected to an HP2100A computer with 16k-word of core memory. I believe the machine was already obsolete before I started with it.
Very primitive BASIC with no string variables, leading to some pretty unintuitive user interfaces, such as picking letters by number to print banners. All 4 teletypes and the "control teletype" (which could not be used, a stupid limitation of the software), and the rack holding the computer were in the same small room, and it smelled of the machine oil and a bit of electrical burning. Storage was paper tape, you had to punch it on the teletypes, but fortunately could read it on the high-speed photo tape reader in the rack. There was also a punched card reader in the rack which was used by exactly one teacher to score tests, this was a big Fortran program I think.
I also learned assembler on this machine, since that was the only way you could write programs that understood text. It could only run one such program at a time so nobody could use Basic during that time. The best one printed letters as patterns of holes into punched tape. The most complex I wrote actually did cooperative multitasking so that users could run at all 5 terminals, it built a tree of questions that it printed and the user could answer, the answer (well actually whether the first letter was odd or even) chose the next question. When the answer did not exist yet it asked the user to type in a new question, or they could type in a number of another node to make arbitrary graphs.
Later the school got a PDP-11 with video terminals running RSTE. Also at that time home computers started showing up but my family did not get one for a few more years.
My father worked for Pac Bell in the 70's, and I'd occasionally go to work with him. One of his colleagues introduced me to the BASIC interpreter on a Tenet 210, and I got started typing in programs from a book entitled, "My computer loves me when I speak BASIC". Eventually I started playing with 6502 instructions on a KIM-1, and later graduated to a TRS-80 Model II, then Model III, then Model IV, and then CP/M; that's about the time Turbo Pascal came out (for CP/M), and each time Borland put out another compiler, I bought it, installed it, and learned the language. Turbo Pascal, Turbo C, Turbo Prolog (OUCH!), Turbo C++ (anyone remember ddvt's?) incremented me through the languages. I kept waiting for an ADA compiler from Borland because my professors in college said ADA was going to be the only language you'd get paid to program in. But I fell in love with C++ in the late 80's and I've been getting paid to use it ever since. Funny, but its a rare person I run into who has even heard of ADA.
As a young lad, I did not have a computer (in fact, I was forbidden by step-father from owning one). I checked book after book out from the local library, and learned to program in that manner. First language I learned was BASIC, then came C.
In fact, I would write and debug programs on paper. On the rare occasion I was able to have access to a computer, I would type these program in from memory, and found they usually functioned as desired the first time. If only my programs these days were as reliable...
I started off learning BASIC on an Apple II+ in elementary school and on a Kaypro II at home. Went on to teach myself C, C++, Java, et cetera. Was a poli sci major in college (talk about a waste of time and money). In my first job (inside sales), I fell into programming because I taught myself ObjectPAL (for Borland Office) and wrote an order entry and management database app that changed the way the company worked. I decided maybe I should look at programming as a career. Got a job as a professional programmer (working with C/C++) about a year later and never looked back. Never stopped teaching myself new languages, either. Still do it.
When I was in school my father took an early retirement and brought home a computer as part of his serverance. It had Assembler on it and if I was going to play any games, I had to program them myself. So in 4th grade I had to teach myself Assembler from the included manual.
we set fire to all the computers
Who cares how did we learn, what matters is how can be best done today.
I'm not too fond of the memories of long nights banging my head against the White Book--but then again, it was only a high school hobby. Still, I wish someone would've steered me towards a more friendly introduction (and language), not to programming, but to problem solving with computers, AKA Computer Science. MIT's "Introduction to Computer Science and Programming" looks like a dream come true.
I taught myself around the age of 8 by going through the code samples in the back of the Timex Sinclair 1000 manual, whilst sitting in the garage at night using the Sinclair hooked up to a 13" black & white TV. Once I went through the samples I then started writing my own code to do some animations using the basic graphics capabilities of the Sinclair. One night my older brother walked in to see what I was doing and had me teach him. Once he learned we then started to compete with one another to see who could create the best animation of a tank rolling up to a town and blowing it up, or of a missile flying in and blowing it up ("America, Fuck Yeah!").
That was enough to get me hooked so I then started scouring libraries for code sample books and my Elementary school happened to get in two books filled with game samples. I went through both of those books before moving to another city. In Middle school my Dad got a 286 at which point I started teaching myself how to create elaborate Batch scripts using the DOS manual and eventually bought a book that covered advanced scripting techniques. Using Batch files my brother and I started competing again to see who could create the best text RPG.
While in High School iD Software's Doom was released quickly followed by free/shareware editing tools and I got sucked into creating maps which led to an obsession with creating mazes on graph paper and quickly evolved into creating custome dungeon RPGs combining mazes on graph paper with various dice (D4 & D20 mostly). Towards the end of High School I started taking college courses on programming, learned Assembly, C, C++, Visual Basic, and Unix scripting. Then I tried to get a job and couldn't get a single interview anywhere due to a lack of "experience". Instead, I spent 8 years doing temp work before going in to IT administration roles. I haven't written a single line of code in over 15 years outside of the occasional Batch script to automate my work.
Sinclair ZX-80 basic and Z-80 assembly on one of the first overseas kits from Sinclair.
I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
I asked someone how a program was made and they replied "they write them in progamming lanquage" I had no idea what it was so one day in the book store I was at the computers section and saw they had programming books. I picked up the first one in my hand and it was called "Teach yourself Java 1.2" I asked my mom to buy it for me and when I got it home I started learning Java at first. Then I moved onto C and I also learned BASIC and Javascript and HTML.
...we learned to code on the Antikythera Mechanism and we liked it! We LOVED it! Oh, happy day, I'm programming a box full of gears and I couldn't be more elated!
I started with Visual Basic when I was in 10 or 11. Then I used RPG Maker, this Russian program that only worked in English through an illegal translation. I was super into programming, and I made a lot of cool (at the time) things, like an instant message program to use with friends, some incomplete games. Then, I got to private high school and there were no computer classes (despite my public school having a great one). I took college courses -- passed them all with an "A", but soon realized when I went out for a job that my college courses were taught by imbeciles and that getting "A" grades didn't actually teach me anything. Technically I "know" Java, but you wouldn't want me anywhere near your code. I love to program, I love to create games.. I just suck at it.
Started on a C64 with BASIC. Had a fat green book with some code examples and instruction. I toyed with this until I was able to design my own BBS (Cemetery Gates). During this process I also learned asm and ended up writing the file transfer routines with it.
All in all it was thinking of things to design that offered a challenge, not to mention much trial and error.
I was in high school and somehow heard of this class and took it. My first program was a basic progam which prompted you to guess a random number. If you guessed low, it would print "Higher" and if you where higher it would print "lower". I recall trying to impress a girl I liked with this program :-)
As an ancient person, I learnt COBOL from a book but I didn't have a computer. Then when I got near a mainframe, I taught myself filetab: https://en.wikipedia.org/wiki/Filetab and later stll I used RPG2: https://en.wikipedia.org/wiki/IBM_RPG, later still Basic on a mainframe via a TTY33 [of course] and also the ineffable APL: https://en.wikipedia.org/wiki/APL_(programming_language) which prepared me for my career in Perl. If you think Perl is unreadable, try APL, but get off my lawn first.
On y va, qui mal y pense!
It was 1969, and my high school had a desk-sized 'training computer' with bat switches for telling it to load the paper tape with the assembler on it, a card-reader/punch and 4K memory on a drum. After learning binary, the second language I learned was the beast's assembly language. The assembler program backed itself out of memory as it ran so it could load the assembled result. After that, it was FORTRAN, but our teacher had to bring the decks to the college to run them for us.
When I was in 7th grade, a friend of mine went to a course. He showed me flow-charts and how to program PL/I. These were the last days of punch-cards where you had all your best to write your code bug free from the start, and flow-charts really helped organize your thought. I was so excited about it that I would draw floating-charts for almost every daily operation, such as using a public phone.
Every day, on my way from school, I would pass near an electronics store with a VIC20, and later a C64, on display and stare at the window. After saving all the money I could, and after two summer-jobs, I managed to buy a C64 with a floppy disk-drive. Quickly I realized that Basic was too slow for almost anything, so I started programming in assembly. Assembly was great, a bit ugly but fast and compact. Once I knew assembly, I was ready for the next step.
Both C64 and the floppy-drive came with a basic schematics, so I learned to program both at a very low level. I liked the ability to control the things in an accuracy of one cycle. I remember that C64 had a single-colored frame at the edges of the screen, and using the cycle-accurate documentation I was able to draw stuff on the edges of the screen by flipping the color in-sync with screen's ray. It was very low-res, yet impressive. When my friend demonstrated my program to our computer class teacher, the teacher would not believe him that I wrote the program.
Nowadays the CPU and the memory units are so complicated that it is impossible to be cycle-accurate like with the 1MHZ C64. Today, with all the abstraction layers and pipelines you never really know what is going on the inside of your hardware. I miss the fun of the old days, but I wish I would had the drive, back then, to meet girls or to hang-out with friends. Instead, I was stuck in front of my computer most of the day trying to write a compiler. I was trying to convert a bit-map to a sequence of assembly instructions that would draw it on the frame, but then era of the IBM-PC clones exploded into existence.
Back when electronics or anything new/important came with massive well written documentation...
2nd or 3rd grade, Ti-99/4a, Basic Programming Book that came with the computer
Litterally the first non-childrens book I ever read
It took me 2 years to get through the entire book
By 4th-5th grade, I was programming my own clones of whatever was the popular game of the day on a timex sinclair w/ 16K ram extender
Compute and similar magazines were a great help
My dad was disappointed that I had stayed with basic rather than learning assembly language....
Later got a PC and learned C
Back about four years ago or so when I was thirteen, I got a book "C++ all in one desk reference for dummies." I didn't have a compiler or the internet to get one, but that did not deter me from trying to learn how to program.
If you're up for it, please add your comments to the actual survey: http://caseorganic.com/how-did-you-learn-to-program Commenting on this post will unfortunately not include you in the survey results.
Comodore PET in Junior High. BASIC. Pretty progressive for a Junior High School in Cohoes NY. My final project was ASCII art animation. A Spaceship flying across the screen, then finally blowing up.
Well, 1988, my grandmother sent us another parcel 12000 km across the globe, it had a bottle of sunflower oil, some other stuff and a book. I remember this, because the bottle leaked and that book was smelling of sunflower seeds. It was a story, that a kid would have to read and solve puzzles in it and learn computer programming techniques to solve the puzzles (decode an encrypted paragraph, write an algorithm to jump to the right page, do something not to get killed in the story, etc.etc.) I don't remember the name of the book, but I remember that it was teaching Basic :) I wrote many games completely on paper, I had to wait 3 more years to get my hands on an actual computer.
You can't handle the truth.
I remember our maths teacher showing me, on a BBC Model B:
10 PRINT "HELLO"
20 GOTO 10
and then
10 A=0
20 WHILE A 10
30 PRINT "HELLO"
40 A=A+1
50 ENDWHILE
from then on I taught myself from code in magazines (Acorn User, mostly), and messing about with BASIC on an A4000. Now I program for a living :-)
Now my 7 years old daughter wants me to teach her programming, and I don't know what to do. She is so eager, and I really like to see her eyes shine when she understands one more thing. But if she will start to program she may have the same fate as I, no interactions with the opposite sex before the end of high-school.
I wanted to joke and say "maybe that is a good idea, she would not meet boys!", but that is so untrue. To be a healthy adult, one must have interactions with the opposite sex in earlier years. Not all interactions are positive, in the short term, but with the right parental support they can build a stable personality. It does not mean that it is easy, but I do believe that it is the right thing to do.
My love to programming had ruined my adolescent fooling around with girls, which I regret, and I don't want her to do the same.
This is going to date me. When I was somewhere between 8 and 10, my dad took me on my day off to the high school where he taught math. In addition to being the math dept chair, he also was the main computer teacher. Back then, "computer" meant a MARK something or other timeshare computer somewhere offsite, if memory serves correct, somewhere at Rutgers U. It was hooked up to the teletype at the high school.
Anyway, dad sat me down, showed me how to use the teletype to write some crude BASIC programs. ("End each line with RETURN, BACKSPACE, RUBOUT, RUBOUT, RUBOUT" - let's see if any of you older kids recognize that) I figured out how to get it to do some basic math problems, adding, and then discovered IF-THEN and looping. So, I taught it to count to 10...printing out the numbers from 1 to 10, one for each line on the teletype. So then, I tried to make the limit 100....more paper. Then, I went to do something more fancy and messed up the end condition checking....and the teletype started spewing paper. My first bug. I figured out how to stop the program after a few panicked seconds. Anyway, I did save the program to punched tape and came back weeks later and was thrilled to see that I could load the program up and it still ran. Science!
Some years later, my dad made sure we were the first family to get a TRS-80. I spent the summer fighting for time with my brother. I wrote a Hangman program from scratch, complete with 500 word dictionary and crude hangman ASCII animation and showed it to my friends. I definitely had the programming bug.
Thanks, Dad. It's (mumble) years later, and I'm celebrating my 29th year in the IT industry. I'm so glad he taught me how to program before I ever learned that "girls don't code".
OK, OK, so you started with a plug-programmed card sorter. Play along here with the Dana Carvey "Grumpey old man." There must be stuff about that system you can think of that resulted in personal injury that you simply shrugged off because it was in "olden times." Maybe something to do with the belt drive on the pulley . . .
Many nice stories here.
My parents bought me a cheap and old commodore 64 in 1992, with no games and only a user manual. It went the only way it could; i made my own fun (sprites, music, basic games). Later they got me an old IBM pc with MS-DOS, and i used the same knowledge in QBasic. I wanted to learn everything about programming. I searched libraries at school, i joined anything computer related. For this i got a good understanding of VERY BASIC WORD features. Jeez.. Seriously, there was nothing more advanced to be found. Nowhere. And i cursed that small spot of technological backwater internet-free spot of earth, while scouring every computer magazine i found.
Finally i started in High School in 2001, got internet-access, found how i could make my own Quake mods (i got the game and mapping tools trough a game magazine in my pre-internet era) and laid the foundations for my path of Destiny.
WHAT?? You can put a number of different interpreters on an iPad with a few taps.
Then Apple's policy must have changed sometime in the past four years since it removed a Commodore 64 game from the App Store when it found that the virtual C64 could be rebooted to the BASIC REPL. Because I'm not currently a paid member of the iOS developer program, I'm not privy to changes to the App Store Review Guidelines. When did the Guidelines change to allow things like Codea and Python for iOS?
Dos 6.0 had a nifty text editor named... EDIT.EXE.However, in order to use it you first had to load Qbasic.sys (or something like that). So I loaded Qbasic to run the text editor (so I could edit autoexec.bat files easier) and then started playing around in Qbasic.
Fortunately I did not know that one can philosophize about the why, how etc. etc. (ad infinitum) of "how to program", so I just DID IT.
BASIC, then Assembler (hand-coded into machine hex code, I only had a disassembler program but no assembler so could not write text assembler statements). I learned assembler by learning about Boolean logic and the underlying electronic circuits, at some point it just "clicked".
My advice is the same as with all "how to... (get rich, become successful, find the love of your life, etc.)": If you are reading THIS discussion because you want to know how to program, YOU ARE DOING IT WRONG. You should be DOING IT, RIGHT NOW.
Learned basic on a VAX cluster at Babson College circa 1980. First program was on a green bar paper terminal (no CRT). About the same time did basic on a Trash 80 w/a cassette drive. I'd also consider working on circuitry on bread boards a type of programming. Did that circa 1974 in middle school electronics class.
When I first learned to program, I didn't own a computer, nor did I have access to one at home. I wrote GFA Basic programs in a lined paper notebook, saving it up for the rare time I did have access to an Atari 1040 STF at a friend's house. Learning GFA Basic was nice, learning to think about code and imagining how it would work without a compiler on hand taught me much more.
The first system I had continual access to was a 8086 XT with DOS 4.01. Learning GW Basic was nice, learning how to juggle around code to get the most out of the limited space afforded by the language taught me much more.
Running out of options on Basic, I started playing around with debug.com. Learning machine code was nice, learning about microcomputer architecture by manipulating it up close taught me much more. In the end, replacing command.com with my own is one of my fondest programming memories.
You get the idea. MASM taught me assembler, but also the value of a good build and deployment process and the pain of multi-threading in the form of TSR's. Then Borland Turbo Pascal 5.0 taught me Pascal, but also object-orientation and modular software design in the first glimpse of an IDE. Then AutoLisp in AutoCAD 2.something taught me LISP, but also the functional programming paradigm and how math and programming had more in common than I ever suspected. A few more languages got me through the first year of college, finally bringing it all together in a coherent story; filling in the blanks and allowing me for the first time to understand the computer in its entirity, from semi-conductors all the way up through machine code, parsers, compilers, higher level languages and beyond.
Then Delphi followed and introduced me to rapid application development and visual interface design and I don't think a year has passed since in which I didn't learn at least one new programming language (the latest being Scala). Because if teaching myself how to program (and getting a little help at university later) taught me one thing, it's that you're never done learning in the field of software development. And the true lessons aren't in learning how to code, they're in understanding why someone designed a language and what it tells you about systems, software and their purpose.
After reading the posts, it is clear that BASIC is by far the most succesfull 1st programming language. And people still hates it.
this isn't an "Ask Slashdot".
CLI paste? paste.pr0.tips!
When I was around 13 years old (around 1978), my brother took me up a room at his college (UC Santa Cruz) that you needed a special key for, because it held one of the computer terminals spread around campus, connected to the university's DEC PDP-11/45 running RSTS/E.
It was a dark, mysterious little room, with this mysterious Datamedia terminal wish mysterious glowing characters and flashing cursor on the screen. I was fascinated.
He showed me how to play some games on it (I think the first one was 'trek', text-based of course). It was amazing, and seemed terribly high-tech and complex to my young mind.
A year later, someone at my Jr High told me about playing games on the university's computers, and I remembered that time when I'd done that; they told me how to login to the games account:
HELLO 5,5
And off I went. The first game I played was "Animal" (you know, it guesses what animal you're thinking of). I played for awhile, but then got bored and wanted to look at other games. But... I couldn't figure out how to end the game! "end"? no. "stop"? no. "quit"? no.
Frustrated, I told my friends back in Jr High, and they told me of the Magic that was "Control-C".
I went back, played more games, and decided then and there that I wanted to learn how these things worked!
I bought a Wiley Self-Teaching Guide to Basic. I bought "Introduction to Computer Logic Circuits and Boolean Logic" (or something like that). I bought "Introduction to Pascal". Off I went. I still like programming, these 37 years later, amazingly enough.
- Tim
I've always been a big advocate for programming, I helped program windows 7! how to get windows 7 free
We didn't have no stinkin' computers at my high school. But when I got to college, they had one. I took a new kind of calculus course where you used programming to learn the conceptsof calculus. So we learned a little PL/c, a version of PL/1 for sissies, and used it to approximate a Riemann sum. After that the professors didn't quite know what to do, so we didn't program much more for calculus. Then we learned Fortran in p-chem. I became a chemist.
A friend and I learned BASIC in 5th grade from older friends using a TRS-80 at a Radio Shack in the local mall. The employees there used to allow the area kids to come in and use the floor models for free (because back in the mid-80s, none of us could afford such a thing.) Eventually, the schools started investing in TRS-80s and set up fledgling computer labs for students to use and that's when things really seemed to take off. I spent a lot of time in front of that green-on-black screen teaching myself how to code and it's amazing to this day how much of what I taught myself is still relevant. Styles and syntax come and go, but the underlying concepts seem to be fairly static.
--Rick "If it isn't broken, take it apart and find out why."
In 1961 I took an evening course in Fortran for physics students taught by a volunteer from MIT. We were promised a chance to actually run our programs at the end of the course, but that never happened. I last used Fortran in 1971, when I maintained a subscription fulfillment system for a student-run academic journal. The print routines were in 1401 assembly language, but we'd lost the source and only had a binary deck of cards to work with.
My father taught me binary in 1971 when I was eight years old. He showed up one evening with black marbles and the bottom half of an egg carton. He had learned this from one of the original APL greybeards who attended his church. My father having himself dropped out of engineering to switch to theology had an interest in these things. Binary itself was easy (easier than learning to read an analog clock face). What took another week or so was puzzling out that binary was just a representation of the abstract notion of the integers. I wanted to learn more about computers, but hardly any books existed. Two years later I had pestered my father enough to bring home four books from the University of Calgary library. He said he had brought most of the books that seemed even valuely accessible. Most of these were stupid books full of pictures of shiny IBM consoles. I pitched them only my bedroom floor in disgust.
One actually taught some programming, mainly from the flowchart perspective. I tried to write a flowchart of getting up in the morning to go to school and all the decisions involved. This quickly got out of hand (I was fated to never become good at getting up in the morning). I concluded a month later that flowcharts were intellectually damaged: too bushy for the paltry logic they managed to encapsulate.
In 1976 I got my hands on 8008/8080 datasheets. The dumb thing took three power supplies and was far to expensive for me to ever own. I also soon acquired a TTL data book and realized I could design my own micro-controller from discrete logic. I designed such a thing on paper in the back of English Literature class. I like literature, but she was very boring and she never told my parents when I didn't hand in my assignments, so as far as I was concerned this class was a spare.
My grade six math teacher had allowed four members of the class to work at our own speed, after testing us with arithmetic quizes on a sequence of recorded tapes. I very nearly finished the last and fastest tape (very fast) but got ahead of myself trying to multitask the current question with a question I had missed. I didn't want less than a perfect score and wasn't mature enough to let that one question go. Then I jumbled five questions in a row trying to remember all five at the same time. I had never experienced not keeping up in math class before.
It was nice to be left to my own devices, but he compensated for his largess by making us write out in full nearly every darn exercise at the end of every chapter. I could pretty much read a Heinlein book on the side while doing 100 metric conversions long-hand. My progress was rate limited mainly by my pencil. By the end of the year I had completed the grade nine algebra textbook.
If my grade seven teacher had let me stay on the same track, I would have completely high school algebra by xmas. But he insisted that I stay with the rest of my classmates doing fractions again, or some rot. This bugged the hell out of me because the jocks with talent got special attention, and math is even worse than athletics as something where you can go a lot further if you start young. Just watched Proof the other night. Hopkins: How many days did you lose? How many!!. Days? I lost fucking years.
In 1978 I finally got my hands on more than a TI-30. My school bought a TRS-80 with 4kB of system RAM and 7/8kB of video RAM (16 rows of 64 characters by seven bits). This was to save ONE whole 1kBx1 memory chip. (The font ROM actually had lower case characters, but the memory bit that drove this pin wasn't there.) If the msb was 0, you got 64 different printable characters (not including lower case). If the msb was 1, the lower six bits controlled a 3x2 pixel block in the font ROM (making 48x128 pixels total, if you chose to treat this as a bit-mapped display).
I was also given an SC/MP homebrew by a local electronics instructor. He taught me hex in five minutes (but neglected twos complement for negative numbers)
When I was a callow ant, I was into Apple BASIC and LOGO, and HTML. I was into simple stuff and modifying. I got older to take computer science courses, but I didn't like coding anymore. I did like breaking stuff for SQA!
Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
We got to take some kind of computer home for a weekend in I think 3rd grade. Maybe a VIC 20. Even when I look at pictures, I can't remember for sure.
Did some after school BASIC in 6th grade on Commodore PETs. Then in 7th grade we had an Apple II lab. 12th grade had the first Pascal programming class in high school (UCSD Pascal). Only time I remember a class changing times in high school, so I had to drop Spanish AP for programming. Muy bueno! Also dabbled in 6502/65c816.
Then computer engineering in college. Did some z80 & 8088 stuff in classes. Now I work at this "fruit company".
It was a fateful day for your hero, a one James Edward Philip Huckabone, back in 1990-something. Strolling through the Oshawa Centre in Ontario, Canada; his gifted-labelled sporadic senses trained on a book bin rank with book garbage, belonging to the frequently ailing and now amazingly transformed enterprise known as "Grand & Toy". Drawn and imprisoned by the dominant "Garbage-Picking-012-443" gene passed down by his donkey father, he reduced the padding/margin between himself and said bin. Gently cursing aside out-of-print works concerning home improvement, dating advice, car repair, etc., he foraged into an encounter with a title simply named "HTML 3.2 - Manual of Style" by Larry Aronson, and Joseph Lowery (https://www.goodreads.com/book/show/3569748-html-3-2-manual-of-style). He took this deftly priced book home and read the living shit out of it. Blither blather, blah blah blah, I'm now an HTML/PHP/MySQL/AJAX/etc. pro star and am building tools to make a particular company rich. That's what happened. Leave me alone. Leave the craft alone. Nothing to see here. Dinks.
http://www.accountkiller.com/removal-requested
...typing in machine code from Byte and Personal Computer News. Then a big boy computer - Apple ][+ with 48k, and the optional Z80 2nd processor that ran CP/M.
I first learned how to program by figuring out how to do the conversion from one form of BASIC to another. It's interesting, but I don't recommend it.
In 1975 my mom bought an IBM 5100 for her office. It came with a cartridge of games that were written in IBM's BASIC.
In 1985 I bought an Apple ][e to take to college. I wanted to play those old IBM games, so I printed out the code from the IBM and started typing them into my computer. They didn't work, so I bought a book on Applesoft BASIC to see what I was getting wrong. As I figured them out, line-by-line, I also learned how things worked.
Long nights, lots of caffeine, and whiskey. Not necessarily in that order, sometimes combined.
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
A teacher whose name I've forgotten but to whom I am very much indebted suggested that I go to a series of lectures and hands-on sessions at the University of Oklahoma in the spring of 1971. I was in tenth grade.
On Saturdays we were guided through BASIC and the fundamentals of numerical analysis by Professor Richard Vernon Andree, and one evening a week we could sit at one of four ASR-33 Teletypes connected to a Data General Supernova running a time-shared BASIC. It changed my life. In my junior year, not having access to a computer, I wrote programs in a notebook, which I wish I still had. As a senior I took vo-tech and learned about unit record machines, the RCA 301, and then RPG on an IBM 370. I never looked back.
I think I spent more time copying out BASIC programs from the manual than playing games on it ;-) (I was six or seven at the time).
My parents noticed my interest and convinced some local guy running a class to take me (normally he only took older kids). He had a room full of Plus4's (going for slightly esoteric Commodore models here...)
I also learned to program (in Basic) on a remote system using a Teletype 33 ASR with acoustic-coupled MODEM. Where are my billions of dollars? Sigh ...
Later, TI-BASIC on a TI-83. Self-taught, I guess, with some parental instruction.
That's pretty much all I learned until college (where I got the somewhat odd collection of Python, Java, Fortran, PHP, Haskell and TeX), though I did teach myself a few languages during college too, such as Lua.
I'd been into computers from a young age - and after looking over things like ZX-81's, VIC-20's, Let alone Drool-Worth Atari 8 bits,
Dad being a Ham decided to buy a second hand computer that was for sale.
It was a C1P. Best damn machine he could have bought. It was the original 'hackers' SBC. I mean it came with full schematics and pretty much everyone who had an OSI hacked on it, and especially the Superboard II/ C1P folks. My dads work was getting rid of an ADM-1 (Yes - 1! - uppercase only) terminal, we populated the RS-232, and a few months later I got my hands on a Decwriter LA-36.
Getting the OSI did a few things - it got me into hardware from a young age. Want joysticks - have at it with the soldering iron wiring to the polled keyboard. Want faster cassette... See those traces hanging off that divider - have at it.
A standard mod was a 2x performance increase. Just hope that your 2114's can hack it ( Are those 550nS parts really 550nS?) find the divider for the cpu, cut the trace, hook in a switch and hey presto - instant 2x. Oh no your tapes don't load? You should have saved them at 600 bps after you wired in the baudrate switch.
The 'monitor' was called SYNMON. Two values on the screen. This thing was Primitive. Think of a memory mapped display version of an 1802 or KIM-1.
0000 4C LDA
A1 OSI Character graphics white square
8D STA
0F LSB of address
D2 MSB of address - Video mapped memory
60 RTS
Hit . again
Punch in 222 again
So you see
0222 A9
Hit G for Go.
C gave you a cold start and you got...
Microsoft BASIC V1.0 rev 3.2
(c) 197? Micro-soft - memory is fading...
7423 bytes free
OK
LOAD and SAVE just turned ON the redirect from the keyboard to the serial port. So loading a basic program was like watching someone type it in at 30 CPS. Save was like watching a slow 30 CPS list.
I started programming in junior high school, at the same school that Paul Vixie went to.
Hoover Junior High, in San Francisco, had a few TTY-33s tucked in a closet in the back of one of the math classrooms. These TTY-33s were connected via 300-baud modems to an HP-2000 timesharing system located on the other side of San Francisco, at a local high school, and used to run a remedial math program that could have been replaced by a piece of paper and a pencil.
Before and after school, there was a computer club that had access to these terminals. We spent most of our time playing TREK73 (a massive program that exceeded the memory of the HP-2000 and was actually implemented by six separate chunks of BASIC that CHAINed (invoked) one another, as needed, passing control around like a basketball).
It was possible to view the source code to TREK73 and, with the correct privileges, it was possible to modify the source code so as to grant oneself extraordinary powers; and that was my introduction to programming - modifying source code on BASIC files.
A few years later I acquired a Digital Microsystems Z80 - about the size of a large suitcase, or a small bookcase, filled with books - 64K of RAM, dual Shugart 8" floppy drives that, together, provided access to over a megabyte of storage, and a few boxes of diskettes.
This was my introduction to shareware - Chris Seiwald was kind enough to provide me with my first copy of MDM711, I think, a file transfer utility, and, of course, CP/M came with source code and utilities to compile and link assembler source code. I got into UART programming, a little, and learned structured programming from copies of TurboPascal and BDS' ('Brain Damaged Software') C compiler, which I got from my friend, Paul Vixie.
The company I worked for, at the time, designing fonts and logos - Dahlgren Control Systems, they called themselves, back then - was one of the first companies to buy a Sun Microsystems computer, the Sun 1. I remember seeing it - it was running SunOS 1, and had only a command-line interface (although the display was a relatively high resolution black and white monitor, I recall, and so, even back then, I suspect that it had a graphics card).
Nowadays I have four daughters, and I am, these days, considered a senior UNIX systems administrator. Everyone has access to a laptop for personal use, and, while my children have not yet learned to program, I am thinking about getting them all Raspberry Pi computers, and providing them with a cheap sandbox, so they can install whatever they want, on the side, while retaining reliable Internet access through their primary machines, until such time as they are capable of choosing what they want, for themselves.
Let me say, back then, EVERYBODY shared source code. And executables, too, sometimes. It was a special time when we all belonged to a small village - one with just a few hundred or a few thousand residents.
My captcha: 'iterate'.
In 1979 i was working for Reuters, the press agency, in London. Back in those days, Fleet Street was adopting "new technology" and people were losing their jobs as a result. Reuters had an agreement with the unions to train 4 people a year as computer programmers and i managed to get onto that scheme. We were trained in-house, with a 5 month training scheme, working from 9.30 till 4.30, with an hour and a half for lunch, on full pay! On that course, we were taught programming using PDP-8 assembly language. As far as i remember, it was entirely done on paper and i don't think we ever actually ran anything on a computer during the course. The only thing i remember about it is PDP-8s used octal.
After the training course, i moved in to a programming job with Reuters - writing and maintaining software for some of Reuters old Ultronics SGS computers - using IBM 360 assembly language, doing the development on a 370. Booting up the SGS consisted of toggling in the paper tape reader bootloader, using the front panel switches, then running that to read in the card reader bootloader from 8 hole paper tape, then running that to read in the o/s from a pile of 80-column punched cards. We debugged stuff via the front panel, changing an instruction into a jump to some free space at the end of RAM and then toggling in bits of program there, followed by a jump back to where we'd come from.
No kidding. I worked in an office using a custom program written to run on Wang hardware. The tech support guy showed me how to clone the OS/Application onto an eight inch floppy and use an editor to make changes to the application. He gave me a reference card that translated assembler into machine code and the rest is history. I would read the hex code and translate it into assembler so I could understand what the program was doing and then I could make changes to make it do something else (very trivial stuff).
I had about two hours of work to do each day in a six hour shift and I learned the greatest lesson of my career playing around editing hex code. The most important thing about programming is getting bits in the right order in the right place to make the machine do interesting things.
Since then I always have the the thought in the back of my mind that I am writing to the metal somewhere.
Years later I learned OO in a similar fashion, I got a machine and a basic book and started poking around.
In 1960, as a freshman at Carnegie Institute of Technology, I was given the opportunity to enroll in the first undergraduate programming class offered there. I thought it would be interesting and something that other people were not doing. The class was taught by Alan Perlis, a well-known thinker about programming and languages. (He later was the first winner of the Turing Award.) We learned to program the school's IBM 650 in SOAP (Symbolic Optimizing Assembly Program), which optimized the layout of the program instructions on the magnetic drum memory so that the next operation was ready to pass under the read/write heads just when the previous instruction had finished (a mind-blowing concept that later was useful when programming CDC machines with multiple functional units and independent execution). Later came an early form of FORTRAN. By the time I graduated, the school had changed machines and was mainly using a form of Algol. I only took the one course as a freshman, but I fell in love with computers and software, and found a way to incorporate programming into my chemistry degree, working with the resident theoretical chemist.
My graduate work was in computational quantum chemistry, and I had a part-time job in the university computing center. Gave me the opportunity to dabble in lots of different things. We got one of the earliest CDC 6600 supercomputers and learning how to get the most out of that beast was a challenge.
By the time I was done with my chemistry PhD, it was pretty clear to me that computing was where I should spend my career. The university was starting a Computer Science department in 1968, and I was invited to be one of the first faculty. I taught mainly in programming languages and programming techniques. I was mainly self-taught. I had long-since left academia before I got my first home computer, a C64. In 1984 I had a chance to buy a FatMac at the Apple employee store, and the rest is history.
I left HS in 1976, calculators were banned at most schools but it wasn't much of a problem because they were very expensive. My dad was an engineer and his company bought him a HP21C calculator for work. To use it I had to learn RPN from the manual. Dad recently found it in the back of a cupboard, he cleaned out the mess the corroded battery had made, got it working again, and gave it to me for Christmas, great conversation piece.
My first "real" computer with a true programming language was a second hand Apple IIe in the 80's, I learned Apple basic from manuals, the library, and magazines (Byte magazine and others published lots of example source code in those days). I think the internet has taken much of the leg work out self teaching all sorts of subjects, information has never been so easy to obtain.
My initial motivation for buying the Apple was that I had read about Conway' game of life in and old SciAm magazine at the library and was fascinated by it, spending hours and hours "playing" by hand on graph paper, it took me a week to figure out how to get the computer to do it. The guy I bought it from was floored when I showed him what I had done with it in the first week. A few years later he was amongst a handful of workmates at the factory who encouraged me into going to uni and taking up programing professionally. I swapped the factory job for a more flexible (and less profitable) taxi driving job and graduated in 1991, with 20/20 hindsight it's one of the best decisions I ever made. However the fact that I graduated at the perfect time to take advantage of the great IT gold rush of the 90's, was pure luck.
I think the hardest problem for most people (especially 20-somethings) is figuring out what they want to do for a living, I was in the same boat until I fully realized I could turn my strange hobby into an interesting and profitable career, being treated like a minor celebrity during the boom times of the 90's was an unexpected bonus.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
The TI-85/86 was the first environment that I actually started programming with. I spent countless hours making games of all types, and different utilities. Quickly, I figured out how to corrupt the memory in TI-85 (rom version 8.0, specifically), and could do interesting things such as edit lock programs without external patching of any kind, and create string variables that contained entire memory dumps. Because of how little TI-85/86 had to offer in terms of a fully robust environment, I grew a deep appreciation for efficient, effective coding.
At one point, I had 3 of these calculators, each with their own collection of games and/or utilities. When I realized that I didn't want to buy a 4th calculator, I decided to try something new. Since there wasn't any built-in compression with the 85/86 environment, I decided to build an interpreted scripting language from the ground up, with a focus on eliminating code bloat, and as much readable syntax as possible, with only 30% reduction in execution speed (only a few of the games were real-time oriented), with conversion/"compression" ratios averaging around 65-70%. The upside to having that many compressed games (and the interpreter) meant that I could create more games, and also have a reduced transfer time. I also added in cheat codes and easter eggs to all of my games as well.
Good times. Good times.
Apparently, no one on /. under the age of 30 has ever learned how to program...
laugh it up you old timers, the jokes on you!
See, it is *bad* for your industry when it is so dense and esoteric that neophyte workers either chose another profession or get burned out and quit...
I have theories as to why geeks keep their deep magic under such a stanglehold...but it really doesn't matter. We need to untangle the Kludge of languages running around the web, and work on more standards-based, common sense, best-for-the-job, open, scalable languages.
Thank you Dave Raggett
Back in the early 80's when I was 7 or 8, my parents took me to a computer store where they had, IIRC, Apples set up with programs that taught the fundamentals of programming. I remember I had a few weeks of lessons and finished all the modules. I got a C64 a few years later and played around with some BASIC programming. Even though I never became a serious coder, I think those lessons helped me with structured rational thought throughout my life.
I came to programming through France's government Informatique pour tous plan, which installed computers in all schools in 1985.
The plan was called a failure by analysts, but it was a success for me.
I had a TRS-80 for a short while. Was my first computer. But with no programs, no manuals, and no particular liking of the gray monochrome graphics, case, keyboard, tape recorder, and everything, I didn't do much with it. My father tried to interest me in a Vic 20, but at only 5k or RAM, it couldn't do much. What convinced him to stop being such a tightwad was when it ran out of memory trying to load a game on tape that happened to be handy. He finally caved and got what I wanted, an Apple II. Bought it used.
It was an Apple II+ with a language card, giving it 64k RAM. And it came with a floppy disk drive, not a crummy tape recorder. But most of all, the previous owner had a bunch of manuals and books that he included in the sale. I got Beneath Apple DOS, an Apple Pascal manual, another book about the 6502 machine language which included a schematic of the Apple II and other information such as the existence of the "monitor" (the built in disassembler in the ROM), and of course documentation about Apple BASIC.
Further, it was crucial that these early computers came with simple programming environments ready to go, and that others had used. Could always break into a game to look at the code and learn. And cheat of course. A look at the code was just a LIST command away, thanks to the built in BASIC interpreter. Copy protection was also educational. Many games, such as Dark Forest (sorry Tom Mornini), were slow and buggy. I fixed and improved some of these. When I realized that finding the Mark of the Snake in Ultima III was a boring find-the-needle-in-the-haystack problem (the clues in the game narrowed it down to the bottom floor of the dungeons, but that was still too much searching to suit me), I searched the disk instead, found the character information, and edited it to give myself the Mark so I could finish the silly game. Later, I did find the Mark the proper way. If I wanted to, I could flip the computer on, and instantly start writing some BASIC program. Wouldn't be able to save it if I hadn't taken the 45 seconds needed to boot DOS, but sometimes I just wanted to bang out a few lines of code to get a quick answer to a simple question. Later, better DOSes cut the boot time to 15 seconds. I never used Pascal, because it was horribly slow, and hardly anyone else used it either. Stuck with BASIC and assembler.
Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
A coworker saw potential in me. He loaned me a boxed copy of Borland's TurboC 1.0, and said learn this. I used the company Compaq portable, which looked like a seeing machine with a qwerty keyboard on bottom. I owe Jeff a lot. I've made my existence writing code!!!
The first computer I played with was a COSMAC ELF borrowed from the local computer club. It had a video chip and, I think, 1K of RAM. Programs were entered in hex on a 20-key keypad. I keyed in a program (forgot where it came from) that played "Greensleeves" on the speaker. I connected a relay to the phone line and the ELF and wrote my first original program; to generate dial pulses. Used it to call my sister.
I didn't have a computer at first. I read a book about programming (I think it was Basic) and started with that. Afterwards some logo at primary school. When my parents bought an XT (didn't have hard drive) I learned a lot of DOS commands and with GWBasic when I bought a hard drive.
I was sitting in Algebra in high school, and a teacher form another class came in and said they were starting a new class to teach a programming language, Java, and there would be no homework. I was always interested in learning how computers had worked, so I signed up. I was so interested in it, it was the first class that I actually read the book, front to back, and way ahead of the teacher's schedule. I had completed all of the assignments for the year in a month or two, so she gave me another advanced book to read. I got stumped on a case study of the Towers of Hanoi(http://en.wikipedia.org/wiki/Tower_of_Hanoi), and dropped programming for a while. I took Programming 1 in college, and hated it; I didn't learn a single thing (other than how to use the Scanner class). I changed my major a couple of times, but after taking a summer off to think about my future, I went back to Computer Science as my major. I managed to get an internship a couple of semesters before graduation, and now I'm happily employed by the same company. If that teacher hadn't walked in the room at that moment, I have no idea what my life would be like right now.
I'm a developer, used to work at a big company, now working with mostly startups and earlier companies, sometimes as a consultant, sometimes on salary, doing well for myself.
I was trying to do multitrack recording on a budget, and couldn't afford expensive music sequencing software. The demos limited the number of simultaneous tracks, etc. Eventually through recording forums I happened upon a few folks who were into a more DIY approach and things like Ardour were starting to become viable options. I knew how to steal the paid stuff for Windows but the alternatives caught my interest. I was a little blown away at the time that this kind of thing was available for free.
While then and now it was in vogue to shit on all the sound issues on Linux, it was in the process of resolving those through mystical command line invocations that I came face to face with what was running my computer all those years, and was impressed by the power. After that I was hooked on discovering how the pieces fit together, and became a proficient Linux user/admin. Loved the command line since.
Fast forward a bit through that and I'm a music major trying to weasel my way into DSP classes so I can make my computer make cool noises. It requires a basic CS course (taught in C++, well, basically C with the C++ string lib) as a prereq, so even though I didn't have any interest in learning to program in general, I sign up.
Most of the kids in the class hate it, are either experienced programmers forced to go through the basics again because they didn't have the fundamentals down, or people who didn't want to program but had to take the class. 50% of the kids are gone before the end of the class (starting with 120+). I seem to be one of the few kids sitting in the front, totally jazzed. I forget about DSP, and end up majoring in CS. Still addicted 7 years later.
You never know what you've got an aptitude and interest for until you try it. Until something clicked in those early CS classes, I had a few run-ins with programming in the past and it seemed boring as fuck. I thought being a programmer was equivalent in interesting-ness as being an accountant. Dry, stuck in a cubicle, doing something worthless and boring. All the jobs being outsourced. Zero idea it would be something so creative, challenging, liberating. Also gives a decent paycheck, whether you freelance or sign up for a 9-5. Programmer life is good.
Long live the BSD license
I began "programming" BASIC when I was ~10 with an Amstrad CPC6128 at home... later moved to a 286 PC and GWBasic, and then (I was 15 I think) someone gave me a floppy with an almost complete Turbo C++ installation (I remember it was missing graphics libraries). Didn't know what to do with it, so I bought a C/C++ programming book :)
And that's how it all begun...
In 1970, my senior math teacher finagled $500 to cover an IBM 029 keypunch, giving his class overnight batch access to the school district's 360/20 "mainframe". (The thing had all of 8K of core, as I recall, and a disk so tiny and precious it could only be used to bootstrap the OS. Compilers and applications were stored on cards.) Withdrawal sent me to the library over the summer to figure out how to build my own machine. Microprocessors came along before my design ever ran. I had a Z80-based S-100 machine that was mostly wire-wrapped. I did D/A audio synthesis and built a dot-addressed vector display for that machine, all programmed in hand-assembled Z80 machine code toggled in on DIP switches and stored on tape. Along the way, college and a job happened, but all of that was just to get access to better computers. Experimented with Minix when it was new, bought my own 386 machine, and used a hacked gcc on an Ultrix VAX to cross-compile the system to run on my hardware. My employers had no idea what I was doing. All they knew was that I was exceeding expectations. :-)
Yeah, laugh all you want. It was the best way to do it when you don't own a computer.
Paper-based learning at its best.
My first program printed out numbers from one to ten. It was written on large sheet of paper but had to have correct indentation, and the role of compiler, processor and screen was left to my Dad who patiently wrote the numbers next to each other without spaces - just like he should. Thanks, Dad!
My first experience with programming was when my uncle gave me a Ti home computer that plugged into a television, I programmed it to play 'hot-crossed buns' in the mid 90's. A year or two later, we got our first home PC, though both of my parents write code for a living. I never coded or scripted on that machine and was a dumb-user. In highschool it was a requirement to buy ti-83 calculators, I wrote all sortsa little programs and even developed my own hash algorithm (very naiive but at the time I didn't even know what hashing was) to translate the periodic table into the limited ram and strings. I'm pretty sure that I still didn't have a grasp of arrays at that point. Then I graduated highschool and went into a Computer Engineering program where I took intro to programming and data-structures in Java as well as a little x86 asembler. I then took the C/C++ course where we built a simple ray-tracer, later I discovered that I really wasn't happy with the EE program and switched to physics. Over the next two years I was a focusing in metrology and so learned how to hack in LabView and eventually how to make my own virtual instruments. Then I came to grad school which was light on programming outside of LabView, except durring my last year of classes I took a computational chemistry course. This was in Fortran 77, and made me like programming again because it was functional and supremely interesting. My Doctoral program terminated masters' due to many factors and I moved to Europe to search for a new program.
I interviewed with an advisor doing FIB simulations mostly in Python with numpy, he tasked me to make a toy simulator and then design an inverse modeler for that. 2 Weeks later I had a functional grasp of Python (barely- but the code worked), after two more weeks I had an inverse modeler for the full simulator. I've been using python since and should graduate in another few months. I still don't consider myself to be a programmer, more a scientist who makes use of computational tools, but it has been an interesting adventure.
My father said "Don't touch my *&@$)(ing computer or you'll be beaten to a pulp and grounded for a month".
After that, guess what I wanted to do more than anything? I skipped days of school pretending I was sick just to mess with his computer. Started with QBASIC, then moved to OS/hardware interests. Moved into debugging others' code later in all languages known to mankind but can't write for crap.
Yes, I was discovered once and was beaten to hell and back. I think I told him that his 'IF' statement wasn't 'TRUE' when I was grounded for more than a month. That got me belted again. :)
It's good to see another former Amstrad user here. I started with a CPC464 with green screen and cassette - I think my dad traded it for a CD player or something - and eventually he got a CPC6128 with the color monitor and disk drive (360k - x2 - of sheer luxury!). I taught myself to program Basic to start then I got the firmware manual and a book of assembler opcodes and started in on Z80 machine code for sprites and such. Eventually I got an assembler, Maxam (sheer luxury again).
I also got ACU (Amstrad Computer User) with the Hairy Hacker's column in it; and a few years ago I actually contacted him (Vik) to express my appreciation, and he wrote back. His web site doesn't seem to be on the net any more, however.
St Anthony's High School, 1978. Brother Simon was onto computers and had a museum of old donated machines as well as the PDP-8e, Commodore chicklet machines, and a few TRS-80's. There was even a block of old analog computer modules for solving differential equations. An old mainframe with platters.
I bought a copy of "TRS-80 Assembly Language Programming" $3.95. But tried reading it over and over for months before I figured out that a "register" was part of the processor, not in RAM. Then I wrote simple flight simulators and kept the machine on 24/7 because my tape drive was bad.
There used to be this wonderful interactive C tutorial in MS-DOS. It really worked you through the gears of C until you understood everything. It must have been on my Amiga, though. ca. 1986
"Will future ages believe that such stupid bigotry ever existed!" -- Ivanhoe
In 1982, our dad bought a Franklin ACE 1000 computer (an Apple II clone) for us when we were in elementary school. My brother and I experimented with AppleSoft BASIC programming on that, and our parents also bought a book about BASIC. We mostly skipped the tutorials in the book, and jumped right to the reference section, figuring out things on our own by looking them up in the reference then trying them out on our own.
It didn't take very long to "get" programming. I think after a year of writing programs in AppleSoft BASIC, I was writing pretty advanced stuff. The SIN and COS functions were pretty hard to grasp until I had the math classes (years later) to understand them, but otherwise I "got" it right away. I remember writing several small programs, such as a number-guessing game ("too high" or "too low" until you got it right).
I figured it would be interesting to write computer programs that mimicked the computer displays from television and movies. So whenever I watched a movie or TV program that featured computers (and it was the 1980s, almost everything featured a computer) I tried to mock up a similar display on our computer at home. It didn't take long to realize that a special effects person was doing the same behind the scenes, rather than the movie or show using an actual program, but that didn't take the fun out of it.
In 1983, the movie War Games came out, and I decided I wanted to write the nuclear war simulator featured in the movie. It took me all summer, but I eventually wrote something that would draw maps of both the US and Russia, then let you select a few targets and launch missiles. The opposing side would return with a few missiles of their own. It even drew the missile tracks like in the movie. At the end, the program would tally the damage to determine the winner. (I think the "nuclear war is bad" message was lost on me at the time.) It was all in AppleSoft BASIC.
I used different versions of BASIC until college, when I learned my first compiled language. As a physics student, we needed to write our own data acquisition and analysis programs, so we learned FORTRAN77. It was pretty easy to pick up in class, since it wasn't worlds apart from BASIC. In the summer between my junior and senior year, I interned at a research lab. For half the summer, I took data. By the second half, they realized I was pretty good at FORTRAN, so they asked me to update a FORTRAN-IV program that analyzed ellipsometry data (precise optical measurements using a laser). I didn't expect this during my internship. I enjoyed it a lot, but learned to hate FORTRAN's computed GOTO.
After FORTRAN, my brother (a computer science student) introduced me to C, and I took to that right away. It was more powerful than FORTRAN, but still easy to write code. My brother taught me the basics of C, then I picked up the rest on my own through books, including Kernighan and Ritchie's book. And C really put me on the path to computing as a career.
In 8th grade I had a TI-83 calculator. I already knew algebra, so I was naturally bored and restless in math class. Being a bit antisocial, I started reading books in class, which my teacher disapproved of. I figured out that if I was messing with my calculator, it looked like I was paying attention and following along, or at least engaged in math. So I discovered that I could write programs. I still had the calculator manual, so I read that to get an overview of the programming commands, of which the most important to me were commands that would write a letter or a pixel to a location onscreen. At first I amused myself by little graphical programs that just drew things on screen, but I discovered that I could make them interactive, so I made increasingly sophisticated games.
I taught myself vic20 basic when my mom got me a commodore vic20 in 1988. Then I started to learn turbo c++ 2.01 in 1993 and I defected to turbo pascal 7 in 1994 and now I am a nasm and gcc fan currently.
Star Trek: Starship Creator. You could script your own missions for your ship to execute. It was pretty fun. I think I was in 8th grade. Anyway, I loved it so I took QBasic and then Pascal and the rest is history... now I'm just a smug Rails guy.
Commodore 64 BASIC. If you have to know the simple parts of the language to use the computer, then you have a great incentive to learn. I blame point-and-click for the degeneration of general computer usage skills. There used to be a need for some intellectual grasp of the tool to use it; now we have a bunch of kindergarteners with rocket launchers who never learned to aim away from their own face before pulling the trigger.
At 14 I already knew that I would like to develop games. So I bought a pretty lame book about it and coded a bit in C/C++. I could not grasp some concepts so I decided to let it be for the time being. A year later I took classes for Dreamweaver and Flash, and then I finally understood the basic concepts involved in coding. I went to CS college and basic algorithm was pretty straightforward. So yeah... that Flash class taught me how to code.
This combination doesn`t exist: ETIs that know about humanity and want to see us dead. Otherwise we wouldn't exist.
My first PC with BASIC, 8K RAM, Cassette drive, and 40 x 24 display. Pretty hot for those days.
I had to get a TI-85 in 7th grade, and I so wanted to make it do interesting things. So I puzzled over the programming section of the manual all by my lonesome. I remember how long it took me to understand if-then-else, and then how obvious it seemed immediately after :) Shortly after I was making number guessing games and stuff, and laboriously typing them into my friends' calculators who wanted them. Yep, lots of GOTOs, fortunately I made it through without permanent brain damage.
My high school had a computer room with an IBM 1620 (later replaced with an IBM 1130) that you programmed with punch cards. I found it in 10th grade and didn't have room for my schedule for a computer class until 12th grade so I picked it up myself; by the time I reached 12th grade I was well beyond what the class had to offer so I didn't take it. A bit later I got time on the local university's time sharing system: PDP-10 and Model 35 Teletypes.
That's just the programming.
Learning to actually write software properly, and not resort to things like self-modifying code, globals, and gotos took real world experience
I worked as a Broadcast Engineer and Journalist in the late 60's. I taught electronics part-time at SUNY. Around 1969 They had a Teletype with dialup 110 baud modem to Dartmouth College. Learned BASIC and some FORTRAN from the HELP on Dartmouth, no help from the SUNY Faculty.
Then they got a grant and a Data General NOVA and 6 Model 33's and students (and I started learning more BASIC).
I was motivated to really use the thing for electronics design and eventually wrote BASIC that designed various Active Filters that I used in Broadcast applications. At one time the WMCA Good Guys were heard through one of my "Secret" 5-pole Chebyshev filters.
I was motivated to have a computer at home. So I designed a 110 baud modem, with an ASCII test generator. After I proved I could send FSK data and receive it myself, I scrounged my own Model 33 Teletype by trading an Ampex recording system to the AP Teletype repairman. One day I got it all hooked up, dialed up Dartmouth (fortunately a special local number set up by SUNY) and !!! The Dartmouth prompt.
Soon my kids were playing Hangman on the model 33 in the living room. And I was designing more electronics stuff.
But we wanted our OWN computer. The Altair had just come out. Too expensive.
I called up Intel about the 8008 and the New 8080. I wanted to automate Broadcast Stations. Did they have a version of BASIC for 8080?? They explained to me that these were MicroControllers for equipment, written in assembler and there would never be a high level language on them.
Later I called up Microsoft when they announced they DID have BASIC for the 8080. $250 for 8080 BASIC. Too expensive.
Fortunately Tom Pittman wrote TINY BASIC for the 8080 and the new 6502.
So I called up MOS Technology (remember the TelePhone?/) and talked to Chuck Peddle. He said that the 6502 would cost $25 in a year and I could buy one at that price. It came in a week and I started building right away. Scrounged memory cards from my IBM friends (sshhh!) and made a front panel that could examine and deposit into memory. Got the 6502 on the bus. Everything wirewrapped. Put 16 LEDs on two registers in high memory. Hand-wrote assembler and got BLINK197? running. Got a "TIM" chip from MOS Technology, built a card with the interface and teletype monitor ROM on it (like Steve Wozniak had pitched at the Amateur Computer Club of New Jersey the year before).. and added a 20ma current loop. Wow! the Good Old Model 33 came to life and we could TYPE in programs in Hex. So we wouldn't wear out the thumbwheel switches after all.
Sent $25 to Tom Pittman and a folded paper tape arrived in the mail. But my scrounged Model 33 came out of a Newsroom at NBC and had no reader or punch.
Went back to SUNY, printed out the tape. About 4 pages of Motorola Hex Dump. My kid and I typed it into the Model 33. Double checked. Pointed the Reset Vector to it. !!!! BASIC Prompt.
We finally had a machine with a high level language at home.
The 110 baud modem I built had audio in and out, so we backed up the BASIC code on a Cassette Recorder. Hey we had our own Tape Storage system. We could now power down the 6502 system and reload BASIC. And save BASIC programs. The kids started writing Space War.
I wanted to control HARDWARE with computers, and started hooking up relays and stuff. Woweee. Got a job interview at IBM. They were surprised I had built a computer from scratch AND had a clue about "Sensor Based I-O". Got the job and a couple weeks later was writing assembler for the IBM 1800 (Until our new System/7's came in). Started working on automated Chip Fab. Etc. and lots of Etc.
Now I'm an Arduino weenie. I write the http://ArduinoInfo.Info WIKI and do workshops with kids.
Good Old Model33 went off to someone who wanted it. Sometimes I wish it was still around.. Sigh...
Regards, Terry King ...In The Woods In Vermont
Regards, Terry King
After we assembled the boards for the Altair 8800 I learned by flipping the front panel switches. Then we got a Model 33 and I only had to boot the loader program so the paper tape would load.
First high level language was on a Tektronics 4051 and there were 3 firmware upgrades (when a firmware upgrade was the guy coming out, soldering power and ground of new chips to old chips, cutting old traces on the board, running wirewraps from point to point until they had enough changes to justify new boards) made because of stuff I found.
I was on active duty then and the sergeant I worked for said something that is still true today - "It's hard to make things idiot proof because idiots are so ingenious - Sgt Day"
As an aside: the other day a couple of us were talking about the "old days" and one of the younger folks spoke up: "I learned about that in school."
*sigh*
Like most jobs, its knowing your resources that gets the work done almost more than knowing what to do. Even if you don't know, knowing where to find out can give big dividends. It also can allow you to construct things in very different ways and leverage those resources better since you're not restricted to 'twmplate logic'.
First computer I ever touched: IBM with JCL and paper tape used for building automation (1968)
First computer I programmed: IBM with punch cards in Fortran (1972)
Second computer I programmed: HP 1000 timeshare over Chicago Teletype in BASIC (1973-1975) - ka-chunka-chunka-chunka-chunk!!
Third computer I programmed: IMSAI 8080 with paper tape in 8080 assembly
Fourth, etc.: Apples, PETs, NorthStars, Cromemcos, then DEC TOP10 and Vaxen, then Mac, Atari, Amiga, PC, then HPUX and Unix of all varieties
I really thought this was an interesting question and followed it the throughout the last day, clearly the answers "rising to the top" so far are not curent. Most answers so far have been about "why" and even that is being kind to the sarcasm presented so far. Part of the problem here is that it seems that nobody that's responded so far started their career after 1980 and that's either a sad fact about the business or something that Slashdot should note. Personally, I started writing BASIC in a high school class as my first exposure and then worked in C initially in college before moving to C++. Later in school assembly, Java, and PHP were used and then afterwards I added purpose specific languages like OpenGL, Javascript, "Flash/ActionScript", and JSP/ASP/Python(yes, I include Python there as that's all it's worth). The more worthwhile answer to the question though is that I learned "how" to program, meaning algorithms, style and debugging in my second and third years in college at U of Michigan.
and thanks a lot.
learning with FORTRAN really expanded my horizons and prospects.
For myself, BASIC on a VIC20 and a TRS-80, then some assembly on a Commodore 64 then Apple with basic and Pascal. Not myself, but an interesting story about a guy I met many years ago was taking a programming class where the Professor said he didnt care what language they used for their projects. So, what he did was write the program in postscript so you would feed the program into the printer and get the result as print output. Kinda clever I thought.
Took Computer Programming as freshmen at my high school. The teacher started by talking about the computer, languages, and coding stressing spaghetti code horror stories. We then discussed a sample problem, the flow chart for it, and the code. We then programmed an Apple II. Next we learned the Basic Language. The rest of the class was: pick a problem, flowchart it, write it in pseudo code, program it in Basic, test it, have fun. I wrote a tank program with simple sound and color that hunted down my friend and blew him away for the class project which was the majority of the grade.
I learned SOAP II before RAM was invented. Then I programmed x-ray crystallography analysis in Fortran, learned from a Fortran manual. Later, I took home a Cobol manual and came back a week later with a complete and complicated payroll system which, to my embarrassment, was still running ten years later. Since then I've learned about 22 different languages, mostly writing compilers and op system code, some AI stuff, some information systems code, some DB system code.
It was all punishment. I never liked being trapped behind a desk with my nose focused on a coding pad, a screen or a computer terminal. I hated having to compete for computer time. I detested doing code review for others or explaining that the algorithm that I used was more efficient than what the reviewers expected. At one point I walked away and vowed never to do coding again.
I haven't actually written a program in years, but there is something interesting in Python... and what exactly is Hadoop?
I kept my 7th grade programming notes. Yeah, they were mimeographed. Get off my lawn.
I first started with hard iron machines, tabulators, collators, etc.
They had control panels that were wired to perform accounting functions using punched cards. Logic and selection where an integral part of the deal.
My next machine was a 1401 and we actually were able to map out memory (4K) and write machine language (this was done mostly for fun).
Autocoder (a predecessor to Assembler) was used for real applications.
~ Artificial Intelligence is better than none! ~
My first exposure to programming came from building raw HTML webpages in the 90s when I was barely out of elementary school. I didn't know anything about IDEs/programs and coded by trial and error. Then I took AP Computer Science in school, but I still didn't have a firm gasp on programming then. The class emphasized coding Java on paper. I can honestly say it made me a better programmer. A degree in Computer Science from Georgia Tech later, here I am.
I originally learned programming from my family and then taught in school and then primarily from reading books. But now, the majority of languages I (somewhat) know comes from Internet guides, samples, documents and training courses.
In the future, I expect the majority of the world programmers will exclusively learn to program through Internet based sources. Especially in the poorer coutries around the world.
The Internet provides more information than any programming book you can buy and you can learn at an excellerated pace and further information and assistance is available to improve your skills. Stackoverflow is one of my primary sources for programming delemas now.
I started with, Casio FX502P and FX602P calculators, using the limited programming facilities (loops, goto, gosub, simple logical operation, ...) on these calculators. Wrote some games for fun and programs to solve Mathematical problems. Then I moved on to get a Genie I, a TRS-80 clone, writing games using BASIC. Bought a PC few years later and learn GW Basic, Quick Basic, Turbo Basic, Turbo Pascal & C. Interestingly, it was mostly for teaching. In the 90s, use DBase III dialect - Clipper to write some software for my clients and started to earn money by programming. Moved to Delphi 1, doing software for clients as well. Now moved up to Delphi 2010 (waiting to get XE4). Apart from native apps development. I also play around with PHP, XML, Javascript, CSS.
I am still using my FX602P at home. I am also running a TRS-80 emulator to show my kids how to do simple BASIC programming. Well, "those were the days" feeling is good for me.
It all started way back when with QBASIC and Wolfenstein 3D. I wrote programs in one and modded the other. In high school I got a TI-83, I could barely pay attention in class as I programmed little utilities to help with my schoolwork. I got into assembly programming the same route, and fast forward to college, where I took a class in assembly programming (the professor had a real passion for the Motorola 68k in 2008 of all years). Ended up making a multiplayer Connect Four game using a breadboard with a 68k on it, routing network code through C to another board connected a different computer. ...
I still program games in my spare time when I'm not doing IT for a space research institute.
I don't see anybody mentioning it yet, so I'll just say my first exposure to programming was a CARDIAC:
http://en.wikipedia.org/wiki/CARDboard_Illustrative_Aid_to_Computation
My science teacher in 8th grade (1977) asked me to look at it. I spent an hour doing a tutorial multiplying two integers using iterative adds. I then told the teacher she didn't want to use these in class.
Later I programmed a Sinclair programmable calculater, BASIC on UGA's Cyber, and finally in 1982, my own Atari 400 (Basic, forth, Action!, assembly).
is an honest answer allowed?
The very first programming experience I had was with FORTRAN II on an IBM 1620 in 1969. The "Compiler" was a box and your ran card deck, you know, punched cards in two passes, to check for syntax errors, and then to generate an object deck, which is what did the real work on the computer. A couple of years later I had access to an IBM 360/67 at Stanford Univ. with a FORTRAN IV compiler on a drum memory, I think. It wasn't until maybe 1974 that I could use a terminal, a teletype, really, to code via 300 baud dedicated line to a remote computer. Around that time I had some access to DEC small computers and begin to use timeshare under DEC OS's RSX-11 and DEC Fortran. By thet time we had dumb terminals. By about 1976 I got access to my first UNIX system and was amazed at the concise commands of the shell. It wasn't until 1986 that I got to learn C. Lately I've been learning lisp and python and relearnig pHp and javascript on my own Linux Box.
I realize that having early access to timesharing systems, after 1974 spoiled the personal computer revolution for me. I had access to relatively powerful systems so that PC's seemed too much like toys to me, I had an Apple II, but after finding its limitations, I used to mostly as a terminal to a much more powerful time shared system. It wasn't until 1995 with Linux that I could come even close to the experience I had with a Sparc 5 running Solaris 2.4 on a PC running Linux.
First thing I ever programmed on was my dad's programmable calculator using BASIC. These came out around 1982 I believe, however I didn't use one until probably '86,'87. It had a 12 digit LCD display, 2KB storage, 2KB RAM
Programming was part of a numerical analysis course. FORTRAN, punch own cards, submit, then pick up a day later. Later BASIC, as part of a summer job assingment.
I got a Casio 9850 and programed it in the broken BASIC that it had. No local variables :/ Globals FTY.
Fist thing I coded was some math formulas I had to use in high school. Couldn't stand to memorize them so I made some little programs to show and resolve them since it they didn't come in the ROM. Up to that point I was a heavy computer user but never was never interested in writing code. From then on I have made a career of it. No money for a decent TI at the time - too expensive compared to the Casio - so I had to make due.
The first Unreal game was relatively unique at the time, coming with a built-in map editor, and a scripting language, UnrealScript; the former of which I played around with out of curiosity, and the latter of which I could never make any sense of.
Used to play online a lot (was 13 or so at the time), and someone found a bug/exploit which started to ruin online play; had a vague idea where this might happen, from my previous attempts at reading the code (a masochistic exercise, mentally exclaiming "what the fu-u-uck does that mean?" "what??" "uhgghhgg??", as I re-parse the same line again and again, 10-20 minutes at a time), and eventually managed to strain hard enough through mental constipation, to fudge a fix for the bug, which gained much appreciation online.
A bit more than a decade later, and I've fudged my way into being a game programmer for a living :)
I learned from an IBM 7094 Operations Manual in 1963 at U. MD. I was an operator. There were a few computer science courses but no degree program yet.
OMNIMON - Atari 800. Breaking into games, changing addresses, get more lives, repeat/rinse. After a while, learning how to EAEA instructions to not have to change those lives all the time, then learning how to disable the sprite hit/miss return stack so sprites had god mode. I was hooked. Alot of this was from my head and some friends on BBS's that screwed around a little / dabbled. Got a 6502 assembler book, soaked it in. Then played with basic cartridge (used omnimon to look how that cart interpreted simple statements into code (never got far with that but bits and pieces allowed me to progress). Removing protection from games to move the games from the disk to my humongous 1-2 mb CPM hd's attached to the 800 via the box-in-a-box ataricpm disk controller [ATR8000?] (trying so hard to remember what it's called and too lazy to find it in my garage). that got me into trainers later on and a tiny bit of cracking.
Ended up giving up on assembly for the most part because I could never understand the code when I came back to it weeks/months later. Basic OTOH I had little issues with. A friend, nay many friends said my usage of basic was stupid cause it would never amount to anything, but push forward 15-20 years, it was the defacto scripting language for all the office products (access, excel, word, etc...) and I got good (very) at it. visual basic, databases, and access was my demise tho and after a full year of programming, giving up my IT deskjockey job, I realized my ADHD was not meant for instantaneous programming, that it was more of a "get in the mood" kind of thing that was very dependent on my mood/attitude, and stress/deadlines did NOT help and I could never coerce it.
So, I went back to IT, got lucky and was able to work with networking (don't count the IT work I previously did with netware :) ) and I was always able to find my early programming talents (what there was) to be of use. Whether it was using linux, which I devoured whole starting in 94 and using bash to make scripts, to html, to wiki's, formatting, IOS, scripts to update code on routers/firewalls, BIGIP/3dns, scripts to update tables, etc etc etc.... I just used it as a tool in my bag of tricks to solve problems and avoid repetition, which, to an ADHD person is the black zone of lost concentration.
Haven't worked since 2008 (quit right before market tank) and boy do I regret that since I haven't had to the courage to look since and don't think at this point I will. *sigh*. that's why AC. depressing. This whole topic brought back alot of nostalgia.
Cheers
M.O.S. forever! :}
Started when I was assembling test equipment which included an HP 1000 computer for the engineer to write programs to control the equipment. Picked up a manual and taught myself basic. Was offered a position in the software group when the department head saw me programming late evening. Started with assembly language(2 registers ), Fortran, to write/enhance device drivers. Converted assembly code to 'C' and changed major to CPSCI and never looked back.
I was given a book about programming in BASIC and an account on a PDP 11/45 and left on my own. That was about 40 years ago and I've made a good living coding ever since.
/steve
In college, I took some initial programming classes - in my case, the language was Java.
Then, after I got into the industry (I'm an admin), some simple visual basic for a few business integration apps. Nothing 'huge' in the sense of complexity but 'huge' in the sense of business process. Two asp webpages with about 20 lines of code between them and the company had automatic tracking number lookups from their desktops whereas before it required bumping the shipping clerk off of their machine to do the same thing.
It's not about good code, it's about the right code used in the right place.
Now, it's ..sql, bat and .ps1 scripts mostly but it's for the same effect - email signature automation, logon scripts, printer defaults, etc.,... If you think .sql, .bat and .ps1 scripts aren't 'programming', explain why I am asked to edit/fix the mistakes of my co-workers that do 'programming' of websites and other such 'development'.