Svakako da umete da definišete hardver i softver, ali pazite da pritom ne uletite u zamku jedne predrasude. Evo kakve.
Kako izgleda tipičan softveraš? Bela košulja, kravata, Samsonit tašna (jer treba ostaviti dobar utisak i tako opravdati visok honorar), naočari sa primetnom dioptrijom (zbog stalnog gledanja u monitor), podočnjaci i bledilo zbog manje sna (previše adrenalina u kasne noćne sate) i munjevito reagovanje na svaki zahtev naručioca posla, bez vidljivog mentalnog napora jer je mozak već dobro utreniran na polju logičke kombinatorike.
A tipičan hardveraš? Pogrbljena figura (jer je štampana pločica uvek na ivici stola, istisnuta instrumentima, kablovima, alatom i šoljicama sa sasušenim talogom od kafe), izbledeli džemper na kome nedostaju dva dugmeta (ko će da se doteruje kad je ionako cela radna soba u neredu), desni kažiprst i levi palac opečeni lemilicom, a na podu u kartonskim kutijama dovoljno komponenata da bi se u svakom trenutku od njih mogao sastaviti superkompjuter.
Da li je tako? Ako smatrate da jeste i da je time sve rečeno, onda mi dozvolite da se umešam.
Mada je po definiciji hardver sve što je materijalno i opipljivo u jednom digitalnom uređaju, ipak je hardverska delatnost mnogo više od pukog šrafcigerisanja i lemljenja. Hardveraši se skoro redovno bave i softverom, ali to nikad ne potenciraju kad se predstavljaju. Zašto? Oni su jednostavno osvojili jednu površinu koja se zove viši programski jezik, ali nisu ostali zadovoljni time nego kreću u osvajanje drugog nivoa - možda bi neko rekao nižeg, ali ja kažem dubljeg. Stalna potreba da se približe mašini tera ih da najpre ovladaju asemblerom, a onda kreću korak dalje, na prokleto klizav teren - "prljavo" programiranje, zaobilaženje BIOS-a, skokovi u pola instrukcije, sintetički (nedokumentovani) kodovi. Tako su započeli čačkanje po hardveru računara, doduše još uvek posredstvom tastature i procesorskih instrukcija, ali evo gde su neprimetno stigli - samo na jedan korak od projektovanja vlastitog hardvera. Izazov je tu, i eto... softveraš je evoluirao u hardveraša! Možete li da zamislite takav paradoks?
Staro ime za nove ljude
Ne bih baš dirao u samu definiciju, ali ako se složite, dao bih bar bliži opis delatnosti tipičnog hardveraša: to je sprezanje mašinskog koda mikroprocesora sa logičkim kolima okruženja. Ovde namerno ne kažem sprezanje PROGRAMA nego sprezanje MAŠINSKOG KODA, jer taj termin bolje odslikava nivo na kome se ova sprega odvija.
Već vas čujem kako negodujete: pa zna se šta je hardver a šta softver, čemu sad ovo redefinisanje i mešanje ta dva pojma? Pa eto, jednostavno, ja ne mogu da zamislim čoveka koji se bavi ČISTIM hardverom, a da pritom ne koristi blagodeti koje mu nudi softver; zato mislim da hardveraša u užem smislu treba zaboraviti i taj termin iskoristiti za hibridni soj koji postoji i čeka da dobije svoje ime.
Evo, pojasniću stvar. Pred vama je skala od 15 različitih pristupa digitalnoj elektronici, pa ćemo pokušati da u nju smestimo tipičnog softveraša i hardveraša (ili možda da svako od nas pronađe sebe i da se zapita koje bi novo područje želeo da osvoji). Videćemo da, kako se približavamo kraju skale, uglavnom opada strukturna a raste funkcionalna kompleksnost delatnosti.
1. Igranje akcionih igara 2. Igranje avantura 3. Rešavanje mozgalica 4. Rad sa aplikacionim programima 5. Rad sa spreadsheet programima 6. Viši programski jezici 7. C i srodni jezici 8. Asembler 9. "Prljavo" programiranje 10. Direktno programiranje periferijskih registara PC-a 11. Mikrokodiranje 12. PAL i GAL 13. Nezavisni mikroprocesorski sistemi 14. "Teški" hardver 15. Projektovanje procesora
Možda bismo običnog korisnika kompjutera mogli da smestimo u opseg od 1 do 4, tipičnog softveraša od 3 do 8, a hardveraša od 7 do 14 (samo besmrtnici mogu da osvoje tačku 15).
Probao sam, video da mogu...
Ostalo je još jedno zanimljivo pitanje: zašto hardveraši toliko forsiraju asembler na račun viših programskih jezika? Zar nisu viši jezici zgodniji za upotrebu, udobniji i lakši za rad?
Sve je to tačno. Već sam rekao da su hardveraši uglavnom započeli svoju kompjutersku delatnost baš sa višim programskim jezicima, "pretrčali" preko njih i nerado im se vraćaju (kao u onoj dosetki o seksu: probao sam jednom, video da mogu, i čemu sad ponovo?). Ali, šalu na stranu, možda ću se zameriti poklonicima jednog ili drugog, ali ipak ću izneti argumente za i protiv oba stila izrade programa.
Pitanje brzine izvršavanja mašinskih programa već je toliko puta obrađeno da je postalo neinteresantno isticati ga. Takođe, fizički obim izvršnog koda izgubio je na aktuelnosti u poslednjih nekoliko godina zbog enormnog povećanja kapaciteta diskova i RAM-a, pa ću radije ovaj prostor iskoristiti za druge aspekte poređenja ove dve vrste programiranja.
Viši programski jezici su superiorni u situacijama kad posao treba uraditi brzo i pouzdano, bez rizika od bagova i zaglavljivanja u ćorsokake. Takođe, mnogi od ovih jezika su znatno pogodniji za početnike. Lakše se ostvaruju programske strukture, naročito kad treba raditi sa racionalnim brojevima. Noviji programski jezici, koji rade u grafičkim okruženjima, izuzetno su pogodni su za programe u kojima treba postići visok estetski nivo i "user- friendly" komunikaciju sa korisnikom. Objektno orijentisani jezici čak omogućavaju programeru da bez određenog redosleda navede segmente programa, jer će se oni ionako izvršavati istovremeno.
S druge strane, ako zanemarimo superiornu brzinu izvršavanja programa, jedina prednost koju nudi asembler tiče se njegove fleksibilnosti i neograničene slobode koju ostavlja korisniku. Ne znam koliko vam znači jedan ovako apstraktan argument, ali ako program posmatrate kao skulpturu a programera kao vajara, onda će programiranje u višem programskom jeziku imati za rezultat skulpturu sastavljenu od Lego-kocki, a programer koji radi u asembleru naći će se pred mermernim blokom, naoružan teškim čekićem i klinom. Zna se kome je u ovom poslu lakše, ali baš me zanima koju biste od te dve skulpture radije videli u svojoj sobi?
Poslednji odgovor u temi napisan je pre više od 6 meseci.
Temu ne bi trebalo "iskopavati" osim u slučaju da imate nešto važno da dodate. Ako ipak želite napisati komentar, kliknite na dugme "Odgovori" u meniju iznad ove poruke. Postoje teme kod kojih su odgovori dobrodošli bez obzira na to koliko je vremena od prošlog prošlo. Npr. teme o određenom piscu, knjizi, muzičaru, glumcu i sl. Nemojte da vas ovaj spisak ograničava, ali nemojte ni pisati na teme koje su završena priča.