ActionScript == ev0l

Door Bubbles op woensdag 9 januari 2008 15:52 - Reacties (2)
Categorieën: Programming, Rants, Views: 2.309

En in dit geval Action Script 3, om precies te zijn.

Ik heb geen ervaring met vorige versies van AS, maar als ik van sommige mensen daar dingen over hoor, ben ik daar ook blij om ook... Zo is AS tenminste enigzins volgens het OOP principe opgebouwd. Wat het in de praktijk een heel stuk sneller kan maken. Naar wat ik ergens op internet had gevonden, gemiddeld genomen zo'n 5x. Niet mis voor een nieuwe revisie van een programmeertaal.

Als je het tenminste zo wilt noemen, want mijn god, wat kan het af en toe een slecht ontworpen taal zijn. Misschien beter zelfs om te stellen dat het niet ontworpen maar in elkaar gehacked is door een stel lui die duidelijk geen verstand van zaken hebben...

Hoe kun je bijvoorbeeld 'vergeten' standaard collections toe te voegen (d.w.z., maps, sets, orderded lists, etc.)? Als er iets handig is om veel informatie in op te slaan en makkelijk terug te kunnen vinden is het dat wel. Dat ze standaard niet de optie bieden om connectie te maken met een database, kan ik met de kijk op veiligheidsoverwegingen nog wel begrijpen, maar het blijft jammer dat je dan op internet op zoek moet gaan naar mensen die dat wel al in elkaar hebben gedraaid, zodat je niet genoodzaakt bent een tussenlaag te gebruiken. Gelukkig was er iemand anders ook al zo slim om een implementatie te maken van allerlei soorten collections. Daarmee wordt het programmeren wat dragelijker.

Let wel, dragelijker, nog steeds niet aangenaam. Zullen we het eens over syntax hebben? Of hoe de standaard AS classes zijn opgebouwd? Welke halve zool verzint het om daadwerkelijk alle variabelen van alle classen public te maken? In plaats van dat je daar public functions voor maakt kan je zo vanuit andere classes een variabele aanpassen... :X Wat dan tevens er voor zorgt dat de helft van de variabele namen die je in je eigen code wilt gebruiken, gelijk worden herkend zijnde public variabelen uit een andere class. Het blijft toch wel jammer.

En dan is die syntax ook al om te huilen. Voor iedere variabele die je aanmaakt moet 'var' staan. Terwijl je vervolgens de naam van je variabele opgeeft en daarachter, gescheiden door een ':' het type variabele! A) Wat heb je dan nog aan die 'var' vooraan? B) Hoe verzin je het om een type op te geven nadat je de variabele-naam hebt opgegeven? Lekker overzichtelijk zo. Met andere programmeertalen waar ik mee heb gewerkt is dat tot nog toe altijd andersom geweest.

Maar dat grapje is niet alleen voorbehouden aan variabelen. Ook functiedeclaraties zijn hetzelfde lot ondergaan. Als je de regel niet begint met 'function' kunnen er hele rare foutmeldingen ontstaan. Vervolgens typ je je functienaam met eventuele parameters, gevolgd door wederom de ':' en de returntype. |:( Maar het wordt nog erger, want gelukkig is AS geen heel erg stricte programmeertaal. Je mag dat laatste namelijk weglaten als je er een void functie van maakt, geen return dus. Gelukkig zijn we consequent. Net zoals AS dat is met imports van andere classes. Hoeft ook niet altijd en dan kan het wel goed gaan. Fijn. Weet je gelukkig waar je aan toe bent. NOT.

En dan de werking van flash. Bovenstaand was al af en toe om te huilen, maar dit maakt het er alleen nog maar erger op.

AS3 heeft optimalisaties voor het gebruik van meerdere threads. Jammer dat die optimalisaties niet inhouden dat er zoiets bestaat als een 'wait()', wat toch wel een verdomd handige functie is die je bijvoorbeeld terug kan vinden in Java. Aan de andere kant ben ik er ook achter gekomen dat de trace() functie (te gebruiken voor debuggen; tekst schrijven naar de console) niet synchroon loopt met de rest van je code. Laatstgenoemde gaat namelijk rustig eerst 10 verschillende functies doorlopen, voordat ie er ook maar over pijnst om output weer te geven, die versprijdt stond over diezelfde 10 functies. Kan je lekker makkelijk bijhouden waar je programma zit als blijkt dat hij binnen die 10 functies in een oneindige lus terecht gekomen was. Handig. :(

Ook fijn trouwens dat binnen de ontwikkelomgeving bepaalde functies prima werken, maar als je standalone het programma test, dat ze dan ineens niet meer mogen vanwege mogelijke securityriscs. Te gek man! [/sarcasme]

Maarjah, ik heb momenteel niet veel keus. Programma wat we op werk moeten maken, moet gemaakt worden in Flash, dus we ploeteren nog maar even aan...

-bubbles out-

Volgende: metabloggen 01-'08 metabloggen
Volgende: Goede start 01-'08 Goede start

Reacties


Door Tweakers user ShadowLord, woensdag 9 januari 2008 16:59

Ach ja, er zijn wel brakkere talen hoor :)

Overigens is de manier van variablen en functies defineren (type achter naam) helemaal niet zo vreemd. De : notatie met "[variable naam]:[variable type]" komt trouwens recht uit Pascal en Delphi. En dat zijn toch niet de minste talen.

Helaas is AS denk ik zo'n taal waar je gewoon net even met een andere denkwijze in moet programmeren. Als je je kan aanpassen aan de denkwijze die erbij hoort wordt het een stuk makkelijker.

Door Tweakers user ThePiratemaster, vrijdag 11 januari 2008 10:31

de forloop is eigelijk een whileloop in actionscript... en de eigelijke forloop bestaat niet...

Reageren is niet meer mogelijk