Milioane de dezvoltatori folosesc astăzi un limbaj de programare creat în doar 10 zile, în timpul agitației exploziei dotcom. Creatorul JavaScript, Brendan Eich, a reluat rădăcinile limbajului său în câteva videoclipuri online recent lansate și a explicat cum toate semințele pe care le-a plantat în 1995 dau în sfârșit roade.
1995 a fost o altă eră și o altă lume. La acea vreme, Netscape considera combinația browser/server ca un nou tip de sistem de operare distribuit, își aminteau jurnaliștii de la revista Computer. Browserele aveau potențialul de a permite dezvoltatorilor să ajungă la utilizatori pe orice platformă – Windows, Mac sau Linux – dar ingredientul lipsă era un limbaj de programare. Ceea ce își dorea cu adevărat Netscape era un limbaj care să completeze Java și care să atragă programatorii începători, la fel ca Visual Basic de la Microsoft.
Întreaga industrie tehnologică se lupta deja să ajungă din urmă popularitatea surprinzătoare a internetului. „Pe atunci, ritmul inovației web era furios, Microsoft transformând brusc internetul în centrul lansării sistemului de operare Windows 95, ca răspuns la produsele de browser și server emergente ale Netscape.” Așadar, este celebru faptul că Brendan Eich, în vârstă de 34 de ani, a creat prima versiune a limbajului care avea să devină JavaScript în doar 10 zile. (Anul trecut, Eich a început o prezentare la conferința dotJS spunând „Acum 22 de ani, în mai, am muncit din greu 10 zile”, adăugând „Nu am dormit prea mult”.)
Eich era omul potrivit pentru această slujbă, subliniază revista, deoarece construise deja limbaje de programare când era student, „doar pentru a experimenta în sintaxă”. Eich își amintește că, atunci când venea vorba de analiza lexicală și parserii de limbaj, „îmi plăceau chestiile alea, pentru că totul era foarte frumos și curat, teoretic… Ceea ce mi-a oferit asta a fost capacitatea de a scoate rapid la iveală un interpretor de limbaj”. Chiar înainte de a se alătura Netscape, crease și limbaje pentru a construi extensii în instrumentele de monitorizare a rețelei la Silicon Graphics. (Și, în plus, Eich îi spune intervievatorului său: „Făcusem asta pentru distracție, doar pentru a-mi crea propriile limbaje.”)
De fapt, fondatorul Silicon Graphics, Jim Clark, a fost cel care a fondat ulterior Netscape – așa că exista deja un anumit interes pentru abilitățile de scriere ale lui Eich.
„Am fost invitat să mă alătur la început, lucru pe care nu l-am făcut, pentru că am rămas la un startup anterior încă un an”, a declarat recent Eich pentru InfoWorld.
Dar când Eich a preluat în sfârșit acea poziție fatidică la Netscape în anul următor, „am fost atras de ideea de a crea un limbaj de programare foarte popular printre cadrele universitare numit Scheme… Ideea era «Vino și fă Scheme în Netscape. Pune acest limbaj de programare în browser.»” Mai târziu, el îl numește pe Scheme „acel frumos limbaj de cercetare care m-a tentat”. Dar, până când s-a alăturat Netscape, aceștia aveau o înțelegere cu Sun Microsystems, care promova acum noul lor limbaj Java. „Și dintr-o dată, povestea a fost: «Ei bine, nu știm dacă vrem Scheme. Nu știm dacă avem nevoie măcar de un mic limbaj așa cum ne-am dorit să faceți voi. Poate că Java este suficient.»”
Este un moment de cotitură pe care și-l va aminti mereu. Chiar și în 2012, Eich a declarat pentru revista Computer că se afla în dificultate pe două fronturi. „Toți simțeam că Microsoft va veni după Netscape, pentru că încercaseră să cumpere Netscape la sfârșitul anului 1994… Dar ne aflam și într-o teorie ciudată a jocurilor în ceea ce privește Java, pentru că chiar și la Netscape, unii oameni se gândeau: «Ei bine, dacă avem Java, chiar avem nevoie de un al doilea limbaj?» Nu vedeau beneficiul limbajului de programare Visual Basic pentru o cohortă mult mai mare de programatori sau amatori, designeri sau începători.”
„Dar Marc Andreessen de la Netscape, Bill Joy de la Sun, eu și câțiva alții am văzut că era nevoie de un limbaj accesibil, pe care să-l poți introduce direct în pagina web”, spune el pentru InfoWorld. Sau, așa cum a explicat el pentru Computer, „scriam ceva ce putea fi folosit de oameni care nu știau ce este un compilator. Pur și simplu voiau să-l încarce.”
„Era ca Basic. Asta a fost, de fapt, ideea principală…”
„Am primit ordine de marketing să-l fac să arate ca Java, dar să nu-l fac prea mare pentru dimensiunile sale. E doar un fel de limbaj prostesc, un frate mai mic, nu? Asociatul Java.”
Ce s-a întâmplat în continuare
InfoWorld l-a întrebat cum a reacționat la succesul său timpuriu.
„Când a început să prindă teren, în ciuda tuturor erorilor și aspectelor legate de joburile urgente, am fost puțin surprins. Dar nu am fost șocat, pentru că, după ce am reflectat, s-a întâmplat ca oamenii care au scris pagina web să poată acum programa pagina web.”
„Ceea ce a făcut ca JavaScript să fie atât de puternic, cu toate defectele și proprietățile joburilor urgente, a fost faptul că era conectat direct la toate lucrurile din browser pe care dezvoltatorii web obișnuiți doreau să le folosească.” Și pentru revista Computer, el împărtășește un adevăr crud: că „odată ce ceva este lansat în lume, erorile sau imperfecțiunile devin rapid caracteristici esențiale și sunt aproape imposibil de schimbat.”
„A fost, de asemenea, o treabă incredibil de grăbită, așa că au existat greșeli. Un lucru important, cred, este că știam că vor exista greșeli și lacune, așa că am făcut-o foarte maleabilă ca limbaj.”
Sau, așa cum le-a spus publicului de la dotJS, „Este pur și simplu foarte greu de înlocuit. Există ceva asemănător cu ADN-ul succesului în JavaScript. Odată ce este acolo, îți va fi greu să scapi de el.”
El citează „descoperirea” asm.js în JavaScript, numindu-l „un alt lucru de care sunt deosebit de mândru în ultimii 10 ani”. Acesta folosește operatorii bit cu bit care au fost incluși în JavaScript-ul original, care sunt acum baza unui limbaj tipizat static cu tipuri de mașină pentru performanță de mare viteză. „Dacă nu ar fi fost acolo din 1995, ar fi fost greu de adăugat ulterior. Iar faptul că a fost acolo tot timpul a însemnat că am putut face JavaScript incredibil de rapid.”
El declară pentru InfoWorld că este vorba de „această sămânță foarte puternică care se afla în JavaScript-ul original din 10 mai 1995”. Operatorii matematici pe 32 de biți din JavaScript (cunoscuți sub numele de operatori bit la bit) își urmăresc originea până în limbajul de programare C – și până în Java. Acest lucru a dus în cele din urmă la WebAssembly – o modalitate de a converti instrucțiunile într-un format binar rapid executabil pentru mașinile virtuale – și la realizarea faptului că, cu un motor JavaScript, „poți avea două limbaje – limbajul vechi pe care l-am folosit cu acolade, funcții și operatori de deplasare și acest limbaj nou, care este un limbaj binar, nu este destinat citirii sau scrierii de către oameni. Dar poate fi generat de compilatoare și instrumente și poate fi citit de instrumente…”
Ce ar face diferit?
După 23 de ani de reflecție, există ceva ce ar fi făcut diferit? Oamenii îi spun că ar fi trebuit să refuze să lucreze cu un program atât de scurt – sau că ar fi trebuit să implementeze un limbaj diferit în Netscape, cum ar fi Perl, Python sau Scheme – dar nu asta ar fi schimbat. Își dorește doar să fi fost mai selectiv în ceea ce privește feedback-ul pe care l-a ascultat de la primii testeri interni ai JavaScript.
„Una dintre cele mai notorii a fost: «Aș dori să compar un număr cu un șir care conține acel număr. Și nu vreau să fiu nevoit să-mi schimb codul pentru a converti șirul într-un număr sau numărul într-un șir. Vreau doar să funcționeze. Poți, te rog, să faci ca operatorul egal să spună pur și simplu: «Oh, acesta arată ca un doi și acesta arată ca un șir numărul doi. Sunt suficient de egali».”
„Și am făcut-o. Și este un mare regret, pentru că asta încalcă o proprietate matematică importantă, proprietatea relației de echivalență… A dus la adăugarea unui al doilea tip de operator de egalitate atunci când am standardizat JavaScript.”
Unul dintre oamenii care au ajutat la standardizarea JavaScript a fost Guy Steele, unul dintre co-creatorii Scheme. „Guy a spus: «Nu vă faceți griji. Există Lisp-uri care au cinci tipuri de operatori de egalitate. Vom adăuga doar încă unul.»”
Însă 23 de ani au pus acele 10 zile într-o altă perspectivă.
„Când te uiți la ce am făcut în 10 zile, a fost ca o sămânță. A fost un fel de compromis puternic, dar totuși un nucleu foarte puternic, care a crescut într-un limbaj mai amplu. Și o parte a provocării – și am lucrat la standardizare de când a trebuit să repornesc organismul de standardizare… a trebuit să ajut oamenii să vadă cum să lase sămânța să se dezvolte într-un limbaj complet.”
Eich este, de asemenea, cofondatorul comunității Mozilla (precum și al Fundației Mozilla, care dezvoltă proiecte open source precum browserul web Firefox). În 2015, a devenit CEO al Brave Software, companie care a creat un browser web cu blocare a reclamelor numit Brave, care are acum peste 2,2 milioane de utilizatori activi în fiecare lună. Totul provine din interesul său pentru confidențialitate, deși Eich glumește la sfârșitul interviului că, dacă urmărești originile sale, JavaScript este una dintre piesele fundamentale pe care agenții de publicitate le folosesc pentru urmărirea web.
„Așa că mă revanșez”, spune el râzând.
Lasă un răspuns