M-am mutat. Noul meu site este grep.ro, unde scriu ce scriam şi aici, doar că în engleză :)

Javascript

22 iunie 2006, 00:26

Într-o vreme eram convins că Javascript este bun numai pentru meniuri animate şi efecte vizuale inutile în pagini. Boy, was I wrong. De câteva luni lucrez pentru un site care foloseşte Javascript la greu; cu ocazia asta mi-a crescut mult resprectul pentru acest limbaj de programare.

Javascript este un limbaj puternic. Orice browser modern ştie de CSS şi DOM, deci interfaţa grafică e rezolvată uşor. Toate variabilele, funcţiile şi obiectele sunt accesibile prin string-uri. Poţi să construieşti funcţii şi clase în mod dinamic (în timpul execuţiei). Poţi să modifici conţinutul unei pagini fără să o reîncarci. Poţi să modifici şi programul în sine. Poţi să modifici şi stylesheet-urile. Poţi să faci cam orice, în afară de cartofi prăjiţi. Mai greu cu documentaţia - trebuie să o vânezi cu google, dar cu răbdare se găseşte.

JS este un limbaj unic: rulează în orice browser (decent), pe orice platformă; nu necesită instalare sau upgrade-uri; nu costă nimic. Cu el şi numai cu el se pot face pagini web dinamice, aşa că, de bine de rău, trebuie să-l folosim. Mai mult de bine decât de rău - cu nici un alt limbaj de programare nu m-am distrat atât de mult. [Edit: Ana mi-a atras atenţia că "pagini dimanice" se pot face şi cu php, asp, şi altele. Trebiua să scriu "client-side scripting" acolo.]

Apropo de browsere decente: marea, imensa, uriaşa problemă a Javascript-ului e faptul că diverse browsere (*cough* Explorer) suportă diverse părţi ale limbajului. Scrii codul pentru Firefox, merge, eşti fericit; deschizi pagina în Explorer, nu mai merge nimic. Vrei să vezi de ce? Exploreru' spune doar că ai o eroare, nici măcar nu zice bine unde e eroarea. Ca să nu mai spun că are mari probleme cu CSS. În fine, subiectul este fumat, orice web designer/developer ştie că Explorer sucks, dar trebuie să te înţelegi şi cu el, că deh, asta foloseşte lumea. În curând o să ne apucăm şi noi să ne facem situl compatibil cu Explorer (şi diverse alte browsere - nu sunt două la fel). Deabia aştept.

S-ar putea spune că Javascript nu e un limbaj "serios", ca C sau Java. Foarte bine, să nu fie, it gets the job done, şi se poate scrie cod elegant. I-ar prinde bine nişte unelte de dezvoltare (debugger, profiler, etc). Există, dar nu-s foarte răspândite/uşor de folosit. Şi ce dacă? De când lucrez la firma asta, pe măsură ce am învăţat Javascript, mi-am făcut un toolkit de componente - unele pentru debugging, altele pentru funcţionalitatea site-ului. Ultima jucărie unealtă pentru debugging este un panou, în pagina web, în care scriu cod şi îl execut, făra să reîncarc pagina (cum trebuia să fac pe când modificam un fişier-sursă ca să aflu valoarea vreunei variabile). Mulţumită posibilităţilor de introspecţie ale limbajului, pot să văd şi să modific variabile, să apelez sau să înlocuiesc funcţii, şi multe altele. Altă unealtă este un log de evenimente - apelez o anume funcţie de oriunde din cod şi pun un mesaj (colorat!) în log. Înlocuieşte cu succes pe printf (sunt un mare fan al tehnicii cunoscută sub numele de "printf debugging").

Încerc să vorbesc cu ze boss, să mă lase să opensource-uiesc câte ceva din uneltele ăstea - pentru mine sunt extraordinar de utile; poate o să fie şi pentru alţii. Se pare că e de-acord.