Hello all, > 1. Arrays or non existent in Actionscript. I know Adobe claims to > have Arrays but Arrays in Actionscript are not Arrays they are > Vectors and that is a HUGE distinction. Vectors while more flexible > and easier to use are slower and consume more memory. > > for example in Java you would declare in arrray like so... > > n = int[10] > > if you try to access index 11 in array n, an IndexOutOfBounds > Exception is thrown. Same for C#, Objective C and obviously C. This > is fundamental and basic to all professional languages and > Actionscript 3 doesn't have it? Why? Who knows but it's not there.
But a compiler could optinally create code for array bounds check, if the language allows defining the array size. I see that getMember is a slow operation, however on more dimensional arrays we lay them out as a flat array and use mulitiplacation to access array elements. > 2. No method overloading. The reason for this is that The VM does > not store detailed enough method signatures at runtime. Meaning that > while obviously the name and the modifiers are stored ( public, > private, namespace, etc ). It does not store information about method > arguments like Java does. It uses a very arcane method borrowed from > Javascript of using indices instead of the actual argument name. > Again in Java you can the declare the following... > > setName( String name ); > setName( String f_name, String l_name ); > > In the same class and they are treated completed different because > Java recognizers the argument type. While Actionscript just using > argument order which is just ridiculous, IMHO. This is less a problem of the VM, the X86 architecture or any other real processor also does not store information about arguments, argument overloading must be done by the compiler. Also we do not have enough time to do argument checking at runtime, we are busy showing a movie or playing a game with the user:-) Internally we name functions differently function foo(a:string):integer and foo(a:string,b:string):integer will create different names like foo_s_i and foo_ss_i or something similar. How the arguments are layed out is a bit mad, we have to compile the last parameter first. > 3. Actionscript 3 does not have support for Abstract Classes Simple if we have an abstract function we create a code which throws an exception, be sure not to call the super method. > 4. Actionscript 3 does not support private constructors.... This is a > huge problem Actionscript 2 did, and now Actionscript 3 does not. For > the life of me I don't get that decision at all. > 5. Actionscript 3 does not support native Enums like Java and C++./C# > do. Lets re-impelement it. Thomas ----- Original Message ----- From: "Samuel Agesilas" <[EMAIL PROTECTED]> To: "Open Source Flash Mailing List" <[email protected]> Sent: Tuesday, September 11, 2007 5:25 AM Subject: Re: [osflash] Anybody interest in developing a new compiler? > Zwetan, > > I agree with Nicolas, if you take for instance MTASC, IMHO opinion it > produces better optimized byte code than the old Macromedia Flash > compiler itself and that is one of the great things about having an > open source compiler. The community can get involved and make it > better. As for more basis for saying that Actionscript 3 really is an > immature language is as follows.... > > 1. Arrays or non existent in Actionscript. I know Adobe claims to > have Arrays but Arrays in Actionscript are not Arrays they are > Vectors and that is a HUGE distinction. Vectors while more flexible > and easier to use are slower and consume more memory. > > for example in Java you would declare in arrray like so... > > n = int[10] > > if you try to access index 11 in array n, an IndexOutOfBounds > Exception is thrown. Same for C#, Objective C and obviously C. This > is fundamental and basic to all professional languages and > Actionscript 3 doesn't have it? Why? Who knows but it's not there. > > 2. No method overloading. The reason for this is that The VM does > not store detailed enough method signatures at runtime. Meaning that > while obviously the name and the modifiers are stored ( public, > private, namespace, etc ). It does not store information about method > arguments like Java does. It uses a very arcane method borrowed from > Javascript of using indices instead of the actual argument name. > Again in Java you can the declare the following... > > setName( String name ); > setName( String f_name, String l_name ); > > In the same class and they are treated completed different because > Java recognizers the argument type. While Actionscript just using > argument order which is just ridiculous, IMHO. > > 3. Actionscript 3 does not have support for Abstract Classes > > 4. Actionscript 3 does not support private constructors.... This is a > huge problem Actionscript 2 did, and now Actionscript 3 does not. For > the life of me I don't get that decision at all. > > 5. Actionscript 3 does not support native Enums like Java and C++./C# > do. > > 6. Try Catch exceptions are not forced. Meaning if a calling method > implements a throws method unlike in Java, in Actionscript 3 you do > NOT have to surround the calling method with a try...catch block. > > > Everything that I mentioned above is pretty basic stuff. When I > switch from a more robust language like C++ or Java and go back to > Actionscript 3 I feel like I'm coding in Javascript... LOL. Don;t get > me wrong I absolutely love Flash. Java sucks big time when it comes > to displaying anything on the screen that looks cool! And Flash wins > that battle every-time but, let's "Keep it Real" here... while > Actionscript 3 is far better than Actionscript 2, it still lags > behind other languages for no real apparent reason. > > Another gripe I have is with the developer tools that we get from > Adobe. Being a long time GCC and javac user when I have to use mxmlc, > I feel like pulling my hair out. Fcsh, is a perfect example of a tool > that shows promise but is really crappy to use and since we don't > have access to the source code for fcsh the flash community can't fix > any of the numerous problems it has. So we have to wait until Adobe > decides to fix the problem ( assuming they acknowledge a problem > exists! ). Making an open source compiler and tools allow us ( the > community ), to deal with these issues in the way we see fit. > > my two ( or rather three ) cents > Sam > > > > > Take for instance the > On Sep 10, 2007, at 7:01 PM, Nicolas Cannasse wrote: > >>>> 8 and lower) or AVM2(Flash 9). I think a Flash 9 is needed. While >>>> Actionscript 3 is a great improvement it's a far cry from far more >>>> mature and professional languages like Objective C, C# or even Java. >>> >>> oh really ? >>> and on what basis are you asserting that ? >> >> I would say that common sense is enough. >> >> Clearly, AS3 chose to implement some rather unorthodox features >> (such as >> namespaces) but neglected some interesting features that have been >> available in highlevel languages for decades and have been proved very >> useful in practice. >> >> A few examples : generics (typed arrays), iterators, strictly typed >> functions, polymorphism, anonymous objects, type inference, enums... >> >> Now, there are two possibilities : >> >> a) AS3 is the next big thing, and all the research done in >> programming language for years is worth nothing, and all the great >> people working on C#, Java, etc are wrong about thinking programmers >> need these features. >> >> b) something is wrong with AS3 >> >> IMHO, I would favor to the (b) solution. >> >> Now, if you look for example at haXe from a programming language >> features point of view, you'll find a mature and professional language >> that targets Flash Player 6-9 and offer far more possibilities than >> AS3. >> >> That's all for today rant :) >> >> Nicolas >> >> _______________________________________________ >> osflash mailing list >> [email protected] >> http://osflash.org/mailman/listinfo/osflash_osflash.org > > > _______________________________________________ > osflash mailing list > [email protected] > http://osflash.org/mailman/listinfo/osflash_osflash.org > _______________________________________________ osflash mailing list [email protected] http://osflash.org/mailman/listinfo/osflash_osflash.org
