Трагом DOPE-а, првог рачунарског језика за нормалне људе

DOPE је остао непознат јер је био успешан

BASIC заузима важно место у канонима рачунарског прогRAMирања. Овај прогRAMски језик, веома популаран седамдесетих и осамдесетих година прошлог века, увео је једну целу генерацију у рачунарство. Био је свеопште прихваћен из једног једноставног разлога, а то је да BASIC није био намењен прогRAMерима, већ направљен за почетнике. Језик се добро уклапао у егалитарни поглед на свет раних кућних рачунара. Ако сте могли да куцате, могли сте да постанете корисник рачунара, а ако сте могли да постанете корисник рачунара, могли сте да постанете прогRAMер. BASIC није дошао ниоткуда. Као и сваки други језик, и он има породично стабло заједно са кореном и блиским и даљим рођацима. Потомке BASIC-а је прилично лако уочити – Висуал BASIC му је прилично далек потомак – али што се тиче његових предака, то је сасвим друга прича, која је позната тек неколицини људи. Језик који је инспирисао једну целу генерацију, у ствари, има предака који се зове Dartmouth Oversimplified ProgRAMминг Еxперимент {/xа}или DOPE.

Шта је DOPE и како се уклапа у ширу причу о BASIC-у?

Историју рачунарства је лако сажети у смислу проблема. У корпоративном језику компаније IBM, најгори проблеми су се некада звали змајеви, чудовишта која су прогRAMери морали да убију. У најранијим данима рада на рачунару, један од највећих змајева била је приступачност, односно, како уопште подстаћи људе да користе рачунаре. Рани рачунари су, сами по себи, били огромне звери, скупе и тешке за употребу. ПрогRAMери најчешће никада нису ни дошли у додир са рачунарима. Уместо тога, избацивали би гомиле бушених картица које би техничари пажљиво убацивали у добро заштићене машине.

Рачунар је био новина у изолацији. Брујао је, сређивао бројеве и загревао просторије. Да би рачунари постали корисни, били су им потребни људи, што више њих, то боље. Иако је технологија знатно напредовала педесетих година прошлог века, једноставно није било довољно људи који би их је масовно користили. Никада није било спорно да ће рачунари бити будућност. Питање је било како ће се та будућност развијати. Појавили су се прогRAMски језици. FORTRAN, ALGOL и прегршт древних дијалеката који вуку корене из тог периода. Цела поента у развоју FORTRAN-а била је да рачунарство учини приступачнијим не-рачунарским стручњацима. Кључна реч овде су стручњаци. Ако следите FORTRAN-ову логику, рачунари су алат за истраживање, нешто што се користи у лабораторији. Поред тога, иако је FORTRAN важна апликација, ипак је ограничена. У суштини, стручњака је мало. Срећом, било је мало и поклоника FORTRAN-ове визије будућности.

Тада се појављују убице змајева из наше приче: Џон Кемени и Томас Курц. Кемени је био дугогодишњи председавајући одсека за математику на колеџу Дартмут, а Курц је био његов колега. Током Другог светског рата, Кемени је био укључен у пројекат Менхетн као математичар. Почетком 1945. године његов посао је урађен помоћу гломазних IBM машина за табулацију. Крајем године, први електронски дигитални рачунари су постали оперативни, а Кемени је из прве руке био сведок њиховог утицаја на пројекат Менхетн. Следеће године Кемени је написао свој први прогRAM. Томас Курц се појавио мало касније. Курц је 1951. године, присуствовао једном од летњих семинара на Универзитету Калифорнија, где је први пут видео рачунар који ради. У то време похађао је дипломски прогRAM из математике на Принстону. Чим је научио да прогRAMира, рачунарство је постало саставни део његове каријере. Обојица су се сами уверили како им рачунари мењају живот и схватили су да се технологија ту неће зауставити. Кад би рачунари постали бољи и распрострањенији, будућност би била дигитална.

Окружени младим и импресивним умовима, њих двојица су себи поставили задатак да науче сваког студента у Дартмуту како да користи рачунар. Студенти техничких факултета већ су били у додиру са рачунарима, бар у ограниченом смислу, али то је био само део студентске популације. Како да научите студента да разговара са рачунаром? Наравно, рачунари ће свима променити све. То је лепо рећи на предавању, али како упознати студенте са машинама?

То ће, коначно, довести до настанка BASIC-а. За разлику од својих савременика, BASIC је направљен за не-научнике и за не-прогRAMере. Уклоњене су непотребне конструкције, поједностављени су подаци, синтакса је сведена на минимум. Коначни језик био би ремек-дело суздржаности. То није језик који би прогRAMерима прирастао за срце, али већина обичних људи би га лако научила.
Моћније функције одбачене у корист једноставности, што је био недостатак Објекти, апстракција, чак и унос променљивих, не постоје. BASIC нуди само оно најнужније. У кампусу је BASIC био хит. Професори су језик интегрисали у часове, а ученици су га радо усвојили. Прелазак на кућне рачунаре био је неизбежан. BASIC је постао увод у дигитално царство за милионе.

Најмеродавнији извор о развоју BASIC-а је књига Бацк то BASIC: The History, Corruption, and Future of the Language, чији су коаутори сами Кемени и Курц. Ту се спомиње DOPE. Током касних педесетих и раних шездесетих, њих двојица су покушавали да студенте упознају са рачунарима и тражили прогRAMски језик за апсолутног почетника. Када су се постојећи језици показали неприкладним за тај задатак, прешли су на стварање новог прогRAMског језика. Одељење за математику у Дартмуту било је опремљено рачунаром LGP-30, релативно јефтином и слабом машином. Укупно је имао 30 килобајта RAM меморије. Тај рачунар је био сведок и неких чудних експеримената. DOPE је био један од тих експеримената, али у књизи су дати само штури подаци. На почетку се спомиње прогRAMски језик DOPE као претеча BASIC-а.

Како ради DOPE?

Има мало доступних информација о DOPE-у. У књизи Томаса Курца Хисторy оф ПрогRAMминг Лангуагес постоји мали део кода, односно неколико редова DOPE-а, недовољно за разумевање језика, али довољно да потврди његово постојање. DOPE је развијен 1962. године и обрађивао се само током једног семестра на једном часу математике недељно. Постоји и рукопис у коме је дат кратак опис прогRAMског језика. Постоји и рад о DOPE-у који никада није објављен. Наравно, не треба заборавити да је DOPE био само експеримент, а студенти заморчићи у процесу стварања бољег прогRAMског језика.

Вратимо се BASIC-у, који је стекао популарност јер га је било лако применити. Језик је структуриран тако да компилацију учини једноставном, односно BASIC на Дартмуту прати врло строгу структуру синтаксе. Сваки ред BASIC-а започиње бројем, после кога иде операција, па аргумент. Једноставно је, лако се рашчлани на рачунару и почетници га лако пишу. С друге стране, сваки ред у DOPE-у почиње бројем реда, затим иде операција, па аргумент. Одатле је BASIC добио своју структуру. Међутим, док BASIC благо одступа од крутог формата, DOPE је много сажетији, највероватније због ограниченог хардвера на којем је развијен. Већина операција је један знак, сваки ред може извести само једноставну операцију, листе аргумената су ограничене дужине.

Ипак, постоје неки озбиљнији проблеми у DOPE-у. Променљиве су основа сваког прогRAMског језика, ту чувате и рукујете подацима. То је такође још једна карактеристика DOPE-а која директно наговештава увођење BASIC-а. DOPE има врло посебну врсту система за унос. Свака променљива је број са покретном запетом. DOPE има четири посебне променљиве под називом Е, Ф, Г и Х. То је 16 низова елемената, листа које могу да садрже до 16 бројева. Када радите са DOPE-ом, морате само да запамтите да су те четири променљиве различите. У DOPE-у не постоје низови, не можете да чувате нити рукујете речима или словима. Скоро сваки други прогRAMски језик може на неки начин да обради низове, тако да је ово ограничење прилично приметно.

Пошто се све променљиве чувају као децимални бројеви, сваки унети број се конвертује. Поставите променљиву на 1 и DOPE претвара то у 1.000. Када одштампате променљиву, DOPE схвата најразумнији формат и приказује га. Дакле, ако децимални број нема ништа иза децималног зареза, приказује се без децималног места. За озбиљнијег прогRAMера ово би требало да звучи као кошмар.  DOPE одузима сваку контролу над типовима података само због тога што нема типове података, а прогRAMери не воле да се одричу контроле. 

Овај језик није ни био намењен прогRAMерима, већ студентима енглеског језика који нису знали разлику између целог броја 1 и децималног броја 1. Направљен је за употребу на факултетима друштвених наука који никада раније нису видели рачунар. Чудан систем уноса у DOPE-у значио је да можете да подучавате прогRAMирање без упознавања студената са типовима података. Уместо да професор објашњава суптилне разлике између 1,0 и 1, одмах се креће са радом. Неупућенима те разлике нису толико важне и због тога се не треба њима ни бавити. Последњи део DOPE-а који треба споменути, такође, је један од кључних делова BASIC-а: бројеви редова. Свако ко зна BASIC или је видео како функционише, биће му позната ова синтакса. Сваки ред има број који је уједно и ознака и начин уређивања прогRAMа. Када су бројеви редова изричито дефинисани, прогRAMер даје назив сваком делу кода. DOPE такође користи бројеве редова, али на ограниченији начин. Сваки ред има строго утврђени број, почиње од 1 и иде до 99. Немате контролу над бројевима редова у DOPE-у, али сваки број има своју ознаку. То нису само површни бројеви редова. Они га чине потпуно развијеним прогRAMским језиком.

DOPE-ово наслеђе

DOPE добро функционише у математици и не може се користи ни за шта друго. Израчунавање вредности у табелама је једноставно. Покретање петље за приказивање листе корена или квадрата је једноставно. Може да савлада и веће једначине. Постоји одређени поступак за претварање једначина у једноставне операције, то јест ако имате мало стрпљења. Ако се одмакнете од једноставне математике, суочавате се са проблемима.  Ако покушате да направите игру погађања бројева, наилазите на зид генерисања случајних бројева. То ограничење на једноставну математику није нужно лоше. Математичари су језик развили као начин да се потпуни почетници уведу у рачунарство. DOPE није језик који би могао да вам обезбеди успешну каријеру нити напредовање, али никада није ни имао ту намену. Довољно је било да се студентима покаже шта је рачунар, какве проблеме рачунар може да реши и како прогRAMер може да их реши.

Дакле, зашто скоро нико није чуо за DOPE? Да ли је то само неуспели прогRAMски језик? Можда и није. DOPE је остао скривен јер је постигао успех. На крају крајева, Е значи експеримент, а после једног семестра у Дартмуту, експеримент је кренуо својим током. Идеје у DOPE-у су одрадиле свој посао тако да су Кемени и Курц могли да наставе истраживање. BASIC је директан резултат успеха DOPE-а. BASIC је био успешан у учионицама и на кућним рачунарима јер је био једноставан. Лако се учио, лако примењивао и било га је лако разумети. DOPE није опстао, али основни концепт је био довољно добар да изнедри BASIC.