10 Print- Prvi deo

Slanje e-mailova iz aplikacije, paralelno ili ne?
jun 27, 2016
AVS Solutions traži kandidate
februar 9, 2017

Odavno želim da napravim jednu komparativnu besedu na temu kako je programiranje napredovalo kroz decenije kojima sam svedočio. Nostalgija me često vuče u te davne dane kada je sve počelo, i pokušavam da shvatim u kojoj se meri sve zapravo promenilo. Kakve su bile tehnlogije razvoja softvera, u datim mogućnostima, u poređenju sa današnjim i da li su nekada programeri bili bolji, kako se poredi današnja IT industrija uopšte i da li smo danas samo korisnici uslužnog progama Visual Studio.

Ja sam lično prve programe počeo da pišem na Commodore 64 računaru. Zapravo, kod C64 nije moglo da se izbegne „programiranje“ ukoliko ste želeli da izvršite bilo koju komandu ili startujete igricu. Po uključivanju računara pojavio bi se BASIC interpreter, čekajući vašu komandu na liniji 10.
Da biste bili programer u to vreme, bilo je potrebno da poznajete komande BASIC programskog jezika, čije je uputstvo dolazilo kao štampana knjižica uz sam računar, unesete niz komandi i sa RUN pokrenete program:

Naravno, ono što je na Commodore-u bilo interesantno nije bilo programiranje, već igrice, a uz pomoć BASIC-a je teško mogla da se napravi igra. BASIC je bio high-level jezik koji nije dozvoljavao baš veliku slobodu programerima da iskoriste pun potencijal računara na način specifičan za odrećenu upotrebu, tj. da naprave igru. Da bi se to postiglo, trebalo je pisati programe direktno šaptanjem procesoru na uvce, odnosno spustiti se na nivo „mašinca“ – pisanje direktnih instrukcija.
Da ni najokoreliji programeri nisu potpuni mazohisti, dokaz je relativno brza pojava tzv. asemblera za sve računare koji su se pojavljivali. Asembleri su bili zapravo makro jezik za pisanje mašinskih instrukcija, gde je najveća prednost bila manipulacija podacima, tako da niste morali tekst ili sliku da ukucavajte bajt po bajt, već kao predefinisani niz i referencirate ga imenom, umesto memorijske adrese.
Takodje, sami računari su radili malo drugačije nekada nego danas. Naime, svaki od tih starijih računara je imao fabrički predefinisanu memorijsku mapu gde se šta nalazi. Tako da bi, na primer, ispisali podatak na ekranu „gađali“ bi fiksnu memorijsku adresu ($0400, 0xA000, itd), da pustite ton sa zvučnika, drugu, da pročitate pritisnuti taster, treću, itd, a svoj program bi smeštali bilo gde između.
Tako je jedan PRINT „Hello World“, postao

… a, programeri su se podelili na one koji pišu igrice u mašincu i korisnike uslužnog programa BASIC, koji zna svako ko je pročitao uputstvo za upotrebu računara i uspeo da ga razume.
Ja sam, naravno, pripadao onoj konzumerskoj strani tada, i tek sam godinama kasnije pročitao BASIC manual do kraja, počeo da razumevam smisao ove podele i kakvu korist pisanje low level delova programa utiče na krajnji proizvod.

I ovaj trend je nastavio dugo da postoji.
Sledeći računar, Amiga, imao je sve što i C64, samo više instrukcija, registara, bogatiji BASIC, i više memorijskih lokacija od interesa, kao i veči prostor za same programe. Najzad je došao i PC kao kućni računar, i skoro ništa se nije promenilo. Kažem „skoro“, jer se hardver promenio donekle u smeru multitaskinga, pa su veliku ulogu počeli da igraju interapti i unattended memorijski baferi, mada je način programiranja tih novotarija ostao isti.
U BASIC-u se i dalje pravio jako mali broj aplikacija, dok su svi ozbiljniji programi, uključujući i operativni sistem i igre, pravile i dalje ili u asemblerima, ili u nekom od high-level jezika koji će nasledili i zameniti BASIC.
Zapravo, nije bilo pitanje jezika, već pristupa pravljenju programa. Paketi za izradu softvera su se pojavljivali sa spremnim, optimizovanim, bibliotekama izradjenim na nivou mašinskog koda, koji bi se kompajlirao sa korisničnim kodom i povezao (linkovao) u finalni program. Takav program bi se izvršavao sam, bez interpretera, i bio višestruko brži i potpuno nezavistan.
Druga prednost je bila ta da komercijalni programi više nisu bili prenošeni u vidu izvornog koda, već u vidu niza bajtova procesorskih instrukcija, koji je bio nemoguć za ljudsko čitanje bez upotrebe disasemblera, pa niko nije mogao olako da Vam ukrade program, promeni naziv i copyright i prodaje kao svoj.
Najšire prihvacen programski jezik koji je koristio ovaj princip je svakako C. On je u pocetku zapravo bio nad-makro jezik asembleru, i sve se lepo slagalo.

Dovoljno jednostavno za kodiranje, osim što je zahtevalo i kompajliranje i linkovanje do kona
ne verzije programa.
Ovo je, po meni bio najzlatniji period programiranja. Opšti zadaci su mogli veoma jednostavno da se obave na najefikasniji način, a postojala je i mogućnost spuštanja na niži nivo, do potpune kontrole hardvera, pa je, bar meni, iz ovog perioda zauvek ostala urezana u sećanje optimizacija:

u:

odnosno:

Svakako, tehnologija je napredovala od tada, i to najviše zato što su gikovi koji su se svime ovime do sada bavili uglavnom iz entuzijazma, radoznalosti, zabave i dokazivanja, počeli da prave programe koji su dovoljno zreli i pouzdani da mogu da utiču na ozbiljna unapređenja poslovanja u svim sektorima društva.

Preko noći, ozračeni klinci, koji ne znaju ni jedan zanat, po ceo dan se igraju i imaju dioptriju -20 od „televizora“, postali su veoma traženi i počeli su da zarađuju do tada nezamislive plate, sa stanovišta nekoga ko ih je gledao kao propalu generaciju.

Samo par godina kasnije, taj prvi talas je dao mogućnost revolucionarima u IT industriji da u jednom trenutku kažu – stigli smo do vrha lanca, i pobodu IT zastavu na Mont Everest, tamo negde u drugoj polovini ’90-ih.

 

Tada, od prilike, počinje Drugo Doba IT-a, bar sa stanovišta samih programera.

O tome, čitajte u drugom delu…

 

Vladimir Stojanović

Senior Developer