Hi there! Some ideas for implementing a multi-platform programming language:
User-friendly (think AutoHotKey-like).
Emits
source code in the native language of the target platform for "expected format" compilation i.e. exe on windows, apk on android, etc.
It may re-use building blocks from a solution such as
Haxe or a brand-new transpiler can also be done from scratch via
ANTLR +
StringTemplate.
The idea being to use a native technology for the target platform at all times; using their flagship language(s) preferably:
- C#/VB.NET = Windows.
- Java/Kotlin = Android.
- C++/Vala = Linux, GTK.
- Swift = Apple-based operating systems.
- Node.js/Javascript/WebAssembly = server-side, web apps.
...You get the gist.
The core of the functions would be written using
platform-neutral instructions while the GUI part would be specific to each target platform.
Think "Environment.NewLine" (automated "\n" or "\r\n") or Path.DirectorySeparatorChar (for dealing with "\" or "/") and so on.
With handy platform-neutral ways + specific GUI functionality you can have the best of both worlds across as many platforms as the industry evolves to use.
Actually, some times I wonder how much interest/support would such
future-proof-oriented transpilers gather for ensuring
code longevity across platforms.
Some programs are basically the same as they were
decades ago! (Think in terms of the same buttons, windows, dialogs, text labels, et cetera).
These programs are basically
forced to being re-coded to keep on with the current/new operating systems' way, even if there is not a single improvement in functionality(!).
i.e. I recall doing some VB6 => VB.NET conversion for an Aussie fellow maintaining the exact same functionality. Just because of a 32-bit to 64-bit requirement.
We could simply update the transpiler to support emitting new code for the "popular platform of the day", keeping the original programs
fresh-looking and current for longer periods than bound to a particular single technology/framework/compiler/operating system's ways
EDIT: not to mention reaching more target platforms with the same code given many platforms share the same foundations, which can be a big plus on itself.
(for instance: same code-base for Windows, Linux, Mac and single-page web app)