At 4/8/16 10:41 PM, MSGhero wrote:
But really though, I think you would not dislike luxe that much, which is a lower level paradigm that doesn't support flash export. It's still a haxe lib, but you get 1:1 with SDL and other very native libs. Or you have a thin abstract layer so that you can WebGL or SDL or whatever with the same API.
I just don't like writing a language that compiles to another language which is then itself either compiled or interpreted; I'd rather just write the language it's being translated into lest I rely on the compiler accurately translating into the target language (if it doesn't, I'm fucked with no way out). And, especially so, if I'm developing an application that is sufficiently complex enough to require C++. I'm sure as shit going to want a debugger worth its salt, which is why I use Visual Studio; it makes debugging a breeze. If I opt for Haxe, I'm going to lose that functionality just for the sake of writing in a language that's just syntactically a tiny bit different. (Haxe may have support for plugins with VS but it will never be as up-to-date or reliable as VS's built-in debugger.) And if I'm writing C++, performance is most likely a concern, and if the resulting compiled application does not perform efficiently enough, I need to refactor; and then I need to determine if my Haxe code is the problem or of the C++ code my Haxe code is being compiled is the problem; if I were to just write regular C++ then I wouldn't have that extra step to deal with because I'll know it's that code that I wrote myself that is wrong.
With web development, which is what my job is, it would give me zero benefits while also making my job harder: if I wrote Haxe instead of JavaScript, I would need to write the Haxe, compile it to JavaScript, and then push that JavaScript onto production, rather than just writing JavaScript in the first place. I don't want to add extra steps between development and production just so I can write code that has static members and classes, both of which don't exist in JavaScript; it's just making me have to type out more things that aren't actually accomplishing anything. What's the point of writing out keywords that represent things that don't exist in the target language?
I'm also not fond of Haxe's syntax; it's like a mishmash of Java, C#, ECMAScript, none of which I consider to be syntactically well-designed. I don't want to deal with public/protected/private member namespaces if I don't have to; they make sense to exist in C/C++ but they weren't included in Python or Ruby for a reason. They just wouldn't be accomplishing anything. If I'm writing a language that supposedly exists to make my job easier, I don't want it littered with private and static keywords and C-like curly braces; if I'm going to write a language that makes it easier to write code, I explicitly don't want to have to deal with those, which is why Python is my favourite language: it's succinct, clear, and easy to read and write; it has no extra baggage. Writing code is hard enough as is; I don't want redundant syntax piled on top of it.
As a whole, for me, Haxe is like having a speech interepter attached to a water faucet that allows you to verbally say the temperature of water you desire, which then physcially turns the knobs on the faucet for you. If you end up getting the wrong temperature, you need to figure out if the speech interpreter is fucked or if your faucet is, and will likely end up needing to turn the knobs with your hands, which isn't difficult to begin with. It's just one step forward and two steps back. I just don't like Haxe: it's solving a problem that doesn't exist.
And that's about the best way I can explain why I don't like Haxe and why I will never use it.