Guido van Rossum on Programming at Python Speed
Bill Venners writes "In this interview, Python creator Guido van Rossum states: 'I'm not particularly worried by the fact that people say you can prototype more easily in Python, but eventually the Java version makes it easier to build a robust large system. You can prototype in Python. Once you've explored the space more, you can do the planning and design that the Java version requires. If you start writing in Java knowing as little as you did when you started writing the Python version, you'll waste way more time exploring than actually building the system you'll eventually build.'"
Java is only good for keeping you up for those late-night hacking sessions.
Whoa there. There's a neat thing with prototyping and keeping your prototype away from your final system, from start to finish. The purpose of prototyping is to get a somewhat usable, testable application without developing it in it's entirety. It may not give you all the real data, and hell, all the functionality may not be accessable from the multiple points you put it, but you get a good feel of what you want.
Now your end product should be clean, well thought out. It should have no design artifacts from your prototype, because after all, your prototype is meant to bring out the good of a project and leave behind the bad. Code and design artifacts from the bad are just bugs to learn from and not to repeat.
If you still disagree, think of your prototype as a rough draft. You read it, you poke at it, you get a feel for it. Then you write the real thing.
As for what languages you use, you'd use a faster to develop in language first, which is robust, and your intended one later. Prototyping in java and moving to python won't be bad since you can develop in either relatively quickly. It's the planning of what you wanna do is a bitch.
-
ping -f 255.255.255.255 # if only
Step 1: Call it a prototyping language so you get everyone using it but not having great expectations or concerns about liability if it doesn't perform perfectly.
Step 2: Release early. Release often. Fix bugs like it is going out of style and respond to solid feature requests from users. Grow your userbase beyond early adopters. Promote developer adoption by making what they create available in repositories.
Step 3: A few years go by, and you have enough features that you can claim that it is no longer just for prototyping.
See a pattern: Perl did the same thing. PHP is doing it too.
I don't think java ever went through this cycle, though, which makes me suspicious of it. The claim seems to be that ten bearded guys at Sun replaced step 2. Yes, there is more to good technology than grass-roots popularity, but when the grass-roots tools will get the job done, get it done securely, and get it done with high availability, what's the point?
http://tinyurl.com/4ny52
True. The same holds for C and assembly: Development in a "higher level language" is faster but may lead to less efficient code compared to a "lower level language" on an elementary level. Allegedly, holding on to assembly is what (almost) caused WordPerfect's death, while Microsoft's usage of C definitely gave them a head start with the development of new features in Word.
(Concerning C/ass I'm not sure about robustness. With Python/Java this issue is more evident, since robustness was one of Java's design goals.)
Read the whole article. A few paragraphs later, Guido details two real-world examples where python was used to create working prototypes for eShop and Yahoo Mail. After a few months of production deployment of those apps, the python code was replaced with C++.
IMO, this is a much better approach: Write a decently architected python (perl/php) app that meets the customer requirements. Then, and only if performance is an issue, replace pieces of the app with C/C++. I don't see where Java enters into the picture.
Bad choice of words, surely, given that pythons are large constrictor snakes, not noted for their swiftness... :)
-MT.
Funny, I thought the Java Community Process and the Bug Parade were step 2! As a result of feedback, Java has added nested classes, strictfp, generics, enums, foreach, reference objects, tons of library classes, as well as fixed thousands of bugs.
What a fool believes, he sees, no wise man has the power to reason away.
Apparently I was wrong, my friend at Sun tells me it was really only six bearded gurus, not ten.
http://tinyurl.com/4ny52
Not necessarily true.
If you start building your prototype with solid testing and you apply effective refactoring your little prototype can grow into a solid and clean system.
Java has great tools for these jobs (junit and eclipse), but you can find similar tools for almost every other language. Give them a try.
Fh
Funny, this is the exact argument LISP programmers have been making for the last fifteen years.. Python has long been accused of progressively stealing more and more of LISP, but given LISP's current commercial success (or lack thereof) I might argue against also immitating its advocates.. ;)
[disclaimer: I am not disparaging either LISP or Python, in fact Common Lisp is my favorite language, I'm simply pointing out that I've heard this argument before]
While working on a C++ project for BeOS, I prototyped it in Python using the Bethon BeAPI bindings. Took me about 2 hours to get the GUI done, tested and ready for C++.
Python is a great prototyping language. Fast, stable, good debugging abilities, etc. But it's also good for other things. Dont market it as a prototyping language! It's not just for that.