227 Comments
- DaWolfman, on 10/12/2007, -7/+28It's his opinion based on his experience with the languages. You have your own oprinion, right?
- tobias1482, on 10/12/2007, -2/+19Linux is a poor example. A basic operating system kernel can be really tiny. Think embedded systems.
Most CS degrees offer classes where you write an operating system during the semester and mine really wasn't that big. - Juvenall, on 10/12/2007, -2/+18I got a big kick out of his comparison of Perl to "that Sperm Whale that exploded in the streets of Taiwan over the summer". I've been programming in Perl for 8 years now and I couldn't have thought of a better way to describe it.
Digg for truth. - tynin, on 10/12/2007, -4/+20What he said about C++ was funny, but hurt at the same time... how dare he say those things about my 2nd wife that helps me pay the bills :( but still, it was a good read. thinking about looking into ruby now.
- manfesto, on 10/12/2007, -5/+20We should be able to mark a story "flamebait." But I think I'll just use "innacurate" - I think blanket statements when it comes to such a big issue warrant being labeled as such.
- Bogtha, on 10/12/2007, -5/+19This is an awful article.
Firstly, the writeup is completely misleading. It's an overview of various languages, not a list of "must-learn" languages.
> You just have to know C. Why? Because for all practical purposes, every computer in the world you'll ever use is a Von Neumann machine, and C is a lightweight, expressive syntax for the Von Neumann machine's capabilities.
So? A hundred other language are the same. The connection between Von Neumann machines and C is so tenuous I suspect he wanted to fit that in somehow just so he can sound smart by explaining what a Von Neumann machine is. You can boil the whole thing down into "learn a procedural language, because that's how computers work".
> Anything significantly different from C is going to be too far removed from the actual capabilities of the hardware to perform well enough, at least for an OS
But 99% of all programmers will not ever need to write an operating system, and what language operating systems are written in is basically meaningless if all you are doing is writing applications that will run on them.
> object orientation is in no small measure about making your programs know about themselves.
No, it isn't. It's about wrapping up data structures and methods that work with those data structures together. Everything else is an implementation detail.
> C++, on the other hand, is essentially un-parseable
I know that's not what he meant to say, but it's an exceptionally stupid thing to say anyway. If C++ was unparsable, you'd never be able to compile a C++ program. Think about it.
> C++ is dumb, and you can't write smart systems in a dumb language.
Nonsense. All Turing-complete languages are the same in this respect. The limitations a dumb language brings are limitations on the effectiveness of the programmers involved, not the complexity of the program created.
> It's all C++'s fault. Don't argue. It is. We're using the dumbest language in the world.
There's a saying about bad workmen and tools that I think is appropriate here.
> Lisp
Correct me if I'm wrong, but wasn't that just an EMACS fanboy raving about his favourite toy, with little connection to LISP?
> Java
99% of that is an "I think it's over-hyped" rant.
> Until roughly, oh, now, [Perl] had no real competitors.
> Well gosh, what about Python, a nice language that has patiently been waiting in the wings for all these years? The Python community has long been the refuge for folks who finally took the red pill and woke up from the Perl Matrix.
Which is it? Has Python been around for years, or did Perl not have any competition until recently?
> [The frost thing].
That has to be the worst writing I have seen this year. Bar none. I have to quote it all:
> But in my opinion, it's really the frost thing that killed Python, and has prevented it from ever achieving its wish to be the premier scripting language, or the premier anything language, for that matter. Heck, people still use Tcl as an embedded interpreter, even though Python is far superior to Tcl in every conceivable way — except, that is, for the frost thing.
> What's the frost thing, you ask? Well, I used to have a lot of exceptionally mean stuff written here, but since Python's actually quite pleasant to work with (if you can overlook its warts), I no longer think it's such a great idea to bash on Pythonistas. The "frost thing" is just that they used to have a tendency to be a bit, well, frosty. Why? Because they were so tired of hearing about the whitespace thing!
Babbling on about "permafrost" for over a hundred words in two paragraphs, and he only finally explains what he means by "permafrost" at THE END? He veers off into talking about TCL, comes back and acknowledges that he isn't explaining himself well, and then ignores the "what's the frost thing?" question *again* to talk about how he's mean to Python.
Did he not proof-read this? The whole thing reads like a stream of consciousness that he typed out and saved without even looking at it once himself.
> For some reason, though, my true feelings only seem to come out during insomniac attacks between 3am and 6am. Time for bed! 2 hours 'til my next meeting.
That explains everything. He's not a complete idiot, just suffering from sleep deprivation. - inactive, on 10/12/2007, -2/+14Good thing I would never want to work for you.
PHP is only relevant if you're expecting to do webbish stuff. Is that all you ever want a programmer to do?! Sheesh. - 9mmCensor, on 10/12/2007, -1/+12Dont learn a _programming language_. Learn how to _program_.
Languages are unimportant when learning how to code, learning how to code is important.
Once you know how to program, pick the language for the project that is the best fit, and work through the syntax, and get it done. - swax, on 10/12/2007, -19/+30it must be a joke because its biased as hell.
- burke, on 10/12/2007, -1/+11<flamewar>
<flamewar_init>
f*** you, stop commenting and go program something in *****, the best language ever. It's far better than sissy languages like C , Ruby, Lisp, Scheme, Java, Python, and Perl -- combined.
</flamewar_init> - inactive, on 10/12/2007, -4/+12I'm so tired of programmers telling other programers what languages they should and should not use or know.
I've coded in C, C++, Java, Perl, Ada and Lisp. I've spent the last 10 years programming mostly in Perl. The decision wasn't made based on what was new, what was hip or any of that nonsense. Its on which language got the job done best and was easiest to maintain.
Any manager who questioned language selection were told "languages are easy to learn, figuring out some bizarre coding done in the wrong language isn't." - fourtythreek, on 10/12/2007, -0/+8*****, really a brilliant exercise for those who like to try new things. http://en.wikipedia.org/wiki/*****
Don't forget some other memoriable, and nearly useless in the 'real world' languages,
Chef - http://en.wikipedia.org/wiki/Chef_programming_language
Whitespace - http://en.wikipedia.org/wiki/Whitespace_programming_language
Weird - http://en.wikipedia.org/wiki/Wierd_programming_language
Var'aq - http://en.wikipedia.org/wiki/Var%27aq
Null - http://en.wikipedia.org/wiki/NULL_programming_language
Thats just to name a few. Tons more listed in Wikipedia's Esoteric programming languages category, and I'm sure many more out in the wild.
http://en.wikipedia.org/wiki/Category:Esoteric_programming_languages - duality, on 10/12/2007, -5/+13I don't know...he didn't care much for Python, it seems. Mostly, it was the whitespace issue. Heck, even ESR hated Python for the whitespace issue when he first discovered it, but he got over it later (when he actually started USING Python). In my opinion, Python is a great language, as long as you try not to use its object-oriented features, and if you can blissfully ignore the fact that it doesn't have a ternary operator.
Of course, I'm a big fan of any language where I can write something and half-expect it to work the FIRST time I try it. Python is excellent for this. C comes close, after you've built up a bit of experience with it (and when pointers confuse you less). Java is okay, but it requires you to take the long way to perform some simple tasks (e.g. what you could do with references).
Perl? Not unless you're really really good. C++? Ha! I'll keep the references and the function and operator overloading, and then I'll write my C++ programs in C, thank you very much.
(As for the others, I haven't tried Ruby yet, but Scheme is actually a lot of fun, even if I don't actually use it for much.)
[[Note: Digg's spell-checker really ought to include the word "whitespace".]] - Dangerman, on 10/12/2007, -4/+10Okay everybody, considering the topic this discussion has been entirely too civil. Can we have a flamewar now?
- boohiss, on 10/12/2007, -5/+11No mention of .NET, of course. He wouldn't dare mention an MS product lest he lose all his street cred.
- fourtythreek, on 10/12/2007, -3/+9Give Why's Poignant Guide to Ruby a try. A little humor with your learning never hurt.
http://poignantguide.net/ruby/
Actually the site seems to be having some trouble right now, but take a look later. - bpapa, on 10/12/2007, -5/+11Huh? There are plenty of jobs out there for things like PHP programmers or Java programmers.
- fu_fish, on 10/12/2007, -0/+6If you want to get involved with high-performance computers or scientific computing, you must be familiar with FORTRAN. An astonishing number of codes are still written in FORTRAN and there's an enormous amount of legacy FORTRAN code. Say what you will about it (yeah, I don't particularly like it either), but in HPC and scientific/mathematical applications, FORTRAN is still the language to know. I realize, this is a niche, but if you want to be part of this niche, FORTRAN owns it..
- benig, on 10/12/2007, -2/+8His comments on C++ are so woefully ignorant of its capabilities that it's sickening. The ability to remain at a low level to the system, while still having OOP capabilities is very important in designing on non-PC systems.
- 5blocksfree, on 10/12/2007, -0/+6Why is C/C important for a java-related job? Is it just one more way to toss in an arbitrary and irrelevant component by which to "filter" those seeking work?
- Herolint, on 10/12/2007, -3/+8I welcome you to your attitude. The more C#/VB programmers there are out there the less compitition I have. :)
Seriously though, I think your attitude towards programming languages is flawed. In spite of the fact that most of us aren't builders, construction metaphores seems to be understood better than technical geekery, so I'll use one here.
Limiting your understanding to one language is like being a carpenter and limiting yourself to one tool, say a hammer. Sure you can pound nails quite well, but unfortunately, the creation of a building requires other specialized tools (e.g. saws, drills, screwdrivers, trowels, etc). So, you show up to work and start hammering nails and everbody thinks you are amazing. However, when it's time to cut some 2X4 studs and you start hacking away at them with the claw of your hammer, two things are going to happen. Your efficiency has been eliminated, and everybody thinks you are an idiot.
Also, if you tie yourself to one language, you never really learn how to program, but instead learn the quirks of that one programming tool or environment. Then, when that tool ceases to be popular, or is dramatically changed by the vendor (cough - VB - cough), you'll find yourself standing in the whine-line with all the other VB programmers begging Microsoft to continue supporting the ancient technology you know instead of simply moving on to something else (VB.NET).
Once you really learn to program, languages don't matter much. You'll know logically what to do already, and after that the rest is just syntax. That's when you can demand the big bucks. It has nothing to do with Microsoft. - Bytor, on 10/12/2007, -2/+7Agreed. C is still just about they only thing for large scale, high performance, close to the metal programming. I have been doing call processing in the telecom field for 10 years now and C is all we do. I don't even see a replacement on the horizon.
Our network management apps ( GUI provisioning/management) are in Java and they suck badly. So slow and bloated that I try to do all my provisioning on the command line. Java is a neat language, but the performance is still not there.
Sounds like the author is a Web programmer how is only capable of seeing the world from that perspective. I have one language he seems to have forgotten: English. If he codes anything like he writes, I am surprised that he is employed. Rambling, disorganized and nearly incoherent.
You learn what you need to do the job. - inactive, on 10/12/2007, -1/+6The answer is this "microsoft does not have one".
I have seen some Delphi projects at work, and if you ask me it REALLY is everything that VB should have been.
It's a shame that most people won't even consider a technology if it didn't come in a box from Redmond.
Delphi is REALLY REALLY good for Windows development. - Namco, on 10/12/2007, -2/+7I've noticed that a lot of Linux geeks know just enough to be dangerous.
- Karlprof, on 10/12/2007, -4/+9I don't agree with a lot of what he said, but digg for introducing me to Ruby. Consistantly funny, too - worth a read.
- kristov, on 10/12/2007, -10/+15I vote C# or VB.NET. But thats only if you actually want to make money with your skill. If you just want to sit at home and program your own web sites so you and your mom can view them on your Linux box I vote PHP.
- jupo, on 10/12/2007, -0/+4His only gripe with Python as is the case with many, is its interpretation of white-space. When I learned Python I found that it expected white-space in the same style I had always coded in so it was never an issue for me.
- semicolon, on 10/12/2007, -1/+5Ruby hasn't yet earned being named with C, C++, Lisp, Java, Perl, and Python. Lots of hype.
- alastria, on 10/12/2007, -1/+5What, no love for Pascal? I use Delphi every day. Many others do, too...
- Omega697, on 10/12/2007, -0/+4You can't make an "ad hominem" against Python. "Ad Hominem" means at a person. It means attacking the person instead of the argument. Seeing as he's talking about Python's features, and not saying something like "Guido Van Rossum is a child molester" it's not an ad hominem attack. Don't go around using big words like that unless you understand them.
- alex007, on 10/12/2007, -0/+4The language to learn is the language that makes you the most money. :) You guys pick.
- Mojave, on 10/12/2007, -0/+4A couple great reads on the problems of PHP.
http://www.ukuug.org/events/linux2002/papers/html/php
http://toykeeper.net/soapbox/php_problems
http://tnx.nl/php - headzoo, on 10/12/2007, -4/+8"PHP isn't a programming language, it's a scripting language."
So is Perl, and it's covered. - MrTea, on 10/12/2007, -5/+8I'd like to know he thought of C#
- Lewisham, on 10/12/2007, -0/+3Absolutely.
Web based: I'll probably use Perl. I'm crazy, and I really should learn PHP, or Ruby on Rails. My compay used Perl, so I learnt that first.
Console: Probably Java for a big thing, Perl scripts for little things. Console programs don't have GUIs, which is where Java trips up big time. Otherwise, I think it's a wonderful language.
GUI: Whichever language is most native to the platform: C# for Windows, C++ for Linux, Cocoa for Mac OS X.
I'm currently working on a machine vision project in Objective C because the Mac OS X Cocoa libraries are wonderful for graphical work, but the memory management (retain/release counts) is driving me up the wall. - inactive, on 10/12/2007, -13/+16I read until I got to this nugget of wisdom: "The biggest thing you can reasonably write in C is an operating system, and they're not very big, not really. They look big because of all their apps, but kernels are small." Uh, an operating system? Is that all? How many lines are in the Linux kernel alone, about a cool 10,000,000 these days (and growing by the minute)? My kernel sources are about 38 MB bzip2'ed. Damn, I don't know how the world has managed to survived for the last 35 years with limits like that.
- sagaciousblonde, on 10/12/2007, -1/+4"They teach Scheme at MIT and Berkeley to new students for a semester or two, and the students have absolutely no clue as to why they're learning this weird language. It's a lousy first language, to be honest, and probably a lousy second one too."
I'd beg to disagree. They don't teach Scheme at MIT for the sake of learning Scheme. Frankly, it's a simple language to use when we're supposed to be demonstrating principles of computer science and building projects that would be much, much more complicated in any other language. While I rarely use Scheme nowadays, I carry the principles I learned from writing programs in Scheme over into my other work. I think it's a pretty good first language, at least when paired with the right curriculum. - cybernetic798, on 10/12/2007, -2/+5Scheme SUCKS. Recursion is not a hard concept. It is stupid to think you need a language to teach you recursion. SICP (the book used by UCB, where I am, and MIT in the first lower div CS course) is a terrible book that wastes times on 'memoization' and 'data directed programming', which are simple concepts with big names. Honestly, learning Scheme (and using Lisp later for AI) was a boring and painful experience, and most other students dislike both as well.
The programming paradigm used by both languages is simply idiotic since almost everything has to be done recursively. Furthermore, the syntax is so damn annoying with millions of parentheses and odd constructs such as mapcar and the like. In my AI class, no student had trouble with that AI algorithms - it was debugging our Lisp code that consumed time because the language is poor.
The best language to learn with is most definitely Java (which is used in the second lower-div CS course here) or C# and of course, C (which is in the third lower-div CS course here). In my opinion, exposing yourself to lower level details of computers such as assembly, some digital design, basic EE will all make you a better programmer. Why? Because then you know exactly how a computer works end-to-end (across the various layers of abstraction), and it is no longer something unknown or magical. This is especially important for optimization (across various parameters such as performance, memory, power, etc.).
Our lower-div cirriculum starts with Scheme in the first course, Java in the second (it is Data Structures and Algorithms, and the first couple weeks teach you Java), and C + MIPS + Verilog in the third (machine structures course). Indeed, no one remembers much about Scheme now unless they take the AI course and have had to use Lisp, but almost all remember Java, C, MIPS only because they are actually useful. But even the AI course is changing. This semester the AI course is using Python, a great language because it supports multiple programming models and becuase it is easy to use.
To say that you need a specific language to teach you basic programming concepts is stupid. This can be done with any language which abstracts away memory management. The next step is to expose that layer of details, and the final is to expose individual instructions. - laddie, on 10/12/2007, -1/+4Agreed, Scheme pounds abstraction and recursion into you like no other.
- frizop, on 10/12/2007, -1/+4You lost me at "java"
- trevorsm, on 10/12/2007, -1/+4The whitespace complaint about Python is a little dumb. At first, I (as probably just about everyone else who has learned Python) was a little apprehensive about Python's strict indentation, but after using it for a little bit, I found it came very naturally, and even started to enjoy it.
However, what he mentions about scoping is dead on. Especially the damned explicit self in member functions. I'm really not sure what the hell Guido was thinking when he did that. - burke, on 10/12/2007, -1/+4I like PHP. It's an OK language as far as web development goes, but that's as far as it's usefulness extends. I find it to lag FAR behind comparable languages like Ruby and Python for most other applications.
- SuperSloth, on 10/12/2007, -0/+3Correct, HTML and XML are not programming languages. They are markup languages used to describe documents and data, respectively.
However, Perl, Python, and Ruby *are* programming languages. A program is simply a procedural set of instructions for a computer to process, and a programming language is anything that is used to create a program. Technically, a BASH shell script or a DOS batch file are programs. - timtop, on 10/12/2007, -1/+3Python is a really great language. It is one that fits sooo many different problems that it is extremely powerful and accessible. Not to mention its highly portable to different operating systems without worrying too much about versioning. Very few non-compiled (i know it does compile but you can ignore it) languages move across platforms so well.
I have not used Ruby, but i don't see there being any reason to switch to it if, as people say, "it is just like Python without white-space".I mean i quite like white-space because it keeps the code clean and readable, and I am used to it, so if its the same as Ruby, why would i throw that away to learn something else? Just so i did not have to keep my code clean with spaces? That's not a strong enough argument. - bpapa, on 10/12/2007, -1/+3In it he said that James Gosling (father of Java) said that if he could do it all over again, he wouldn't have Interfaces.
But didn't Gosling actually say he wouldn't have used inheritance?
I always thought programming to Interfaces was a good practice. - Bytor, on 10/12/2007, -0/+2Note the above should read C-Plus-Plus, stupid editing system seems to remove the plus part on an edit.
- burke, on 10/12/2007, -0/+2thanks for the links. I think I've seen that poignantguide thing before. If it's the tutorial I think it is, thank you very much for finding that for me -- I lost the link a while ago, and was looking for it just this morning.
- interiot, on 10/12/2007, -1/+3Well, I'm a die-hard perl-zealot, and I think he pretty much has perl nailed, so even if it's biased, I think it's still well-written.
- JohnnySoftware, on 10/12/2007, -0/+2His site seems to be down now.
There is some irony in that, somewhere. - Dangerman, on 10/12/2007, -0/+2Uhhh...I have to work in Java for some apps. I have to work in C++ in some situations. Sometimes it's Perl or Objective C. Really it could be any number of languages, each one has some problems. It seems to me that criticizing a person for the tools they are using is bit rude and egotistical. You don't have to like Java, you don't have to like me for using it, but I haven't shown you any disrespect. Why would treat someone like that?
-
Show 51 - 100 of 227 discussions



What is Digg?