|Lojban Doesn't Count
||[Jan. 25th, 2009|12:18 am]
Brian Danger Hicks
|||||The Presidents of the United States of America - Kitty||]|
So, I was trying to think of all of the programming languages I've used or learned in my life, and I think this is a pretty complete list. I've included markup languages and hardware definition languages at the end, which people may or may not consider programming languages. I'm pretty sure many of you could make more impressive lists, but I doubt many of you will have all of the ones I have:
BASIC/QBasic/TI-BASIC - I remember as a kid getting the 3-2-1 Contact magazine, which had some BASIC code in it that my brother would sometimes copy onto our computer. I remember the first program I wrote with this was just a whole bunch of print commands to make some ascii art. Sometime later I learned some QBasic by reverse-engineering the example programs and made some simple programs. I used TI-BASIC a bit on my grandfather's TI-85 one Christmas (my brother got a graphing calculator for Christmas so I borrowed my grandfather's while we were visiting). A few years after that, I got my own TI-86. All of the programs I made in TI-BASIC were pretty simple. BASIC cropped up again when my family got an old TRS-80 Model 100 from my other grandfather, and I did a bit of programming on that, mostly just as a time-killing thing.
Turbo Pascal - One Christmas I got a Pascal book as a present, because I had been complaining that all of my QBasic programs had to be run from the IDE instead of getting compiled. I wrote a few programs in this, nothing too fancy. I remember reading the Pascal book was the first time I had ever heard of integers, well before I ever got to them in math class, and it took me a while to figure out what the author was going on about.
C/C++ - I've taken up C several times during my life, with varying degrees of success. The first time, I borrowed my Dad's copy of The C++ Programming Language by Bjarne Stroustrup, although I never got very far that time. After I had gotten into Linux I got a copy of Practical C Programming and made it relatively further in that before I lost interest again. Eventually in college I took a class that included C programming and learned about mallocs and such, although that faded some over time. I took another stab at programming in C going through the GTK programming docs online, but I don't think I ever got past putting a few buttons on a window.
Java - In high school my brother and I learned some Java out of one of those teach yourself X in Y days books. My brother got a lot further on that than I did, and my interest petered out somewhat quickly.
Bash - Not a whole lot to say here, I started using Linux, so it pretty much follows that I ended up doing some bash scripting.
Assembly - As part of the same college course that I learned C, I also learned some assembly language on a somewhat hypothetical processor that only existed in an emulator program for teaching purposes. The upside of learning Assembly for that was that I finally figured out how you go from digital logic to a general purpose computer. A semester or two later I took a microcontroller course where we did m68k assembly, and my computer architecture course had another machine that didn't exist outside of a verilog simulator.
Perl - The first time I really used Perl was when I was playing around with mooix. I pretty much just reverse-engineered bits and pieces and supplemented that with google searches and managed to make a few somewhat interesting things. Mooix is the only open source project that I have ever actually contributed code to, although some of it had to get cleaned up a lot. Later after I started working I used Perl some more, at first it was still just whatever bits I had pieced together, but eventually I took a Perl course that was offered at work, plus they gave me some O'Reilly books. I still have to maintain and write bits of Perl code, but I don't have to deal with that too often.
TCL - I use this a lot at work as a language to, you know, command tools. I mostly just figured out how to program TCL from reverse engineering other people's TCL scripts, although I've also got some information from some training slides for a class I didn't go to and the manual pages in one of the tools I use TCL for. I'm still using this a lot, but it looks like I won't be using it as much in the future.
Python - I started learning Python late last year, and I've been slowly progressing along. I bought a copy of Dive In To Python, which was somewhat refreshing after other programming books. I've managed to do a few somewhat useful things, and this time I have a few projects I want to do with it, so I've got a bit more motivation than back when I was in high school ("It's summer and I'm bored").
MOO - Recently one of the guys on IRC set up a LambdaMOO instance, and learned some of the programming language for that. So far all I've done is try to re-implement stuff I previously did in mooix. I'm not sure how much I want to do with this, at least with mooix I was learning a language that I used again elsewhere, which isn't going to happen with LambdaMOO
HTML/XHTML - I first learned HTML in high school at first from looking at the source for webpages, and eventually I had some class that went over a bunch of basic stuff. I made and then re-made homepages for myself in highschool and some in college. Last year I figured out some bits of XHTML and re-did my webpage a bit, which I had been meaning to do for quite some time. Since I learned HTML back in the 90s and didn't deal with it much afterwards, I'm not really all that up on stuff like CSS
LaTeX - I learned a bit of LaTeX in college, which I used to put together various papers and homework assignments. My LaTeX knowledge is somewhat limited because the only time I was motivated to learn LaTeX was when I was formatting my assignments at the last minute before they were due. I also put together a LaTeX formatted resume, which I never get to use because everybody wants it in a Word format.
SVG - Between the W3C documentation and looking at the source, I've pieced together a fair amount of SVG knowledge, and thrown togther far too many stupid SVG tricks for my own good.
Hardware Description Languages:
Verilog - They taught Verilog in my computer architecture course in college, where I learned off of a pre-release PDF of a book some of the professors at the college were writing (although the instructor of the course was not one of the writers). Most of the actual digital circuits I deal with at work are done up in verilog.
VHDL - A semester or so after I took the computer architecture course, I took, a digital logic course where we programmed FPGAs in VHDL. I remember wasting several hours in the lab for that because it didn't synthesize my edge-triggered logic the way I had expected. At work I've dealt a little with VHDL, mostly in legacy testbench code.
System Verilog - I learned a bit of System Verilog at work while I was trying to make a testbench, although I never did finish up work on that because I kept getting interruped with higher priority tasks and eventually the testbech was handed off to someone else. I expect that making testbenches in System Verilog is something I will have to do again.