ActionScript: Beaten like a ginger stepchild
Recently there has been a lot of uproar about ActionScript from some of the more nominated ActionScript developers. People like Joa Ebert, Nicolas Canasse, Andre Michelle and Peter Elst spoke off their dissatisfaction about the current state of ActionScript, that’s it’s stuck in the middle of nowhere, that Adobe isn’t open enough about their plans with the Flash platform, that ActionScript has become too OOP, etc. etc. And though all this bashing hurts, they all got a point about their complaints.
[ad#ad_content]ActionScript developers are a poor bunch! Internet Applications have become more and more complex and require you to plan your architecture carefully. In fact you need to be not only a programmer but also a full-fledged OOP architect if you want to achieve complex applications or otherwise two weeks later when the client asks for changes you will be in code chaos hell. On the other side the customer can’t care less and asks you to finish their product within two weeks just like it was in the old days of Flash 5 where you could churn out some wonders quickly (but dirty under the hood) because, hey, does the client care how well your code is organized? The hell he cares! I feel kind of like: first we all yelled for better code management, now that we have it people start to complain that it’s too OOP.
Being a game developer who has a few more ambitious projects on the shelf I’m all for OOP and coding-best-practices. The artsy-fartsy Flash Designer hype from yesteryear had it’s show but now please move along, it’s time to advance! Personally ActionScript was what has taught me OOP practices and I would be nowhere today if it wasn’t for ActionScript. Sure, I could have probably learned it from C++ or Java too but ActionScript’s prevalent support and documentation made it a lot easier.
I’m all for strict typing and seeing some people wishing back dynamic typed features makes my stomach turn over. Instead I’d rather like to see more data structures that allow strong typing just like the recently introduced Vector does. Really, there’s no way that 10 horses can pull me back to dynamic typed programming! Sometimes I find AS3 code examples on the web which are all untyped and dynamic, obviously by some coder who completely neglected strong typing because he either didn’t fully understood it or was too lazy. This is what Nicolas Canasse got right when he stated that ActionScript lacks expressiveness. It leads to people falling back to dynamic typing if they see that all this extra stuff required for the correct approach. I use FDT which has an excellent template system so I don’t really care if there’s a tad more code to write to achieve good code. In fact OOP stipulates more code. At first I worried too but I’ve learned to live with that.
I think Adobe should loosen the grip of ECMA 4 on ActionScript which it already has broken anyway by not being fully compatible to it anymore. haXe is doing many things right where Adobe fails with ActionScript, advanced OOP features like Generics, typed Arrays with auto-casting, in-lining, Enums etc. To stay up to competition ActionScript needs these and then some. Others have already listed their feature hopes which I reflect but here are they once more:
- Method Overloading (because writing Open-Source frameworks and libraries often is a travesty without this).
- Threading (Oh yes!)
- Private Constructors (bring them back!)
- True Abstract classes/methods
- Enums (has been a long time wish. Don’t know what the problem is!)
- Hardware rendering (PV3D etc. are great and all but whats the point if you hit the wall with under 1000 triangles?!)
- Compiler performance (Seriously MXMLC needs to hide in the corner if the haXe compiler shows up!)
- And last but not least I’d like to see a lot more love for the AIR runtime like better OS-integration (changing screen resolution for example) and better performance and resource management (the way how AIR wastes up RAM is not from this planet!)