[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

By Thread
2017-09-24 06:57:49Marvin Gülker[tsc-devel] Rewrite: Programming language
2017-09-24 12:09:04Lauri OjansivuRe: [tsc-devel] Rewrite: Programming language
2017-09-25 11:57:30Marvin GülkerRe: [tsc-devel] Rewrite: Programming language
2017-09-25 14:09:38rymg19@gmail.comRe: Re: [tsc-devel] Rewrite: Programming language
2017-09-25 14:47:52Taran LynnRe: [tsc-devel] Rewrite: Programming language
2017-09-25 17:25:08Marvin GülkerRe: [tsc-devel] Rewrite: Programming language
2017-09-25 18:43:45Taran LynnRe: [tsc-devel] Rewrite: Programming language
2017-09-25 19:33:22Marvin GülkerRe: [tsc-devel] Rewrite: Programming language
2017-09-25 16:46:10Marvin GülkerRe: Re: [tsc-devel] Rewrite: Programming language
2017-09-25 20:15:23Ryan GonzalezRe: Re: [tsc-devel] Rewrite: Programming language
2017-09-25 21:10:15Lauri OjansivuRe: Re: [tsc-devel] Rewrite: Programming language
2017-10-06 18:47:09Marvin GülkerRe: Re: [tsc-devel] Rewrite: Programming language
2017-10-06 20:34:08Ryan GonzalezRe: Re: [tsc-devel] Rewrite: Programming language
2017-10-07 09:11:11Marvin GülkerRe: Re: [tsc-devel] Rewrite: Programming language
2017-10-14 18:48:42Marvin GülkerRe: Re: [tsc-devel] Rewrite: Programming language
2017-10-15 20:35:07Chris JacobsenRe: [tsc-devel] Rewrite: Programming language
2017-10-15 22:49:12Ryan GonzalezRe: [tsc-devel] Rewrite: Programming language
By Date
[tsc-devel] Rewrite: Programming languageMarvin Gülker2017-09-24 06:57:49
Re: [tsc-devel] Rewrite: Programming languageLauri Ojansivu2017-09-24 12:09:04
Re: [tsc-devel] Rewrite: Programming languageMarvin Gülker2017-09-25 11:57:30
Re: Re: [tsc-devel] Rewrite: Programming languagerymg19@gmail.com2017-09-25 14:09:38
Re: [tsc-devel] Rewrite: Programming languageTaran Lynn2017-09-25 14:47:52
Re: Re: [tsc-devel] Rewrite: Programming languageMarvin Gülker2017-09-25 16:46:10
Re: [tsc-devel] Rewrite: Programming languageMarvin Gülker2017-09-25 17:25:08
Re: [tsc-devel] Rewrite: Programming languageTaran Lynn2017-09-25 18:43:45
Re: [tsc-devel] Rewrite: Programming languageMarvin Gülker2017-09-25 19:33:22
Re: Re: [tsc-devel] Rewrite: Programming languageRyan Gonzalez2017-09-25 20:15:23
Re: Re: [tsc-devel] Rewrite: Programming languageLauri Ojansivu2017-09-25 21:10:15
Re: Re: [tsc-devel] Rewrite: Programming languageMarvin Gülker2017-10-06 18:47:09
Re: Re: [tsc-devel] Rewrite: Programming languageRyan Gonzalez2017-10-06 20:34:08
Re: Re: [tsc-devel] Rewrite: Programming languageMarvin Gülker2017-10-07 09:11:11
Re: Re: [tsc-devel] Rewrite: Programming languageMarvin Gülker2017-10-14 18:48:42
Re: [tsc-devel] Rewrite: Programming languageChris Jacobsen2017-10-15 20:35:07
Re: [tsc-devel] Rewrite: Programming languageRyan Gonzalez2017-10-15 22:49:12