Turbo Pascal i BBC Basic

Turbo Pascal i BBC Basic

Povratak u budućnost

Prekretnice u razvoju softvera

Praktično na svim područjima ljudskog djelovanja postoje događaji i predmeti koji su predstavljali prave prekretnice na tim istim područjima. Parni stroj, telefon, atomska bomba, film „2001 Odiseja u svemiru“ - samo su neki od takvih primjera. Nije onda nikakvo čudo da i na području razvoja softvera postoje slični proizvodi. Dva primjera predstavljamo u današnjem tekstu.

Turbo Pascal

Turbo Pascal je jedan od najpoznatijih razvojnih alata na području osobnih računala u njihovoj cjelokupnoj povijesti. Prva verzija objavljena je sada već davne 1983., tako da je Turbo Pascal prošle godine slavio točno 40 godina - kad bi netko još uvijek koristio tu prvu verziju. Naravno, uvijek ima entuzijasta koji negdje na nekakvim, obično muzejskim primjercima računala, imaju instalirane i takve softverske dinosaure, no u ovom slučaju ipak je riječ o praktično izumrlom alatu. O samoj evoluciji alata će više riječi biti nešto kasnije. Svoje mjesto u povijesti Turbo Pascal zaslužuje zbog ogromnog utjecaja na brojne „potomke i rođake“.

Da bi bilo jasnije zašto je Turbo Pascal u vrijeme svoje objave ubrzo postao globalno popularan i napravio tako veliki utjecaj na druge alate, potrebno je prvo malo opisati tadašnje stanje stvari. To jest, način na koji su programeri pisali programe na tada dostupnim stolnim računalima. U to vrijeme su to bila prva IBM PC računala (pojavila su se 1981. godine), odnosno različita CP/M računala. U ovu priču nećemo uključiti entuzijaste i hobiste, jer su oni prvenstveno koristili neko od kućnih računala kao što su Sinclair ZX Spectrum ili Commodore 64. A takva računala su u osnovnu ROM memoriju već imala uključenu neku verziju programskog jezika BASIC - glavni razlog zašto se kod njih upravo BASIC koristio za programiranje.

 

Slika01_2.jpg

Razvojna okolina: s primjerom programskog koda napisanog u programskom jeziku Pascal

 

Profesionalci su na spomenutim IBM ili CP/M računalima mogli pisati kod u nekoliko različitih programskih jezika, ali je samo korištenje izgledalo manje ili više jednako. U jednom programu (editoru) trebalo je napisati program, u drugom (programu prevoditelju ili kompajleru) ga prevesti u takozvani objektni oblik, a trećim (linker) povezati s dodatnim bibliotekama potrebnima za izvođenje programa u konačni izvršni oblik. Ako se tijekom prevođenja ili povezivanja s bibliotekama pojavila neka greška, onda je trebalo napraviti ispravak tog dijela u editoru i ponoviti postupak. I to se ponavljalo u iteracijama dok se nije stiglo do konačnog rješenja.

Takav postupak zbog neminovnih pogrešaka koje nastaju tijekom pisanja koda jednostavno ne može biti pretjerano brz ni udoban. Osim ako ne pišete kod nepogrešivo, a priznajte da to baš nije čest slučaj. Ne treba zaboraviti ni na činjenicu da je za normalan rad na računalu trebalo prvo instalirati i pravilno (međusobno) konfigurirati sva tri spomenuta programa. Kako je to sve skupa izgledalo, mlađe generacije još uvijek mogu isprobati (ako žele) u komandnoj liniji nekog Linuxa.

 

Slika02_2.jpg

Prevođenje koda: Sve je maksimalno pojednostavljeno izvođenjem izravno u razvojnoj okolini

 

Slika03_1_1.jpg

 Upute: su također integrirane izravno u razvojni alat

 

Phillipe Kahn, vlasnik poduzeća Borland, shvatio je da tu ima puno mjesta za napredak. Prije svega, ako se sva tri alata uspiju povezati u jedinstveni paket jednostavan za korištenje i brz u radu. Pri tome je odabir samog programskog jezika bio pomalo čudan, jer je izbor pao na Pascal. Razloge treba tražiti u tome što je za osnovu paketa iskorištena verzija Pascala autora Andresa Hejlsberga, koji se i sam pridružio Borlandu kao vodeći arhitekt alata. Na tu osnovu dodana je jedinstvena radna okolina za izvođenje svih operacija potrebnih za pisanje, prevođenje i ispravljanje programskog koda, što uključuje i sam editor programskog koda.

Koliko je pažnje posvećeno svakom detalju u pripremi Turbo Pascala, možda najbolje govori činjenica da je početni raspored skraćenica na tipkovnici za brzo uređivanje koda bio identičan kao i kod (u to vrijeme) najpopularnijeg alata za pisanje tekstova WordStar. Važna činjenica u debiju novog alata bila je i vrlo povoljno postavljena početna prodajna cijena od svega 49,95 dolara za direktnu prodaju, što je bilo neusporedivo jeftinije od kupovine tri različita alata drugih tvrtki.

 

Slika04_1_1.jpg

Pronalaženje pogrešaka: Različiti alati dostupni su tijekom izvođenja programa

 

I legenda je odjednom rođena. Prodaja paketa je nakon nešto više od dvije godine stigla do brojke od više od 400.000 prodanih paketa. I to na tržištu koje je na početku bilo procijenjeno na potencijalno najviše 30.000 kupaca. Osim u povoljnoj cijeni, razloge tako dobre prodaje svakako treba tražiti upravo u integriranosti različitih alata u jedinstveni sustav vrlo jednostavan za korištenje. Iz istog alata se nakon pisanja koda moglo pokrenuti prevođenje i izvođenje programa, a u razvojnu okolinu su bili ugrađeni i brojni dodatni alati za jednostavnije pronalaženje pogrešaka u kodu (na primjer, izvođenjem liniju po liniju koda i postavljanjem prekidnih točaka), brojne mogućnosti u prilagodbi alata vlastitim sklonostima i tako dalje.

U biti, za većinu onog što danas vidite u naprednijim oblicima u najmodernijim razvojnim okolinama (osim AI dodataka), korijene treba tražiti upravo u Turbo Pascalu. Zato su čak i programeri koji baš nisu bili nešto posebno oduševljeni Pascalom kao programskim jezikom, bili spremni na njegovo učenje samo zato da bi uživali u blagodatima korištenja jedinstvene razvojne okoline.

 

Slika05_2.jpg

Niska razina: Programer može provjeriti i stanje sadržaja registara procesora

 

Borland je kasnije razvio još nekoliko verzija Turbo Pascala, koji je nakon nekog vremena promijenio naziv u Borland Pascal, da bi na kraju postao Borland Delphi. Također, što je jednako bitno, pojavile su se „Turbo“ verzije za druge programske jezike, tako da su ih mogli koristiti i programeri bez nekih posebnih ambicija da počnu učiti Pascal.

I na kraju, zapravo ono najvažnije u cijeloj priči. Zbog tehnološke inovativnosti i uspjeha Turbo Pascala na tržištu, ni drugi proizvođači razvojnih alata nisu mogli sjediti skrštenih ruku, nego su jednostavno morali početi proizvoditi slične razvojne okoline. Tako da se s vremenom stiglo i do alata kao što je, na primjer, Visual Studio Code s ugrađenom podrškom za brojne programske jezike u istoj integriranoj razvojnoj okolini. Što možda i ne treba previše čuditi, jer ranije spomenuti Andreas Hejlsberg od 1996. godine više nije zaposlenik Borlanda, nego Microsofta.

Napišimo na kraju ovog dijela i nekoliko rečenica o samom programskom jeziku ugrađenom u Turbo Pascal, budući da ga u današnje vrijeme koristi relativno ograničen broj programera. Primjer je preuzet s adrese https://groups.google.com/g/rc2014-z80/c/vO9DLwYiMy8

 

program SetPort;

 

var Error, PortNumber, OutValue: Integer;
var PortStr, ValueStr: String[3];

 

procedure OutPort(Port: Byte; Value: Byte);
begin
inline ($3A/Port/ { ld a,Port }
  $4F/ { ld c,a }
  $3A/Value/ { ld a,(Value) }
  $ED/$79 { out (c),a });
end;

 

procedure ErrorAndExit(ErrorCode: Integer);
begin
 writeln(‘An error has occured. Error code is ‘, ErrorCode);
 exit;
end;

 

begin
if ParamCount = 2 then
 begin
  PortStr := ParamStr(1);
  ValueStr := ParamStr(2);
  val(PortStr, PortNumber, Error);
 if Error <> 0 then
  ErrorAndExit(Error);
 val(ValueStr, OutValue, Error);
 if Error <> 0 then
  ErrorAndExit(Error);
end
else
 begin
  writeln(‘Output byte to a port’);

 

 write(‘Port number > ‘);
 readln(PortNumber);

 

 write(‘Output value > ‘);
 readln(OutValue);
end;

 

 OutPort(PortNumber, OutValue);
end.

 

U prethodnom primjeru jasno je vidljiva lijepa strukturiranost programskog koda, što je danas samo po sebi razumljivo, ali prije 40 godina baš i nije bilo. U to vrijeme su se na kućnim računalima još uvijek upisivali brojevi linija za svaku BASIC naredbu.

Na samom početku istog primjera prikazana je mogućnost izravnog uključivanja asemblerskog koda u Pascal, kako bi se brzinski najkritičniji dijelovi programa mogli riješiti na najdjelotvorniji mogući način sa stanovišta izvođenja. Također jedan od detalja koji je doprinio ukupnoj popularnosti alata.

Ako ste nakon čitanja ovog dijela teksta zainteresirani da vidite kako je to sve skupa zaista izgledalo u pionirsko doba razvojnih okolina, na webu postoji veći broj mjesta s kojeg možete skinuti i instalirati neku od prvih verzija Turbo Pascala.

 

Slika06_1.jpg

Podešavanje parametara: Razvojna okolina i prevođenje/izvođenje programa mogu se podesiti na različite načine

 

BBC BASIC

Već smo spomenuli da su u vrijeme pojave Turbo Pascala korisnici kućnih računala zainteresirani za programiranje u pravilu koristili programski jezik BASIC. Glavni razlog za to je bila činjenica da je taj jezik već bio ugrađen u ROM računala te samim tim dostupan za korištenje odmah nakon paljenja računala. U pravilu te verzije BASIC-a nisu bile nešto posebno, pa su se prije svega mogle koristiti za upoznavanje nekakvih osnovnih koncepata programiranja, a ne za nekakvo ozbiljno kodiranje. Ako su korisnici kućnog računala željeli napisati nekakav „ozbiljniji“ program, a pogotovo ako su željeli intenzivnije koristiti grafiku, onda je u računalo s vanjskog medija (tada je to najčešće bio kasetofon) bilo potrebno učitati neki asembler i pisati program tako da ga izravno razumije procesor kućnog računala. U velikoj većini slučajeva su u to vrijeme to bili mikroprocesori Z80 ili 6502.

Jedan od BASIC-a za kućna računala bio je BBC BASIC nastao u okviru projekta informatičkog opismenjavanja poznate medijske kuće BBC (odatle i naziv). U tom istom projektu pojavilo se i računalo BBC Micro prodano u preko milijun i pol primjeraka. Iako se računalo uz odgovarajuća hardverska proširenja moglo koristiti u kombinaciji s različitim programskim jezicima (uključujući čak i Turbo Pascal), u njegov ROM je kao glavni programski jezik ugrađen upravo BBC BASIC. Spomenimo na ovom mjestu kako je najveći dio posla na pripremi prve verzije iz 1981. godine odradila Sophie Wilson (kao mala zanimljivost - osoba rođena kao Roger Wilson).

 

Slika08_1.jpg

BBC - računalo: Prvo računalo s instaliranim BBC BASIC-om u ROM računala.

 

Iako se BBC Micro zbog nešto veće cijene u odnosu na druga kućna računala nikad nije previše proširio izvan granica Velike Britanije, ugrađeni BBC BASIC i njegove buduće verzije su godinama bile vodilja drugim autorima BASIC-a kako bi trebala izgledati implementacija tog programskog jezika. Kako u pogledu mogućnosti korištenja različitih grafičkih modova i naredbi na ekranu, preko brojnih podržanih programskih struktura za upravljanje izvođenjem programskog koda bez potrebe za pisanjem brojeva linija na početku, pa sve do korištenja različitih struktura podataka i mogućnosti izravnog pristupa različitim funkcijama operativnog sustava. Ne zaboravimo ni na činjenicu da se u BASIC kod, slično kao i kod Turbo Pascala, mogao izravno uključiti asemblerski kod, kako bi se iz procesora što lakše mogao iscijediti svaki dostupni ciklus.

Sve do pojave Microsoftovog Visual Basica koji je programiranje u ovom programskom jeziku odveo u sasvim drugačijem vizualno orijentiranom smjeru, BBC BASIC predstavljao je nešto ponajbolje što je postojalo u tom svijetu. Zato nije ni čudo da se tijekom vremena BBC BASIC „odvojio“ od računala s kojim je započeo širenje te nastavio samostalno živjeti, podržavajući sve naprednije i naprednije načine pisanja koda.

To se najjednostavnije može demonstrirati ako se usporedi primjer programskog koda napisan početkom osamdesetih godina prošlog stoljeća:

 

...
90 INPUT “PRESS ENTER TO START. READY”; START$
100 NUM = INT(100*RND(1))
110 PRINT:PRINT “====================”:PRINT
120 PRINT “I HAVE CHOSEN A NUMBER “:PRINT
130 FOR COUNT = 1 TO 7
140 PRINT “GUESS “;COUNT;
150 INPUT “: “; GUESS$
160 GUESS = VAL(GUESS$)
170 IF GUESS = NUM GOTO 250
180 IF GUESS > NUM THEN PRINT “GUESS LOWER”
190 IF GUESS < NUM THEN PRINT “GUESS HIGHER”

 

S oblikom kakav se danas može koristiti u BBC BASIC-u:

 

...
 FOR I% = 0 TO maxFlameParticles%-1
  IF flameActive%(I%) THEN
  ctrlptx#(1) = flameCtrlPtX1(I%)
  ctrlptx#(2) = flameCtrlPtX2(I%)
  PROC_gfxGetCubicBezierCurvePoint( ctrlptx#(), ctrlpty#(), flameParticleT(I%), x, y )
S% = 24 + 27*(1 - flameParticleT(I%)^2)
  PROC_gfxPlotScaleAddSaturate( blobTxt%%, S%, S%, x - 0.5*S%, y - 0.5*S% )
 IF flameParticleT(I%) > flameParticleMaxT(I%) THEN
       flameActive%(I%) = FALSE
     ENDIF
    ENDIF
   NEXT

...

DEF PROCcleanup
   *REFRESH ON
  candleTxt%% += 0 : IF candleTxt%% PROC_gfxDestroyTexture( candleTxt%% ) : candleTxt%% = 0
  blobTxt%% += 0 : IF blobTxt%% PROC_gfxDestroyTexture( blobTxt%% ) : blobTxt%% = 0
ENDPROC

...

 

Slika09_1.jpg

Razvojna okolina: Razvojna okolina nije sam vrh u ovoj kategoriji, ali je sasvim dovoljna za pisanje programa.

 

Slika10_1.jpg

Ispravljanje grešaka: Razvojna okolina sadrži osnovne alate za takvu namjenu.

 

Razlike su odmah uočljive, zar ne?

Jedan od najvećih nedostataka BBC BASIC-a u praksi je slabija podrška za korištenje različitih baza podataka. Što predstavlja vrlo veliku prepreku u pisanju nekakvog složenog poslovno orijentiranog softvera. U najnovijim verzijama BBC BASIC-a ipak je ugrađena mogućnost povezivanja s bazom SQLite, tako da je jezik donekle upotrebljiv i na ovom području - toliko koliko je za rješavanje različitih problema upotrebljiva i spomenuta baza.

I tu bi priča o BBC BASIC-u stigla do kraja da se prije kratkog vremena nije dogodilo nešto što „cijeloj priči daje čudan ton“, kao što bi to napisao prerano preminuli kantautor iz Novog Sada. BBC BASIC se pojavio u novoj verziji pod punim nazivom „BBC BASIC for SDL 2.0“.

 

Slika11_1.jpg

Alternativa: Najnovija verzija nudi i tamno orijentiranu razvojnu okolinu s još nekoliko razlika.

 

Što je to tako bitno za ovu verziju? Prvo, verzija je potpuno besplatna, a svaki program koji napišete u njoj možete prevesti u izvršni oblik i onda ga potpuno slobodno širiti ili čak prodavati potencijalnim kupcima. I drugo (jednako važno), verzija je dostupna za praktično sve najpopularnije operativne sustave: WindowsMacOSLinux (x86), Raspberry Pi OSAndroidiOS. Čak je pripremljena i verzija koja omogućava izvođenje programskog koda izravno u pregledniku, što je gotovo pa idealno za prezentaciju onog na čemu trenutno radite ili ste već napravili na bilo kojem mjestu.

Na taj način, nekoliko desetljeća nakon svoje pojave, BBC BASIC postaje vrlo upotrebljiv alat za razvoj softvera za različite platforme. Zbog ranije spomenutog ograničenja u pristupu bazama podataka, pomoću njega skoro sigurno nećete pisati programe koji prenose podatke iz Oracle baze na Linux serveru u neku od baza na Microsoft Azure platformu, ili razvijati nekakav višekorisnički računovodstveno orijentirani softver, ali za brojne druge primjene na različitim platformama samo je mašta ograničavajući faktor.

 

Slika12_1.jpg

Grafičke mogućnosti: Papir časopisa to ne može prikazati, ali ovo more se stvarno „mreška“.

 

Budući da se uz razvojnu okolinu isporučuje i ogroman broj primjera s izvornim kodom, a na webu možete pronaći čitav niz dodatnih primjera i literaturu, zaista ne bi trebao biti nikakav problem da započnete s implementacijom vlastitih ideja na temelju tih primjera i literature.

Spomenimo na kraju da se s najnovijom verzijom BBC BASIC-a zapravo isporučuju dvije razvojne okoline. Jedna je tradicionalno „svijetlo orijentirana“ (autor je Richard Russell, koji je i glavni krivac za tako dugi život ovog alata), a druga je više usmjerena prema modernim trendovima i zato tamna (autor je Andy Perkes). Između njih postoje još neke praktične razlike, pa programeri mogu sami izabrati što im više odgovara. Na primjer, tamna okolina ima dodatne opcije za jednostavnije komentiranje i uklanjanje komentara s dijelova koda. Sasvim dovoljan argument za njezin izbor, ako baš to često koristite tijekom rada.

Tako da možemo reći kako ova legenda živi i dalje.

 

Slika13_1.jpg

Izvođenje u pregledniku: I tu se može izvoditi isti programski kod.

 

Ocijeni sadržaj
(0 glasova)

// možda će vas zanimati

Newsletter prijava


Kako izgleda naš posljednji newsletter pogledajte na ovom linku.

Copyright © by: VIDI-TO d.o.o. Sva prava pridržana.