From an ActionScript Script Kiddie

This originally started as a response to a recent comment by someone called Pondus on a post on AS2Lib from four years ago but it grew to morph into a post of its own.

In the comment, Pondus states:

I have worked extensively with both AS3 and AS2 and every framework I could get my hands on. as2lib is the best tool I’ve seen so far… by far. But my judgement is perhaps clouded by the fact that my main has been C++, Java, Ruby etc, not Flash until recently.

So with all due respect, it seems that Aral’s take on as2lib represents a misunderstanding of the core problems as2lib [tackles.]

Spend some time working with the very finest frameworks in the java or C# world, like Spring (springframework.org), and then as2lib will make a lot more sense.

OK, to be fair, Aral wrote his post in 2004, when as2lib was not mature, and few people really got Aspect Oriented programming, IoC containers etc.

Simon says “those who like it can use it”. The sad fact is that in the Flash world it’s really more about “those who get it WILL love it”, but few do. The Actionscript culture is dominated by script kiddies, and that’s ok for most projects.

It’s a real shame that as2lib has died. I’ll say it again, it’s BY FAR the best project I have seen in the Actionscript world. Simon his crew are in a league of their own…

I haven't taken a look at AS2Lib in a long time and there's no doubting that Simon is a great programmer. That said, however, my gripe with AS2Lib was that it was too heavy for ActionScript. Unnecessarily so in my opinion. At least that was the case when I looked at it about four years ago and I haven't looked at it since.

In his comment, Pondus states that ActionScript culture is dominated by script kiddies. That's about half right. I'd say that it isn't dominated by but is entirely comprised of script kiddies. You see, it's called ActionScript. And I like to think that we're all kids at heart! :)

ActionScript a scripting language. And there's nothing wrong with that (unless you're an elitist stuck-up-your-own-ass Real Programmer (tm) who can only use Real Programming Languages and has Scripting Allergy -- you know, the type that can usually be found creating memory leaks in C++ or adding yet another bloated library to his bloated codebase in Java.)

Personally, I love scripting. It means that I don't have to worry about unnecessary plumbing chores so I can get on with building what I'm actually building.

Unfortunately, the Real Programmers have had quite an impact on the direction that ActionScript has taken.

Specifically, in trying to be make ActionScript more like Java, we have sacrificed some of the simplicity that made ActionScript (and Flash) so accessible in the past. It was telling that the first reaction of one of the top Flash developers (Keith Peters) to ActionScript 3 was to create a Processing-like development environment for it.

I feel that partly this was due to Macromedia's desire to gain enterprise developers for Flex during the early days of Flex. This, in part, led to a sort of awe of Java in the ActionScript community as being the grown-up's programming language. Also, it led to Java developers with no understanding of the Flash Platform migrating to it and expecting it to behave exactly like Java. (And, in a certain dose of arrogance, when discovering that it was actually a different platform, trying to make it behave like Java instead of learning the platform, its character, and discovering its own unique advantages.)

ActionScript is an optionally-typed, dynamic language. In other words, it couldn't be less like Java if it was actually trying to be. Its syntax may look like Java but, if anything, that's a source of confusion as it doesn't behave like Java under the hood.

Personally, I find Java to be the antithesis of succinct, pragmatic, and agile. (To give the Java community credit, in the past few years there has been a concerted effort to make Java lighter.)

IMHO, any development environment or language where you need IDE assistance (instead of having it as a nice to have) in order to develop effectively is demonstrating a certain level of bloat. Features like required imports have made ActionScript a language that you need IDE assistance to code for. And I feel that this is a loss. (Flex Builder is a great tool and I do all my development in it but I would loathe to develop AS3 in an editor without language intelligence).

So, to summarize, this script kiddie thinks that we need solutions that are only as complicated as necessary to solve the problems they are tackling. Additional, artificial complexity may make you feel smarter than thou but, ego issues aside, what is the net gain?

My rule of thumb is that every abstraction, while possibly a factor in easing maintainability and scalability, is also the introduction of a new layer of complexity. What we have to ask ourselves, every time we introduce a new layer of complexity is "does the benefit of this abstraction outweigh the additional complexity?"

Abstraction for the sake of abstraction is nothing but an ego trip for Real Programmers. For everyone else, it's a pain in the ass, lost productivity, and lost time.

Comments