Now my preferred method would have been him learning Racket with Realm of Racket and then Haxe but he was still able to get things done. He used HaxeDevelop and pretty much used Haxe like a flash replacement with OpenFL.
Here are the popular Indie Games made with Haxe:
A ton of Kids games
EA's Madden Mobile
Having worked in the games industry for years (and as a programmer in other industries & hobby game dev before that) I've longed realised tools matter much more (especially for beginners) than languages - something like unity, godot or GameMaker are so much easier to get started with and you see results much faster.
John Carmack taught his 10 year old son Racket just for this same purpose. The whole system is great for teaching. You run DrRacket and you have an IDE that is geared towards beginner programmers and just have them code. https://www.itworld.com/article/2978142/development/why-john...
Any practical language that is sufficiently different from the ones you already know will make you a better programmer.
In other words, learning Racket can make you a better programmer, but so can learning Smalltalk, Forth, Coq, an assembly language, etc... All languages outside your comfort zone that are designed for practical purposes (i.e. not languages like Brainfk, Malbolge, etc...) are potentially rich sources of information. Putting Racket at the top of the pile doesn't seem appropriate.
There are a lot of developers much more succesful than myself that have gotten their success using GameMaker and a good enough understanding of scripting it.
It's not all about programming!
If you are learning math, using very long and arbitrary floating point numbers instead of nice, simple integers, would just add an extra level of cognitive overhead. But if you're building a house or bridge, the measurements needed rarely is nice, and real world issues overwhelms the simple model in a math question. But those are unimportant to learn until the simple stuff is learnt.
My experience was that the biggest danger is not them learning the 'wrong' things but giving up in frustration a few weeks/months in after not getting anywhere.
So it's paramount to get them on something that can achieve their goal (or something close to it) ASAP, so they get hooked on making cool stuff before getting frustrated and dropping off.
“[Ryan] reacted very positively to the initial ‘intro to racket with pictures’,” Carmack wrote, “which was a contributing factor to settling on Racket. Java / C# work seemed to feel more like homework, but changing numbers and colors in the REPL had him smiling and excited.“
So Racket does seem to offer that kind of quick feedback.
Anyway, to each their own!
- no, it won't abstract the semantic differences across platforms differences for you.
- yes, since you can create complete libraries which can be trivially ported to each system (also the standard library is cross platform).
- yes, haxe language has some frameworks which aim to achieve that
- but no haxe framework is mature enough to just code and run everywhere cleanly abstracting all API's and UI's as most of developers would expect nowadays
So, you still will need to appropriately architecture your application and know how your target platforms works and abstracts everything.
The Haxe syntax itself, is quite peculiar. You can get proper classes, properties, constructors (which are always forced... sigh), and there is the possibility of macros, which lets you do C# style annotations on classes.
The problem is, most of the time, you have to do a bit of special work to get Haxe to play nice with your modern front-end frameworks.
Also, HaxeDevelop hasn't really picked up on the trend towards simpler, pleasant to use IDEs. There is a lot of good functionality in there, but you should be able to get Haxe code working with VS Code.
So what could HaxeDevelop do better? I think it looks too similar to VS2010, whilst everybody else is having a mad dance party over in Metro land. The distraction free IDEs nowadays, really make it easier to get in the zone, and you can configure snippets super easy nowadays.
Offer some really good themes out of the box. I shouldn't have to go into the settings to make my code look nice.
But an actually honest to god redesign I would love. As long as they don't do what is so common right now and use redesigns to cover up for technical debt. And make sure your users never have to worry about DPI.
Electron apps are like so hot right now...
I was a pretty heavy OpenFL devotee for a couple of years. It's an amazing project, although PixiJS is a very competent competitor when it comes to building HTML5 games. Pixi has a much smaller baseline footprint (~300kb unminified compared to 1300kb unminified).
Lately we've been working with Pixi with a webpack / TypeScript workflow. It's starting to feel a lot like HaXe / OpenFL again. We are winning big in terms of flexibility and good support of workflow. We are using VS Code as the IDE and we have a very smooth integration smoothly with an Angular-based asset and config management tool. The big thing we lost however is HaXe's ability to compile directly to C++. Even when we compiled to Adobe AIR, we got much better performance than something like Cordova or Ionic.
HaxeDevelop's best (IMHO) feature was that it could switch targets easily and integrated seamlessly with the Flash runtime's debugger. So you could build and debug quickly using the Flash runtime and then compile your project to native code for production.
But yeah, in a perfect world VSCode integration would be the way to go forward.
There's always been calls to "unify" the frameworks, tooling, etc., but I don't think that's a healthy environment for Haxe. Haxe exists as a way to avoid ecosystem lock-in. It's a bit antithetical if the community imposed restrictions on how to develop with Haxe.
If you want a cross-OS IDE, or something that works on mac/linux, then use vscode + vshaxe.