Generally speaking, it will be a question of developing compilers not just for fun, but for any projects. These can be projects for internal use, or maybe they will be projects that are sent for sale. Or maybe the self-commitment of the community for the subsequent milking of this community. I will not understand the reasons why it may seem that creating a new programming language will take the company to a new level, but there are reasons, languages are written, creating, in my opinion, enormous problems, both for the company and for the employees of this company.
Link to the first part of the series: window systems
Link to the second part of the series: plotting
First, the development of a personal programming language can begin, simply because it seems to the author that this language (for someone, and ideally for everyone) will be better than others. Well, we all understand that in 99.9% of cases this idea is utopian.
Further, there may be such a situation that the management, having bought a new hardware, or what is better - having developed a new type of device, it suddenly decided that all that is - would not work and something must be invented. For example, a new programming language for this, hitherto unknown 80386.
It is also quite often that there is a situation when there is a developer who wants to perpetuate himself in the company and does everything that he can, just to be non-interchangeable ... His own compiler, his own operating system, his own drivers, command line pribluda ... Ctrl + Alt + LOLS combination. In short, that no one except himself could understand anything here. Then it will appreciate, raise wages. After all, no one wants to invest in the process of remaking what is already there.
The reason may also be the fact that until people figure out and install the operating system, it will take too much time and "it is easier to write everything yourself." Or, for example, to cross-platform to write to two or more devices. There can be a lot of reasons, but the essence is the same: companies are beginning to develop a useless product, spending time and money on it.
Frank cons of this approach:
- Instead of spending a week searching and 3 weeks studying, the company spends years developing and maintaining the compiler and related software;
- It is impossible to find highly skilled workers under a language that is not used anywhere else;
- Staff who are still hired do not gain experience. These are people who lose their skills. If a person previously wrote on the .NET platform, then after a while he will forget the libraries, and then the C # language itself.
This leads to the conclusion that in any case it is just necessary to think a little and decide that such a decision is a waste of time and money for the company. If for some reason the staff of programmers assures you that such a step is necessary, then either they want to become irreplaceable in the company, which means make you dependent on them, or their qualifications are too low.
The most universal way to use modern technologies in their devices will be either a manual build or a search for a ready-made solution of the Linux operating system. In general, I guess I see no reason to take something else. In this system, you will have everything you need for life. Any IDE (for example, the Eclipse SDK) can act as a development environment. Debugging can be done through JTAG. Almost all processors in the world are supported. The GCC compiler will make it possible to write software for your device on C / C ++ for any of these processors. You can also write to any device using the C # programming language. And along with it - all the framework libraries. The only thing - maybe you have to add some memory to the device. The task can be accomplished with the Mono project. In addition to exotic on Linux C #, you can use more traditional languages, the blessing under Linux is their rich support.
In addition to Linux, Java (J2ME) and Windows CE are well placed on hardware, but I am not familiar with this question, I advise you to read the relevant literature.
If we talk about the development of a new programming language in the framework of a desktop application, then this, in my opinion, is justified only if the language is aimed at highly qualified specialists, and such a language has not yet existed. If you create a software product that is inferior in functionality to existing analogues, for example, you want to compete with MathCAD or MetaTrader 4, then the best way here is either to support their programming languages or to support any of the existing programming languages. Since the development of compilers, equipping the language with rich tools, debugging the resulting code will take so much time that you just pass the entire existing budget, and you have no money left. And believe me, you will also have to make a competing product. And so make it so that the user believes you are worth buying and using.
How to quickly compete with the trading platform?
- In the core - TPL, DLR, MEF
- Plugin model - MEF, XML configuration
- Window model - see part 1
- Charts - see part 2
- The script code editing window - SharpDevelop 3.X - there you can hook up both the editor and the debugger and compilation.
- Programming language - C #, VB.NET, IronPython, IronRuby, any .NET - compatible.
Believe me, this will be enough for an ultra-fast start. The server is written in C # for any free or paid database. As a result, we get a quickly developed product, reduced development time for at least a year and automatic community support, knowing those programming languages that you have chosen as the script for your platform. If you do decide to write your bike, you will not have such automatic support. Here you are your own enemy.