The next New Thang

So what is the next new language? Why need a new language? Isn't where we are good enough? I believe that the answers to these 3 questions are Dunno, Yes, and No. Let me explain.

We are truly in the Software Dark Ages. It is crazy in 2008 that we have to jump through such hoops when attempting to create elegant solutions for enterprise users. Web applications, for example, are such that no current platform readily adopts to the web model. So we use workarounds like Struts, JSF, Ajax, and others because there are simply no credible alternatives. J2EE has been greatly reduced in the 3.0 EJB specification, so we no longer have to use a sledgehammer to kill a gnat. But for web applications, there is no real value added there. ASP and .NET technologies are possibly closer to a real model, but they suffer from lack of real re-usability, as well as still leaning on the shared back-and-front end technologies we see in other options. Being a Java guy has me thinking, "where's the next new thing?"

Speaking of Java, Winn in 2003 wrote in a blog that "Java is becoming increasingly hard to apply" in many situations. It's over 10 years old, and new adds to it aren't making it that much cooler any more.

So where to turn to now? Are there any breakthrough ideas out there? Let's look at several of them.

1. Scala - according to Wikipedia, a pure object-oriented language in the sense that every value is an object. Types and behavior of objects are described by classes and traits. Class abstractions are extended by subclassing and a flexible mixin-based composition mechanism as a clean replacement for multiple inheritance.

Scala is designed to interoperate well with popular programming environments like Java and the .NET Framework. In particular, the interaction with mainstream object-oriented languages like Java and C# is as smooth as possible. Scala has the same compilation model (separate compilation, dynamic class loading) like Java and C# and allows access to thousands of high-quality libraries.

Making use of these libraries addresses the common drawback of using advanced functional languages which is that the small community, much of it centered around academia, often does not get to implementing quality libraries for common real-world tasks such as relational database access, XML processing, regular expressions, and so on. Scala can accomplish those tasks in a manner very similarly to these core languages.

2. Jura is a 2nd-generation to Java. It has some neat features:
  • Jura is a data language: it can be used to describe any structured data, including source code.
  • Data/program equivalence: the Jura representation of some structured data and the source code required to programmatically create an instance of that data are one and the same thing.
  • Programmatic design patterns: these are design patterns which can be imported and implemented automatically. 
  • Generics: allows generation of classes from generic templates. Generic templates in Jura are not limited to changing the type of methods, parameters etc. but can change any aspects of a class, including implementation. 
  • Abilities: these are tiny interfaces which allow common functionality to be declared at a fine degree of granularity, so allowing the creation of highly reusable algorithms.
  • Transforms: allow transformation of object graphs in a similar manner to XSLT (except clean and object-orientated) implemented using only a small set of programmatic design patterns.
  • Restricted types: allows restrictions to be added to types, such as enforcing that an Integer is in a particular range or a String satisfies a particular regular expression. 



 

What did you think of this article?




Trackbacks
  • No trackbacks exist for this post.
Comments

Leave a comment

Submitted comments are subject to moderation before being displayed.

 Enter the above security code (required)

 Name

 Email (will not be published)

 Website

Your comment is 0 characters limited to 3000 characters.