Foul Language
So I'm attempting to try out a few of the more modern languages to re-write the librarian in. The C++ libraries are a minefield of exception throwing, and cross compilation is a nightmare.
My needs:
1. Simple to run anywhere by non-technical folks.
2. Simple to cross compile to other targets (without virtual machines / other OS's installed).
3. Access to single character keyboard activity.
4. Simple serial port listing, reading, and writing.
5. Simple file system access.
6. Solid basic library support.
My wants:
1. Easy GUI design built-in.
Things I shy away from:
1. Virtual machines / interpreters running on the target.
2. OOP (Object Oriented Programming).
3. Pointers.
4. Manual memory management.
5. Weak / implicit typing.
6. Exception throwing / panic crashing.
7. Functional programming (lambdas, etc.).
8. Arrow type syntax.
Python can be compiled and has incredible ecosystem and low-level support, but the GUI elements of the interpreter aren't installed by default on all machines, and noobs might have trouble running scripts.
Java is everywhere and has C/C++ syntax. It's very mature but also very old and creaky, and has the trappings of things that were in vogue at the time of its birth, like everything is an object, compiling to a virtual machine, blea.
Rust looked really promising, but I think it tries too hard to be a kitchen sink of current programming paradigms, which makes for a complex syntax. Cross compilation seems buggy / problematic. Memory management is very nitpicky / micro managing due to the lack of a garbage collector.
Go is very C/C++ like with all the OOP junk removed but retaining pointers, unfortunately. The compiler seems quite snappy. But cross compilation of some code has C compiler dependencies. Functions can be in any order (like god intended). Too many library functions seem to do the same thing, making it difficult to pick which one to use.
With Rust and Go the compilers seem highly integrated into the package system, to the point where they can fetch code from the web, which makes me feel like some essential control is lost to convenience.
Pointers can be avoided to some degree in any language, but if they're there they'll get used in the standard library, then you'll end up having to use them too.
In the past it seemed most of the cross compile issues were between Win & Linux, but OSX seems to be more of the fly in the ointment lately.
I was never more aware of how much console programming relies on implementation specifics of the console running the app, and there are billions of consoles out there. And doing anything in the console is a noob stumbling block.
The more paradigms that get accommodated / stuffed into a language, the more cryptic the syntax gets. I'd rather not spend my time deciphering what the heck the code is actually doing. KISS, languages exist to solve problems, not to cause them.