Using a program to convert from one language to another is "compiling". The recent backlash against the notion that Haxe, CoffeeScript, etc compile to JavaScript is annoying. The act of compiling does not require going to an object code based language.
Agreed, plus we also have a better word than compile for source-to-source compilation at the same conceptual level of abstraction above the machine: transpile.
The primary benefit is portability-- it compiles not just to JS, but AS and native mobile and desktop code as well. That's a life saver for small game devs, but if it's not a killer feature for you then you probably wouldn't see much reason to use it.
You can experiment with a language-lovers language that compiles to multiple targets.
Many of the quirks and frustrations that you may only hit on a project-by-project basis are constantly raised and solved in the community, so you get a broader understanding of the issues currently faced in the JavaScript, Android, iOS, BlackBerry and various other development communities.
In your current work that may not be relevant, but as a side interest the depth and breadth of your understanding will be accelerated by osmosis within the Haxe community.
It represents more than many communities a bit of a campfire of programmers from different backgrounds who have a shared passion for games and apps. That enthusiasm can stir up your passion for programming if you find yourself in a bit of a language or framework rut.
It's still a small community, so that brings with it the usual frustrations, challenges, and opportunities. If you're a driven developer wanting to make an impact, there are a lot of low-hanging fruits in Haxe to be picked, so it's a good runway if you're wanting to build a personal brand.
There are also very interesting initiatives like HaxeNME that are threatening to break out from their niche, and in a multi-device world, it's starting to look like quite a compelling open source offering.
Slightly off topic. Not sure your affiliation or if someone from the project will read comments.
On the front page, if the designer could line the letters up with the bezels, I think it would look a little better. Only have Paint on this machine but:
http://imgur.com/uYYV8Qt
I believe that 'misalignment' was intentional to preserve the illusion of depth between the placement of the devices. And while I agree that it's a tiny bit harder to read, lining the text up would just ruin the image for me; in fact, I think the text is too aligned as it is to make it work in that context. If readability for that headline is a prime concern, I would just go with another image/presentation entirely.
Probably because JS can run directly in browsers, and can also be made into mobile/desktop apps with Webkit views.
Added bonus for JS is that many languages compile to it (CoffeeScript, LispyScript, ClojureScript, even Haxe, OCaml, Haskell, C++), DEs use it for scripting (Gnome, KDE, Windows 8).
I think it isn't more popular because it's associated with Flash, whereas JS is becoming the new default for the web.
performance is still a big issue on mobile devices (I have worked on several commercial html5 games made for firefox-os, but they also work on ios and android, where you'd also have native options).
There is a huge - HUGE - performance difference factor and while that doesn't matter for every app it matters quite often for games (even simple 2d games in the style of angry-birds).
html5 on the desktop on the other hand is plenty fast.
HaxeJS comes with a built in JQuery extern, so you can basically make a page the same way you would with a JS/JQuery frontend, but you get the language feature and type checking benefits of Haxe.
JQuery should handle all your front-end cross-browser issues.
Also, you can do your backend in Haxe, and target the NekoVM (via mod_neko (single thread per request) or mod_tora (multi-threaded) for Apache) or NodeJS. Haxe could do this long before Dart showed up.
I think that it is not that popular because , while the language is very powerfull , some aspects of it are very complicated ( Generics , Macros , expressions , ... ) . Especially for beginners.
The docs are a mess , i tried to edit them a few time , but they should change the way it is organised. In my opinion a WIKI is never the proper solution for a doc. 1 person should take care of the docs and centralise every demands, with the help of Github or whatever.
BUT
Adobe is giving up on flash , and HAXE is the only solution that is good enough as a remplacement for flash games , apps ,etc ...
We often say Jobs or HTML5 killed flash , but the truth is Adobe KILLED flash itself. Frankly Adobe should sell Flash , they did an awfull job with it. How many Businesses kill their own succesfull ( 90% install base on desktop ) ?
aside from Borland with Delphi ( the biggest waste in the history of computer languages , Delphi was just awesome ) , only Adobe.
I've been haxing for some time now, and I know of at least one startup that uses/used it (Profitably).
In short, Haxe can produce swf and neko binaries and C++, C#, JS, Java and PHP source.
Language itself is, for my humble old school OOP taste, really well done and compiler is blazing fast. So fast that people now implement real-time error checking by simply compiling project (with few additional flags).
Real perk here for me (a game dev) is not so much Haxe as libraries for cross-platform development, namely NME, which appears to have some restructuring going on right about now [1]. It is SDL-based haxe library that's really the one powering cross-platform game deployment. And it's pretty great at that, but a bit unstable. The goals outlined in the video linked should get that on the right track.
Of other interesting things, 2d physics engine named nape [2] comes to mind. It blows Box2d out of the water in oh-so-many aspects, particular ones being memory and framerate stability.
> In short, Haxe can produce swf and neko binaries and C++, C#, JS, Java and PHP source. [..] Of other interesting things, 2d physics engine named nape
If Haxe can compile into JS, it would be cool to have online demos of things like nape (their site requires flash when you click play, not sure if that is to run flash or show a video).
Are there are online demos showing an interesting Haxe project compiled into JS?
Haxe is pretty cool from a language standpoint. It’s certainly an improvement in some areas on its closest relative, ActionScript 3. Particularly “enums”[1] (ADTs) are excellent to have, as I’ve been spoiled by them in Haskell, as well as proper generics, “switch” as an expression, and other such goodies. Bit of a shame that they kept the fat old “function” keyword, though. The type inference system is also a bit lacking—I don’t like how it can depend on control-flow order whether you get a type error or not[2].
I recall that the compiler would often produce different behaviour on different backends, including crashes. Presumably this has been addressed in recent versions? It’s one of the reasons we chose AS3 when developing Spaceport[3] and stuck to matching Flash behaviour as closely as possible.
I don't see how type inference in Haxe is worst than AS3 type inference. Think it stands on its own on that particular point.
I also never had a crash with something out of the running service compiler, even earlier since I started using it at 2.x, you probably evaluated it in a 1.x version ? You talk of enums but that was at the top of the "pros" around 4/5 years ago.
Leaving AS3 and being able to target all the systems I want to target, was the reason Haxe became valuable to me. So that "reasons we chose AS when developing Spaceport" is sort of telling about Spaceport and nothing else. It isn't an option for everybody, really. You can build all sorts of projects on it, from a server daemon, to a casual game on mobile through the usage of Haxe NME / openFL. Things have moved on, so to say.
This was once on my list of things to learn, because every time I looked at Flash, I saw that Adobe wanted a three-or four-figure sum for the proprietary toolchain, and the open-source toolchain was very poorly documented (and what little documentation existed seemed to expect you to know the terminology and workflow of the proprietary toolchain).
Imagine a world where gcc is the only open-source C compiler, and gcc required you to run preprocessor, compiler, assembler and linker directly, manually, and you had never used any compiled language before, and the gcc docs assumed you know which of these programs you needed to run, and in what order, to compile your programs, and these components were each separate downloads written by different people and offered for download alongside all the individual tools in the binutils suite. So you have no clue which of the dozens of tools you actually need, in what order you need to run them, you've also never written in any language but Python and Javascript before, and the things you need to do to get programs to run in those languages is nothing like what C wants, and none of the information you lack appears to be written down anywhere that your very best Google efforts can find.
In this world, of course you can pay Microsoft $300 for a C compiler with an IDE which takes care of everything for you, and a lot of people swear by C and do amazing things with it, but really you don't want to spend that kind of money for a tool you know nothing about, and so you just sort-of limp along with Python and Coffeescript, and miss out on the C world entirely.
That's the situation Flash development was in before Haxe came along.
Of course, now you can use HTML 5 canvas for stuff that previously required Flash, so Flash is kind of obsolete.
FlashDevelop is (and has been for 3 years at least) a very solid and easy-to-pick-up way to develop Flash/AIR applications without having to touch anything proprietary AFAIK, except the runtime of course. The SDK might technically be proprietary in some sense, but is open source and managed by Apache (http://en.wikipedia.org/wiki/Apache_Flex). Overall, you don't need to purchase anything, and the free workflow is IMO even better than those you have to purchase, including FlashBuilder and FlashCSx.
FlashDevelop is also a great IDE for Haxe development, so overall, I'd say put these back on your list to learn. :-)
I think Flash still has some life left in its newer form of AIR for mobile. Having done a lot of HTML5 stuff the past year, I do miss the relative simplicity of it, not having too many cross-browser headaches. Going to try the Haxe->HTML5 workflow soon and see how that works out.
I think I researched the state of Flash for developers about 2000, and again about 2005, and last looked at it around 2008 or 2009. Haxe was just getting started the last time I looked at it, and I've heard it mentioned a couple places since then. Anything that's happened in Flash development-land in the last three years isn't on my radar.
Really, my early ventures into Flash-land were so discouraging, and in more recent years the advent of HTML5 was so encouraging, that Flash may end up permanently relegated to my low-priority pile of things like Lisp, Prolog, Haskell and Unity, things I want to look into again when I have mountains of free time and/or money to spend on extremely unfamiliar things, which might possibly give me interesting new capabilities, but for which an initial cost-benefit analysis has ended in pointed, skeptical questions that I can't answer very well.
to make desktop/www apps in one go.
However, I have not found one single complete UI solution that is completely cross platform for Haxe.
It seems to me that it's a write-once runs everywhere BUT has librairies which are target specific (for GUI at least).
Correct me if I'm wrong because I would love to start developing on Haxe ... until I have a proper GUI lib\framework.
Let me correct my last post:
I recently installed this in order to make desktop/www apps in one go (Haxe=>Desktopa and WWW).
But I have not found any GUI Libs that are multitarget (CPP, www, IOS) etc..
Please correct me if I'm wrong I'd love to use this otherwise
35 comments
[ 3.8 ms ] story [ 93.2 ms ] threadMany of the quirks and frustrations that you may only hit on a project-by-project basis are constantly raised and solved in the community, so you get a broader understanding of the issues currently faced in the JavaScript, Android, iOS, BlackBerry and various other development communities.
In your current work that may not be relevant, but as a side interest the depth and breadth of your understanding will be accelerated by osmosis within the Haxe community.
It represents more than many communities a bit of a campfire of programmers from different backgrounds who have a shared passion for games and apps. That enthusiasm can stir up your passion for programming if you find yourself in a bit of a language or framework rut.
It's still a small community, so that brings with it the usual frustrations, challenges, and opportunities. If you're a driven developer wanting to make an impact, there are a lot of low-hanging fruits in Haxe to be picked, so it's a good runway if you're wanting to build a personal brand.
There are also very interesting initiatives like HaxeNME that are threatening to break out from their niche, and in a multi-device world, it's starting to look like quite a compelling open source offering.
On the front page, if the designer could line the letters up with the bezels, I think it would look a little better. Only have Paint on this machine but: http://imgur.com/uYYV8Qt
Pedantic, I know... lol
I haven't heard of Haxe much (the last time was probably on here) but in theory it seems like a great idea.
I wonder why it's not more popular?
Added bonus for JS is that many languages compile to it (CoffeeScript, LispyScript, ClojureScript, even Haxe, OCaml, Haskell, C++), DEs use it for scripting (Gnome, KDE, Windows 8).
I think it isn't more popular because it's associated with Flash, whereas JS is becoming the new default for the web.
There is a huge - HUGE - performance difference factor and while that doesn't matter for every app it matters quite often for games (even simple 2d games in the style of angry-birds).
html5 on the desktop on the other hand is plenty fast.
> I wonder why it's not more popular?
It's a relatively young language (8 years old, but it's only been mature for a fraction of that). I think it just hasn't reached critical mass yet.
You've had good success with cross-browser issues?
JQuery should handle all your front-end cross-browser issues.
Also, you can do your backend in Haxe, and target the NekoVM (via mod_neko (single thread per request) or mod_tora (multi-threaded) for Apache) or NodeJS. Haxe could do this long before Dart showed up.
I think that it is not that popular because , while the language is very powerfull , some aspects of it are very complicated ( Generics , Macros , expressions , ... ) . Especially for beginners.
The docs are a mess , i tried to edit them a few time , but they should change the way it is organised. In my opinion a WIKI is never the proper solution for a doc. 1 person should take care of the docs and centralise every demands, with the help of Github or whatever.
BUT
Adobe is giving up on flash , and HAXE is the only solution that is good enough as a remplacement for flash games , apps ,etc ...
We often say Jobs or HTML5 killed flash , but the truth is Adobe KILLED flash itself. Frankly Adobe should sell Flash , they did an awfull job with it. How many Businesses kill their own succesfull ( 90% install base on desktop ) ?
aside from Borland with Delphi ( the biggest waste in the history of computer languages , Delphi was just awesome ) , only Adobe.
In short, Haxe can produce swf and neko binaries and C++, C#, JS, Java and PHP source.
Language itself is, for my humble old school OOP taste, really well done and compiler is blazing fast. So fast that people now implement real-time error checking by simply compiling project (with few additional flags).
Real perk here for me (a game dev) is not so much Haxe as libraries for cross-platform development, namely NME, which appears to have some restructuring going on right about now [1]. It is SDL-based haxe library that's really the one powering cross-platform game deployment. And it's pretty great at that, but a bit unstable. The goals outlined in the video linked should get that on the right track.
Of other interesting things, 2d physics engine named nape [2] comes to mind. It blows Box2d out of the water in oh-so-many aspects, particular ones being memory and framerate stability.
[1] http://vimeo.com/66996045
[2] http://napephys.com
Edit: ...and it has absolutely amazing community of doers!
If Haxe can compile into JS, it would be cool to have online demos of things like nape (their site requires flash when you click play, not sure if that is to run flash or show a video).
Are there are online demos showing an interesting Haxe project compiled into JS?
I recall that the compiler would often produce different behaviour on different backends, including crashes. Presumably this has been addressed in recent versions? It’s one of the reasons we chose AS3 when developing Spaceport[3] and stuck to matching Flash behaviour as closely as possible.
[1]: http://haxe.org/ref/enums
[2]: http://haxe.org/ref/type_infer
[3]: http://spaceport.io/
I also never had a crash with something out of the running service compiler, even earlier since I started using it at 2.x, you probably evaluated it in a 1.x version ? You talk of enums but that was at the top of the "pros" around 4/5 years ago.
Leaving AS3 and being able to target all the systems I want to target, was the reason Haxe became valuable to me. So that "reasons we chose AS when developing Spaceport" is sort of telling about Spaceport and nothing else. It isn't an option for everybody, really. You can build all sorts of projects on it, from a server daemon, to a casual game on mobile through the usage of Haxe NME / openFL. Things have moved on, so to say.
Imagine a world where gcc is the only open-source C compiler, and gcc required you to run preprocessor, compiler, assembler and linker directly, manually, and you had never used any compiled language before, and the gcc docs assumed you know which of these programs you needed to run, and in what order, to compile your programs, and these components were each separate downloads written by different people and offered for download alongside all the individual tools in the binutils suite. So you have no clue which of the dozens of tools you actually need, in what order you need to run them, you've also never written in any language but Python and Javascript before, and the things you need to do to get programs to run in those languages is nothing like what C wants, and none of the information you lack appears to be written down anywhere that your very best Google efforts can find.
In this world, of course you can pay Microsoft $300 for a C compiler with an IDE which takes care of everything for you, and a lot of people swear by C and do amazing things with it, but really you don't want to spend that kind of money for a tool you know nothing about, and so you just sort-of limp along with Python and Coffeescript, and miss out on the C world entirely.
That's the situation Flash development was in before Haxe came along.
Of course, now you can use HTML 5 canvas for stuff that previously required Flash, so Flash is kind of obsolete.
FlashDevelop is also a great IDE for Haxe development, so overall, I'd say put these back on your list to learn. :-)
I think Flash still has some life left in its newer form of AIR for mobile. Having done a lot of HTML5 stuff the past year, I do miss the relative simplicity of it, not having too many cross-browser headaches. Going to try the Haxe->HTML5 workflow soon and see how that works out.
I think I researched the state of Flash for developers about 2000, and again about 2005, and last looked at it around 2008 or 2009. Haxe was just getting started the last time I looked at it, and I've heard it mentioned a couple places since then. Anything that's happened in Flash development-land in the last three years isn't on my radar.
Really, my early ventures into Flash-land were so discouraging, and in more recent years the advent of HTML5 was so encouraging, that Flash may end up permanently relegated to my low-priority pile of things like Lisp, Prolog, Haskell and Unity, things I want to look into again when I have mountains of free time and/or money to spend on extremely unfamiliar things, which might possibly give me interesting new capabilities, but for which an initial cost-benefit analysis has ended in pointed, skeptical questions that I can't answer very well.
Correct me if I'm wrong because I would love to start developing on Haxe ... until I have a proper GUI lib\framework.
But we're all pretty much roll your own.
Aside from that, is Objective-C even a requirement for OSX/iOS development? Vanilla C should work too, as Objective-C is a superset of C89.
Second, you don't need to go through objc to make native ios/mac apps, haxe does it by going via c++.