AzoftSpotlightReinventing Wheels: Programming languages

Reinventing Wheels: Programming languages

By Stanislav Sidristij on March 4, 2011

9dc91c4d Reinventing Wheels: Programming languages

In this post I'd like to dwell on compilers development for specific projects, in-house or commercial; or alternatively for "benefiting from  involving a community into development process". I shall not speak about reasons why new programming language creation sometimes seems advantageouse to a company but believe me many companies find such reasons and let write new languages, which finaly creates big problems as for the company as for its employees.

The most frequent reason to start new language development are naive authors who think  that their language will be better than any other, for somebody or even for everybody. Unfortunatelly for the author it isn't so clear like for me and you that for 99,9% this idea is utopian.

The plot of the story can be different. Let's say managers bought a new hardware or even let develop a new type of device, and suddenly they decided that everything they have is bad and that they need something new. E.g. a new programming language for this hitherto unknown 80386ะก.

A common situation is: a developer wants to perpetuate himself in the company and takes up "really essential" job… He develops a new compiler, operating system, drivers, command line tool… Now reference is marked not as question sign but as a combination Ctrl+Alt+LOLS. To put it short, he made everything that nobody except of him can make a sense of anything here. May be now he will be appreciated and increased wage. Because nobody will investigate in remaking what already exists.

Some companies consider that sorting out and installing an operating system takes too long, it is easier to "write everything themselves", or to write cross-platform for 2 or more devices. There can be many reasons but one essence: companies start developing an useless product and only waste time and money for it.

Obvious cons of such approach are:

  1. Instead of spending a week for search and 3 weeks for stunding company spends years for development and compiler support and associated software;
  2. It's impossible to find qualified employees for a language that isn't used anywhere else;
  3. The personal doesn't receive any experience. These are people who lose their skills. If a person wrote on the platform .NET, after some time he will forget the libraries and soon he will forget C#.

Here we come to the conclusion that such solution is just wasting time and money. If your programming personnel assures you in the necessity of such step, whether they want to become irreplaceable in the company - which means they want to make you depend on them, or they have very little qualification.

The best way how to use modern technologies on your devices is hand fitting or look for ready solutions by Linux operating system. I think it will be completelly enaugh. Any IDE (e.g., Eclipse SDK) can be used as development environment. You can make debugging via JTAG which supports practically all existing processors. GCC compiler enables you to write software for your device on C/C++ for any of these processors. You also can write for any device using C# programming language, and all framework libraries. The only note – may be you will need to add to the device some memory. The task is easily solved with the help of the Mono project. Except of C#, exotic for Linux, you can use more traditional languages, thanks God there is a reach support for  Linux.

Except of Linux Java (J2ME) and Windows CE can be perfectly installed on hardware but I am not an expert in this question, I would recommend you to read relevant literature to the topic.

As for developing a new programming language on a desktop application, it is worth it only if the language is oriented at particular specialists, and if this language didn't exist before. If you create a program product which functionality yields to existing analogs, e.g. you want to compete with MathCAD or MetaTrader 4, the best way here will be to support their programming languages or to support any of existing programming languages. Because compilers development, equipment the language with a reach toolkit, final code debugging will take so much time that finally you will run out of budget and stay without a penny. And additionally you will have to make a competing product – make it so that user believes that it's worth buying.

How to quick make a competitive product to a commercial platform?

  1. Based on TPL, DLR, MEF
  2. Plugin model — MEF, configuration at XML
  3. Windows model
  4. Graphs
  5. Script code redactor window — SharpDevelop 3.X — there you can find both redactor and debugger and compilation.
  6. Programming language — C#, VB.NET, IronPython, IronRuby, any .NET — compatible.

This will be enough for a super quick start. You write server on C# for any free or paid database. As a result you have quickly developed a product and reduced development terms at least at a couple of years plus you automatically get a support of community who knows the programming languages that you've chosen as script languages for your platform. If you write "a wheel" you won't have such support. And only you will be to blame in your own problems.

Read also Reinventing Wheels: Libraries and Reinventing Wheels: Drawing graphs in .NET

Stanislav Sidristij is Team Lead of CodePlex – Open Source project Community. You can check out his latest projects on CodePlex web site.

Enhanced by Zemanta