[tsc-devel] Rewrite: Programming language
Marvin Gülker |
Sun, 24 Sep 2017 06:57:49 UTC
Hi everyone,
as I promised in my earlier email, here is another message on the
rewrite topic. I am currently evaluating possible programming
languages. C++ surely is a proven language and definitely remains the
fallback option if I don't find something suitable, but its verbosity
(header files!), its inability to easily work with Unicode, and its
overall usability have made me think that it might be time to look for
alternatives. I have made a list of criteria that the language has to
fullfill:
1. A syntax without a large amount of syntactical complexity like C++
has, and I have to like the "feel" of the language,
2. No header files,
3. The language should exist for some time and have a perspective into
the future, as well as an established community (I do not want to
use a language that's gone in five years because it's not "hip"
anymore),
4. Compiled language, i.e. no interpreted language and no VM language,
5. Easy use of existing C libraries (including Win32API), bonus
if C++ libraries can be used,
6. Rich standard library so that using it does not create a plethora of
dependencies where not required,
7. Stable API of the language and its standard library, no
breaking releases of it all the time,
8. Unicode support without external dependencies,
9. Usability on Windows without propriatary MSVC required, bonus if
it can crosscompile to Windows from Linux,
10. Usability on Linux,
11. Not purely functional language.
There's some personal taste in this criteria, and some definite need. If
you think more or less criteria are required, feel free to speak up.
I have been evaluating programming languages during the last days. These
are my results so far, in no peculiar order:
* Rust: While I am willing to accept that it meets criterion 3 above by
now due Mozilla's use of it in Firefox, it does not meet criterion
6. It has this web developer taste of having external dependencies for
every small thing downloaded from the web -- for example, no rand()
function without an external dependency. It should be distros
providing libraries. It also has problems with criterion 7 as
far as I can see.
* C#: Fails on 4, 9, and currently still 10, until .NET Core has been
completed fully for Linux as well.
* Java: Fails on 4, and I don't want it.
* D: I originally thought this is a hot candidate, until I discovered it
utterly fails on 9, and quite a bit on 5 if your C library on Windows
is not compiled with MSVC,
* Go: I am in the process of evaluating it. Looks like it may fulfill
all the criteria, but I am not finished with it yet. Especially I have
not tested its usability on Windows yet.
What made me first not consider Go was that it does not provide
inheritance, but once I discovered that Rust does neither, I opened my
mind on the topic a little. Its interfaces actually look promising. I
will further evaluate the language and give feedback here.
Marvin
--
Blog: https://www.guelkerdev.de
PGP/GPG ID: F1D8799FBCC8BC4F