Pascal

Sokan ugy hiszik a Pascal kezdoknek valo.
DE ez nincs igy, illetve nem egeszen. A kezdoknek Pascal valo! 🙂 mar helyesebbnek tunik. Jol olvashato meg a “halando” emberek szamara. De ez nem azt jelenti, hogy nem lehet mindenfele cslafintasagokat elkovetni benne, vagy hogy ne lehetne kozel optimalis kodot irni benne. Annak idejen mi is pascalban kezdtuk a haverokkal (a PCt mert a C64-en basicban irtuk a kodot:). Aztan mar nem is tudom hogyan, de belekeveredtunk a bajba es assemblyre adtuk a fejunket (konyvet is vettunk meg minden…). Es bizony a pascal nyelvi szinten tamogatja az inline assemblyt. Igy nem tels el sok mire otvozni kezdtuk volna. kezdet ben meg hasznaltuk a crt unitot, meg hasonlo pl grafika kezelot, aztan kezdtunk fuggvenyeket atirni assemblyre. Egesz jo kis gyujtemenys sikerult osszeallitani, olyannyira hogy mar semmilyen mas unitot nem hasznaltun, csak amit mi irtunk (assemblyben). A mellett hogy tudtuk pontosn mit is csainal (hardver szinten) meg volt az a hozzaadott elonye, hogy iszonyat gyors volt.
… es kesobb amikor kijott a crt bug, ami miatt mar gyors gepen nem futottak a pascal programok, mi csak hasnaltuk a programjainkat tovabb… 🙂

Mar tobb helyen is olvastam ezt, hogy lenezik a pascal programozokat, meghozza alaptalanul.

Borland Pascal, Free Pascal, Delphi, Borland Developer Studio, Code Gear

egy kis vicces story:
{… so there I was, sitting in a bar when a known C Programmer }
{comes up to me and sniggers “still doing it in Pascal eh?” }
{“Yup” I replied, and tossed the bartender another hundred. }
{“Yeah well, when you’re ready For a Real language, only C has }
{all the aces.” }
{I’m a Pascal Programmer. I don’t have to take that. “Such as?”}
{I hoped he’d bite and he did. }
{“Such as disk sector reading and writing For starters.” }
{“Well I hope you’re not bluffin’, ’cause here’s a trick that }
{I’ll bet you ain’t covered.” }
{I pulled it out With a swish and laid it on the table. “Even }
{provides support For >32M volumes, which the C run-time library }
{manual Forgets to tell you it won’t do.” }
{“Huh? Where?” }
{“Right here” I said. “Just where it says… }
from: http://www.bsdg.org/SWAG/HARDWARE/0009.PAS.html

Na mentem aludni, mert mar 36 oraja fent vagyok…

Assembly programozas, PC architektura

Mi lett veled assembly?!
well…
Sokan azt hiszik, hogy az assembly eltunt, mar nincs ra szukseg, mert igy-meg-ugy.
Es reszben igazuk van. A nagy intelligens es csodaszep popsinkat is kitisztito fejlesztokornyezetek mellett, azokban programozva mar nincs ra szukseg. … vagy megis?
Valoszinuleg legtobbunknek nincs. Ma mar nem az a fontos, hogy mennyire jol van megirva egy program, hanem hogy milyen gyorsan keszul el. Es Visual studioban vagy Borland Developerben eleg gyorsan ki lehet rakni nehany ablakot a kepernyore…

Neha viszont ilyen teljesen aberralt gondolataim es vagyaim keletkeznek, hogy szeretnem hogy gyorsabban fusson, kevesebbet foglaljon, kevesebb memoriat hasznaljon a programom, es ha stabilan futna az se lenne hatrany. Egyedul vagyok ezzel?

A legfirssebb Assembly Optimization technikakrol, es architektura felepites, leirasokrol Agner Fog’s software optimization manuals oldalan lehet komplett pdf-eket letolteni. Legutobbi frissites (alitolag) 2008 januar 14 ! Ami ezen a teruleten rendkivul frissnek szamit. Ha osszehasonlitjuk mas informatika agak fejlodesenek es leiras gyartasanak utemevel akkor lathatjuk igazan, hogy nem tartozik epp a main-stream divatos iranyzathoz. Valoszinuleg ezert nem hallani rola mostansag annyit. Pont ezert van ra nagy szukseg, mert soakaknak a leg halvanyab lovesuk sincs az egeszrol, es hogy ami kodt irnak az hogy fog mukodni a hardveren.

Nemreg orakig kerestem a neten eredmenytelenul hasonlo osszefoglalo leirast. Amikor meg (regen) keves volt a szamitogepekben a memoria, oda kellett figyelni, mit es hogyan ir meg valaki. Gondolhatunk itt a Commdore64-re, vagy a 286-486-os korszakra. Es mennyi jatek elfutott rajtuk. Millyen fantasztikus 4k scene demok keszultek. Akkor meg egyszeru volt a vilag, nem volt ennyi fele platform. Ott sporoltunk ahol tudtunk, minden byte szamitott… vadasztuk a mov ax,0-kat, hogy kicsrelhezzuk xor ax, ax-re. De nem csak meretre, hanem sebessegre is gyurtunk. Egyszeru szorzas helyett bitshifteleseket es osszeadasokat hasznaltunk… 🙂 hol van ez mar.

Pedig fontos lenne ismerni a PC belso lelki vilagat. Kulonos tekintettel a cache szervezesre (, pipeline es ugras predikciokra..). Igaz, hogy rendszermemoria ma mar gigabytokban merheto, de a processzor L1 cache szukos es becses kincs, ami akar a rendszermemosianal szazszor gyorsabb is lehet! Es a nagy es intelligens(?) forditok meg tudnak vad kodot generalni, ha nem figyel oda az ember… whoo kiraz a hideg is ha ra gondolok neha, az a sok pazarlas… viszont gyorsan kesz a form benne, es ezert fizetnek… A baj ott van, hogy maga a draga penzen megvett fejlesztokornyezet is igy van megirva (osszebarmolva). OK, persze sokat tud, amit lehet 10 ev alatt se irnek meg, jo munkahoz meg ido, kitartas es meg sok minden kell. Viszont akkor se teszik, hogy a fejlesztorendszer lassu, sok memoriat hasznal (ugy latszik megse lesz eleg az a 2 giaga), es meg bugos is, es nem fasza amikor azert veszik el a munkam mert hibas az IDE. (a ket giga memoriarol meg annyit, hogy a firefox es az opera fejenkent megeszik egyet 20-40 megnyitott ablak utan…)

A masik kedvencem a rendkivul jol osszeszedett interrupt referencia gyujtemeny. Megdobbento, hogy meg mindig a regota hasznalt Ralf Brown’s Interrupt list a “legfissebb” es legteljesebb forras. Ilenkor kicsit ugy tunik mintha megalt volna a vilag, vagy mintha egy halott dolgot piszkalnek. Nevezetesen a DOS-t, hisz ki hassznal ma mar interruptokat, van meg egyaltalan valos mod az uj PC-ken? Egyaltalan a mai gepek mennyire vagy mennyire nem x86 kompatibilisek?

A masik kedvencem a SWAG [SourceWare Archive Group] gyujtemeny volt. Persze nem a webes valtozat, foleg azert , mert meg webunk se nagyon volt anna az idoben, meg a BBS-ek voltak a legelterjettebbek. Nehez idoket eltunk mi programozok (vagy megse?). Nem volt google ahonnan mindenfele kodreszletet, referencia manualt le lehetett volna tolteni. Az ilyen floppyn kezrol kezre adott gyujtemenyek jelentettek az informacios kollektiva csucsat (NG help, helppc, inter…), meg persze meg akkor is talalkoztunk ilyen osi kihao felben levo dolgokkal mint … na mi is a neve … oooo, ja, konyv. Ilyeneket olvasgattunk, mert volt idonk, es mert nem volt mas, ja de lemezujsagok 🙂 Nem vol konnyu uj infokhoz hozzajutni, de pont ezert ertekes is volt, ami remek szuro funkcio volt , mert nem keves energia kellett az info terjesztesere, igy a szemet el se jutott hozzank. Nem ugy mint ma, hogy napont tobb szaz junk emailt kapok, mindenki bolgol, meg az olyan is akit nem lenne szabad magarahagyni papirral ceruzaval… es ugyanugy vadaszni kell az informaciokat, csak epp nem az a baj hogy nem jutunk hozza, hanem az hogy a sok szemet kozul kell kivalogatni, amivel sok ido elmegy. Regen ha nem jutottunk hozza addig is tudtunk mast csinalni, beszelgetni egymassal, kimenni a parkba biciklizni… ma meg tudom, hogy valahol ott kell lennie az interneten, csak eppen a szenakazalbol kell kibanyaszni.

Amit igazan hianyolok az egy jo formatum gyujtemeny (file formatum, strukturak, dynamic disk, NTFS file rendszer…) mint a File Formats Encyclopedia v2.0, thx SWAG!

Miert ez a sok minden es miert most?
az elmult egy heten keresztul napi 16 oraban egy AMD geode CS5536 chipsetes Audio Controller-hez irtam “drivert” DOS ala. “Hat meg van aki hasznal DOS-t?” Egy kicsit nekem is furcsa volt… de hat ha a cel programnak eleg egy szerenyebb tudasu gep, akkor miert is vegyunk nagyobbat, tobb hot termelo es villamossagot fogyaszto es igy eredendoen jobban kornyezet szennyezo masinat, csak azert hogy elfusson rajta a … mi is a legujjabb MS oprendszer, …ja igen a Visnya ?
Hat igen a beagyazott rendszerben vannak akik DOS-t hasznalnak, pedig azt hittem hogy ott a Linux a meno (az is:). De hat ettol szep a vilag, a valtozatossag… Viszont valasz is van az elobbi kerdesemre, megpedig a tamogatottsag.
A hardware gyartok mar reg ota nem foglalkoznak a mar idejetmult operacios rendszerekkel, mint a DOS, win9x (95,98,Me). Lassan eljon az ido amikor mar az XP se lesz tamogatott (oooo az NT es a 2000 meg az?). A Linus, Unix, BSD mindig kicsit kulonc volt, legtobbszor a kozossegbol elobujo hackerek irjak meg maguknak es a tobbieknek a meghajtokat es igy epul a nyilt forraskodu oprendszer. Talan mar a gyartok is irnak drivereket ezekhez az oprendszerekhez.
Szoval jonnek az uj regiekkel nem kompatibilis hardverek es a regi oprendszerekhez mar nem keszulnek kezelo progik. Az meg a jobbik eset ha van megfelelo dokumentacio a hardverrol, mert akkor esetleg hozzaerto programozok tudnak irni sajatot. “Hozzzaaaeertoo programozook !” tegyek fel a kezuket! Hat igen. Rengeteg jo kepessegu informatikust ismerek, meg nalam okosabb is akad, meg hozzaerto is csak mihez? Aaaaa ehhez nem! Nincs ra kereslet. Legalabbis nem itt. Es valtozik a vilag, nehez kepben maradni. Jon a sok uj keretrendszer, java, .net 1,2,3,(4) programozasi nyel v (c#..), rengeeg vebes technologia ASP, php, ajax, web 2.0, web 3.0, adatbazis kezelok (MSSQL2005, oracle, firebird, mysql, PostgreSQL), adatbanyaszat, uj hardver es softwer platformok Pocket PC ARM, smartphone, winCE, win mobile, symbian… es ehhez mind ertenie kell valakinek. Nem csoda, hogy aki a magas szintu fejlesztokornyzetben irja a programot, azt se tudja a processzor milyen utasitasokat tud egyaltalan vegrehajtani, egesz es lebegopontos muveletek, cache szervezes… es amikor hordozhato multiplatformos programokat irnak, nem is biztos, hogy tudhatjak.

Node hagy terjek vissza egy kicsit a dokumentacio kerdesere. Ez a PC vilagban nem szokas. Nezz csak meg egy alaplap leirast, es keress benne mechanikai es elektromos specifikaciokat. weben specifikaciok ala altalaban a BOM (bill of material) egy reszet rakjak csak ki (milyen chipszet, audio codec van rajta, usb ajzatok szama… ). Persze kinek van ideje doksikat gyartani amikor a konkurencia fejleszt. Plane tesztelni es bemerni ezeket az adatokat… Persze akkor latszik a kulonbseg amikor ICk, mikrokontrollerek adatlapjait olvasgatja az ember. Az Atmel mikrokontrollereknek kifejezetten jo leirasai vannak. Es ott van specifikalva rendesen (ic labak hajlasszoge turessel egyutt…), es ami nekunk fejlesztoknek fontos: programozasi leiras, esetenkent mintakodreszletekkel egyutt. Nos ezen meg van mit fejlodnie a pc es pc alkatresz gyartoknak…

Kulonosen felbaszott idegileg, hogy a nyilt szabvanyu PCI buszhoz nem lehet dokumentaciot, speckot talalni. Talaltam par feligmeddig hasznalhato pci doksit, de meg mindig nem tudom az osszes szabvagyos PCI regiszter funkciojat.
A legtobb PCI specifikaciot Craig’s PCI & PnP Stuff Pages oldalan itt lehetne megtalalni, csak hogy szerzoi okokra hivatkozva kenyszeritettek hogy tavolitsa el oket. Ugyanis a copyright holder (jog tulajdonos) PCI-SIG non-profit! szervezet 1500 dollart ker a dokumentaciokert (es elvileg a PCI nyilt szabvany)! NA EZT ADD OSSZE! …Furcsa.