My last post was intended to be pretty tongue-in-cheek, but I’m guessing that a lot of people won’t get my dry humor, so I better explain.
First of all, I wasn’t complaining about Objective-C or saying there’s anything wrong with it. I love the language. It’s different, but it grows on you. Nor was I complaining about ActionScript.
If anything I was poking fun at the religiousness that finds its way into programming languages. The concept that strict typing is good, and vital, and you couldn’t possibly live without it and any language that isn’t strictly typed is a joke. Sure, strict typing has a lot of good points and great benefits like those I mentioned in the previous post. But dynamic typing certainly has its benefits too. Get off the “right” and “wrong” in programming. Languages are different. They do things differently. Different languages have different strengths. I’ve heard a few people suggest that eventually we’ll all be programming in a single language that will do everything. I think that’s incredibly naive. There are certain tasks you really NEED to do in a low level language like C of C++ or even lower like assembly. And there are a lot of other things that you absolutely DO NOT want to waste time programming in C for. I doubt there will ever be one language to rule them all.
So if different languages are different, why do so many insist on saying that any language that isn’t like their own favorite language is “weird”, or just “wrong”, or “can’t be taken seriously”? Granted Obj-C is different enough that I think just about everyone encountering it for the first time says a big WTF? But again, it starts sounding like religion. Unfortunately, I have run into this a lot from Java programmers encountering ActionScript. A while back I did a post where I had the audacity to suggest that perhaps ActionScript could live without abstract classes and singletons. Damn. I got slammed for that. Apparently abstract classes and singletons form the very underpinnings of any object oriented language and any language that doesn’t have them, or isn’t striving to get them immediately is just a joke. I mean how could you even consider building an application of any kind without abstract classes or singletons??? It obviously cannot be done.
OK, more dry humor. That’s sarcasm folks. That was the attitude of some of my commenters, not my own feelings. That’s the kind of people I was poking fun at in my last post. Well, by now you’re either laughing, or you hate me. Cheers! 🙂
Good post. I agree. Evangelism often claims heresy on the smallest things. It’s like the whole MVC fascism: yes it makes better separation of concerns; no, it doesn’t guarantee good code.
Haxe is looking interesting to me now, as an escape from all the strict typing. It is cool to see other languages targeting the AVM2, eg. C w/ Alchemy and other languages in the offing for Tamarin (https://wiki.mozilla.org/Tamarin:IronMonkey) . Imagine using Ruby or Python to make swfs! Then I might actually be bothered to learn one of those languages 🙂
Every few months, I get a crazy itch to play with AS3 for a while. No work intended, just to explore it and see what I can get out of it. The thing is, when I’m on one of these play sessions, I often do things like turn off strict mode and I start messing with prototypes just because I can. I enjoy what fascinating things I can do with lesser-used classes like flash.utils.Proxy. Basically, I need a break from all the strict typing, and a chance to look at Flash from a new perspective using its more dynamic features. I wish I could find more experiments in the community were people decided strict mode wasn’t needed. It’s a powerful environment that can be explored quite a bit more.
The worst thing that ever happened to Java was Design Patterns imo. Or maybe it was before that, but everyone suddenly became philosophers — Java code written by true believers tends to be way overcomplicated, meaning they confuse the shit out of themselves, and so it doesn’t work very well. It is slow, bloated, over budget, late and unmaintainable, yet they call it ‘best practices’.
Of course not all Java is garbage, but the people who write good workable Java know who I’m talking about. In fact they are probably writing something that makes them vomit right now, because some ‘architect’ who ‘doesn’t program much anymore’ had a brain fart (how pretentious does a programmer have to be to call themselves an architect? Even ‘engingeer’ makes me cringe. We don’t drive trains people. We don’t build buildings).
Java is a great language, but the culture of it has brought it down. Why oh why oh why is a language that is installed in every browser, compiles to all OS’s, and it mostly beautiful to program in — not the language used for web apps? How oh how did flash win that battle? Culture.
While I must admit I am a statically typed biggot, there is no point in it when it doesn’t help. If your event is typed, but your target is ‘Object’, then what is the point? When you prefer array or object because that gets around the type system, use AS1. When your ‘design pattern’ basically is a fancy way of adding a global variable or subverting the type system, use AS1. In fact without generics, I would almost say don’t bother, but not quite. Though I would say if a person doesn’t use it to ‘lock down’ code they are happy with, or use it to ensure compile errors, etc, then don’t bother. It is just a tool, and if it isn’t cutting your wood, then there isn’t a reason in the world to use it.
The most fun I ever had programming for a living was a period of about a year being given other people’s broken Actionscript 1 and fixing it. I really enjoy Actionscript 1 – Actionscript 2 and 3 are great languages, and doing the whole statically typed MVC bit can be very satisfying, but they feel so much more like work. Actionscript 1 hits the Goldilocks spot for me – it’s just right!
I hate you 😀 😛
Actually, I couldn’t agree more with the statement that “different languages have different strengths”. I just love AS more 🙂 but i’ll never take merit on any other programming language.
Great post as always
Laughing. But then I was laughing at Part 1.
The real joke comes from people who get so hung up about best way to do something and end up not doing anything:
“architecture astronauts”
http://www.codinghorror.com/blog/archives/000165.html
^_^
Laughing of course, since part 1 😉
I’m an astronaught. I’m not sure what kind, but its fun.
Hello Peter:
I like your try on Iphone application now. But please don’t forget the potential of flash on mobile platform.
Currently, we have bunch of high-end mobile OS like IPhone OS, Android, Windows Mobile, Nokia Symbian OS and Palm OS.
Here’s Mobile OS demonstrations, which is “practically” playing flash contents.
Android OS:
(Embedding flash plug-in will be done soon.)
http://news.cnet.com/8301-17939_109-10203587-2.html
http://www.youtube.com/watch?v=hWyLr1M0rMM
Nokia Symbian OS:
http://www.youtube.com/watch?v=MWamggQw9fw
Windows Mobile:
http://www.youtube.com/watch?v=SbQyrC-mhDA
—-
Palm pre is also part of Adobe Open Screen project. so that, there’s no doubt to bring flash player on final launch.
http://www.engadget.com/2009/02/16/palm-joins-adobes-open-screen-project-pre-to-support-flash/
—-
And, who knows that Flash is embedded on Iphone soon?
http://www.youtube.com/watch?v=bjgXnMVMimg
It was fun, then they took away __proto__ …
;P
@Dave Jeffery – I cant think of anything worse than working on someone else’s broken as1 code! i can think of a few REALLY painful jobs from a few years ago.. please spare me the memories. I’m guessing your a whips and chains kinda guy too eh? 😛
Ughhh! I guess some of the pain here is because a stalwart of the Flash community seems to be tugging away at great speed towards grounds unfriendly to Flash (come on, Apple/Mac is pretty much the worst way to make/view Flash, still, even after years of promise it will be better with this release or that).
Still, you can’t be so tongue in cheek without expecting some harsh criticism, especially when it comes to things that people have seen making their work-flow quicker and better over the years. Fair enough if it was quicker to make a simple website by yourself in AS1, but go back to it a year later, even your own code, and you’re very unlikely to be able to do anything on it without breaking it.
Now I can’t imagine using a language, or even coding convention, that let’s me break things so easily anymore. If I change something and things break silently how am I meant to know I’ve done something wrong, or right?
Fair enough that you don’t have to type everything, but there’s a good mid-point that can be reached. What’s the point of an interface if it doesn’t define how you can, and must, access an object? Truth to tell I don’t like how AS3s interfaces work exactly, but at least they have a use and can help me debug a program.
And that’s what it really comes down to. Debugging. If I could spend 10% of my time programming and 90% debugging I’d like to use a language (and conventions) that lower that debugging time as much as possible.