Re: [tsc-devel] Rewrite: Programming language
Chris Jacobsen |
Sun, 15 Oct 2017 20:35:07 UTC
Sorry for my slow reply. I haven't had time to look into the languages
closely, so I will just have to send my current thoughts as is.
> C++ surely is a proven language and definitely remains the
fallback option if I don't find something suitable
Aside from being a proven (and generally well supported) language, we
can also borrow scripting implementation, enemy, and some HUD logic from
TSC - basically the better written pieces. This could somewhat reduce
the difficulty of the complete rewrite, which requires writing quite a
bit of code. C++ is a very viable option.
Apart from accounting for usability of a language, it's worth asking
everyone what their interests / preferences are. New people often work
on projects in which they already know a language or in which a project
uses a language they want to learn. I have to admit that language
choice may have an impact on my own involvement in the rewrite.
> Compiled language, i.e. no interpreted language and no VM language
Given the amount of trouble we've had with getting people to port builds
to other Linux distributions, cross compilation, and especially in
getting someone to build on Macintosh, it is worth discussing this more,
as using a VM language would solve a lot of the problems. Even mobile
could become a better possibility.
Just in time compilation alleviates a lot of the performance problems,
though I would agree native languages can probably be faster if code is
well written. We are only looking at writing a 2D platformer, though,
which is not as likely to need heavy performance optimizations, unless
we implement serious AI or something such as this.
I can understand the concerns about the size of the runtime for a
managed language, but how much is this likely to impact users? People
have to deal with this all the time if they want certain apps.
Quintus pointed out in IRC that Go actually has a better dependency
system than C++, though this does not solve the problem of building on
platforms such as Macintosh.
> C#: Fails on 4, 9, and currently still 10, until .NET Core has been
completed fully for Linux as well.
Hypothetically assuming we used C#, to what extent would the .NET Core
be likely to impact us?
> Java: Fails on 4, and I don't want it.
I'm not much of a fan of Java at all, but I think it's worth discussing
for the sake of understanding at least. (Java brings back bad memories
of Information Systems programming).
I can't overemphasize how much trouble we've had with build issues in
the past with TSC, when all things are considered. If Java and C# are
not options, it might be worth discussing additional ones.
> 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 would tend to find limited inheritance options concerning in general
(I even was a bit critical of C# and Java for not allowing multiple
inheritance if a programmer chooses), though I'd need to understand this
a bit better to critique it.
-datahead