Jak jsou na tom tyto prekladace s optimalizacemi? Co se pamatuju, tak se hodne veci (dema, hry) stejne psalo v assembleru, to byly ty prekladace jeste tak spatne? Skoda, ze era Amigy skoncila se zacatkem ery internetu, tech informaci zrovna o amigackych prekladacich jde najit docela malo - ale co si budeme povidat, napriklad o jazyku Action! pro Atarka je toho jeste min :-(.
Prekladace C (tenkrat jsem pouzival Storm C, vylezal z nej snad nejefektivnejsi kod) i Basicu (hlavne ten blitz basic, ale i v amosu jsem videl par hezkych veci) byly na dost slusne urovni, ale i tak je assembler uplne jina liga (assak na procesorech 680x0 byl rozhodne pohodlnejsi nez na intelu a programovani specialnich amiga obvodu taky nebylo nic slozityho).
Podivej se na dnesni dema, zvlast 4k-64k intra jsou porad psana v assaku i na pc, kdyz chces rychly a kratky kod, tak bez assembleru to prakticky nejde.
I moderní překladače jsou stále tak "špatné". Proto se také používaly specializované jazyky, do kterých byly přidány příkazy pro práci s grafikou atd. Tyto příkazy pak byly zprogramovány na míru danému počítači, v assembleru.
Pokud chcete vidět proč, sežeňte si zdrojové kódy k nějakému demu a porovnejte jeho obsah se svou znalostí vyšších programovacích jazyků. Drtivá většina "revolučního" kódu co jsem viděl (nebo před 17 lety i sám napsal) je velmi nečitelná a kód se hemží "nesmylnými" instrukcemi a operacemi, které ve vyšších jazycích ani nebývají. Co kupříkladu obecně nemá v jazycích podporu je fixed point matematika, což je ale základní stavební kámen řady programů. Navíc si to každý programátor nastavuje podle sebe - třebas 12 bitů před desetinnou čárkou, 4 za. Po vynásobení dvou takových čísel se pak na správnou hodnotu dostanete pomocí posunu o 4 bity. Ale, spíše ALE, to obvykle ani nemusíte - protože pokud to násobíte dalším číslem, už to bude posunuté o 8 míst a stačí prohodit byty. Takže třebas 3D transformace nakonec v assembleru nevypadá zrovna jako násobení maticí, ale jako několik čtení z indexu, prohazování bytů, posuvů a sčítání. Navíc se běžně stávalo, že se v jedné ose použila jiná přesnost než v těch 2 zbývajících.
Dema se dělala v assembleru bez ohledu na kvality překladačů. Důvodem byla "nedostatečná vyjadřovací schopnost existujících jazyků". Byla to zkrátka éra makro assemblerů :-)