Re: [tsc-devel] Rewrite: Programming language
Ryan Gonzalez |
Sun, 15 Oct 2017 22:49:12 UTC
On Sun, Oct 15, 2017 at 3:35 PM, Chris Jacobsen <…9@y…> wrote:
> 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.
>
FWIW things like Docker, Rootbox, and Nix help alleviate the build
dependency issue, and AppImages and flatpak help the runtime issues.
One thing always worth nothing is that JITs have better performance
but larger overhead, so it's a bit of a trade-off.
Go's dependency system is great until you need to link with C++
libraries, at which point things get just as nasty as with vanilla
C++.
Also, while we're considering JITted languages, what about Dart?
StageXL (for HTML5 game development) has gotten quite a bit of
traction lately: http://www.stagexl.org/
HTML5 games would also remove any native platform issues (but instead
add some other web-related ones...).
> 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).
Hypothetically considering Java, Kotlin alleviates a lot of its
syntax-related woes.
>
> 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
>
--
Ryan (ライアン)
Yoko Shimomura, ryo (supercell/EGOIST), Hiroyuki Sawano >> everyone else
https://refi64.com/