The Python Paradox, by Paul Graham 726
GnuVince writes "Paul Graham has posted a new article to his website that he called "The Python Paradox" which refines the statements he made in "Great Hackers" about Python programmers being better hackers than Java programmers. He basically says that since Python is not the kind of language that lands you a job like Java, those who learn it seek more than simply financial benefits, they seek better tools. Very interesting read."
Shame. (Score:3, Funny)
Because otherwise, the business world would be that much less bass-ackwards.
I am positive... (Score:5, Funny)
Re:I am positive... (Score:5, Funny)
Oh, and C# users have bigger dicks. But that can be proven empirically.
Re:I am positive... (Score:3, Insightful)
Python is for troglodytes who can't wrap their minds around Lisp.
aiiii get them off my back!#@$#! (Score:2, Insightful)
was what PG was thinking when he wrote that article.
say "one" little thing about java and the "java duuudes" just go nuts..
he probably hates the language but obviously wrote that to stop the steady stream of hate mail from the rabid duuude-troops...
feel bad for him
Re:aiiii get them off my back!#@$#! (Score:2)
Heh, yup, as characterized by this BileBlog [freeroller.net] entry.
Re:aiiii get them off my back!#@$#! (Score:3, Insightful)
I don't know who the writer is but if his experience is that then he doesn't know that much programmers.
Yea (Score:5, Insightful)
Re:Yea (Score:5, Insightful)
Re:Yea (Score:5, Insightful)
Re:Yea (Score:5, Funny)
Re:Yea (Score:5, Funny)
Re:Yea - Ah man! (Score:3, Insightful)
Well, uh, generally I agree with that... but, earlier today there was a posting about why the number of female Comp Sci majors was dropping.
Hope they don't read Slashdot...
Re:Yea (Score:3, Informative)
Brainf**k is a relatively simple stack based language. The only thing about it that makes it hard to understand is its very terse syntax. Unlambda and Whitespace has this as well, and in addition to this they are completely unreadable. The reasons are quite different though: Unlambda because there is absolutely nothing like it (wrapping your mind around a myriad of s's, k's, i's and `'s == pain. I've tried) and Whitespace is just impossible to
Re:Yea (Score:5, Funny)
(No, haven't had the experience, but I'm waiting for it)
Re:Yea (Score:2)
I only need one [wikipedia.org] screwdriver.
Re:Yea (Score:2)
Re:Yea (Score:4, Funny)
Learning (Score:4, Interesting)
He likes Small Is Better, which isn't Java (Score:5, Interesting)
I think this point is interesting. Paul Graham makes a big deal about why he doesn't think much of Java, and it all seems to go back to the big/small issue. For example, in his essay on how he put together the Yahoo stores using Lisp, he mentioned that interpreted languages (or at least languages that can be both interpreted and compiled like Lisp) are better because they let you do things incrementally, as opposed to languages such as C/Java/etc, which force you to do the whole project all at once(I'm generalizing his statements here, but that seemed to be the gist of it).
My point is this: Graham seems to really like the "small is better" approach, for which interpreted languages really shine. For larger projects, Java/C++/etc. would (might?) be more appropriate, but for Graham's projects and ideas, not really relevant.
Every once in a while, Graham comes out with something that seems to get Java users up in arms, but it's entirely possible he's operating from point-of-view that involves projects that Java wasn't really designed for to begin with.
Just a curiousity I thought I'd note.
Maybe, but I'm not sure... (Score:3, Informative)
Yahoo! Stores wasn't a "small" project by any sense of the word. Maybe the upper boundries of "medium."
Re:He likes Small Is Better, which isn't Java (Score:4, Informative)
Actually, the language that Graham is most associated with is Common Lisp, which is neither a small nor an interpreted language. It is relatively large for a Lisp dialect (much larger than Scheme), and a compiler is part of the specification.
(I'm not counting Arc, since it doesn't exist yet.)
Re:He likes Small Is Better, which isn't Java (Score:3, Informative)
You save and run the program right away, or in the case of an automatically reloading servlet such as tomcat you don't even run the program: your changed class file is detected and tomcat reloads the class in the running program. IBM websphere takes that concept even further.
It feels like smalltalk, where you are also
Re:He likes Small Is Better, which isn't Java (Score:4, Funny)
Too bad he never managed to write a good editor for it.
Implementation is important (Score:5, Interesting)
Re:Implementation is important (Score:3, Interesting)
The Java Language specification [sun.com]
and if you are interested in more depth, The VM spec [sun.com]
The specified behavior for synchronization, the memory model & threading are all there in fairly simple terms.
Re:Implementation is important (Score:5, Insightful)
There's a mindset in corporate/professional comp sci I like to call "fat book syndrome". It works like this: a developer, usually a consultant, wants to be successful. So he spends time in Borders on a regular basis, buying new books with which he can expand his skills. Does he look at the thin, little books? No. He looks at the fat, weighty books. He reasons, "if I read that whole, big, fat book, I'll know everything and I'll be an alpha geek". Hence the increasing weight/volume of textbooks these days -- authors want their book to be the big, fat book the ambitious developer selects.
Now, you've got two related effects here.
First, the developer is adopting protective camoflage in the office, by building up a huge stockpile of big, fat books to match his fellow developer's stockpile of big, fat books. This is very similar to the United States and Russia building up their nuke stockpiles. Periodically, there's a crisis: "OH MY GOD" our hero will cry, "Dave just bought Design Patterns!" and he'll go to Borders after work and buy the latest boat anchor from the Gang of Four.
The matching effect on the Author's side is, authors want to sell books. Developers are buying fatter and fatter books, so the authors want their latest books to be even fatter than the last set. So, the books are growing, and it's mostly protective camoflage just like the fat book collection on the developer's bookcase. There's a sort of symbiosis going on, if you think about it. Everyone's yelling "FATTER! FATTER!" so that soon, you'll need luggage to bring your newest books to work.
Having said all that, what makes all this extra funny is, to learn any language, all you really need is a little review book (to master the syntax) and AN INTERNET CONNECTION. Wanna learn Java? Go to Barnes and Noble (those bookstores again) and get a lovely little book called "Java: Practical Guide for Programmers" by Zbigniew Sikora (it's 171 pages long, you can finish it in a couple of nights). Then, go online and read the Java tutorial, and any FAQs you can find on the various tools. Then start doing a project and consult the API reference.
There's no need for all those big, dumb books. Most of them are crammed with nonsense filler, and the samples are only as good as the author is skilled as a programmer.
Anyway, sorry to ramble for so long, but don't sell Java short just because all the books suck. The language itself is pretty nice. Get a SMALL book to get up to speed, dig around on the internet, and you'll find things a lot more friendly.
Don't pick on Design Patterns by GoF! (Score:3, Informative)
It weighs in at 395 pages, which isn't the thinnest but way short of the 1000 page plus behemoths you're talking about.
Most of that page count is actually showing you example implementations (in C++ and SmallTalk). Sure, you could leave those out, but examples are useful when your book is about abstract concepts.
This book is worth its (light) weight in gold.
Re:Don't pick on Design Patterns by GoF! (Score:3, Interesting)
Python made my collegues start writing scripts... (Score:5, Interesting)
Python will go the way of Perl (Score:5, Interesting)
However, back in the "old days" (late 80s, early 90s), Perl too was a bastion of those who wanted to throw off the shackles of scripting (I hate when that word is mis-used to refer to interpreted languages). Perl was the way to start giving some real structure to all of those tasks like report printing and systems toolsmithing that had traditionally involved totally unmaintainable "scripts" which eventually had to be re-written in a low-level language.
So what happened? Nothing really. Perl developed some nice features, but ultimately LOTS of bad programmers learned it and in a language that makes it easy for people to write programs, you quickly develop a robust collection of REALLY bad code (along with the really good). Just look at C for confirmation of that.
Python is where Perl was in the early 90s now. Lots of folks who know bad code from good are using it, and it looks like the next great island to swim to. It's easy to look back at Perl and say "it was the dollar-signs that FORCED people to be bad coders," or to look at Java and say, "the low-level types are what SEDUCED people into writing crappy code."
In reality it was the popularity and subsequent influx of bad programmers. Python is becoming popular and I guarantee that in about 5 years Python programmers will be listening to, "[Span, Ruby, something else] is so much better than Python... just look at how much cleaner the code is."
I wonder if we'll ever figure out that joe blow who barely understands what programming is will always produce unmaintainable shlock, no matter what language he writes in and no matter what book on abstract modeling he's just read.
That's all well and good... (Score:5, Funny)
I''ll be willing to buy his theory that python hackers are better than java hackers...
Re:That's all well and good... (Score:3, Informative)
Ummm.... something tells me Paul Graham would agree with that. Read his Lisp books some time.
Re:That's all well and good... (Score:3, Interesting)
Python vs Java (Score:4, Interesting)
When I did have to write something in Java - well, better hope you have the right API. Oh, and what's the difference between the 3587324 different XML parsing packages? Oh and download Java Super Micro PDA Library! Only available for Solaris and Windows!
The promise of "write-once-run-anywhere" was pretty much dead. Not that I was even going for portability - I just wanted it to run on Linux. And I wanted to do it without having to download Beans, Java DynamicManagement, Java Metadata, ad nauseum.
Python, on the other hand, simply works. Sure, it doesn't have a standard GUI toolkit (although wxPython is pretty much the de facto standard now...), but it does everything I need it to do. With a clean, nice syntax, no less.
Oh, and I still don't get how Java doesn't let you write a freakin routine to get the permissions on a file without resorting to writing a C function. Sure, it's not "portable", but just do what Perl and Python have done - on platforms with no permissions, return a sane default value. Don't just NOT include the function at all...
Anyway, forgive my rant. Python - good standard library. Java - tons of confusing frameworks and platforms, etc, etc.
Re:Python vs Java (Score:5, Insightful)
If you combine the java Collections with the Jakarta Collections library then you have an almost unbeatable combination (beaten perhaps only by Lisp and its treatement of collections, lists etc).
I admit that there are a myriad of redundant and (mostly) confusing and unnecessary standards. But you shouldn't complain that so many XML parsing toolkits exist, that gives you the freedom to choose the one thats right for a given application.
And after all, isnt that what this is all about? Categorising one programmer as better than another because of their programming language is like saying that surgeons are better than barbarians. Both use blades, but you dont want to perform heart operations with a longsword!
Re:Python vs Java (Score:5, Interesting)
In defence of Java, much of its library support is for use with big systems, like enterprise apps that run under J2EE servers. Python is nowhere near this level.
Put simply, Java scales up; Python scales down. I think, however, that in the future, Python could pose a serious challenge to Java if an enterprise-level app framework is ever created for it. But Java has such huge momentum I doubt it will be toppled from the enterprise server throne anytime soon.
Re:Python vs Java (Score:3, Interesting)
Interestingly, I just started trying to learn Python recently, for just these reasons... but soon gave up in frustration.
My issue is that I live for static typing. Yes, yes, yes, I know it's (apparently) very unfashionable to want the compiler to check for trivial mistakes, but I'm funny that way.
Don't get me wrong: dynamic typing is great. It's a wonderful
cover all the bases! (Score:2, Interesting)
You can put Java on your resume to get the job, and then use Python to glue components together!
All kidding aside, I am currently working on a pretty complex java project. I've written various small programs as utilities, and these programs would have been better off as scripts accessing some of the java classes I had already written.
The downside of java -- in this circumstance --- was having to deal with classpath and compiling cycles and whatnot. What I really wanted was to
Re:cover all the bases! (Score:4, Insightful)
The way source code looks (Score:5, Interesting)
Re:The way source code looks (Score:5, Informative)
I think something along those lines is already possible [sun.com] in Java :)
Re:The way source code looks (Score:3, Informative)
> doSomething( s );
Yup, JDK 1.5 (or 5.0?) will introduce generics, enumerations, and a for-each construct - as soon as it gets out of beta.
But it'll be about four years you'll be able to actually use them because it'll take that long for folks to move off of JDK 1.4
Re:The way source code looks (Score:3, Funny)
Re:The way source code looks (Score:2, Insightful)
For each Object in Collection
Object.DoSomething
Next Object
That's more "readable" than either of your examples, even readable by someone who's never coded anything in their lives.
Frankly, I wouldn't call it a better tool than either, though that might depend on the requirements of the project.
You have to assume your code is going to be read by someone with an understanding of the language. If you don't know that a C program starts
Re:The way source code looks (Score:4, Funny)
for(keys %{$hr}){$hr{$_}->s($x);}
Re:The way source code looks (Score:3, Informative)
foreach ( @collection ) {
$_->DoSomething();
}
Re:The way source code looks (Score:4, Informative)
Damn Perl trolls ;-)
cLive ;-)
Re:The way source code looks (Score:3, Insightful)
foreach (@x){ do_something($_); }
was simple enough so I promptly forgot about it. But
do_something($_) for @x;
is so obvious in its syntax that I immediately know what it's saying, at least if I understand other simpler statements like:
print if something_bad();
I just don't get the recent animosity towards perl. It's honestly one of the most
Re:The way source code looks (Score:3, Informative)
But the thing to keep in mind is, the Ruby version is just a method on the collection, it is NOT a language construct. You can write your own like this:
# do it in a random order
collection.each_random { |x| x.do_something }
# do it to every other item
collection.each_even { |x|
# show a busy cursor during the operation
collection.each_with_busy_cursor { |x|
You really don't realize the power of Ruby until you start coding BEYOND what you can already do in other lan
Consistency is another great thing about Ruby (Score:3, Informative)
That example seems a bit selective to me. Code blocks are nice given the rest of the way that Ruby is designed to make them useful and handy, but I don't think it's necessarily superior. Personally I'm a great fan of Ruby for it's consistency, which I suppose it inherited from Smalltalk. I really like being able to deal with anything in the same way, without having to worry that there might be exceptions.
I've been using Python as my favourite scripting language for several years -- it's a neat lang
Python in the workplace (Score:3, Informative)
Too bad I'm maintaining code with two letter variable names all the time though, and now it's soured the language for me as well... heh.
Using that logic, REXX coders are God-like (Score:3, Insightful)
Python jobs - got resumes? (Score:4, Informative)
hhhh (Score:2)
Java programmer's viewpoint (Score:4, Interesting)
The immense number of system and third party libraries is what keeps most Java developers coding Java. The close second is Java developer's tools. Until there is an IDE for Python that's as extensive, capable and sophisticated as Eclipse I'm going to stay with Java. Most Java development is in the enterprise server side space and the sheer amount of tools that Java offers is just mind boggling.
Also us, enterprise developers tend to work in environments that are much more conservative from the technology standpoint (banking, insurance, brokerage). As far as I'm concerned it's a big win for us that we got Cobol elbowed out with Java. Trying to push the language of the month at those executives will cause us more harm than good.
I know that Python has some very nice features (I read the tutorial) but it's hardly the sort of paradigm shift that merits ditching Java and rewriting everything because of some neat syntax flavoring. Besides Java is hardly a frozen language and we have some exciting stuff coming down the pipe here. JDK 1.5 will introduce shared VM model which may make java compeling on the desktop, more elaborate iterators, annotations (my favourie in 1.5), and generics (although without primitive types support they are kinda lame).
Java is now frequently used in CS research as well. It looks almost certain that the next milestone in CS evolution will come in the form of Aspect Oriented Programming and AspectJ has been the leading implementation.
Sometimes it feels that Paul G. just has an ax to grind into the collective Java community but I wonder how closely did he actually look at Java before dismissing it?
Re:Java programmer's viewpoint (Score:3, Insightful)
I agree. Paul is trying to justify an untenable position. My favorite quote:
Yeah, well it was quite a lot of work for those Java developers to learn Java as well. People aren't born knowing Java anymore than they're born knowing Python. It takes a lot of work to learn how to program in Java correctly -
Re:Java programmer's viewpoint (Score:3, Insightful)
I call bullshit on you.
I'm complaining about Graham and other language-bigots, and over the last 20 years I've coded in:
...and have dabbled in many others (and I'm exccluding a whole slew of scripting languages from the above list). And I've written that code on and for the following platforms:
Re:Java programmer's viewpoint (Score:3, Interesting)
I'm afraid I don't know objective C. Could you elucidate on what this provides that Java lacks?
Secondly, callables a la python. This includes class methods and statics (not merely function pointers like C).
This can be achieved using the java.lang.reflect.Method class. It's ugly, but workable, and a number of my software projects have used it.
Re:Java programmer's viewpoint (Score:3, Interesting)
Re:Java programmer's viewpoint (Score:5, Interesting)
Nothing like starting your reply with a good ad-hominem attack, eh?
lot of people choose Java, but only a very small number for open source projects
Tell that to the Apache consortium. Most of their new projects are all java. The whole Jakarta, Geronimo all very prominent java efforts. Besides Freshmeat returns 2381 java projects and 956 python projects... hardly the ultimate in testing languages' popularity but it dispells your stupid assertion that only a small fraction of OSS projects are written in Java.
Changing topics: aspects. Aspects are stupid. They make sense in a language like Java that has no metaprogramming capabilities. They are absurd in other languages like Python or Lisp.
Aspects are not macros and macros cannot do everythin that aspects can. Go back and read more on aspects.
Finally, stop acting like an arrogrant asshole. It makes you look very infantile.
The Java Problem (Score:3, Interesting)
What I don't understand is why I even need Java? Jython let's me do pretty much everything Java can do, in a language that is a lot simpler that "fits in my head", not fits in a huge bookshelf. Sure I still need to know a bit about Java classes and such, but it's a lot less work than my friends who program in Java have to do. I feel sometimes like I'm watching people hike up to the top of a mountain every day, while I just take a 4x4 and get to the same place, but get there faster and with a lot less sweat and effort.
Can anyone who codes both in Python and Java educate me?
Re:The Java Problem (Score:4, Interesting)
And you know what? I think Python is the best.
I'm more productive, it's more intuitive, it took three months of writing Python for me to dump Perl completely after using it for 12 years.
Confused (Score:3, Funny)
I'm confused.
what is PG's fascination with Python? (Score:5, Insightful)
Out of those, Python is probably the least Lisp-like, and the worst designed (well, okay, yes, Perl's design is *much* worst, but it can be massaged into doing lots of cool stuff).
Yet PG brings it up all the time when he talks about Lisp. To me Lisp and Python are like night and day. How do you create anonymous functions and pass them as variables in Python? You can't, only "lambda *expressions*" which is a strange and arbitrary distinction. In Lisp, creating functions on the fly is the norm. Python doesn't have macros, or even blocks like smalltalk or Ruby, which again is one of the best things about Lisp, allowing you abstract and refactor the flow of code itself. In Python, you have arbitrary but fixed structures bolted on, like comprehensions, or tuples. In Lisp, you can create new constructs on the fly, using the same syntax as everything else.
In my opinion Python is like the Java of the open source world: tons of people use it, they think it's great because it's a lot better than whatever they used last year (C++, Perl, etc), and they don't realize (or care) there are better languages that can help them work faster.
Maybe Paul should adjust his spiel to simply say: the more obscure a language a person has mastered, the more likely he is a smart self-motivated programmer.
But even that isn't true all the time...
Re:what is PG's fascination with Python? (Score:3, Informative)
I think that he was griping about the distinction between what you can do with a function, and what you can do with a lambda. In Lisp, you can put whatever you want in a lambda. In Python, you can only have a single expression.
Example, with _s added to deal with ECODE's idiocy about leading spaces:
Excellent article (Score:3, Interesting)
By looking at the article I was able to quickly gauge the amount that I need to learn to learn basic Python... needless to say, it will not be a very far stretch. I am sure that I have a lot to learn, but this easily cut weeks of trial and error off of my learning curve. I can't thank him enough. I am excited.
CVB(Neil P. Davis)
Python is great for guys like me.... (Score:5, Interesting)
I guess the point I'm making is that this language has a strong appeal to people like myself who are just looking to use it to solve problems and/or make problem solving tools. I don't know anything about Java, but maybe the reason that the author feels that Python has the better hackers is because Python, by virtue of it's simplicity and no-nonsense syntax, tends to attract your more "problem solver" type person.
Just a thought.
Mr. Graham's next article should be... (Score:4, Insightful)
Pardon me while I go build a better mouse trap, pontificate on how much better it is and what a great mouse catcher I am, and then put it in my hamster's cage to prove it.
Total nitpick (Score:5, Insightful)
Anyway, something like that. Here is the closest he comes to a paradox:
First, employers are always looking for people who go above and beyond the bare-minimum, including people who like what they're doing enough to do it even when they aren't paid. That doesn't constitute a paradox. Second, as soon as people widely believe that it is a good standard for hiring programmers (meaning it really is the language to learn to get a job), people will start learning it merely to get a job, so I'm not sure his statement really even makes sense.
So, while I'm not saying anything about his statement that python programmers are better (since I'm not a very good programmer in any sense, and wouldn't know to argue), describing it as a "paradox" seems like pseudo-intellectual camouflage for a "Python RULES!" article.
WHat turns me off Python (Score:3, Interesting)
I consider myself a pretty good programmer. I otherwise fit the criteria he lists in that I do a lot of programming for fun, and like to explore new languages...
but not Python. And you know why? It sounds petty and stupid, but I just hate the whitespace indenting. I have always thought that perfect code readability relied on the felxibility to format certain sections of code differently than others, and the need to have indenting control grouping of statements has always been way too rigid for my tastes.
So there you go, that's why one Java programmer is not into Python at all (not even Jython).
Dumbest thing I've read in a while (Score:5, Insightful)
Not trolling here, but this opinion piece is stupid. Hell, just look at that quote above. "He couldn't be a first rate hacker since he obviously chose NT voluntarily." According to the author, there's no way to succeed if you choose to build on NT.
Knowing Python doesn't make you a "first rate hacker". Any decent programmer can pick up a language like python in a day or two. A good hacker (i.e. a programmer that a company would want to hire) is someone who can take their previous experience and apply that to the problem at hand, using the tools available. Saying "...but I know Python" is the same as saying "...but I know Assembly" when you have a bunch of C++ code to write.
Re:Dumbest thing I've read in a while (Score:4, Insightful)
That's not what he said. He said he couldn't be a first rate hacker. He's carefully defined what he thinks makes a first rate hacker leading up to this paragraph and then gives it as a counter-example.
Knowing Python doesn't make you a "first rate hacker". Any decent programmer can pick up a language like python in a day or two.
RTOFA. He says:
And people don't learn Python because it will get them a job; they learn it because they genuinely like to program and aren't satisfied with the languages they already know.
Which makes them exactly the kind of programmers companies should want to hire.
You claim:
A good hacker (i.e. a programmer that a company would want to hire) is someone who can take their previous experience and apply that to the problem at hand, using the tools available.
Graham says a first rate hacker would not be satisfied with just any tools and would probably think that their previous experience isn't worth a whole lot - even though in the eyes of other hackers it might be godlike stuff. I agree that what he says is contraversial and pushes a lot of people's buttons but be fair in your criticism.
Hm. (Score:3, Funny)
Horsefeathers! Horsefeathers I say! (Score:4, Insightful)
Name me ONE TASK that Python (or Java) can do that the other can't. There isn't one. Tell me which one is faster! On modern equipment, you won't notice any difference for most tasks. You'd have to find something massively computationally intensive to get any sort of reasonable comparison, and even then it would be tough.
In the end, it comes down to this: what is your personal coding style? What sort of syntax are you most comfortable with? If you come from a scripting background, you'll probably like Python better. If you're coming from a C background and love those curly brackets and semicolons, you'll dig Java (that's my personal preference, by the way, I'm uncomfortable with using indentation to manage blocks, for example). Maybe something in one library or the other is attractive to you. Maybe you just want to use Open Source.
It's all just a matter of taste.
Having said that, the original article was dead wrong about one other thing. The idea that Python attracts "smarter coders" because they're doing it for the love of it is misguided. The reason is, there are smart coders writing for the love of both languages; Java only gets more idiots because there's money in it. So the author SHOULD have said "If you use Python, you'll get far fewer applicants, so it'll be easier to filter out the hacks".
Re:Horsefeathers! Horsefeathers I say! (Score:3, Insightful)
Both are turing complete, and you could implement a Python interpreter in Java or vice-versa. If "it's possible somehow" is your measure, then there's no reason to choose Java over assembly.
In the end, it comes down to this: what is your personal coding style? What sort of syntax are you most comfortable with?
Syntax is largely irrelevant, people learn it quickly. Much more important are things like:
* Do I have strong typing or not? (
This is related to the fewer CS majors story... (Score:4, Insightful)
Obviously, he knows a LOT about Java ... (Score:4, Insightful)
I've never written a Java program, never more than glanced over reference books about it
Do I need to add more?
Bigotry (Score:3, Interesting)
I embraced Java because I could finally program the OO way in it. C++ was supposedly OO, but didn't work quite right, and Java was an ok (not perfect) mainstream Smalltalk based language. The original team was fairly strict in the sense that it would not allow brain damaged C++ programmers to ruin the language (there was definitely a "purist" language design philosophy involved). Of course, in recent years they seem to have dropped that (see Java 1.5 generics, etc..)
Now Python comes along... and Ruby too... they are nice, because among other things they bring us the Smalltalk philosophy of simplicity with Java lacked for marketing and acceptability reasons.
I say.. what about Smalltalk itself??
The reason I still stick with Java is:
- Huge huge number of libraries
- Good acceptability
- Easier to convince my boss
- etc..
Pragmatic reasons.. not purist ones.
I think a lot of Java programmers are the same.. Python is nice.. hope it catches on, but look we have this very mature platform in the meantime.
Now P. Graham arguing about Perl as a good design vs. Java is just laughable. Sure, Perl is fast, Perl has regular expressions. But Perl has NO orthogonality, Perl is a write only language... it is not a language for people who like to read code.
To me it just seems like Paul Graham is used to using Lisp, to running his code on Unix. Paul Graham probably runs emacs and has the Unix culture in him. He shouldn't confuse his Unix culture preference for scripting and languages similar to scripting, his preference for dynamic typing, his preference for the command line, his preference of being with a rebel as a real reason to bash the mainstream. It's just an illusive preference of his own.
It's laughable for a Perl or C++ programmer to diss a designed language and say theirs is superior.. the only reason we listen to Graham is because of his Lisp background.
Re:FP (Score:2, Informative)
Why I like Python (Score:3, Interesting)
I like python because it allows you to modify the behavior of the language constructs. It gives you hooks into what happens when you say 'print myvariable' or what goes on when you retrieve 'mydict[ "something" ]'.
Much like operator overloading in C++, this allows you to write in the language of the problem, rather than the language of the language. So, if you're dealing with dates you can overload the minus operator to calculate the time between two dates when they are subtracted. Or if you are dealing
Re:nonsense... (Score:4, Funny)
(Come back when you RTFA, or even RTF-summary, ya hear?)
Why I like Python (Score:3, Interesting)
I like python because it allows you to modify the behavior of the language constructs. It gives you hooks into what happens when you say 'print myvariable' or what goes on when you retrieve 'mydict[ "something" ]'.
Much like operator overloading in C++, this allows you to write in the language of the problem, rather than the language of the language. So, if you're dealing with dates you can overload the minus operator to calculate the time betwe
Re:Why I like Python (Score:5, Insightful)
It's a really nice idea, with great direct effects and horrible side-effects.
Re:Why I like Python (Score:4, Insightful)
Do you have one of those narrow screens talked about in a previous Slashdot story? I used to laugh at people who wrote out subtractDate() - until I had to revisit my own code after not seeing it for months and figure out that procntr() meant "process the entry".
You have a lot of keys on your keyboard; might as well use 'em.
Re:Why I like Python (Score:3, Interesting)
My last large project was a provisioning system for the 3rd largest internet carrier in the world. It provisioned and maintained managed modem service for over 23 million users in the US and overseas. It consisted of about 150,000 lines of python code and is now being quite happily supported by 2 of my friends that are still working there.
Get over yourself.
Re:nonsense... (Score:4, Insightful)
There are some serious qualitative differences between those two global groups of actions. It seems more often the case that great art comes from subsistence funding, just enough to allow the creator to live while he/she creates. Additional funds don't have any where near the impact they do in so many other endeavors. In fact, if you look through large grant artwork, one might even conclude there is a negative impact.
Re:nonsense... (Score:4, Insightful)
A person who is apathetic to programming will learn whatever pays the most. While a person who loves to program will study and learn different tools and explore them to advance themselfs.
It is like a person who brushes his teath to avoid the pain of cavities. VS. a person who brushes their teeth because the like the clean taist in their mouth. Who will have better oral health, the later because brushing teeth is a joy for him while the first guy will just do it enough.
Re:nonsense... (Score:3, Insightful)
that statement is bullshit in the purest sense. Could it be that nobody is learning python because they can already do whatever needs to be done in other languages? Programmers are king when it comes to inefficiency. Go to sourceforge and you will find 10-20 programs doing basically the same thing. Every year someone creat
Not true! (Score:4, Insightful)
classified them in two categories: those who were in it for the
money - 1245 of them - and those who were going to use the degree to do
something they cared deeply about - the other 255 people. Twenty years
later, the researcher checked on the graduates and found that 101 of
them were millionaires?and all but one of those millionaires came from
the 255 people who had pursued what they loved to do!
Research on more than 400,000 Americans over the past 40 years
indicates that pursuing your passions - even in small doses, here and
there each day - helps you make the most of your current capabilities
and encourages you to develop new ones.
Re:Not true! (Score:3, Insightful)
Re:Source? (Score:5, Informative)
Re:Apples and oranges (Score:3, Insightful)
> a scripting language with an OO
> development language.
Hm. I think the line between the two is getting pretty blurry. I mean... Ruby and Python are both "scripting languages", but folks have done some pretty impressive object-oriented apps with both of them. Also, the larger a Java app gets, the more it seems that it uses Class.forName and dynamic this-and-thats to work around static typing and such.
I think that "scripting" vs "OO development" language m
Re:Apples and oranges (Score:3, Informative)
One approach to "compile-time" problems with python is to treat pychecker as your compiler. Basically, it looks for all those typos that C etc catch due to requiring variable declarations, and a whole lot more. Unused loca
Apples and apples (Score:5, Interesting)
Both languages have a virtual machine.
Both languages can use JIT compilers for improved efficiency.
Both languages support OO development.
Both languages have large standard libraries.
Both are turing complete.
Even their performance is similar.
Please explain how this is an inappropriate comparison.
Re:Apples and oranges (Score:3, Insightful)
Which is which? Python is at least as OO as java. Even ints are objects.
>>> a=2
>>> a+1
3
>>> a.__add__(1) # used by + operator
3
>>> class my_int(int):
>>> a=my_int(2)
>>> a+1
2
>>> a+2
2
>>> a=my_int(1)
>>> a+1
2
>>> a+2
3
Re:Apples and oranges (Score:5, Insightful)
Python clearly is an object-oriented development language; it even has multiple inheritance. Python is pretty close in its semantics to Smalltalk, and there are several native compilers and environments for Python. So, Python really is much more than a "scripting language".
It's not clear that Java should even be called "object oriented". Alan Kay said "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind." Well, Java's object system is even more restrictive than C++'s.
So, yes, it does make sense to talk about Java and Python and compare them.
Re:Paul Graham is a language bigot (Score:3)
Re:Python doesn't land you a better job (Score:3, Insightful)
Oh, bullshit.
Re:Paradox? (Score:4, Insightful)
Maintainability becomes a problem when you hire the first guy off the street who only knows the fad-du-jour, Java or VB, for example. Using off-beat languages gives you a great deal of inherent quality control: people who interview for Python, Lisp, or ML jobs generally are of higher quality.
No-ones been hurt by sticking with the mainstream.
You can't have been on this planet very long: large groups of people behave in stupid and dangerous ways, whether it comes to politics or choice of programming languages.