# WHen did you learn what language or what CS field.

1. Jul 3, 2007

### neurocomp2003

Because of all the posts that ask what language to learn first...I was curious in what order did people learn their languages first and if you would like to include also a list of CS fields that you have gotten to know if you would like for example AI, Compgeom,compGfx,numericals,gui etc.

Also include which language you prefer these days and what you use it for would be great.

for me:
=> pascal[gr9-11]
=> C [gr13-yr1,took me forever to learn pointers because i didn't have a good
grasp of memory or computer architecture]
=> maple[yr1-2]
=> matlab[yr1-yr4 ...used for alot of my projects including my RAship]
=> C++[between yr5-Msc yr1]
=> mpi,openmp,charm++[MSc yr1, still in progress for HPC]
=> makefiles[MSc yr1, still in progress ]
=> python [MSc yr1, still in progress ]
=> java [MSc yr1, still in progress,i'm getting very frustrated with java file layouts]

My preference is to C/C++ OO/functional hybrid for HPC using mpi or charm++.
Current use HPC rendering and N-body stuff.

2. Jul 3, 2007

### ranger

>>Sophomore year; C
C is my first language and because of this its my favorite. I actually did most of this stuff in high school (self study), but relearning it was fun. I use C because I write programs that interact with external hardware that I design. The program would generally have the following functions- data acquisition, data analysis, data presentation, and cater to whatever user interaction is necessary.
C is great for me because it is close to the hardware, good I/O capabilities, fast execution time and uses little memory space.

I dislike C++. I never really use it for any tasks that I use C for. Then again, I havent really ever needed its objected oriented approach. Currently I'm purely a structured programmer.

Junior year; Assembly
Needed this to understand other courses in computer architecture. I havent done any major applications with this as yet. However, one of the courses next semester will focus on device drivers.

Junior year; Verilog
I was actually given the choice of VHDL or Verilog. I chose verilog because being a C programmer by nature, its syntax was most friendly and easier to understand. VHDL's syntax is based on Ada; it looks horrid :yuck:

Python
Currently self studying this. I need to compliment my knowledge of a heavy duty language (C). Haven't had much use for this yet.

Java
I self studied this last year. It has horrible syntax, its bulky, horrible execution time and really big executable binaries. I'd rather use C++.

If you count linux bash scripting as a language, then I also know that. Need it for automating systems tasks.

Overall, I lean towards C, simply because of the nature of my studies and its requirements.

Last edited: Jul 3, 2007
3. Jul 3, 2007

### chroot

Staff Emeritus
Well, unfortunately, my programming "career" spans almost two decades. Many of the incredible languages available today simply didn't exist back then.

Here's my list:

• HyperTalk, around 1985. I was only seven years old, but I had a book. The language itself was so simple that an average child could literally understand large parts of it. It consists of statements like this:

Code (Text):
get number from field two
put it into myVariable
• C, around 1990. I learned entirely from code snippets in books like Inside Macintosh. The Internet didn't really exist then, though I did have a 1200 baud modem I used to connect to some developer-centric bulletin-board systems. Because of my limited resources, I had only a couple of books. In contrast, most professionals at the time had a library of books easily worth a few thousand dollars. As a result, my code was extremely bad! I'm talking pages upon pages of global variables, and single functions fifty pages long. I did figure out insertion and selection sorts on my own, out of necessity. I guess that was rather good for a 12 year-old with one book.
• C++, around 1992. I understood the syntax, and was comfortable mimicing the style of other people. I didn't really understand the design principles or the point of OO programming for several years. I think I first looked over Design Patterns by the Gang of Four sometime in 1994.
• Java, around 1995. I actually learned Java because I was hired by a tiny no-name "company" to teach the language to other students at my high school. It was a pretty bone-headed idea, but gave me the impetus to learn Java, and gave me an excuse to hang out with my friends and program all afternoon. At this point (age 16 or so) I was able to write reasonably sophisticated AIs (and GUIs) to play games like checkers and chess. The internet was in full force, and I was able to learn a great deal from it. I used to be one of Java's biggest cheerleaders, until I basically stumbled across better languages.
• Perl, around 1996 (I think). I was in my last year of high school, and bought the camel book on a whim at a bookstore near my house. I quickly decided it was the best language that had ever been written, but realized I was very wrong a few years later. My favorite Perl anecdote was a class in my junior year that just briefly touched on Perl for a few weeks. We were required to write a Perl program that would read in standard input, count the number of times each unique line of input occured, and then print out the top ten most frequently occuring lines, in order of occurrence.

Most students had programs pages and pages long that didn't even work properly. I turned in this:

Code (Text):
while (<>) { $hash{$_}++; }
@sorted = sort { $hash{$b} <=> $hash{$a} } keys %hash;

for ($i = 0;$i < 10; $i++) { print "$sorted[\$i]\n";
}
I got the assignment back with a question mark on it, because the grader had no idea how it worked. :rofl:
• Python, around 2005. This language has totally captivated me. I have virtually no interest in doing work in most other languages at this point -- they're just too cumbersome. I'm not exactly an "expert" Python programmer at this point, but I'd say I'm at the 90% mark, meaning I'm comfortable with 90% of the language's features and standard library.
• I began studying MATLAB and Mathematica around 2001. I don't consider these general-purpose programming languages, and they're comparatively simple. As a result, I don't think they really 'count.'
• Shell scripting was pretty much automatic. I don't even bother keeping that crap in my head, since 'man bash' is almost all you'll ever need anyway. Same with Tcl.
• I don't consider Makefiles to be a programming language, either. 'info make' is all you need for 95% of builds.

- Warren

Last edited: Jul 3, 2007
4. Jul 3, 2007

### neurocomp2003

isn't makefiles a subset of shell scripting? Wow 7 yrs old...i gotta ask do your parents/guardians/siblings code too or are related to the field or academia. But thenagain that is for another thread.

5. Jul 3, 2007

### chroot

Staff Emeritus
Well, I'll answer that one briefly, neurocomp. My Dad essentially got suckered into buying a Fat Mac (the original Macintosh, but with more RAM) back in 1984 or 1985 for his pharmacy. It turned out that the Macintosh was useless for his business, but he noticed that I was very excited about it... so he gave it to me. It may well be one of the most influential blunders of his life. I spent a few years playing with MacPaint and playing silly games. At some point I was playing some HyperCard-based game, and accidentally double-clicked on something and saw some of the underlying code. I didn't understand it immediately, but I was captivated. Around the same time, I stumbled across an advertisement for the Charlotte (NC) Apple Computer Club, and started attending their meetings. It turns out they had a Programming special-interest group, and I began attending those in earnest. I would thank specific people by name, but won't for privacy reasons. Suffice to say that a few people there put me on the right track, told me the right books to buy, and off I went.

- Warren

6. Jul 3, 2007

### haki

Just one quick question: What do you think about the reduce() in python? Should it really be removed?

7. Jul 3, 2007

### chroot

Staff Emeritus
Another off-topic question. I don't think the reduce() function should be completely eliminated, but I think it should certainly be taken out of the default namespace and put into a module instead.

- Warren

8. Jul 4, 2007

### rcgldr

Ok, I've moved my stuff here:

QuickComp - pseudo machine language on a drum memory based computer (1968)
Fortran IV - on IBM 1130 and IBM 360 (1969->1972)
Assembler - on CDC 3150, IBM 1130, IBM 360 (1970)
Cobol - on CDC 3150 (1970)
Wang 720 - programmable calculator (1971)
Assembly - HP 2100 (later 1000 series) (1973->1975)
APL - IBM 370 (1975->1976)
Assembly - Computer Automation Mini (1975)
Assembly - Data General Nova 1100 (1976)
Assembly - GTE/IS 2901 based micro (1977-1979)
Assembly - Z8 (1979)
Assembly - PDP-11 (1979)
Assembly - Z80, 8085 (CPM), 8088 (CPM-86, PC-DOS), Motorolla 68000 (1980->1987)
Assembly - 80x86 (PC apps, Xenix) 1987
C - Motorola 68000 (Atari ST) (1987->1993) (MAC - 1989)
C - Windows (1990->present)
Assembly - ARM processors (1999->present)
C - ARM processors (1999-> present)

Some trivia - classic names for binary operations:

Selective Set == inclusive or
Selective Complement == exclusive or
Selective Clear == and with inverted mask

Last edited: Jul 4, 2007
9. Jul 4, 2007

### -Job-

I started with Flash (Actionscript/ECMAScript) when i was a Biology major, and then eventually moved to CS.

• Flash Actionscript/ECMAScript
Did some games, chat apps and other multiuser applications
• ASP (vbscript)
Old ASP with vbscript, glad i don't have to use it anymore
• JAVA
First language i learned at school and one of my favorites, simple yet powerful. Have done some server apps, an audio mixer, a peer2peer app. It's the language i go to for experimenting new concepts and ideas.
• C
Had to learn by myself for school, since i was allowed to skip the C++ class (for no good reason). So i came into my Operating Systems, Compilers and Networking classes knowing nearly no C and having to write OS system calls, compilers and a multithreaded web server in C.
I do like C alot though.
• Assembly - 8086 - My compilers teacher had a first week assignment of doing a recursive quicksort in 8086 assembly when no one knew the language.
It was very educational.
• Javascript/AJAX
Because sometimes Flash/Java isn't necessary and Javascript is more widely available.
• VB.NET/J#.NET
Moved into ASP.NET. Initially started doing ASP.NET with J# which is essentially Java.NET. I gradually started to move to VB.NET instead of J#, and it became my .NET language.
• SQL
Started with MySQL for a project a school and eventually moved to TSQL with the Microsoft SQL server. I use it everyday at my job. 50% of the code for server applications i do nowadays is at the database server.
• C#.NET
I got a job doing C# and it has become my everyday language. No complaints. C# is a better Java and VS2005 is a better Eclipse, in my opinion of course.
• C++
Only because i had to at my job, not a fan. I far prefer C.
• PHP
Since i do so much ASP.NET at my job i decided i should do PHP at home. I already knew some PHP by now, but only recentely have i started to take it seriously

C# ranks as my favorite language at the moment (maybe because i use it so much) with Java and C closely following.