Thursday, November 14, 2013

Universal programming language

In recent years there has been an increase in the number of programming languages which, as proclaimed by their respective disciples, are "the best one". In this list one can include Python, Java, Ruby, Scala, c# and probably many more I didn't even hear of. Once one is familiar and adept in one language, the transition to another is usually not that hard, where one has to only learn the new syntax and some idiosyncrasies of that language.

I would like to propose a "linguistics" approach to this topic and try to compose, similar to Esperanto, a "universal programming language". Via research on the development of programming languages, one can, in complete analogy to spoken and written languages, learn the evolution of society, technology and hopefully to predict and analyze future directions of developments.

I recently encountered an amazing site, http://rosettacode.org/wiki/Rosetta_Code, in which a (rather) complete list of programming languages is detailed. The most amazing thing in this blessed endeavor, is that you can ask a question regarding programming, e.g. how to find if a file exists, and get the answer for more than 50 programming languages. A short comparison indeed shows that they are extremely similar in most respects, but have small modifications, alterations and quirks.

I think two interesting projects can evolve from such a Rosetta-code (probably both are currently underway or finished, but I unfortunately am unaware of them). The first is a language-to-language translator. Many coders are required to transform code from one language to another due to a new language appearing or a demand from a customer. Wouldn't it be nice if it could be made with a single click?

The second, more ambitious project is to create a "universal programming language". Combine all known programming languages under one common roof and allow one of two things: either attempt to make the "optimal" language under specific constraints, e.g. performance, ease of use, shortness of written commands, etc; or allow a completely customizable instantiation of novel languages - if a coder wants to enjoy all worlds such as performance of c and each of Ruby, why shouldn't she. She just open the "universal programming language" settings, choose level of performance and ease of programming and a novel easy-to-operate language is created.

I for one, would have enjoyed the results of both projects, so if you, reader, know of such things, I'd appreciate a reply/comment. Thanks.

No comments:

Post a Comment