The Artima Developer Community
Sponsored Link

Software and Return on Investment
How Many Hello Worlds are Left
by Gregg Wonderly
September 22, 2003
Summary
Are you tired of new Languages... Yet?

Advertisement

How Many Hello Worlds Do We Need

It is a rather wasteful use of time to recreate the same applications in a different language each time a new language arrives on the scene. In the past 20 years that I have been in the world of computer science, I have seen many different languages come and a few go. Many seemed to be created with the initial task of trying to solve either administrative problems or provide a new capabilty, through language constructs, for solving a particular class of problems. Few have actually added substantially to the ease of programming in general, and the stability of applications specifically. Java is the exception that I have recognized and grown to use exclusively.

General purpose programming has been slowly (smalltalk came on the scene some 20 years ago) moving toward object oriented programming. Smalltalk set the stage, with C++, Perl, Java (and the plethora of modified Javas), Python and others to follow. The computer science community has learned some things that are important about procedural programming. Languages such as Algol created some stirring new concepts. Many concepts that date from that far back have reappeared in some related form in newer languages.

There is of course languages of other natures that have been gathering significant followings. Some are related to artificial intelligence. There is the whole class of languages that deal with very abstract levels of expression. The runtime overhead of some of these is so large that they really can only be used for small problems as an example of the power of these languages.

What I perceive for most of the procedural languages that are 20 years old or less, is that each has been created to solve a class of problem that was difficult (but not impossible) to solve using an existing language. The phrase "Application Oriented Language" generally applies to this type of language. Perl was created for text processing. The awk and sed applications in UN*X make it possible to do most of the things that the original version of Perl did. It was perhaps easier to create Perl for a particular class of complex document parsing, than to write all of the combined awk and sed code wrapped in a shell script.

Languages such as Python don't really seem to help solve OO programming problems dramatically easier. The dynamic nature of typing in Python does make a certain class of programming problems seem easier. But, for general OO programming, Python is not really a dramatic, simplifying technology.

Of course, there are people who are going to argue with these assertions. I am sure that there are many that use Python as their primary programming language. There are certainly many that refer to the Perl/Python programmers as the "script-kiddies" because many of the most prevalent uses of these languages is for simple scripting problems in web server CGI services, PHP, JSP and related uses. It is clear that for many people who are not software engineers, that there has been some element of power and simplicity realized in the use of these languages.

The original class of problems that most of these languages were targeted at solving still remain the place where they are most actively used (and effective), and thus they are Application Oriented Languages.

Java is Very Different

The Java programming language was originally targeted at the Web for use in applets. The applet programming model, while powerful, initially had problems related to the UI component portability as well as the Microsoft Java license violations, and some of the restrictions of the initial security model in the JDK1.x specification. Many types of applets were created that were effective however. People found the lowest common denominators that worked, and used then. However, the first target arena for Java moved directly to the server side with the advent of Java Server Pages and the Servlet programming APIs provided in the Java Web Server and later in the Apache web server. These technologies greatly improved server side programming technologies from the use of shell scripts or programs using the CGI interfaces. Python and Perl were soon on the web server bandwagon too.

What is the Target Application?

Many of the Java technologies, when released by Sun, and other Java vendors have ended up being used for completely different solution spaces than they were originally targeted for. This is what makes it clear that Java is a much more general purpose language. People see the technologies in Java, and find them to be general purpose enough to be used in a wide range of places. People have really complained about Java not having certain things like regular expressions (it does now). There are many other basic things that people have complained about Java not having. I believe that Sun and the rest of the JCP have tried to keep from mandating things in the language that were not generally useful. This allows 3rd parties to provide these technologies as additional packages to be used when needed.

More recently, the JCP has started to add convenience classes, APIs and features. This will enlarge the requirements for other implementations. But, they say that it will make it possible for the less trained programmers to get more out of using Java.

Other topics to discuss...

  1. There has been some evolution in the requirements of programmers.
  2. There has been some evolution in the size of the hardware that the programmer could use.
  3. There were some language performance problems, and program maintainability was problematic.
C and C++ really provide no support to the user for true memory management, out of the box. Everyone has had to develop toolsets, idioms and mantras for how to make sure you don't end up writting or reading through an invalid pointer. This has gone on for way too long, and it just seems like everyone that is still doing new applications in C or C++ on platforms where Java is available, are just too proud, or profoundly uninformed.

Smalltalk and many other OO languages truely provided a new paradigm in programming. The power of Objects is compelling. What's next? More Objects, no Objects, or...

Talk Back!

Have an opinion? Readers have already posted 11 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Gregg Wonderly adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Gregg Wonderly graduated from Oklahoma State University in 1988 with an MS in COMSCI. His areas of concentration include Operating Systems and Languages. His first job was at the AT&T Bell Labs facilities in Naperville IL working on software retrofit for the 5ESS switch. He designed a procedure control language in the era of the development of Java with similar motivations that the Oak and then Java language development was driven by. Language design is still at the top of his list, but his focus tends to be on application languges layered on top of programming languages such as Java. Some just consider this API design, but there really is more to it! Gregg now works for Cyte Technologies Inc., where he does software engineering and design related to distributed systems in highly available environments.

This weblog entry is Copyright © 2003 Gregg Wonderly. All rights reserved.

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2014 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us