Free Newsletters
Technology & Business Daily

InfoWorld
Log-in | Register
STRATEGIC DEVELOPER  

Shipping the prototype

Let's promote scripting languages to the status they deserve


February 06, 2003
 

Years ago, when the paint was barely dry on Visual Basic 3.0, a developer showed me a CD-ROM-burning application he'd written using that toolkit. The idea was to prototype the UI in Visual Basic, then rewrite in C++ for performance. But in the end, he admitted somewhat sheepishly, "we shipped the prototype." I saw nothing to be ashamed of. It was -- and is -- a brilliant strategy. My only regret is that it hasn't been adopted more widely. Here's Guido van Rossum, Python's inventor, on programmer productivity:

Free IT resource

Open Source Business Conference (OSBC) May 22-23, 2007

Sponsored by OSBC

Free IT resource

Virtualization Insights from Top Experts - Learn how virtualization gets real!

Sponsored by Dell

"It wouldn't surprise me if the amount of typing Python requires is five times less than Java for a typical piece of code. When you have that much less code, it's so much easier to maintain, and also to change. This is all very informal, but I heard someone say a good programmer can reasonably maintain about 20,000 lines of code. Whether that is 20,000 lines of assembler, C, or some high-level language doesn't matter. It's still 20,000 lines. If your language requires fewer lines to express the same ideas, you can spend more time on stuff that otherwise would go beyond those 20,000 lines."[1]

In that same interview, van Rossum goes on to discuss applications (eShop, Yahoo Mail) that became successful in Python, and then morphed to C++ or Java. During the exploratory early phase of development, he says, it's essential to use a high-level, dynamic, and weakly typed language:

"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."

I wholeheartedly agree, and here are some follow-up questions to ponder. In a world of distributed services in constant flux, when does exploration stop? Why would you ever want to switch from a codebase that is concise, malleable, and easily maintainable to one that isn't?

Performance and robustness are the reasons usually given for not shipping the prototype. That's ironic when the chosen alternative is Java, because its use in mission-critical deployments is itself an example of shipping the prototype. Recall that in the pre-J2EE era, when what we then called "Java application servers" emerged as a favored platform, native-code Java compilers were considered a fallback option.  The idea was that you'd prototype in Java, and then if JVM performance became a bottleneck you'd compile to native code for deployment. As it turned out, hardly anybody did. The solution was more and faster processors, and more JVMs for load-balancing and failover.

Of course you dare not build the application server itself in a high-level language like Python. Not, that is, unless you're a quiet revolutionary like Zope Corporation's Jim Fulton, architect of the Python-based Zope application server. Several years ago, I used Zope to build a content management system for a client. It has been in continuous and trouble-free daily use ever since. Recently organizations like the U.S. Navy and the AARP have stepped forward to announce similar results on a much larger scale[2].

I am not only saying that you can do what used to be called "systems programming" in what used to be called a "scripting language" -- although you sometimes can. Nor am I merely lauding Python as a spectacular implementation of a first-class scripting language -- although it is one. My point is that languages like Python, but also Perl, Ruby, and JavaScript/JScript/ActionScript/EcmaScript, are strategic in ways that we don't yet fully acknowledge. As I mentioned last time[3], the classic phased life cycle of software development -- design/develop/test/deploy -- is dissolving into a continuous process. Change is the only constant; the services we create and use are always exploratory. Languages that express programmers' intentions in fewer lines of code are a huge productivity win. The deliverable code is easier to understand and maintain -- and so, crucially, is the test infrastructure that supports it.

It was never a priority for Sun to make the JVM script-language friendly. Independent developers took that upon themselves, with the most notable success being the Java-Python hybrid now called Jython. For Microsoft, script-language support was a stated goal of the .Net Common Language Runtime (CLR). Early on, we heard a lot about CLR implementations of Python and Perl. When ActiveState [4] researched the problem, though, it proved harder than first anticipated. The elbow grease that made Jython work as well as it does has not yet been applied to Python.Net and Perl.Net. Nor has Microsoft evangelized the most dynamic member of its family of supported .Net Languages: JScript .Net.

I'm still hoping we'll promote scripting languages to the first-class status they deserve. Computers are getting faster and platforms are getting smarter, but the human brain is on a very different upgrade cycle. We need to keep finding ways to help programmers pack more software behavior into fewer lines of code. Shipping the prototype is not yet practical in many cases, but that's a great goal.

1. http://www.artima.com/intv/speed.html

2. http://www.zope.com/CaseStudies

3. http://www.infoworld.com/article/03/01/31/05stratdev_1.html

4. Full disclosure: I am a member of ActiveState's Technical Advisory Board





 

TOP NEWS:


»  Sprint: WiMax cleared for commercial use
Sprint has completed nearly a year's worth of testing and has now declared WiMax up to commerical deployment standards

»  Tools circulate that crack Debian, Ubuntu keys
The tools take advantage of a recently discovered vulnerability and can be used to forge digital signatures and steal confidential information

»  Facebook to Google: Friend Disconnect
Facebook cites violation of its terms of service as grounds for blocking Google's Friend Connect from accessing social network's members' data

»  U.S. to investigate semiconductor patent complaints
LSI and subsidiary Agere Systems ask ITC to bar imports by companies violating their patent for semiconductor chips containing tungsten metal

»  Agile project management set for small teams
VersionOne also set to expand enterprise-level product

»  Update: DNS trouble knocks NSA off Internet
A server problem knocked the nsa.gov site offline for several hours Thursday morning




Virtualization: A Step by Step Approach to Success
Your virtual machines can be up and running in a matter of minutes. HP and Citrix have integrated XenServer with HP ProLiant servers and management tools, powered by hardware-assisted Intel Virtualization Technology to enable high- performance, cost-savings solutions for server consolidation and disaster recovery. Sponsor: HP

»  Click here to view this Webcast
  The Data Protection You've Been Looking For
Enterprise data is of supreme importance. If you can't find it quickly, it's worthless. If you lose it, it's a crisis. This IT Strategy Guide explores how to keep your data safe.

»  Click here to download now

- Special Advertising Partners -
WHITE PAPERS
 

» Technology White Papers Library

Technology White Papers by Topic

Technology White Papers E-mail Alert

Find out when the latest white paper is available:
 
 
INFOWORLD MARKETPLACE
 
» BUY A LINK NOW
 

FIND PRODUCTS AND COMPANIES
» COMPLETE PRODUCT GUIDE



TECHNOLOGY INDEX
• Applications
• Application Development
• Security
• Networking
• Wireless
• Platforms
• Hardware
• Data Management
• Storage
• Web Services
• Business
• Telecom
• Professional Services
• Standards

TECH WATCH 


What's the 411 on GOOG-411?
Just as Google has become synonymous with "performing a Web search," 411 is understood to mean "information" -- as in "what's the 411?" I was thus surprised to discover, from a billboard, no less, that the king of search is taking on the ...

Apple HTML source reveals 'iPhone Extreme'
"This one's a stretch..." reports AppleInsider. Um, yeah. Reporting on HTML code sightings of product names could be called a stretch, but iPhone Extreme has a ring to it. Now, that sounds like the product Apple should have released first, rather ...

COLUMNISTS

Unified under law
Ephraim Schwartz's Column and Blog (InfoWorld) - In the litigious world we live in, deploying a unified communications platform in your enterprise could...
» MORE COLUMNISTS

MORE INFOWORLD BLOGS


Open Sources 
Product Management
When I joined MySQL four years ago, there was quite a lot of debate about product management. We didn't actually have ...

Zero Day 
Botnet herders tending smaller flocks
New research backs up the theory that botnet operators are keeping their networks smaller in a continued effort to keep ...



• Advice Line
• Database Underground
• The Deep End
• Enterprise Mac
• Geeks in Paradise
• Grid Meter
• The Gripe Line
• InfoWorld Daily
• Inside IT
• IT Troubleshooter
• ITXtreme
• Open Sources
• ProdBlog
• Real World SOA
• Reality Check
• Security Adviser
• SMB IT
• The Storage Network
• Tech Watch
• Virtualization Report
• Zero Day

ADVERTISEMENT


RESOURCE CENTERadvertisement 

GOVERNMENT IT & POLICY
'If you don't go after the network, you're never going to stop these guys. Never.'
From the State Department, All the News for Inquiring Minds
TechPresident, the Internet Citizenry's New Consensus Taker



Sponsored Technology Links

 
 
 HOME  NEWS  BLOGS  PODCASTS  VIDEOS  TECHNOLOGIES  TEST CENTER  EVENTS  CAREERS  IT EXEC-CONNECT   About | Advertise | Awards | RSS | Contact Us 

Copyright © 2008, Reprints, Permissions, Licensing, IDG Network, Privacy Policy, Terms of Service.
All Rights reserved. InfoWorld is a leading publisher of technology information and product reviews on topics including viruses,
phishing, worms, firewalls, security, servers, storage, networking, wireless, databases, and web services.

CIO :: ComputerWorld :: CSO :: Demo :: GamePro :: Games.net :: IDG Connect :: IDG World Expo
Industry Standard :: IT World :: JavaWorld :: LinuxWorld :: MacUser :: Macworld :: Network World :: PC World :: Playlist