Re: What languages to learn?
by bikeNomad (Priest) on Jun 19, 2001 at 21:28 UTC
|
Squeak/Smalltalk is a good choice for getting a feel for OO programming and design. The class library, while huge, has some interesting gems in it.
You would do well to pick up different kinds of languages so you can learn their important ideas. Broadly speaking, most of the "common" languages out there hail from the Algol or Simula camps (C, Pascal, Modula 3, Ada, C++, Smalltalk, Perl, C++, Java, ...). There's also the Lisp family (I'd probably look at Scheme or Common Lisp (which includes CLOS, with its nice support for OO)).
And then there's the functional languages (Prolog, ML, Haskell) that will provide a totally different way of looking at things.
You might also look at assembly language for a couple of processors (do something with a little microcontroller for kicks), and at Postscript, which is interesting from a language point of view (kind of like FORTH with some data types). And maybe APL or J for another completely different view of languages.
This chart diagrams the history of computer languages and has some links to other such charts.
update: clarified CLOS | [reply] |
|
I like the assembly suggestion, but it's a bit too much like work. At the moment I'm writing code for a Texas Instruments VLIW DSP. Most of it's in C but you have to be able to understand the assembly when the compiler screws up (as it often does). VLIW assembly code is a bit of a brain-melting experience.
On the other hand I can highly recommend microcontroller assembly as a fun way of learning about the opposite of high-level languages. PICs, with their 30-odd instructions, are the ones I've played with.
Lisp scares me, which probably makes it a good choice to learn next. I might even eventually be able to configure emacs!
--
Kevin O'Rourke
| [reply] |
|
...Common Lisp (and CLOS (its object extensions))
Just nitpicking, but it's a little bit misleading to refer to CLOS as an "extension" to CL; after all, it's part of the standard (and one of the primary reasons that people use CL, too).
| [reply] |
Re: What languages to learn?
by dragonchild (Archbishop) on Jun 19, 2001 at 21:03 UTC
|
While people are right and learning more languages will broaden your horizons in terms of learning what features a given language may emphasize over another ...
*sighs*
A given language's syntax is, well, just that - syntax. I learned how to program in Pascal. I have never written a line of Pascal since I finished CS210 at the end of my freshman year in college. In fact, I can count on one hand I've seen Pascal code since then, and that was 7 years ago.
However, I learned proper programming style, and that was much more important. Since then, I've learned 3 languages to competency on my own, each in less than a month, and have been able to edit in at least 2 others. I'm not trying to boast here (especially cause that's really not that impressive - too many other monks would beat me out without trying! *grins*) The conclusion I've come to is that a given language is just syntax - it's a toolbox. Nothing more. What's important is that you use a screwdriver as a screwdriver and not an awl. (Though, in a pinch ...)
If I were you, worried about your skill level (for whatever reason), I'd start working on crazy problems. Do a bunch of obfuscations or play GOLF. Take a project you've worked on and bloat with with a ton of feature creep. Or, get out of the procedural languages and go learn a functional one. LISP is touted by a number of monks. Or, go do some sysadmin work. I built a Linux box this weekend, in large part so I could expand not my coding skills, but my understanding of how programs are used. What makes a device driver? What makes a kernel? Why was it built that way? I can then use what I discover there to aid other programs I write.
<disclaimer>Now, while I feel that Pascal is a wonderful teaching language, seeing as it was designed as such, I'm not saying that only people who learned to program in Pascal are good programmers, nor am I saying that learning in Pascal will make you a good programmer.</disclaimer> | [reply] |
Re: What languages to learn?
by bluto (Curate) on Jun 19, 2001 at 20:58 UTC
|
If you want to broaden your view quite a bit, and have the time,
you can learn strange (but useful) things that
many current languages skimp on from some of these...
Lisp You can learn this over time. Just grab
a copy of emacs and hack your own commands
as you need them. Plenty of code comes with
it.
Snobol/ The Perl of the 60s, as far as pattern
Spitbol matching goes. My grad advisor, Ralph
Griswold came up with this. I seem to
remember Spitbol had a construct of
"compiling" code at runtime similar to
Perl's "eval".
Icon Another Griswold invention of the late 70s
early 80s. Check out generators (similar
to closures). It had backtracking, but
not just when matching patterns.
| [reply] |
Re: What languages to learn?
by mirod (Canon) on Jun 19, 2001 at 20:54 UTC
|
The usual suspects include Python, Ruby and java.
If you want to learn languages with a different feel than than Perl you can try Lisp or Prolog, XSLT could be interesting too.
| [reply] |
Re: What languages to learn?
by Sherlock (Deacon) on Jun 19, 2001 at 21:03 UTC
|
Frankly, I think one of the best languages you can learn would be C++. It's a very powerful language and it gives the programmer a lot of power to do all sorts of good (and bad) things. Unlike scripting languages, you'll need a compiler to get started. One word of warning if you decide to delve into C++, it's a complicated language and it is not horribly easy to learn. However, I think that if you can get a really good feel for a language like C++, you can very easily pick up other languages, such as Java. A lot of programming languages today seem to have some sort of background coming from C or Pascal. If you can learn a little bit of C++, I think you'll find that learning other programming languages will be easy.
I'm not trying to say that C++ is always the most useful language in the world (especially in the world of web) but, from an understandability point of view, if you can understand C++ well, I think you're well on your way to understanding a lot of other programming languages.
Skepticism is the source of knowledge as much as knowledge is the source of skepticism. | [reply] |
Re: What languages to learn?
by John M. Dlugosz (Monsignor) on Jun 19, 2001 at 23:02 UTC
|
Someone already mentioned Prolog, and I agree it's good to "learn" totally different ways of doing things, even if you never use that language to write real products.
Taking that to more of an extreme, check out Intercal, a language whose whole charter is to do things differently than any other language. It was supposed to be a joke, but why do the concepts seem to be less than funny today? The way conditional execution is performed by turning off specific lines, rather than jumping over them, sounds a lot like Intel's new 64-bit chip. The way you can disable specific commands sounds a lot like "sandbox" security environments as seen both in Perl and Java. It goes on and on.
Read it and get a good laugh. But read deeper and see that the way we do things is really a very narrow, even provincial, viewpoint.
—John
| [reply] |
Re: What languages to learn?
by clemburg (Curate) on Jun 20, 2001 at 12:43 UTC
|
| [reply] |
Re: What languages to learn?
by dimmesdale (Friar) on Jun 19, 2001 at 21:44 UTC
|
Here's my input.
C/C++: Either one, really. C++ is powerful, and its ability to make ADTs is useful; coming from perl, it should be relatively simple to learn the basics--though beyond that you're on your own(or so I figure; the other way around, C/C++ -> perl wasn't too difficult).
Assembly: Not only can this be used in C/C++ directly, via _asm(or __asm), i.e., the inline assembler, but it offers a *great* glimpse at the inner workings of the computer--not to mention that it is FAST. Even if you don't plan to program in assembly, learning it can help you write better code(boolean algebra, etc., check this site out for basics: http://webster.cs.ucr.edu/Page_asm/
ArtofAssembly/ArtofAsm.html
| [reply] |
Re: What languages to learn?
by Torgo (Beadle) on Jun 19, 2001 at 23:24 UTC
|
Believe it or not, JavaScript may be a good language to learn at this point. Despite its common bastardized usage and rather tarnished image, it is a useful client-side companion to Perl CGIs. It's also a good thing to learn now, since Perl 6's object structure is going to look very, VERY similar to JavaScript's.
--
I write the code while the master is away!
| [reply] |
Re: What languages to learn?
by LD2 (Curate) on Jun 19, 2001 at 21:02 UTC
|
Why not try your hand at Ruby? I haven't had a chance to really play with it yet... but from what I've seen of it, it looks interesting. Also, I think Java and JSP would be fun to play with.. but that could be just me. | [reply] |
Re: What languages to learn?
by frag (Hermit) on Jun 19, 2001 at 23:44 UTC
|
| [reply] |
Re: What languages to learn?
by busunsl (Vicar) on Jun 19, 2001 at 20:42 UTC
|
| [reply] |
Re: What languages to learn?
by scott (Chaplain) on Jun 20, 2001 at 06:29 UTC
|
| [reply] |
Re: What languages to learn?
by wendigo (Initiate) on Jun 20, 2001 at 01:55 UTC
|
Another nifty language to learn is ML. It's a
well-designed functional language that will help you
to understand why having functions as first-class objects
is so useful. I would recommend the SML implementation and
book "ML for the Working Programmer".
| [reply] |
|
| [reply] |
Re: What languages to learn?
by Anonymous Monk on Jun 20, 2001 at 18:55 UTC
|
I agree with the Javascipt suggestion.
Not only will it be great help for the CGI stuff, but it'll teach you OO as well.
If you persevere long enough to write cross-browser compatible stuff, you'll have used just about every trick in the book (it'll do your brains in :), which will help with everything you do afterwards. | [reply] |
|
Go buy a spectrum and do some Z80 assembly.
| [reply] |
Re: What languages to learn?
by sean (Beadle) on Jun 20, 2001 at 06:09 UTC
|
This article is pretty good lisp propaganda. It's convinced me to at least check it out and see what i'm missing out on.
--sean | [reply] |
Re: What languages to learn?
by sierrathedog04 (Hermit) on Jun 22, 2001 at 04:39 UTC
|
Here in the Washington, DC area some people are talking about Java as if it were going to replace Perl someday. I doubt it, but I think for now a person equally skilled in Java and Perl would get more Java job offers.
| [reply] |