Open Source Languages Rumble At OSCON 197
blackbearnh writes "Everybody knows what the best programming language is, it's whatever one you like the most. But is there a best language overall? Or even a best language for a given purpose? This question has been debated since the first time there were two languages to choose from. The argument is still going on, of course, but maybe a little light will be shed on the issue this week at OSCON. On Wednesday night at 7PM Pacific, representatives of the 5 major open source languages (perl, PHP, Python, Java and Ruby), as arbitrarily decided by O'Reilly, will meet to debate the merits of their various languages. If you're not going to be at OSCON, you can watch it live on a webcast and pose questions or comments to the participants. The representatives are: Python: Alex Martelli, Google; Ruby: Brian Ford, Engine Yard; PHP: Laura Thomson, Mozilla; Perl: Jim Brandt, Perl Foundation; Java: Rod Johnson, SpringSource."
debate rules (Score:5, Funny)
OSCON organizers have stated that the language debate won't be considered finished until at least one of the languages is compared to Hitler and/or the Nazis.
Re:debate rules (Score:4, Funny)
Re: (Score:2)
Skynet will be written in java.
Re: (Score:2)
Well, of course, you would need the flame to kill all of the TROLLS...
(or maybe bring some acid?)
Re: (Score:2, Funny)
what does open mean? (Score:5, Insightful)
Re: (Score:2)
Re:what does open mean? (Score:4, Insightful)
The popularity of C is interresting (thank you K&R), the reason for its development is interresting (thank you AT&T), but it is not a low level language. Its a mid to high level language whos programmers incorrectly label as low level, in what I guess is some desparate attempt to make themselves feel superior.
Its low level only in terms of the abstract machine it targets, which barely touches the surface of any actual instruction sets. This abstract machine is sufficient enough to design and implement rudimentary operating systems (with proper machine-specific extensions), but that just aint low level. The low level bits *are* the machine-specific extensions, and that just aint C.
Re: (Score:2)
A low level language provides an abstraction which is very close to, when not exactly equivilent to, the actual instruction architecture.
Re: (Score:3, Informative)
It looks to me like they mean "high level" languages... the sort that allow you to deal with arbitrarily complex datastructures without burdening the programmer with the manual management of memory allocation and pointers.
Perl barely qualifies for this category (no pointers, but "references"), yet it was one of the first high level languages, so it should get some respect.
Re:what does open mean? (Score:4, Informative)
. . . yet it was one of the first high level languages . . .
Missed it by a few decades. LISP was arguably the first high level language. You could also make a case for COBOL.
Re: (Score:2)
I don't know too much about LISP. Why do you think it failed to catch on the way these other languages did? If it has modern data structure capabilities, it must be lacking in some other way...
Re: (Score:2)
I don't know too much about LISP. Why do you think it failed to catch on the way these other languages did? If it has modern data structure capabilities, it must be lacking in some other way...
Thinking in doubly recursive execution paths is a rare skill/ability.
Re: (Score:2)
Personally I think people just got tired of counting parentheses...
Re: (Score:2)
I'm not convinced of that. It's just that most programmers start with a language the lends itself to iteration rather than recursion. Since most languages in common use also prefer iteration, any given programmer rarely has an incentive to learn to think in terms of recursion.
I don't think that's necessarily intellectually lazy, either. Almost any major language has enough little niches that you can spend a lifetime learning them all. It just depends on if you want to be generalist or a specialist.
Re: (Score:2)
i'd personally like to add that lisp doesn't work the way i imagine computers work. you look at C code and you think "on this means put this in that register and then save that to the stack" or whatever. but with lisp, unless you've seen an interpreter and worked out how it works (which is actually a lot easier than a C compiler because of things like RP notation), you're swimming. as gerald jay sussmann said, "lisp is the fixed point of the solution of the
Re: (Score:2)
Partially because it was too early for its time (particularly the speed for convenience tradeoff), partially because of infighting between different LISP camps, and finally because once those two issues were resolved, other languages had emerged that took the same ideas further (like OCaml and Haskell).
Re: (Score:2)
For almost sixty years it has been driving computer science and language design. There have been literally dozen of Lisps ranging from the Lisp machines of the 70s, to the major software of the 80's: Autolisp, Emacs. Logo is still taught to millions. Many of the idea of LISP are in Ruby, Haskell which is arguably the big "next idea" is a ML / Lisp half breed.
I'd say it has been successful.
Re: (Score:2)
Re: (Score:2)
It looks to me like they mean "high level" languages... the sort that allow you to deal with arbitrarily complex datastructures without burdening the programmer with the manual management of memory allocation and pointers.
Okay, I'll grant you that criticism against C, but then why wasn't C++/Boost invited to the table? Only interpreted/VM languages? Then why wasn't C++/Boost/LLVM invited? Almost any paradigm you care to program can be realized in C++, the only difference is the bookeeping is hidden in the libraries instead of in the interpreter. It can be hidden, though with syntactic sugar as easy as anything else in the wild. The only thing missing is perfect function forwarding, which is expected in the next major sp
Re: (Score:3, Informative)
I'm assuming that they meant "dynamic languages", which is relatively difficult to define as well. Is Java technically "dynamic"? (I honestly don't know how to answer that, BTW)
Java is definitely the exception, however: static-typing, and the requirement to compile to bytecode. Also, Java is the only language here that's suitable for math-oriented programming, the rest of the languages are primarily used to handle text and/or manage data-structures that contain strings as their edge(leaf?) nodes.
Re: (Score:2)
Sounds almost like cross platform is really the goal here. C++ is cross platform but the pitfalls in moving from platform to platform are much larger.
Re: (Score:2)
Like awk, for example. Since gawk implemented direct socket I/O a few years ago it's been one of the best high level languages around.
I
Re: (Score:2)
It looks to me like they mean "high level" languages... the sort that allow you to deal with arbitrarily complex datastructures without burdening the programmer with the manual management of memory allocation and pointers.
Uh, what?
Re: (Score:2)
If you will read my post, you will see that I explained which definition of "high-level" I was referring to.
Re: (Score:2)
I believe it depends on the public's perception of them. If there's a new implementation of the language out there, is it instantly compared to:
- The language's standard? if so, its an "open language", or "standardized language". Examples are C, Common Lisp, and Javascript.
- A reference open-source implementation? if so, its an "open-source language". Examples are Python, Ruby and Perl.
- A reference closed-source implementation? if so, its a "propietary language" or "closed language". Examples are C#, Visua
Re: (Score:2)
Javascript going back and forth between "standardized" and "open-source" depending on the ratio between the "its a published standard" and the "the standard is irrelevant, how it works in Gecko and Webkit is what matters" camps
The difference in implementation of JavaScript in browsers is actually minimal. It's the DOM, events, and CSS-related issues that mess things up. If you stick to *just* JavaScript, the worst that could happen is that IE won't have all of the Array methods (which can be filled in using the language). When it comes to implementing ECMAScript, the different browsers conform quite well.
Re: (Score:2)
O'Reilly picked the languages. My guess is it is because these langs are closely associated with their book sales and attendant web sites/blogs.
As for the contest itself... I am glad I don't actually have to endure it. It's just like those old Budweiser ads (tastes great/less filling) modulo the scantily clad women duking it out in a swimming pool.
Re: (Score:3, Funny)
C is not a major programming language.
Nothing interesting has been done in C since the early 90's, when many of today's top programmers were just learning to walk.
Re: (Score:3, Informative)
Just checked: 33,242 C projects on Sourceforge, compared to 44,784 C++, 58,559 Java, 15,562 Python, and 10,871 Perl. (My shock there is Java... sourceforge projects are voluntary... people actually CHOOSE Java?) I'd also claim Javascript as an important, open-source language. You don't see a lot of full apps
Re: (Score:2)
It's probably a mistake of the submitter. Calling those five "the 5 major" is most likely his own personal bias (ie he's wrong). For the panel it was probably excluded because it's too different than the others.
Re: (Score:2)
Uhm, in non-trivial slice of your examples that would be not C, but Ada.
Re: (Score:2)
When you CLOSED the last parenthesis of your C code and realized that no one could follow your programming but you, even when you formatted it perfectly.
It sounds like you've confused C with Lisp. Not to mention it isn't limited to just C that it can get difficult to follow along in source code and I'm not sure why you've singled it out since Java and C# are heavily biased in design by C (and C++ on top of that) and aren't any easier to understand, nor is Ruby, Python, Visual Basic (the original, not the .NET variant), Pascal, etc..
Re: (Score:2)
When you say "easier to understand", do you mean "easier to read" or "easier to learn"? I guess that readability is in the "eye of the beholder", but really when you get to Python and Ruby they're almost *objectively* easier to read. With Python, you almost don't have to know the language to understand a program, it practically looks like pseudo-code (being loosely based on ABC, which is as pseudo as you can get).
Re: (Score:2)
I hope you intended that as satire.
You can *force* any language to appear unreadable. I'm talking about a program that was written by a competent programmer. Compare a random Python script with a random Perl script. Are you actually saying there's no difference in readability?
Re: (Score:2)
By "read" do you mean read aloud?
Beyond that, I think the most you can say is that Python seems more approachable due to its relatively simplistic syntax. That doesn't translate to "readability" in terms of understanding the code though. Picking up on syntactical conventions is a fairly superficial aspect of learning to read code.
Re: (Score:2)
PHP has this in common with Perl. You have 15 tools to do the same job, and each with its own keyword(reserved word). An easy way to figure out if a language is going to be a pain to use and maintain is look up its reserved words list. Another is to have two different programmers write th
Re: (Score:2)
Re: (Score:2)
Re:what does open mean? (Score:5, Insightful)
Maybe they meant languages where the whole stack is Open Source. All the standard software and libraries for those languages is Open Source. There is no standard C compiler, runtime, or library -- only a specification (which is not Open Source or Free) with which to build your own implementation of them.
Seriously, what the fuck?
There are multiple open source C stacks all the way from the top to the bottom. Compilers: gcc, tcc and llvm. Gnu's libc, the various libc's in BSDs. Uclibc.
The main criticism that you're levelling at C is that it actually has a published standard! None of the other languages do. They have an "official" implementation, but nothing like the rather rigorously specified ISO C standard. And if you don't like the cost of paying for it, then you can download N1124, which was the last draft of the standard just before ratification. It's completely free and very accurate.
Re: (Score:2)
FLAME ON!
The java spec is SIGNIFICANTLY more mathematically sound than the C spec will ever be!
Re: (Score:2)
I can't imagine writing anything in Java that I was thinking of writing in C. If I'm going to write it in C, it's because I want the program to do exactly what I tell it and not play games with me behind the scenes (garbage collection, VM segfaults, VM bugs, etc.) Of course, the kernel is backing it, but I've had far better luck with kernels than I've had with JVMs.
Re: (Score:2)
Hey, how are those implicit type conversions treating you? What? Different on every OS, architecture, and C implementation in existence?
How many C programmers do you think there are that really understand the difference between an int, a size_t, and a function pointer? THAT is what I call playing games behind the scenes, and in C it's fucking dangerous, because if you mess that up, it's straight to arbitrary code execution.
Re: (Score:2)
How many C programmers do you think there are that really understand the difference between an int, a size_t, and a function pointer?
Probably more than you think there are, but I suppose I only know good ones working on high profile projects.
THAT is what I call playing games behind the scenes, and in C it's fucking dangerous, because if you mess that up, it's straight to arbitrary code execution.
It's a trade-off I'm willing to make. Especially with all of the stack/heap execution prevention, address space randomization, etc that's out there now.
I'm just not a big fan of Sun's JVM. I've seen large bugs open with it for years that would've been addressed long ago in a high profile open source project such as gcc or FreeBSD (or GNU) libc. I'd rather not be held hostage by a vendor like that.
Re: (Score:2)
Threads.
C99 has no concept of a memory model (C++ committee is thinking about it and will probably end up in something better than in Java due to hindsight).
POSIX threads definitely are not pert of C99 and whether it defines the memory model well enough is up to debate, it does not for C++.
http://www.hpl.hp.com/personal/Hans_Boehm/c++mm/ [hp.com]
Re: (Score:2)
Did what I said really come off as criticism or antagonistic? It certainly wasn't meant that way. Is anything I said *wrong*?
I do nearly all my coding in C and C++. There are plenty of things to criticize them on, but having a standard is not one of them. Clearly there are Open Source stacks for C, and clearly Open Source development is possible in C. Nobody is debating that. My only point was that there is no "official" implementation of it.
I can understand them not including C++, because it is a com
Re: (Score:2)
Two things came to mind as I read that:
First -- Is "modern" C++ (with STL and possibly boost) a larger beast than "modern" Java? Haven't they both been inflated to the point that 50%+ of the language is deprecated, and whenever you bring one of them up you have to "be more specific" about "which C++" or "which Java" you're referring to?
Second -- I use both C and C++ for different needs, and while it's true that C can be "kept simple" in some environments, any project of meaningful scale will become a nightm
Re: (Score:2)
First -- Is "modern" C++ (with STL and possibly boost) a larger beast than "modern" Java? Haven't they both been inflated to the point that 50%+ of the language is deprecated, and whenever you bring one of them up you have to "be more specific" about "which C++" or "which Java" you're referring to?
Modern C++, even C++0x, does not have many deprecated features. pair, bind1st, etc. are the only things I can think of off the top of my head that will be entirely replaceable in C++0x (by tuples and bind/lambdas). C++'s mantra of "don't pay for what you don't use" makes a lot of deprecation unlikely -- for instance, a Java developer may see std::function as a sensible replacement for function pointers, but it can still have higher overhead so function pointers are here to stay.
I don't know Java, I can't
Re: (Score:3, Interesting)
Re: (Score:2)
They have an "official" implementation, but nothing like the rather rigorously specified ISO C standard.
Oh, you mean like OOXML?
*ducks*
My favorite (Score:2)
My favorite language was Z80 ASM. That would be as useful now as a kick stand on a bass boat.
Re: (Score:2)
My favorite language was Z80 ASM. That would be as useful now as a kick stand on a bass boat.
http://www.guitarsite.com/news/and_finally/giant_guitar_boat/ [guitarsite.com]
Just do it already. (Score:2, Insightful)
Back in college I was working the summer on a forest firefighting crew ("Hotshots") when one evening back at camp two
guys got into an argument over whether Stihl or Husquvarna chainsaws were best. Punches were thrown and the two had to be wrestled apart.
That's what these L1 vs L2 vs Ln arguments all remind me of. Use a for loop or a list comprehension, call free() or let the compiler do it for you,
use '{' or not, does it really matter? - your manager probably wanted the functionality implemented yesterday
Re: (Score:2)
Back in college I was working the summer on a forest firefighting crew ("Hotshots") when one evening back at camp two
guys got into an argument over whether Stihl or Husquvarna chainsaws were best. Punches were thrown and the two had to be wrestled apart.
That's what these L1 vs L2 vs Ln arguments all remind me of.
If you worked so much with chainsaws, why don't you write L1 vs L2 vs Log?
You can always tell the vacation cabin owners (Score:2)
The tourists (i.e. out-of-state vacation cabin owners) all have those orange hard hats with the built-in hearing protectors with "Husqvarna" across the front.
Re: (Score:2)
Heh, what a bunch of sissies. Real woodsmen use an axe. :)
Re: (Score:2)
Heh, what a bunch of sissies. Real woodsmen use an axe. :)
REAL woodsmen set the universal constants at the start such that the universe evolves to fell the tree they want.
Re: (Score:2)
... an argument over whether Stihl or Husquvarna chainsaws were best.
That's just silly; everyone knows Victorinox chainsaws are best.
little indeed. (Score:4, Insightful)
The argument is still going on, of course, but maybe a little light will be shed on the issue this week at OSCON. On Wednesday night at 7PM Pacific, representatives of the 5 major open source languages [...]
5 geeks.... 90 minutes.... that will be a very dim light to be shed on such unanimously-agreed subject.
Re: (Score:2)
See, I think, having worked with all of those languages, that they all suck, but each sucks in different ways and thus each has their uses. The mistake a lot of folks get into is "This is the language I'm most familiar with, so it's the best language ever".
Of course, the real contest will be the length of the language designers' beard:
http://blogs.microsoft.co.il/blogs/tamir/archive/2008/04/28/computer-languages-and-facial-hair-take-two.aspx [microsoft.co.il]
Rod Johnson (Score:4, Funny)
Re: (Score:3, Funny)
Agree, except it seems like someone named Rod Johnson would be a Python kind of guy.
Re: (Score:2)
What about Rod Johnson's Perl necklace?
Odd... (Score:2)
Why are people listed by where they work their day job, as if that has anything to do with it?
the title of this post is flawed (Score:5, Insightful)
Programming languages do not have source code, and thus cannot be "open source". Unless perhaps you're referring to languages whose specifications are updated by means of some community driven process, e.g. Sun's JCP. Interpreters, virtual machines and run-time environments do have source code and can be open source. They're just not the same thing as "the programming language" itself, which is essentially just a specification.
Re: (Score:2)
Programming languages [...] cannot be "open source"
For the last decade or so the major complaint of Java has been exactly that, "it is not open source".
So I call your statement as a semantics-nitpicking-bullshit.
Re: (Score:2)
They probably mean 'open' languages. It's similar to open source. There are programming languages whose specifications are not fully published or not fully implementable by others for whatever reason (licensing, patents), only the publisher knows about all the language details (like say RealBasic, some instructional languages, the Visual series (Basic, J++) and Java-knockoff C#).
Re: (Score:2)
Although it also has some of the best external documentation both for existing features and PEPs.
Re: (Score:2)
*ahem* Python is defined by it's C implementation. That implementation is the specification.
Interesting. That's officially true of Perl 5 as well, and is one of the things they're changing in Perl 6. Perl 6 will be defined by the language specification, not by any implementation (and there will be multiple implementations that conform to the spec, we hope).
Re: (Score:2)
I never knew that about Perl5 or Python. Now that I do, I've got to say that's one of the more stupid things I've heard recently. Defined by its C implementation...on what platform? Using what standard c library? Using what compiler? Essentially that means Python/Win32/VC may be a different "language" than Python/gclib/gcc in that it behaves differently due to some compiler or clib quirk.
Madness!
There can be only one! (Score:3, Insightful)
Re: (Score:3, Insightful)
To be fair, the summary presents this as a debate of "the merits of their various languages", not an attempt to cast one as the "best".
Its kind of ironic that you are projecting this "Highlander" attitude that you deride.
Re: (Score:2)
Maybe he just watched Highlander 2 and really wanted there to be only one.
Re: (Score:2)
I had my windows replaced a while ago. If the question is "which is the best tool for window removal?" And you could think of handsaws, sawsalls, wrecking bars or other prybars, etc, they had a clear answer:
Hammers. All hammers. Nothing else is needed, though a screwdriver also seems to come in handy, though not for screws, more for poking things.
Oh, and if you're putting in a replacement, you'll also need a caulking gun.
Re: (Score:2)
Should we also debate what's the best tool. A hammer, a screwdriver, or a wrench?
I would go for a Swiss Army Chainsaw
The other members of "Team Java" (Score:5, Funny)
For the Java team, the summary only mentions Rod Johnson - it should be noted that Rod will be joined by other veteran developers advocating Java: Long Wang, Peter Cox (and his wife Anita), and, of course, notable Java developer Dick Manmeat.
Too bad Scala pisses all over these languages (Score:2)
Seriously, all of this stuff is really old and tired. All of the cool kids are elsewhere.
McCarthy? (Score:2)
They should invite McCarthy as well. He will all clobber them with LISP fragments.
When is this thing, today or tomorrow? (Score:2)
Ok, so 7pm PT today - but then it says:
So 7pm tomorrow? WTF?
Again, Pascal gets the Shaft (Score:3, Funny)
Then again what is Pascal without Borland anymore?
Re: (Score:2)
Isn't C and C++ open source now? Or at least as open source as Java is?
Indeed they are, as a quite a lot of other languages. I suppose they are debating which kid's language is best, really ;)
Not that I care, in my view, *all* languages fall short. And I don't even think my list is unreasonable!
Re: (Score:2)
Re:No C or C++ (Score:4, Interesting)
I really should write it down. I will forget some points. For each feature, I will list a language that actually implements this feature
I probably forgot a lot, but it's a start, no?
Re: (Score:2)
Sensible error messages (like NOT C++ currently and especially g++. "Expected primary-expression before ;" is just not very helpful, and the template errors are much much worse. Much tied to the aforementioned grammar)
The C++ template error messages aren't tied to the grammar. The template language is turing complete, and the error messages you get are a complete stack trace along with all the data on the entire stack.
Re: (Score:2)
Concepts was going to be the cure for that in C++. Now, alas, I am reading that concepts are not included in the next standard. A sad day indeed.
Re: (Score:2)
You forgot threads (and the memory model needed for that, see e.g. http://www.hpl.hp.com/personal/Hans_Boehm/c++mm/ [hp.com]). Very difficult task to do well, that is why most languages to not even attempt.
Some others worth to consider are libraries (XML, etc.), documentation (Java has good, others have/are catching up), Javadoc and perhaps even support for things like UML, ctags, etc.
Re: (Score:2)
You forgot threads (and the memory model needed for that, see e.g. http://www.hpl.hp.com/personal/Hans_Boehm/c++mm/ [hp.com]). Very difficult task to do well, that is why most languages to not even attempt.
Some others worth to consider are libraries (XML, etc.), documentation (Java has good, others have/are catching up), Javadoc and perhaps even support for things like UML, ctags, etc.
True about Memory model, granted. Libraries, definitely *not*. Libraries should exists independently of the language, so that they can be replaced if they suck (see Java for an example of how bad it can get). I don't regard this as *critical*, though, as library implementations are passable.
Re: (Score:2)
...try Lua .... it covers *most* of these ....
Re:What is an open source language? (Score:4, Insightful)
Why were those particular languages picked?
Probably because someone competent and authoritative enough was willing to speak on the languages listed.
Re: (Score:3, Insightful)
Or because those are whose sell more books. Remember, the thing is being organized by O'Reilley.
Re: (Score:2)
Hey! No debate forking!
Re: (Score:2)
As a professional programmer who has worked on projects in all five of these languages,
I can honestly say without bias that Java is the best programming language.
Re: (Score:2, Informative)
Mod parent... uh... (Score:2, Insightful)
So do your part to destroy a programmers will to live, deploy a VB6 app today!
What we need is a "Scary" mod.
Re: (Score:2)
Been there, done that. It only cost me my marriage, kid, house, car and dog and finally I had to switch job. Now I'm happily remarried, we have a wonderful child, two dogs, car, house and everything. Oh yeah, and I'm coding in C# nowadays!
Just kidding, partly ;)
Re: (Score:2)
After all, what other language is there that you can not only write programs in, but also cause wonderful facial ticks in "real programmers" and fill their hearts with dread?
well, if we're going to get down and dirty, I'll see your VB6 and raise you RPG /free. There, I can see some real programmers hearts filling with dread already. :)
But I do have an open source RPG project going, and some heavy duty RPG web serving coming up. Google Code is hosting it: http://co [google.com]
Re: (Score:3, Insightful)
It should be a requirement for all esoteric programming language developers that they provide and IDE (or IDE extension) with support for syntax highlighting and auto-complete.
Re: (Score:2)
Also, in the future we will commute to work in Jetsons-style flying cars. I realize it is "in" right now, but it serves no sensible purpose for most programs, (except to lock the user to his service provider).
Re: (Score:2)
(so pretty much like Perl...)
Re: (Score:2)
I think I may have met her a couple years ago, at a previous OSCON. I was surprised to find myself speaking to someone who knows PHP very well, and doesn't think it sucks.