I recently re-watched "The Lord of the Rings" (LOTR) movie trilogy. Remember the LOTR phrase, "One Ring To Rule Them All"? Could there ever be "One Programming Language To Rule Them All" (OPLTRTA)? In the early years of our industry there were loads of new languages appearing each year (History of Programming Languages). There were also attempts to create best of all worlds programming languages. PL/I was an attempt to take parts of ALGOL, FORTRAN, COBOL, and added numerous data types, dynamic arrays and strings, exception handling, separate compilation, and system programming. PL/I started as a specification for a "new programming language" or NPL. Interestingly, PL/I had no reserverd words. PL/I passed Donald Knuth’s famous "Man or Boy" programming language test. This test checked to see if a programming language supported recursion and non-local references.
Neal Ford talks and writes about the prevelant use of "Polyglot Programming". Jon Bently, author of the "Programming Pearls" columns and books, celebrates the creation and use of "Little Languages". I first heard the term, Little Languages, was at the talk Jon gave at the Second Annual Software Development Conference at the San Francisco Marriott (one of the most memorable keynotes I’ve ever attended).
In recent years Functional Programming Languages (F, Haskell, Erlang, and Scala) and Domain Specific Languages have appeared. Some of the programming languages that have been around for awhile have enjoyed renewed interest. Objective-C, a programming language designed by Dr. Brad Cox (C with Objects influenced by SmallTalk), has enjoyed new popularity because of the success of Macintosh OS X and the iPhone/iPad. Ruby, a dynamic programming language designed by Yukihiro “matz” Matsumoto (taking some of the best parts of SmallTalk, Eiffel, Perl, Ada, and Lisp), gained greater worldwide recognition because of the Ruby on Rails framework.
There are also the "fun" worlds, languages, and educational systems to teach programming, interaction, and automation including Alice, Squeak , Scratch, ToonTalk, Program by Design, Karel the Robot, Guido van Robot, and Lego Mindstorms. With all this wonderful work being done, the language and programming junkie in me is in seventh heaven.
C++ continues to evolve to meet the needs of developers. What started, by Bjarne Stroustrup at AT&T, as C with classes in 1979 has evolved to become an international standard ratified in 1998. There was a minor revision in 2004. We are now close to the completion of an update of the C++ language standard, the affectionately named C++0x. C++Builder continues to be enhanced to support the C++ language and standard libraries.
At Embarcadero Technologies, we continue to modernize the programming language capabilities of Delphi to meet the demands of new software architectures, new platforms, and new hardware advances. What started as Turbo Pascal has continuously evolved with the addition of objects, interfaces, structured exceptions, nested classes, default parameters, for..in, inline functions, operator overloading, RTTI, generics, anonymous methods, dynamic arrays, class helpers, attributes, and more.
RadPHP XE, our latest release of our PHP IDE and component library, extends the objects of PHP with the implementation of PHP components (properties, methods, server side and client side events). RadPHP increases web development with a completely integrated, rapid visual development approach and component framework for PHP.
Prism, the cross-platform development solution and robust programming language for rapidly developing .NET, Mono, ASP.NET, and data-driven applications for Windows, Linux, and Mac OS X. Prism implements many language enhancements for .NET (and beyond C#) including parallel for loops, futures, class contracts, aspect oriented programming, asynchronous statements and methods, and enhanced nullable types.
One way to keep track of programming language trends is to follow TIOBE Software’s Programming Community Index of languages. Evans Data Corporation also tracks programming language and software development trends (they have been researching and tracking developers and development for more than 12 years).
Should we attempt to create an OPLTRTA (can we even pronounce it: "oh-plet-trita")? Can we build such an programming language animal and convince everyone to abandon their favorite language(s) and move to it? Or, should we continue to enhance the programming languages we have to meet the needs of developers today and into the future? What do you think?