"In ce sens exista unelte mai bune de programare pe Linux si Mac?
Mai accesibile sau pur si simplu mai bune per ansamblu?".
La a doua intrebare este mai greu de raspuns, fiindca nimic in lume nu este pur si simplu bun sau rau, fiindca depinde de interesul fiecarei persoane. Pentru unii a fost de exemplu foarte rau ca americanii l-au omorat pe Bin Laden intr-un mod si mai ilegal decat modul in care romanii l-au omorat pe Ceausescu.
Este mai dificila intrebarea fiindca atunci cand ma gandesc la accesibilitate eu ma gandesc de obicei si la accesibilitate in general, nu doar la accesibilitatea pentru orbi.
Iar din acest punct de vedere un program este mai "accesibil" daca este mai ergonomic, adica daca pentru a face ceva anume trebuie sa faci mai putin efort. Iar asta implica si efortul fizic de tastare, efortul de a asculta si intelege mai multe bucati de text, efortul de a invata sa folosesti respectivul program, avand importanta si timpul necesar executarii respectivei actiuni.
Toate acestea depind de ce a invatat fiecare persoana, de preferintele personale, de preferinta de a memora comenzi text sau de a pierde mai mult timp navigand prin meniuri, asa ca din acest motiv nu pot sa iti dau un raspuns absolut si sa spun ca "asa este" pentru toata lumea, ci pot sa iti spun cum este din punctul meu de vedere, insa explicatia ar putea fi destul de lunga.
Si bineinteles, nici un sistem nu este perfect si nu toate preferintele sunt pro un sistem de operare sau altul, caci unele lucruri se fac mai usor sub Windows, altele sub Linux... ca sub Mac nu prea am lucrat.
Intr-adevar, interpretorul de comenzi este mult mai puternic sub sistemele de operare asemanatoare Unix-ului, ba chiar pot fi utilizate mai multe interpretoare, in functie de nevoi.
De fapt, ele au chiar propriul limbaj de programare cu care se pot crea diverse programe de initializare a altor programe, sau se pot rula comenzi complexe scrise intr-o singura linie.
Sub Windows se poate folosi ca o alternativa un limbaj de programare care a fost portat si sub Windows, cum este Perl, pentru a rula astfel de comenzi, insa sub Windows nu toate lucrurile sunt posibile.
De exemplu, sub Windows, daca folosesti in linia de comanda * in numele unui fisier, el este inlocuit cu orice caracter, la fel ca sub Linux, insa acel * nu expandeazaa respectivul nume de fisier intr-o lista cu toate fisierele care se potrivesc cu el, iar programul rulat in linia de comanda nu poate prelua pe rand acele nume de fisiere si sa faca ceva cu ele.
Daca sub Linux vrei sa inlocuiesti in toate fisierele html din directorul curent textul "Coca" cu textul "Pepsi", trebuie doar sa dai simpla comanda:
perl -pi -e 's/Coca/Pepsi/g' *.html
Si daca se mai adauga inca un parametru aceasta comanda poate crea si cate un backup pentru fiecare fisier care a fost modificat, si evident, se pot face multe alte lucruri.
Acest lucru nu este posibil sub Windows, decat daca creezi un program care sa preia lista fisierelor si sa citeasca continutul lor, sa faca inlocuirea si apoi sa rescrie fisierele.
Un alt avantaj al liniei de comanda sub Linux este ca poti sa combini mai multe programe in linia de comanda, nu doar ca poti redirecta rezultatul catre un fisier. De exemplu, daca vrei sa inlocuiesti "Coca" cu "Pepsi" in toate fisierele html insa nu doar din directorul curent ci din toate fisierele din toate subdirectoarele directorului curent, trebuie doar sa dai o comanda de genul:
perl -pi -e 's/Coca/Pepsi/g' `find ./ -name *.html`
Practic este comanda de mai sus doar ca nu primeste ca parametru doar *.html, ci o rezultatul unei alte comenzi care cauta toate fisierele html pornind de la un director specificat, in acest caz ./ adica directorul curent, iar comanda find la randul ei poate cauta in functie de multe criterii, nu doar in functie de numele fisierelor.
Se poate folosi si comanda grep care sa caute mai intai in corpul fisierelor daca contin un anumit text sau un anumit regular expression si sa returneze doar acele fisiere, doar in ele facandu-se modificarile.
Iar sub Linux exista o multime de alte programe utile care pot fi combinate in comenzi cu care poti face foarte multe lucruri.
Din fericire au fost portate unele dintre ele si sub Windows, cum este cazul ls, ps, grep si multe altele, insa sub Windows nu ofera toate facilitatile.
De exemplu versiunea de grep pe care o am pentru Windows nu ofera si parametrul -P care permite folosirea Perl regular expressions in cautare, si e pacat, fiindca este cel mai puternic motor de regular expressions.
In linia de comanda se pot face foarte multe lucruri, si desi este dezarmant cand citesti o gramada de astfel de comenzi, este foarte relaxant cand vezi ca in cele mai multe cazuri nu ai nevoie decat de cateva comenzi dar pe care le poti combina si cu care poti face extrem de rapid lucruri pe care nu le poti face absolut deloc intr-un alt mod decat sa te apuci sa scri un program care sa faca acel lucru.
Si un mare avantaj este ca poti gasi foarte usor pe web. Daca cauti ajutor despre cum sa faci un anumit lucru sub Windows, ar trebui sa gasesti o lunga explicatie cu zeci de pasi in care sa se spuna ca trebuie sa deschizi programul cutare, sa faci click pe butonul cutare, sa deschizi nu stiu care meniu,. sa vezi ce scrie nu stiu unde, iar daca scrie asa sa faci asa, daca ascrie altfel sa faci altfel, apoi sa deschizi alte ferestre si sa apesi alte butoane.
Pe cand pentru Linux vei gasi mai mult ca sigur o linie de comanda pe care poti sa o copiezi, eventual sa ii faci anumite modificari si sa o rulezi, dupa care o poti uita, fiindca va fi usor de gasit cand vei avea nevoie de ea. Sa nu crezi ca eu tin minte toate acele comenzi de care am nevoie foarte rar.
Programele de management al sursei ca git, Mercurial, Subversion se ruleaza tot in linia de comanda. Pentru ele exista intr-adevar si variante cu o interfata grafica, doar ca unele dintre acele programe cu interfata grafica nu sunt accesibile pentru Jaws, iar cele care sunt accesibile sunt mai complicat de folosit decat varianta lor in linia de comanda. Ca sa nu spun ca oricum varianta in linia de comanda este mai puternica si permite facilitati neoferite de varianta cu GUI, cum ar fi de exemplu rularea lor intr-un alt program.
Ca un exemplu, eu am facut un script cu vre-o 3 linii de cod cu care instalez module Perl, in care inainte de instalare directorul cu modulle este adaugat in depozitul programului de management al sursei (Mercurial), apoi se ruleaza programul care instaleaza modulele specificate de mine in linia de comanda, dupa care se mai ruleaza inca o data programul de management al surselor si adauga noile modificari.
Asa incat daca vad ca cu noile module ceva nu merge bine, cu o simpla comanda pot reveni la situatia anterioara instalarii acelor module.
Despre linia de comanda nici nu pot sa spun suficient de multe lucruri bune, insa nu mai are rost sa continui, fiindca la acest capitol este evident ca Linux este mai bun.
(Probabil ca Mac la fel)
Un alt avantaj pe care il are Linux este usurinta instalarii programelor sau modulelor de program.
Vrei sa instalezi serverul apache, gcc, binutils, php si MySQL?
Trebuie doar sa dai o comanda de genul:
apt-get install apache gcc binutils php mysql
Iar in cateva minute le vei avea instalate fara batai de cap si in aproape toate cazurile fara sa te intrebe ceva. MySQL iti cere doar sa specifici parola de administrator, dar nimic mai mult.
(Sau aptitude in loc de apt-get)
Asta daca folosesti o distributie Debian cum ar fi Debian sau Ubuntu, sau Vinux.
Daca folosesti o distributie de genul Red Hat, adica Red Hat, Fedora sau CentOS, trebuie sa folosesti programul yum, care are o sintaxa asemanatoare.
Si cu aceste programe se pot si cauta ce programe sunt disponibile, ca sa sti numele lor exact.
Iar cu ele se pot instala si module ale programelor, cum ar fi module de Apache, de Perl, Python, Ruby...
Distributia Ubuntu ofera o alta facilitate utila, si anume daca dai o comanda gresita, sistemul de operare nu iti spune doar ca nu exista comanda si gata, ci iti da si sugestii. De exemplu daca dai comanda "perk" in loc de "perl", iti va da raspunsul:
No command 'perk' found, did you mean:
Command 'pork' from package 'pork' (universe)
Command 'perf' from package 'linux-base' (universe)
Command 'perf' from package 'linux-tools-common' (main)
Command 'perl' from package 'perl-base' (main)
perk: command not found
Iar daca dai o comanda dintr-un program care nu este instalat, atunci iti spune ca este in cutare package si ca poti instala programul cu comanda...
Si trebuie doar sa dai acea comanda si in cateva secunde poti avea programul respectiv instalat si gata de folosit.
Iar aceste programe (aptitude, yum) pot fi configurate pentru a adauga noi depozite de programe, de unde poti instala usor alte programe care nu se afla in depozitul configurat implicit.
Sub Windows trebuie sa accesezi in browser o multime de site-uri si sa cauti pe ele distributia de Apache, MySQL, etc, sa o instalezi cu o multime de next, next, next, sau sa cauti un pachet care le contine pe toate, cum este cazul XAMPP/WAMPP, insa asta este valabil doar in cazul Apache, PHP, MYSQL, dar pentru multe alte programe nu exista pachete gata de instalat.
Si in plus sub Windows este mai dificil de reconfigurat Apache, fiindca este mai dificil de trecut de la un modul ca prefork la event sau de instalat un modul extern ca mod_perl, mod_python...
Sub Linux trebuie doar sa dai acea comanda apt-get install ... iar ea va dezinstala un modul daca e nevoie, va instala noul modul, va face configurarile necesare in mod automat.
Chiar si despre instalarea programelor sub Linux este mai usor de gasit informatii pe web, din aceleasi motive, pentru ca se fac cu simple comenzi pe care poti sa le copiezi.
Si de asemenea si despre configurarea lor, fiindca aceasta configurare se face de obicei cu fisiere text, iar pe web poti gasi usor elementele de configurare care trebuie modificate.
Sub Windows insa, daca folosesti serverul IIS, pentru a il configura trebuie sa faci cum spuneam, sa deschizi o multime de ferestre si sa apesi o multime de butoane, despre care daca nu sti nimic oricum tot nu poti face mare lucru decat eventual pierzand mult timp si mergand pe incercate.
Un alt avantaj pe care il au distributiile de Linux este acela ca ori au gata instalat, ori se poate instala foarte simplu dupa cum am aratat, un server SSH, la care te poti conecta foarte usor de la distanta pentru a administra respectivul computer.
Sigur si sub Windows se poate instala un server SSH, doar ca nu prea te ajuta, dat fiind faptul ca sub Windows foarte multe programe pur si simplu nu ofera posibilitatea configurarii lor in linia de comanda, ci doar cu o interfata grafica.
Linux ofera de multa vreme si o interfata grafica pe care o poti folosi daca vrei, dar ofera si posibilitatea utilizarii liniei de comanda pentru aproape orice.
Iar administrarea de la distanta a computerului nu este importanta, ci absolut necesara daca programatorul nu creaza programe pentru desktop ci site-uri web, si nu ma refer la site-uri web pe care e nevoie doar sa copiezi niste fisiere prin ftp si nimic mai mult, ci unele pe care trebuie sa poti face orice pe respectivul server.
Si un alt avantaj este acela ca cei mai multi furnizori de gazduire web profesionala ofera solutii de gazduire sub Linux, nu sub Windows, si dupa cate am vazut cei care ofera gazduire sub Windows o ofera la un pret mai mare.
Un alt element important este consumul de resurse. Am o masina virtuala la Digital Ocean care are 512 MB ram, cu drepturi de root, si functioneaza foarte bine. Sunt curios cat de bine functioneaza sistemele de operare Windows pe 512 MB ram.
Iar memoria este importanta, fiindca de obicei pretul unui VPS se stabileste in functie de marimea memoriei rezervate.
Exista la un nivel mai inalt si servicii de clouding in care flexibilitatea este mult mai limitata, dar in care incarcarea/configurarea/administrarea serverelor web este mult mai simpla, si se pot face multe lucruri cu cateva comenzi, insa site-urile care ofera aceste servicii si care au cel mai mare succes folosesc tot Linux (cum este cazul dotcloud, Heroku).
Apoi daca vrem sa administram baze de date, fie ele MySQL, PostgreSQL, SQLite, Oracle... cum o putem face? Evident, tot folosind linia de comanda.
Pentru MySQL exista phpMyAdmin care e mai greu accesibil pentru orbi decat linia de comanda, iar pentru Oracle exista solutii mai frumoase pentru desktop, dar care sunt aproape inaccesibile.
Pentru celelalte insa, si mai ales daca trebuie sa administram baze de date accesate de la distanta prin SSH, trebuie oricum sa folosim linia de comanda.
Alternativa Windows este de a accesa computerul la distanta prin intermediul unor programe care ofera acces la interfata desktop, insa cum nu am auzit prea multi orbi sa se joace usor cu computerul la distanta cu astfel de programe, banuiesc ca ori nu sunt suficient de accesibile, ori exista acea problema cu Jaws care trebuie instalat si pe computerul de la distanta, fapt care implica un consum si mai mare de resurse, ori cu faptul ca NVDA poate fi rulat pe computerul la distanta dar nu ofera chiar cea mai buna accesibilitate.
Daca nu ai nevoie nici sa lucrezi pe servere la distanta, nici sa administrezi baze de date sau servere web, nici sa trebuiasca sa filtrezi si modifici cantitati mari de date din fisiere text, ci trebuie doar sa creezi programe locale pentru desktop care nu folosesc prea multe date, atunci intr-adevar nu iti este foarte util nici interpretorul de comenzi, nici nu te intereseaza prea mult consumul de resurse al computerului, ci prin facilitati oferite de sistemul de operare pentru programatori intelegi eventual doar cat de bun este editorul de text sau mediul de dezvoltare in care scri codul.
Intre programatorii mai batrani exista o disputa interminabila... care este cel mai bun editor pentru codul sursa, emacs sau vi?
Si sunt multe discutii pe aceasta tema. Ei bine, ambele necesita eforturi foarte mari pentru a le invata interfata, asa ca pentru programatorii mai tineri niciunul dintre ele nu este considerat bun, fiindca implica eforturi mari de invatare. Pentru cei care le cunosc insa, este clar ca ele sunt cele mai bune fiindca poti face cu ele foarte multe lucruri folosind simple comenzi, pe care trebuie insa sa le cunosti.
Pentru orbi nu stiu daca ele reprezinta o alternativa, fiindca chiar daca exista mediul emacspeak, ele sunt totusi mult mai greu accesibile.
Si revenind la accesibilitatea pentru orbi, daca vorbim despre accesibilitatea programelor de editare si a mediilor de dezvoltare, este evident ca ele sunt mult mai puternice si mai accesibile sub Windows.
Din acest motiv eu creez programele sub Windows si le testez sub Windows, si rulez cele mai multe programe sub Linux, beneficiind de avantajele Windows pentru partea de editare, si de facilitatile Linux pentru restul.
Dar daca folosesc programe si limbaje portabile, ele isi au de obicei originea sub Unix/Linux, si din cauza limitarilor sistemului de operare Windows nu pot face tot ce pot face sub Linux, asa ca este uneori cam frustrant fiindca trebuie uneori sa testez programele sub Linux si deci sa le tot corectez, incarc pe server, rulez acolo, fiindca sub Windows nu functioneaza.
De aceea a fost foarte buna idea celor de la Sun care au creat masina virtuala JVM, insa ea vine si cu marele dezavantaj al consumului mare de resurse, asa ca... pana acum nu s-a inventat solutia perfecta.
"Niciodata nu mi-am pus problema ca pe Windows nu ar exista orice in cea ce priveste SDK-uri, IDE-uri etc.".
O, bineinteles ca exista o multime de programe care nu functioneaza sub Windows.
Daca nu ma insel sau daca nu a fost portat mai recent, sub Windows nu poate rula serverul web nginx, care este mai rapid decat Apache, consuma mai putine resurse, si este mai sigur impotriva atacurilor de tip denial of service. Si mai exista si alte servere web care nu functioneaza sub Windows.
In Perl si probabil ca si in alte limbaje sub Windows nu se poate rula functia fork cu care se creaza noi procese native, ci este modificata pentru a folosi thread-uri, ceea ce face ca anumite module de Perl sa nu functioneze sub Windows.
Si mai sunt si alte functii care nu se pot rula sub Windows din cauza limitarilor sistemului de operare, dar sub restul sistemelor ca Linux, Mac, Unix, Solaris, functioneaza ok.
Eu nu folosesc Linux cu interfata grafica, din cauza ca sunt orb iar accesibilitatea oferita de Orca este mult mai slaba decat cea oferita de Jaws, asa ca nu stiu daca exista si alte programe de tip IDE care sa nu fie oferite si pentru Windows, insa banuiesc ca nu exista, insa dupa cum spuneam, unii programatori au nevoie de mult mai multe facilitati din partea sistemului de operare decat un bun IDE.
In ceea ce priveste SDK-urile, cum si limbajele ca Perl/Python/Ruby au fost portate de mult timp sub Windows, si prin intermediul modulelor pentru ele se pot accesa multe servicii oferite de diverse programe sau servicii web, si cele mai multe functioneaza si sub Windows, asa ca evident, sunt accesibile si sub Windows.
Doar ca sa fie rulate in productie sub Windows inseamna sa fie rulate pe un sistem de operare mult mai dificil de controlat de la distanta, cel putin pentru orbi, pe un sistem care consuma mai multe resurse, pe un sistem proprietar care costa bani, pe care pot rula foarte bine alte programe create de Microsoft care costa si ele si mai multi bani.
"Cred ca te gandesti foarte mult la posibilitatile "liniei de comanda", am observat ca tot timpul amintesti de minusul pe care Windows il are in aceasta privinta.
Linux e prin traditie specializat pe asa ceva, Mac-ul e cumva accidental bun la asta pentru ca, din cate am inteles este bazat pe BSD care e tot un Unix-like.".
Si Windows este bazat pe MS DOS care era un sistem de operare bazat pe linia de comanda, insa chiar si pe vremea MS DOS linia de comanda oferea foarte putine facilitati.
"In contextul actual, intreb de curiozitate pentru ca nu stiu cum stau lucrurile, cam cat la suta dintre programatorii care lucreaza in cadrul unor firme mai mari sau mai mici sunt dependenti de linia de comanda? Intreb asta pentru ca, eu apucand-uma de programare de aproximativ doar 2-3 ani, de utilizare calculator de vreo 10-12, nu am apucat sa simt modul acesta de manuire a calculatorului. Poate ca mi-ar fi placut, as sta probabil bine la tastat comenzi, dar toate tutorialele, manualele pe care le-am citit si le citesc in continuare nu prea scriu nimic despre asta.".
Depinde in ce domenii lucreaza acele firme.
Cred ca iti dai seama ca la Google de exemplu nu exista nici un programator care sa nu foloseasca linia de comanda, fiindca ei au de lucru cu baze de date, cu filtrari de continut text...
La jobs.perl.org am vazut oferte de job pentru programatori in Perl si la Apple, si la Google, iar Microsoft a finantat firma ActiveState sa faca anumite imbunatatiri in Active Perl for Windows, deci banuiesc ca folosesc cu totii si Perl. Si nu conteaza ca este Perl, ci faptul ca sigur nu ruleaza Perl doar prin intermediul programelor cu interfata grafica.
Daca o firma creaza doar programe desktop este posibil sa nu aiba prea multa nevoie de linia de comanda, insa in urma cu ceva vreme am vazut mai multe oferte de job de programatori in Perl chiar la o Banca din Bucuresti, iar eu am avut o oferta de job la Budapesta la super firma Morgan Stanley care are acolo un centru de iT, doar ca evident, nu am vrut sa ma mut, fiindca spuneau ca jobul nu poate fi ocupat telecommute.
Acel centru de la Budapesta se ocupa cu analize financiare matematice, si analize cantitative, iar Perl este un limbaj foarte bun pentru asta, insa rezultatul sunt date, nu interfete grafice, deci e clar ca este nevoie in multe domenii de lucrul cu programe rulate in linia de comanda.
Eeste nevoie de linia de comanda in primul rand in firmele care creaza aplicatii web, fiindca cele mai multe site-uri web sunt create cu limbaje care se ruleaza de obicei in linia de comanda, ca PHP, Perl, Python, Ruby. De asemenea este nevoie de linia de comanda in firmele in care se administreaza baze de date, si nu te gandi acolo ca exista firme care administreaza zeci de baze de date. Exista firme care administreaza poate zeci de mii de baze de date instalate pe sute sau mii de servere si ar fi cam dificila administrarea lor una cate una printr-o interfata grafica.
Linia de comanda este in mod evident absolut necesara in firmele care lucreaza cu programatori la distanta, peste mari si tari. La noi in Romania nu prea este moda, dar in alte tari exista destul de multe firme care lucreaza in acest mod.
Linia de comanda este necesara si in firmele in care rezultatele muncii de programare, adica programele in sine sunt utilizate de specialisti, nu de publicul larg, cum este cazul Google sau a firmelor care activeaza in domeniul financiar si care au nevoie de programe pentru preluarea/filtrarea datelor si diverse calcule pentru analize.
Desi in Romania nu este cazul (cred), Perl se foloseste destul de mult in firmele care activeaza in domeniul biotehnologiei, unde au de manevrat tot felul de date genetice, Python este folosit de asemenea in tot felul de calcule matematice etc.
Asa ca concluzia este simpla: Daca trebuie doar sa creezi aplicatii desktop pentru publicul larg, intr-un limbaj de programare pentru care exista un IDE accesibil, atunci nu mai ai nevoie de nimic si Windows este cat se poate de OK.
"Daca am luat la rand acum sa zicem Java, nu prea imi arata nici chiar in manualele lor principale cum sa execut din linie de comanda o clasa, decat daca ma apuc si caut putin mai adanc.".
Cum spuneam, depinde ce vrei sa faci cu acel program in Java.
Daca el ar trebui sa preia date dintr-o baza de date, sau de pe un server web, sau ftp, sau din fisiere text, sau JSON, ori XML iar apoi sa faca anumite calcule si sa introduca datele ca rezultat intr-o alta baza de date, sau sa le incarce pe un server ftp, sau sa genereze fisiere text, JSON, XML iar programul acesta sa fie rulat in mod automat la o anumita ora din noapte sau zi, cu siguranta ca nu ai avea nevoie sa ii adaugi o interfata grafica SWING sau SWT, ci sigur l-ai rula in linia de comanda.
Si mai depinde si de limbajul folosit. Daca creezi un program in C# poti sa folosesti Visual Studio sau il poti crea foarte bine cu un editor obisnuit de text iar apoi sa il compilezi in linia de comanda.
Si la fel cu Java. Daca folosesti un IDE greoi ca Eclipse, el face multe lucruri pentru tine, asa ca nu ai nevoie sa sti cum le face si ce comenzi executa.
Dar daca vrei sa creezi un site web in PHP/Perl/Python/Ruby, pentru ele nu exista IDE-uri atat de complexe si cum rezultatul oricum nu va fi un program cu interfata grafica ci un simplu text, ele trebuie rulate in linia de comanda.
Dar "linie de comanda" este oarecum spus, fiindca eu de exemplu sub Windows foarte rar folosesc linia de comanda efectiva pentru a rula programe in Perl.
Pentru editare folosesc editorul de text numit TextPad, iar pentru a rula programul curent, apas combinatia de taste definita de mine Control+Shift+A.
Dupa apasarea acestei taste apare o fereastra cu un camp de editare care accepta parametrii pentru program si eu pot pur si simplu sa apas enter si sa il execut fara parametrii, sau sa scriu parametrii si apoi sa apas enter.
Avantajul acelei casete text este ca pot edita in ea textul intr-un mod mult mai accesibil decat in linia de comanda, ca intr-un camp text din Notepad.
Iar dupa ce apas enter si programul se executa, TextPad creaza o noua fereastra document in care afiseaza rezultatul rularii programului, cu STDOUT si STDERR combinate, asa ca pot vedea si rezultatul dar si eventualele erori.
Iar acea fereastra document este una obisnuita, foarte accesibila, in care pot selecta si copia textul, sau pe care o pot salva ca pe un fisier oarecare.
Iar daca rularea programului dureaza mai mult timp si se tiparesc mai multe date ca rezultat, pot vedea cum se tot adauga in timp real rezultatul rularii programului in acea fereastra.
Iar cand programul a terminat de rulat, TextPad face un sunet "bing", asa ca eu pot sa lucrez altceva pana atunci, si el ma anunta cand programul a terminat de lucrat.
Asa ca pot spune ca TextPad este si el un fel de IDE, fiindca oricum nu am nevoie de mai multe facilitati oferite de alte editoare cum ar fi cele de completare a numelor functiilor, fiindca in Perl ele sunt de obicei scurte, nu super extra lungi ca in Java/C#.
Exista un plugin pentru perl si pentru Eclipse, a existat si Visual Perl pentru Visual Studio, dar am considerat facilitatile oferite de ele cam inutile, asa ca pot rula foarte simplu programele cu TextPad.
Iar TextPad permite configurarea mai multor programe, asa ca pot rula si programe in Python, si Ruby, si PHP.
Eu am configurat inca doua comenzi, Control+Shift+E, care afiseaza o caseta de dialog in care scriu numele unui modul Perl, iar dupa ce apas enter, imi afiseaza o fereastra cu documentatia acelui modul.
Iar daca da o eroare si spune ca acel modul nu este instalat, am creat o alta comanda Control+Shift+C cu care daca specific numele acelui modul, se preia documentatia acelui modul de pe site-ul cpan.org direct si se afiseaza, incat pot citi rapid ca sa vad daca este ceva interesant si daca merita sa il instalez.
"Daca stau si ma gandesc bine, poate pentru unii nevazatori ar fi chiar mai ok modul de utilizare al calculatorului in linie de comanda, mai ales ca sunt multi care pot memora, ar fi si mai usor de explicat anumite lucruri: scrie asta sa se intample aia, am sari peste explicarea a tot felul de controale. Cand te gandesti ca utilizand wildcards ar putea porni o formatie muzicala intr-un player. Sa se poata scrie pentru Winamp sa zicem: "winamp _play _all "Mada*" sa dea drumul la toate melodiile cantate de Madalina Manole.".
Nu stiu ce sa zic. Exista cu siguranta utilizatori de Linux care prefera acest mod de operare, insa sincer sa fiu mie nu imi place. Cand trebuie sa lucrezi, faci ceva la care te pricepi, si trebuie sa o faci cat mai rapid posibil, cu cat mai putin efort, intr-un mod cat mai flexibil. cu rezultate cat mai bune, Si atunci in acel caz linia de comanda este super utila.
Daca insa trebuie sa iti petreci timpul liber ascultand muzica, sau teatru, sau citind carti, sau studiind documentare stiintifice despre fauna pe youporn.com, sau sa te joci jocuri, atunci cred ca nu cauti cea mai rapida metoda, cea care implica cel mai putin efort, ci pur si simplu este mai usor sa folosesti o interfata grafica. De aceea majoritatea utilizatorilor prefera interfata grafica.
"O curiozitate:
S-a tot vorbit mai sus de portarea JAWS-ului pe Mac. In ce sens e vorba de o portare, credeti ca ar putea fi vorba de o portare in adevaratul sens al cuvantului? Oare singurul lucru ce ar putea fi portat nu e doar numele JAWS care e intr-adevar un cuvant sugestiv si acronim dragut?
Probabil poate fi vorba doar de un JAWS pentru Mac, nu o portare a JAWS-ului pe mac. Ori a fost folosit verbul "a porta" strict ca idee de a ajunge si acolo ca produs cu acelasi nume creat de aceeasi firma, nu ar elegatura cu portabilitatea codului sursa, adaptarea lui pentru un alt sistem. Atat de legat e JAWS de Windows, incat sigur ar trebui sa creeze cei de la Freedom Scientific un intreg departament care sa faca cititorul pentru Mac imitand cumva pe cat posibil interfata actuala. Ar fi si tare sa incep sa ma simt pe Mac ca pe Windows, sa dau Insert + sageata in jos sa citesc un text etc.".
Aa, sigur, am spus portare din obisnuinta, insa probabil ca ar trebui facute atat de multe modificari, incat practic ar fi oricum un alt program.
Ce se poate porta totusi sunt cunostintele profesionale ale celor care au creat Jaws, care stiu cam la ce probleme trebuie sa se astepte, care cunosc deja anumite interfete folosite de anumite programe, cu alte cuvinte ar fi mai usor ca Freedom Scientific sa faca asa ceva decat o firma care nu stie nimic despre acest domeniu.