Disputa: Static vs Dynamic type, linie de comanda versus GUI

Diverse limbaje, programare, scripting, coduri, unelte specifice etc.
Vortex
Sublocotenent
Mesaje: 298
Membru din: 19 Noi 2009, 17:12
Contact:

Disputa: Static vs Dynamic type, linie de comanda versus GUI

Mesaj de Vortex »

Interventie admin:
Discutia de mai jos a fost initial o continuare a unui subiect despre ce e nou in JAWS15.
Fiindca discutia a deviat cu precadere catre subiecte despre probleme de accesibilitate la nivel de programare si catre elemente teoretice si practice in legatura cu scrierea de cod, de asemenea despre linia de comanda sau interfete grafice, mesajele de la un punct in jos au fost mutate in acest topic in Forumul dedicat programarii.
Mesajele anterioare punctului de deviere mentionat sunt in Topicul JAWS 15 - ce e nou, aflat in forumul IT & C.
Sfarsit interventie admin.

@IonPop: pe vremea aia nu exista VoiceOver. Un screen reader 3rd party ar necesita ceva efort din partea apple, cel putin sa documenteze api-ul de accesibilitate pe care il folosesc, daca nu cumva nici nu exista un astfel de API si VoiceOver e integrat in stack-ul video. La cat de inchisi sunt Apple, cu filosofia lor care zice ca "dam voie cator mai putine chestii in sistemele noastre ca sa le pastram stabilitatea", eu nu cred ca vor face eforturi in acest sens. Alt exemplu referitor la modul lor de lucru e aplicatia aia de scris in Braille pe iPhone. Pentru ca Apple nu accepta inlocuirea aplicatiei de tastatura pe iPhone, daca vrei sa folosesti aplicatia asta, trebuie sa scrii textul si sa il duci cu copy-paste in aplicatia care te intereseaza. E drept ca au integrat ei cateva aplicatii mai folosite, dar faptul ramane. Un efort minim din partea Apple ar putea simplifica mult scrisul pe telefon pentru cei care stiu braille, dar iata ca Apple nu il face. Si eu personal nu cred ca il va face. Nu din dispret sau lipsa de justificare financiara, ci din cauza filosofiei lor, de care ziceam mai sus.

Eu cred ca Windows e mai accesibil. Pe Windows exista multiple optiuni de accesibilitate, cum ar fi MSAA, IAccessible2, UIA, GDI hooking si tehnologiile de interceptare video, care, desi s-au schimbat continuu, au ramas disponibile in fiecare versiune de Windows. Documentatia pentru majoritatea api-urilor este disponibila, inclusiv GDI hooking, deoarece NVDA il foloseste. E posibil ca si documentatia pentru video intercept sa fie disponibila, cei de la NVDA au spus ca nu-l implementeaza pentru ca nu vor sa piarda portabilitatea, nu pentru ca nu ar putea. Odata eram interesat de subiect si am trimis mail la Microsoft, pareau doritori sa furnizeze documentele.

Pe Linux, din cate stiu eu, se folosesc AT-SPI si IAccessible2. Doar mediul Gnome suporta AT-SPI, se tot lucreaza la alte desktop-uri, iar AT-SPI nu e suficient. Nici pe partea de web nu stam prea bine, Orca se misca greu in Firefox, presupun pentru ca e scris in Python si nu lucreaza in-process. Oricum, chiar si fara asta, lipsa video intercept-ului se simte in raportul dintre aplicatiile accesibile si inaccesibile...
S-ar mai putea discuta si de probabilitatea mai mare de a gasi drivere de sunet pe windows fata de linux, si de chestia aia care nu permite by default ca orca sa ruleze sub root (da, stiu de Vinux).

La OS X, nu sunt sigur, dar am auzit ca folosesc API, ceea ce inseamna ca daca nea developeru' n-a pus label, la revedere. La fel, se simte lipsa video intercept.

Despre Android am tot spus, nu e ca n-ar fi accesibil, dar nu e optimizat pentru accesibilitate eficienta. Si nici nu permit dezvoltatorilor interesati sa contribuie, desi cica-i open-source.

@Manu: cum zicea si tipul ala in articol, ei dezvolta doar chestii care considera ei ca ii intereseaza pe useri. Poate ca dictionarul nu e foarte cerut. Mie nu-mi pasa in ce fel o fac, dar sa repare....
Vortex Website
Maximum de confort, cu minimum de efort.
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

"Eu cred ca Windows e mai accesibil. Pe Windows exista multiple optiuni de accesibilitate, cum ar fi MSAA, IAccessible2, UIA, GDI hooking si tehnologiile de interceptare video, care, desi s-au schimbat continuu, au ramas disponibile in fiecare versiune de Windows.".

Eu cred ca tocmai existenta atator interfete pentru accesibilitate face ca accesibilitatea sa fie mai redusa, fiindca daca unele clase grafice suporta doar anumite interfete de accesibilitate, cititoarele de ecran vor trebui facute ca sa poata lucra cu toate aceste interfete de accesibilitate, fiindca altfel anumite programe nu vor fi accesibile.

Daca de exemplu un citotor de ecran nu intelege interfata oferita de Java Access Bridge, toate programele care folosesc SWING vor fi absolut inaccesibile.
Daca Jaws nu intelege interfata de accesibilitate oferita de aplicatiile Flash sau SilverLight, ele nu sunt accesibile sau sunt slab accesibile.

Iar pe langa clasele grafice care suporta interfete de accesibilitate exista si altele folosite sub Windows care nu sunt deloc accesibile, cum este cazul clasei Tk. Nu stiu de ce programele care folosesc Tk nu sunt accesibile. Poate ca Tk nu suporta nici un fel de interfata de accesibilitate, poate ca suporta una pe care Jaws nu o intelege, dar exista si sub Windows programe care folosesc clase grafice absolut inaccesibile sau partial accesibile si nu are nici un fel de importanta ca ele ruleaza sub Windows care este accesibil.

Daca in schimb toate programele ar folosi o singura interfata de accesibilitate, atunci pentru cititoarele de ecran ar fi mai simplu fiindca ar trebui sa suporte doar acea interfata, iar clasele grafice folosite de programe la fel.
Nu sunt utilizator de Mac, dar din moment ce programele pot fi accesate cu VoiceOver, banuiesc ca exista o interfata de accesibilitate prin intermediul careia se inteleg programele cu cititorul de ecran.
Problema VoiceOver din putina experienta pe care am avut-o cu el este ca are o interfata extrem de urata, adica in loc sa apesi o tasta ca sa dai o comanda cititorului de ecran, trebuie sa apesi 3. Iar daca cumva anumite elemente ale sistemului de operare sau din diverse programe nu sunt foarte accesibile cu VoiceOver, este cel mai probabil fiindca VoiceOver nu a mai fost imbunatatit de multa vreme, nu fiindca sistemul de operare nu ar permite acest lucru.
Este posibil si ca anumite programe sa nu fie deloc accesibile cu VoiceOver din cauza ca ele folosesc clase grafice care nu ofera deloc o interfata accesibila, insa in acel caz chiar nu se poate face nimic, si aceeasi problema exista si sub Windows.

Asa ca sub Mac teoretic totul este posibil, insa ai perfecta dreptate cand amintesti despre politica inchisa a celor de la Apple care fac ca practic sa nu merite efortul de a colabora cu ei.

"S-ar mai putea discuta si de probabilitatea mai mare de a gasi drivere de sunet pe windows fata de linux, si de chestia aia care nu permite by default ca orca sa ruleze sub root (da, stiu de Vinux).
La OS X, nu sunt sigur, dar am auzit ca folosesc API, ceea ce inseamna ca daca nea developeru' n-a pus label, la revedere. La fel, se simte lipsa video intercept.".

Acestea sunt probleme importante, insa de o importanta secundara totusi.
Cea mai mare importanta in ceea ce priveste accesibilitatea mai buna sub Windows o are faptul ca Windows este cel mai folosit sistem de operare, ceea ce face ca cei mai multi producatori de cititoare de ecran sa fie interesati de aceasta platforma.
Nu prea ar conta ce driveri sunt disponibili sau ce interfete de accesibilitate trebuie folosite daca sa presupunem... Freedom Scientific, GW Micro, Dolphin si cei care lucreaza pentru NVDA s-ar decide sa nu mai continue dezvoltarea sub Windows ci ar porta programele lor sub Mac.
Sa vezi cat de accesibil ar deveni atunci Mac-ul.
Cu Linux este mai complicat fiindca se folosesc frecvent clase grafice din diverse surse, probabil cu facilitati reduse de accesibilitate unele dintre ele, ba exista si diverse desktop-uri, iar la partea grafica in general Linux sta oricum cel mai prost.

In mod evident, ca majoritatea orbilor care folosesc un computer, si eu prefer Windows din motive legate de accesibilitate, insa ma intereseaza evolutia (sau mai bine zis stagnarea :-) imbunatatirii accesibilitatii si sub alte sisteme de operare ca Mac sau Linux, fiindca ele ofera inca unelte mai bune pentru programatori decat Windows.
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

In ce sens exista unelte mai bune de programare pe Linux si Mac?
Mai accesibile sau pur si simplu mai bune per ansamblu?
Niciodata nu mi-am pus problema ca pe Windows nu ar exista orice in cea ce priveste SDK-uri, IDE-uri etc.
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.
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.
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.
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.
Stiu cativa care ar fi in stare sa utilizeze calculatorul in acest fel mult mai mult. :)

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.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
GruiaVelicu
Locotenent - colonel
Mesaje: 1063
Membru din: 15 Mar 2008, 15:50
Localitate: Cluj-Napoca

Mesaj de GruiaVelicu »

Salutare. In discutiile privind programarea nu ma prea pricep. In ceea ce priveste voiceover se pot seta si alte modalitati de a controla calculatorul. Eu controlez macul doar din tastatura numerica de pe tastatura. De ex in loc sa apas alt ctr plus spatiul pentru un click sau enter pe windows apas tasta 5.
Gruia
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

"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.
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Da, m-ai lamurit in ceea ce priveste linia de comanda...
Este foarte avantajos chiar si pentru utilizatorul simplu faptul ca poti face fel de fel de actiuni pentru care ar trebui altfel sa creezi mici programele pe care sa le salvezi, sa le compilezi si apoi sa le rulezi.
Am avut de multe ori nevoie chiar de inlocuire de stringuri in toate fisierele dintr-un folder, ar fi fost mult mai usor sa pot da o comanda pentru asta.
A trebui chia rpentru jocul de table care are multe fisiere sursa care se imbina sa imi fac un mic programel Find and replace pentru ca, acum mai bine de doi ani faceam astfel de inlocuiri deschizand fiecare fisier in parte. Nici nu m-am gandit ca as putea face astfel de lucruri cu un limbaj, scriind direct comenzi, asa cum ai aratat ca se poate cu Perl. Stiind practic niste comenzi de baza, combinandu-le eficient poti rezolva anumite actiuni care prin interfata grafica ar lua foarte mult timp. Sigur se poate de exemplu ca printr-o comanda sa aduc toate fisierele MP3 din folderele si subfolderele unei partitii intr-un singur folder. Toate astea le-as putea rezolva facand mici programele, dar, dupa cum spuneam, tot timpul e putin enervant ca trebuie sa creezi noi fisiere, sa le salvezi, sa le compilezi, rulezi si ce stiu mai ce.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Vortex
Sublocotenent
Mesaje: 298
Membru din: 19 Noi 2009, 17:12
Contact:

Mesaj de Vortex »

@IonPop: Intr-adevar, e mai dificil sa se implementeze mai multe interfete de accesibilitate decat una. Punctul hotarator care da accesibilitatea Windows e, in opinia mea, video intercept. Asta lucreaza direct cu driverul video, si intercepteaza orice api care trimite text spre ecran. E drept, unele nu trimit, dar multe o fac.


Desi nu ma dau inapoi de la utilizarea consolei cand consider necesar, vreau sa zic ca exista multi programatori care n-o folosesc. Exemplele astea cu inlocuirea in mai multe locuri si sistemele de versioning pot fi gestionate, de exemplu, de un IDE. E cazul celor care folosesc Visual Studio pentru a crea aplicatii desktop si web cu .net framework si al celor care folosesc XCode pentru a crea aplicatii pentru mac si iPhone.

Altfel, revenind la jaws, a aparut anuntul oficial, continand toate noutatile din beta:
http://www.freedomscientific.com/downlo ... c-beta.asp
Download-ul va fi disponibil maine.
Am avut dreptate, au inlocuit simona cu ioana. Expun in detaliu gesturile de navigare pe ecranul tactil, au copiat rotorul de la VoiceOver.
Vortex Website
Maximum de confort, cu minimum de efort.
GruiaVelicu
Locotenent - colonel
Mesaje: 1063
Membru din: 15 Mar 2008, 15:50
Localitate: Cluj-Napoca

Mesaj de GruiaVelicu »

Salutare. Si cei de la microsoft au copiat intr-un fel rotorul voiceover in narator pentru windows 8. In rest singura problema majora ramane ca majoritatea utilizatorilor de pc sau smartphone nu au nevoie de toate facilitatile mentionate in acest topic si in altele si in consecinta nu se va tine cont de ei. Ma refeream la cei care au nevoie de facilitati suplimentare. Jaws sau alte programe ar face bine daca ar crea programe total diferite sau facilitati multe pentru cei care au nevoie in profesie de tot felul de facilitati specifice. Includerea lor sau excluderea lor dintr-un program de baza nu face bine nimanui, nici profesionistilor nici utilizatorilor obisnuiti. Programul devine prea stufos, ex jaws pentru care trebuie sa fi destul de bine pregatit sa il poti utiliza in viata de zi cu zi.
Gruia
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

JAWS, daca tot e Job Access with Speech, nu strica sa aiba si lucruri avansate, iar cele de care vorbeam noi mai sus nu cred ca tin neaparat de utilizatori foarte avansati, ci parafraza defapt posibilitatea de a citi diverse interfete grafice si de a face anumite lucruri cu care un vazator nu are probleme.
Cred ca utilizarea intr-un mod basic nu este impiedicata de existenta unor facilitati complexe.
Se poate da usor Tab, Alt + Tab, sageti etc la fel de bine si daca cine vrea poate sa utilizeze eficient linia de comanda.
Totul e ca dupa acel Tab, elementul grafic pe care se muta focusul sa fie citit corect, sa se poata interactiona cu el, practic pentru asta trebuie incluse tot felul de API-uri de accesibilitate.

In pagina Ce e nou in JAWS15 pusa de Vortex mai sus am vazut ca exista si ceva pentru cei care dezvolta programe.
E vorba de "Advanced Object Navigation":
For advanced users, specifically those who may be involved with developing applications, Advanced Navigation provides more detail about all objects in the UIA (User Interface Automation) structure.
Pentru asta se apasa Numpad Star (desktop layout) sau Caps Lock + A (laptop layout) cand touch cursor este activ.
Asteptam sa vedem exact ce spune JAWS mai deosebit in acel mod.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

"Desi nu ma dau inapoi de la utilizarea consolei cand consider necesar, vreau sa zic ca exista multi programatori care n-o folosesc. Exemplele astea cu inlocuirea in mai multe locuri si sistemele de versioning pot fi gestionate, de exemplu, de un IDE.".

In fraza de mai sus exista mai multe puncte importante, asa ca le iau pe rand. :-)
Faptul ca si sub Windows exista o consola este destulde putin important, fiindca este de o calitate foarte slaba, asa ca chiar se pot face putine lucruri cu ea.
Faptul ca exista "multi programatori" are importanta doar pentru convingerea incepatorilor ca ceva este bun, dar de fapt nu are nici o importanta.
PHP de exemplu este utilizat de o gramada mult mai mare de programatori decat alte limbaje de calitate mult mai buna, si totusi nu cred ca ii se pot gasi multe avantaje PHP-ului in afara ca este simplu si mai ales simplu de distribuit programele.
Am spus si eu ca sistemele de versioning pot fi accesate printr-o interfata grafica, insa nu conteaza doar ca pot fi accesate, ci si cum.
Eu de exemplu am creat fisiere .bat, asa ca la tara, chiar daca probabil ar exista si alte metode mai elegante, cu care dau comenzi programului de administrare a versiunilor, si trebuie doar sa scriu "push" ca sa imi incarce pe server toate modificarile facute la site, sau sa incarce modificarile chiar pe doua servere intr-un anumit caz, si "pull" ca sa descarce de pe server modificarile incarcate acolo din alta parte.
Aceasta metoda este cat se poate de simpla, si mai ales de flexibila fiindca poti alege sa faci orice poate face sistemul de management al surselor, pe cand utilizarea unui IDE este utila doar programatorilor care programeaza intr-un limbaj de programare suportat de acel IDE. Si in plus, IDE-urile cele mai importante, adica Eclipse si Visual Studio sunt niste elefanti care iti iau o gramada de timp si pana pornesc.
Iar un IDE te limiteaza evident doar la programare, or eu folosesc editorul TextPad nu doar pentru programare. Si cand editez diverse fisiere cu text sau continut tsv sau alte formate si vreau sa fac inlocuiri cu regular expressions, folosesc tot TextPad. Si bineinteles, folosesc sistemul de versioning si pentru astfel de fisiere uneori, nu doar pentru cod sursa, pentru ca uneori am nevoie de diff-uri intre diverse versiuni.
Ma incurca sa folosesc doua editoare, desi am mai multe instalate, fiindca uit care sunt combinatiile de taste pentru anumite comenzi, asa ca trebuie sa ma uit prin meniuri, iar asta ia timp si reduce productivitatea, deci este o solutie care trebuie evitata daca se poate.

"E cazul celor care folosesc Visual Studio pentru a crea aplicatii desktop si web cu .net framework si al celor care folosesc XCode pentru a crea aplicatii pentru mac si iPhone.".

Sigur ca da, doar ca DotNet nu este o solutie fiindca nu este o solutie portabila sub Linux, iar gazduirea unui site sub Windows/DotNet costa mai mult, deci nu este rentabil.
(Ma rog, poate ca sunt super subiectiv, dar pe mine ma enerveaza in mod special paginile create cu aspx, ori de cate ori vad stupizenia aia de functie __doPostBack pentru o simpla accesare a unei pagini web care ar trebui sa fie cu un link direct si evident cu GET, nu POST).
Iar administrarea unui server pe care ruleaza DotNet, deci si Windows implica si o versiune de Jaws instalata pe acel server, care implica si nevoi pentru mai multa memorie disponibila, deci costuri si mai mari.
Iar in ceea ce priveste un server al unei firme pe care poate lucra un orb, nu o singura data am auzit pe blindprogramming sau alte liste cu orbi plangandu-se cineva ca administratorul firmei la care lucreaza nu permite instalarea de alte softuri pe server cum ar fi un cititor de ecran. Asa ca Windows/DotNet nu permite practic nici administrarea de la distanta orbilor, decat intr-un mod si mai dificil si mai costisitor.
Ma rog, exista multe alte editoare care permit instalarea de plug-in-uri printre care si unele care permit folosirea principalelor sisteme de management al codului sursa, insa cu toate incercarile mele de a gasi un inlocuitor pentru TextPad, nu am gasit unul care sa aiba cele cateva, foarte putine cerinte de baza, asa ca sunt nevoit sa il folosesc in continuare.
Cred ca cel mai aproape a fost editorul Notepad++ pe care l-am ignorat mult timp din cauza numelui, insa el are o mare problema de accesibilitate din cauza ca foloseste widget-ul Scintilla.
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

"JAWS, daca tot e Job Access with Speech, nu strica sa aiba si lucruri avansate, iar cele de care vorbeam noi mai sus nu cred ca tin neaparat de utilizatori foarte avansati, ci parafraza defapt posibilitatea de a citi diverse interfete grafice si de a face anumite lucruri cu care un vazator nu are probleme.".

Asa ar trebui sa fie, sau mai exact ar trebui sa le permita orbilor sa poata face tot ce poate face un vazator pe cat este posibil.
Doar ca cuvantul "job" e doar un cuvant, care cine stie, poate ca a fost inventat abia dupa inventarea cuvantului "jaws".

"Cred ca utilizarea intr-un mod basic nu este impiedicata de existenta unor facilitati complexe.".

Ba da, cum sa nu fie, ca doar cei de la FS nu au resurse nelimitate.
Intrebarea se pune: La ce sa lucram baieti luna asta, sa imbunatatim accesibilitatea pentru Scintilla si sa oferim posibilitatea utilizarii liniei de comanda macar la fel de bine cum putea fi accesata pe vremea MS DOS, sau sa facem mai accesibile paginile Facebook si YouTube?
Evident ca pentru toate firmele conteaza publicul cel mai larg, fiindca dupa o lunga experienta si multe calcule si-au dat seama ca de la acel public au cel mai mult de castigat si cu cel mai mic efort, nu de la o mana de programatori care au nevoi foarte complexe si care oricum nu vor fi niciodata multumiti.

"In pagina Ce e nou in JAWS15 pusa de Vortex mai sus am vazut ca exista si ceva pentru cei care dezvolta programe.
E vorba de "Advanced Object Navigation"".

Nu este vorba despre cei care dezvolta programe, ci doar despre cei care dezvolta programe pentru MS Windows, si nu imi dau seama daca nu cumva doar despre cei care dezvolta programe cu interfete grafice bazate pe widget-uri native Windows, or din totalul programatorilor din lume, acesta este un procent destul de mic. (Da, incluzand si programatorii in PHP :-)
Vortex
Sublocotenent
Mesaje: 298
Membru din: 19 Noi 2009, 17:12
Contact:

Mesaj de Vortex »

@IonPop: Ok, s-o luam pe rand.:)
Nu stiu de ce ai adus vorba de consola de pe Windows. Prin consola eu ma refeream la toate interfetele in linie de comanda de pe toate sistemele.

Cand am zis ca exista multi programatori, voiam doar sa dovedesc ca acest lucru (programarea fara consola) este realizabil. Nu afirmam ca e mai bun sau mai prost decat modul cli, ci doar ca este un alt mod disponibil si viabil.

Mai jos devii subiectiv. Tu zici ca accesul grafic la versioning nu e bun, eu zic ca folosesc TFS si sunt multumit de el. N-am facut versioning pentru fisiere, ce-i drept, pentru ca nu am avut nevoie. Afirmi ca e simplu sa inveti comenzile alea complicate si sa iti scrii bat-uri, pentru mine e mai simplu sa deschid tfs si in cinci minute i-am inteles functionarea. Tu zici ca visual studio mananca o gramada de resurse, mie mi se incarca in trei secunde pe laptop cu ssd si sunt foarte multumit de ajutorul pe care mi-l ofera...
Daca vorbim de regex, si eu folosesc, nu le-as incadra la cli. Nu ma deranjeaza sa am editor separat in care sa pot face asta.
Zici ca DotNet nu e solutie pentru ca nu e portabila sub Linux, iar gazduirea pe Windows nu e rentabila. Eu, si toate firmele nationale si internationale care fac hosting si development pe Windows, te contrazic. Nu incerc sa sun arogant, dar atunci cand calculezi rentabilitatea unei aplicatii, iei in considerare si costurile de dezvoltare si intretinere, nu doar server-ul. Mie, personal, dezvoltarea in DotNet mi se pare mult mai organizata decat in PHP sau alte limbaje din astea fara strong typing. De asemenea, si documentatia este foarte bine dezvoltata.
In ffine, nu am de gand sa incep un flame war c# vs perl, doar sa arat faptul ca tehnologia DotNet este foarte utilizata, rentabila sau nu.
Ca fapt divers, ce ai vazut tu cu PostBack erau aplicatiile aspx vechi, acum se foloseste pattern-ul MVC, care nu mai are problema de care amintesti.

Despre administrare nu voi vorbi, pentru ca nu am experienta in domeniu. Pana acum am fost doar developer.

Impresia mea e ca advanced object navigation ala e cel mai util in script-uri, de mult se plang scripterii de jaws ca nu pot accesa calumea interfata UIA.
Am trait s-o vad si pe asta, mai intai NVDA pune object navigation si toata lumea il injura, apoi vine jaws si face la fel. Da, stiu, doar pentru dezvoltare, dar totusi...
Vortex Website
Maximum de confort, cu minimum de efort.
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

"Cand am zis ca exista multi programatori, voiam doar sa dovedesc ca acest lucru (programarea fara consola) este realizabil. Nu afirmam ca e mai bun sau mai prost decat modul cli, ci doar ca este un alt mod disponibil si viabil.".

Nici eu nu m-am referit la programarea in consola, fiindca doar nu folosesc nici un editor pe care il rulez in vre-o fereastra Bash sau DOS, ci un editor cu interfata grafica, ci am pornit de la suportul slab pe care il ofera Windows pentru consola cu care poti face mult mai simplu lucruri care iti iau mult mai mult timp decat daca le faci cu o interfata grafica.

"Mai jos devii subiectiv. Tu zici ca accesul grafic la versioning nu e bun, eu zic ca folosesc TFS si sunt multumit de el. N-am facut versioning pentru fisiere, ce-i drept, pentru ca nu am avut nevoie. Afirmi ca e simplu sa inveti comenzile alea complicate si sa iti scrii bat-uri, pentru mine e mai simplu sa deschid tfs si in cinci minute i-am inteles functionarea.".

Pai de asta am spus intr-un mesaj anterior ca toate acestea depind de cunostintele pe care le are fiecare persoana in parte. Si este evident ca fiecare avem o opinie personala si deci suntem subiectivi. Sau tu in mod *obiectiv* spui ca tie iti place cutare lucru, pentru tine este usor cutare lucru? :-)

Sincer sa iti spun eu nici nu am auzit de TFS. Stiu ca cele mai folosite sisteme de versioning sunt git, Mercurial, Subversion, Bazaar. Toate au si o versiune grafica, insa majoritatea utilizatorilor profesionisti le folosesc in linie de comanda tocmai fiindca este mai simplu daca sti ce si cum.

"Tu zici ca visual studio mananca o gramada de resurse, mie mi se incarca in trei secunde pe laptop cu ssd si sunt foarte multumit de ajutorul pe care mi-l ofera...".

Esti foarte multumit fiindca ai nevoie de acel ajutor. In alte limbaje nici nu ai nevoie de acel ajutor, asa ca poti folosi si editoare pentru care nu trebuie sa astepti 3 secunde ca sa se deschida, si dupa cum am mai spus, in care mai poti face si altceva decat programare.
Insa la consumul de resurse m-am referit gandindu-ma la costurile implicate.

"Zici ca DotNet nu e solutie pentru ca nu e portabila sub Linux, iar gazduirea pe Windows nu e rentabila. Eu, si toate firmele nationale si internationale care fac hosting si development pe Windows, te contrazic.".

Eu nu sunt firma nationala sau internationala care sa aiba fonduri mari pentru gazduire si nici nu am nevoie de un limbaj super standardizat pe care sa il poata intelege usor un incepator, ca sa nu am probleme cand vreau sa angajez noi membrii in echipa si sa imi fie usor sa ii gasesc, si ieftin, ci am nevoie de un limbaj in care pot programa cat de rapid posibil, eu singur si cu care sa pot crea programe a caror gazduire costa cat de putin posibil, iar Dotnet nici nu intra in discutie pentru asa ceva din motivele enumerate mai sus.

"Nu incerc sa sun arogant, dar atunci cand calculezi rentabilitatea unei aplicatii, iei in considerare si costurile de dezvoltare si intretinere nu doar server-ul."

Costurile de dezvoltare si intretinere pentru aplicatiile facute de mine sunt zero. O fac in timpul liber, si amnevoie ca atat programarea, accesarea bazelor de date, administrarea serverelor, ba chiar o parte din design sa fie cat se poate de accesibile si cu costuri cat de mici posibil.
Ce motive as avea sa prefer sa lucrez cu alte unelte care sa ma faca sa platesc mai mult si care sa imi ia mai mult timp pentru dezvoltare?
Poate ca daca as fi fost vazator mi-ar fi placut sa lucrez in VisualStudio cum lucram cand vedeam, si sa adaug obiecte cu mouse-ul, dar acum imi este mai usor sa creez si mai ales sa intretin un program pe care il scriu in cod, si nu un designer grafic.

"Mie, personal, dezvoltarea in DotNet mi se pare mult mai organizata decat in PHP sau alte limbaje din astea fara strong typing.".

Ce legatura are organizarea cu strong typing-ul?
Este mai "organizat" un program daca inainte de fiecare variabila trebuie sa specifici de ce tip este?
PHP este un limbaj cu totul dezorganizat, dar asta nu are nici o legatura cu faptul ca nu este puternic tipizat.

Daca in scoala ai fi invatat sa programezi in Python sau Ruby si cu ele ai fi putut sa castigi bani, ti s-ar fi parut cu siguranta alte limbaje ca Java si C# niste prostii cu care trebuie sa iti pierzi timpul tot declarand variabile fara nici un rost, si ai fi vazut in mod practic ca nu are nici o importanta declararea variabilelor. Daca insa ai invatat DotNet, care este un pachet foarte bun, insa nu pentru programare web pentru orbi, si nici pentru proiecte personale cu fonduri limitate, atunci ai fi avut o alta opinie.

"De asemenea, si documentatia este foarte bine dezvoltata.".

Documentatia este foarte bine dezvoltata la multe alte limbaje de programare. In Perl de exemplu, fiecare modul pe care il poti instala de pe cpan.org are inclusa documentatia si in cateva secunde poti gasi ce te intereseaza.

"In ffine, nu am de gand sa incep un flame war c# vs perl, doar sa arat faptul ca tehnologia DotNet este foarte utilizata, rentabila sau nu."

Tehnologiile proprietar create de rechini ca Microsoft si Oracle sunt folosite in general de firme mari care au fonduri mari pentru aplicatii, si care sunt nevoite sa foloseasca unelte create de alte firme mari, fiindca daca ceva nu merge cum trebuie, conducatorii lor sa poata spune ca lucreaza cu firma Microsoft, sau Oracle sau IBM si ca ei urmeaza sa repare problema sau sa le acorde consultanta pentru rezolvarea ei. Din acest motiv nu prefera sa lucreze cu solutii care nu au in spate firme mari, fiindca atunci pot fi invinuiti ca au lucrat cu cine stie ce solutii proaste, si ca acesta este motivul pentru care nu le functioneaza ceva cum trebuie.
Ai vazut banca care sa nu foloseasca ori baze de date Oracle ori MS SQL? Chiar daca si PostgreSQL ofera facilitati foarte apropiate de Oracle si este gratis. Dar nu da bine nici la imagine. Cum sa spuna firma importanta cutare, cotata la bursa eventual, ca foloseste nu stiu ce lucruri gratuite? Ar putea parea ca face economie, ca nu ii merge prea bine.
Ca sa nu mai vorbim despre toate programele cumparate in Romania din fonduri de stat, dar si in alte tari. Producatorii de programe open source nu ofera de obicei spagi, asa ca nu prea are nici o institutie publica interesul sa le foloseasca, iar firmele private care intermediaza vanzarea de software nu au interesul sa le promoveze fiindca nu castiga nimic din asta.
In scopuri personale insa nu cred ca este aceeasi situatie insa...
Sigur ca este foarte utilizata tehnologia DotNet, fiindca are in spate pe Microsoft care sa faca lobby si sa ofere burse si fonduri pentru dotarea scolilor si spagi pe la ministere in multe tari ca sa fie predate in scoli produsele MS, iar Java are in spate firme ca Sun/Oracle/IBM asa ca e normal ca sunt foarte utilizate, dar ca tot vorbeam despre crearea site-urilor web, cate sunt create cu DotNet si Java, si cate sunt create cu alte limbaje de genul celor care nu sunt puternic tipizate?
De ce oare comparatia nu este in avantajul DotNet daca ar fi chiar atat de usor de intretinut si creat programe cu el?
Multe firme de software au interesul sa foloseasca solutii bazate pe Java si C# fiindca chiar daca codul sursa nu este ascuns 100% prin compilare, este totusi o solutie mult mai sigura decat crearea si vanzarea unor programe open source pe care le poate modifica usor oricine si le poate revinde. Dar si in aceasta privinta, in scopuri personale nu are nici o importanta, fiindca eu creez programe pentru mine.
Ba mai mult, am putut sa folosesc o multime de module de nivel inalt create gratuit de alte persoane, iar daca as fi utilizat o solutie ca DotNet sau Java ar fi trebuit sa creez totul de la zero.
Sau se poate instala usor si pentru DotNet module cum ar fi cele cu care se pot prelua in mod automat cotatii financiare de la Yahoo Finance cu o metoda mai simpla decat o simpla comanda:
cpanm Finance::QuoteHist
dupa care poti prelua cotatiile cu o alta linie de cod?

Asa ca dupa cum am mai spus, depinde de ce anume ai nevoie sa faci si de cunostintele pe care le ai. Daca tu nu sti sa folosesti un program in linie de comanda ti se pare mai complicat si este normal sa preferi o interfata prin care poti naviga si sa gasesti informatiile de care ai nevoie chiar daca pierzi mai mult timp pentru asta.
Daca ai invatat la scoala C# este normal sa nu preferi sa lucrezi in Delphi sau Cold Fusion si sa spui ca DotNet este cel mai bun, fiindca pentru tine chiar este cel mai bun. Daca ar trebui de maine sa folosesti un alt limbaj, ar trebui sa faci mari eforturi sa inveti acel limbaj si deja nu ar mai fi prea productiv.
Despre costurile suplimentare insa nu prea cred ca nu sunt importante daca trebuie facute din buzunarul propriu.

"Ca fapt divers, ce ai vazut tu cu PostBack erau aplicatiile aspx vechi, acum se foloseste pattern-ul MVC, care nu mai are problema de care amintesti."

Eu nu zic ca aceasta problema nu a fost rezolvata, fiindca nu stiu, insa acel cod Javascript chiar nu are nici o legatura cu pattern-ul MVC.
Este doar un simplu cod Javascript stupid care trimitea cu POST un formular ascuns, si cred ca intr-adevar este o prostie sa ceri ca browserul sa foloseasca Javascript doar ca sa faci click pe un link in loc sa pui un simplu link obisnuit.

"Despre administrare nu voi vorbi, pentru ca nu am experienta in domeniu. Pana acum am fost doar developer."

Pai atunci ce tot am discutat noi aici? :-)
Nu de alta, dar problema accesibilitatii si rapiditatii in lucru deci implicit a productivitatii tine si de limbaj, fiindca in Perl trebuie sa scri de zece ori mai putin cod decat in C# sau Java pentru a face acelasi lucru, dar tine sigur foarte mult de partea de administrare a sistemului, a serverului web, a bazelor de date de la distanta etc, fiindca daca unele dintre acestea nu sunt accesibile atunci pur si simplu te blocheaza, caci mai apare inca o problema majora pe langa cea legata de inaccesibilitatea crearii unui design web de calitate pentru care este nevoie de ajutor extern.
Vortex
Sublocotenent
Mesaje: 298
Membru din: 19 Noi 2009, 17:12
Contact:

Mesaj de Vortex »

@IonPop: cand spui
"
Sigur ca da, doar ca DotNet nu este o solutie fiindca nu este o solutie portabila sub Linux, iar gazduirea unui site sub Windows/DotNet costa mai mult, deci nu este rentabil.
"

Asta pare o afirmatie generala, nu subiectiva. Cineva neinformat care vine aici poate sa ia de buna enormitatea asta, si sa excluda DotNet din variantele sale. Asta e singurul motiv din care ma tot contrez cu tine pe aici, informarea. Amandoi avem pareri formate si nu ni le vom schimba usor, dar altii...

Dupa cum ai spus, eu mereu spun "eu cred", "in opinia mea" si altele asemenea, ca sa clarific ca ceea ce spun sunt strict optiunile mele personale, si nu am pretentia ca sunt adevaruri certe.

Despre cum autocomplete e bun doar ca sa iti amintesti de functii lungi si despre cum in general firmele mari folosesc DotNet, nu pot spune decat ca sunt dezinformari majore. Autocomplete e bun pentru ca cu el poti explora, in timp ce scrii cod, metodele (cu tot cu overload-uri) si proprietatile unui obiect, toate documentate, direct in IDE.
Dupa cum ai spus si tu, securitatea, faptul ca programatorii le pricep mai repede sunt alte motive din care multe firme folosesc limbaje din astea, c-like sa le zic, desi atat Java, cat si c# ruleaza pe masini virtuale. Si ajungem si la strong typing vs weak typing, care e pentru programatori ca windows vs linux pentru utilizatori. In opinia mea, pentru ca aici chiar nu exista argumente obiective, un limbaj strongluy typed iti zice mai multe lucruri despre o metoda, nu ai sansa sa trimiti parametrii gresiti, de alt tip, in ea. De asemenea, daca vezi o bucata partiala de cod, iti dai seama dupa tip ce operatii se fac cu variabilele, spre deosebire de weakly typed, unde trebuie sa rulezi, sa vezi cce se intampla. In multe limbaje din astea, daca nu definesti o variabila si dupa aia ii ceri valoarea, compilatorul o pune linistit pe null, si stai si te intrebi de ce nu merge, motivul fiind doar o diferenta de o litera. Mie imi place ca compilatorul sa inteleaga cat mai mult din logica mea, ca sa ma poata avertiza cand gresesc.

E vorba de preferinta mea pentru o paradigma de lucru, nu de "ce ai invatat la scoala" sau ""cu ce poti sa castigi bani". Ca si la autocomplete, tragi concluzii cu informatii insuficiente. Inca odata, n-am probleme cu asta, dar altii s-ar putea sa te ia in serios, de asta raspund.

Ca fapt divers, daca se vrea utilizarea in scop personal, costurile pot fi reduse si la DotNet. Visual studio Express sau MonoDevelop sunt gratuite, iar aplicatiile web pot fi rulate pe linux, folosind Mono.

Am discutat despre cum pot programa nevazatorii, cred. Programare in orice conditii, inclusiv angajati intr-o firma, nu neaparat de unii singuri. De aia eu am adus in discutie doar argumente legate de dezvoltarea codului, administrarea e un cu totul alt capitol despre care aleg sa nu discut, intrucat nu am practica in domeniu.
Vortex Website
Maximum de confort, cu minimum de efort.
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

"@IonPop: cand spui "Sigur ca da, doar ca DotNet nu este o solutie fiindca nu este o solutie portabila sub Linux, iar gazduirea unui site sub Windows/DotNet costa mai mult, deci nu este rentabil."
Asta pare o afirmatie generala, nu subiectiva. Cineva neinformat care vine aici poate sa ia de buna enormitatea asta, si sa excluda DotNet din variantele sale. Asta e singurul motiv din care ma tot contrez cu tine pe aici, informarea. Amandoi avem pareri formate si nu ni le vom schimba usor, dar altii...".


In primul rand ai scos din context acea afirmatie, si de aceea pare sa nu aiba sens. Daca iti aduci aminte am pornit de la discutia despre cat de slabe sunt facilitatile oferite de Windows pentru a programa ca lumea cu toate facilitatile care pot fi utilizate de programatori, printre care si linia de comanda, care este evident foarte slaba sub Windows, si am aratat cat de usor poti face diverse lucruri cu o scurta linie de comanda, lucru care sub Windows nu este posibil decat daca scri un program intreg.
Iar tu ai spus ca exista alte solutii, si anume cele bazate pe o interfata grafica (desi nu stiu cum poti face acele lucruri cu o interfata grafica, dar ma rog...).
Iar eu am incercat sa arat care sunt dezavantajele acelor solutii si de ce ele nu pot fi folosite intotdeauna, iar printre acele dezavantaje am amintit despre costuri. Costuri de achizitionare a sistemului de operare, a pachetului Visual Studio pe de o parte, dar pe mine ma intereseaza consumul mai mare de resurse pe un server virtual, ceea ce inseamna costuri mai mari, plus alte probleme majore de administrare a unui sistem cu Windows de la distanta.
De aceea am spus ca pentru asa ceva Visual Studio nu este o solutie. Si de fapt chiar nu este o solutie, nu ca este vorba despre preferintele mele personale.
Sau ma rog, daca crezi ca dintre toti programatorii din lume doar eu sunt interesat de costuri mai reduse si de posibilitatea de a putea administra serverul de la distanta, atunci da, probabil ca sunt opinii personale.
Ma intreb totusi de ce majoritatea serverelor de web din lume sunt gazduite sub Linux..., chiar si in firme in care toate celelalte computere utilizate ca desktopuri folosesc Windows...

Dupa cum am mai spus insa, visual Studio este o solutie foarte buna, chiar si pentru crearea de site-uri web, insa in special pentru institutiile de stat, fiindca ele cheltuiesc banii mei si banii tai, nu banii lor, asa ca pentru anumite motive cu cat costa mai mult, cu atat este mai bine. Si mai sunt bune pentru firme mari, care nici ele nu cheltuiesc banii patronului, ci banii multimii de actionari care au subscris in oferta publica la bursa, sau pentru firme de software care prefera limbaje ca DotNet si Java fiindca este usor de gasit programatori in aceste limbaje,sau pentru ca oricum mai distribuie diverse produse ale Microsoft si Oracle si mai au de castigat din asta. Ele chiar au motive bune si eu sa fiu in locul lor probabil ca as face la fel. Dar nu cred ca poti numara prea multe persoane care si-au creat site-uri personale si care au cumparat pentru asta DotNet+Windows+eventual MS SQL, sau care chiar nu sunt interesate de costuri. Uita-te cate site-uri care ofera gazduire sub Windows exista in comparatie cu cele care ofera gazduire sub Linux.

"Despre cum autocomplete e bun doar ca sa iti amintesti de functii lungi si despre cum in general firmele mari folosesc DotNet, nu pot spune decat ca sunt dezinformari majore.".

La care firme mari te referi? La IBM care prefera in general Java si multe altele? Sau la Google care probabil nu prea se omoara dupa DotNet ci foloseste Python, Java, Perl, si probabil si altele? Sau te gandesti la Apple cumva? :-)
Sau o fi vorba despre Oracle care are in kitul bazei de date Oracle o versiune de Perl inclusa si acum dupa ce au cumparat firma Sun promoveaza limbajul Java in care este scrisa si cea mai mare parte a aplicatiilor Oracle?
Amazon foloseste Java si Perl, BBC cam la fel. Sau te referi la Microsoft care a creat DotNet? :-)
Sau exista cumva firme mai mari decat ele care au specialisti in domeniul IT si care stiu care sisteme si limbaje sunt intr-adevar bune? Sau vroiai sa te referi la firmele mari care nu au legatura prea mare cu domeniul iT si care au putut fi usor convinse ca rata impunge si ca DotNet este cea mai buna solutie?

Bursa din New York foloseste Red Hat Linux, iar Bursa din Londra a folosit Windows si a trecut la Linux si am citit un articol in care spuneau cat sunt de multumiti de aceasta schimbare, datorita performantei mult mai bune a sistemelor bazate pe Linux, fiindca ei trebuie sa faca extrem de multe tranzactii intr-un timp super scurt. Banuiesc ca nu au ales Linux din motive financiare, ca nu cred ca duc lipsa de bani.
Si ar mai putea fi multe exemple date, insa am vrut doar sa arat ca afirmatia ta gratuita ca "in genral firmele mari folosesc DotNet" este un pic cam... prea generala... ca sa nu zicem mai mult.

Dar daca cunosti firme de dimensiunea celor amintite mai sus, in a caror cunostinte in domeniul iT ne putem baza, te rog sa ne spui daca sti ca folosesc Windows si DotNet, fiindca chiar ar fi interesant.

"Autocomplete e bun pentru ca cu el poti explora, in timp ce scrii cod, metodele (cu tot cu overload-uri) si proprietatile unui obiect, toate documentate, direct in IDE.
Dupa cum ai spus si tu, securitatea, faptul ca programatorii le pricep mai repede sunt alte motive din care multe firme folosesc limbaje din astea, c-like sa le zic, desi atat Java, cat si c# ruleaza pe masini virtuale.".

Intr-adevar, faptul ca programatorii pot invata mai usor un limbaj este un lucru important, desi ai aduagat cuvantul "securitatea" care cam creaza confuzie cand vorbim despre domeniul software.
Programatorii invata cu atat mai usor un limbaj cu cat el seamana mai mult cu alte limbaje cunoscute. Din acest motiv multi invata si C# si Java fiindca C# a fost copiat dupa Java, si ca sintaxa, si ca mod de operare bazat pe o masina virtuala. Si de aceea este importanta si sintaxa efectiva a limbajului, fiindca daca de exemplu intr-un limbaj separi clasele cu un punct si obiectele de clase la fel, acest lucru va fi evident ce inseamna si in alte limbaje care procedeaza la fel, iar daca un programator care a invatat doar limbaje care procedeaza astfel, vor considera ca alte limbaje sunt cciudate. De fapt nu sunt alte programe mai ciudate, ci depinde doar cu ce te-ai obisnuit, asa ca frumusetea limbajelor si cat de usor sunt de inteles si invatat sunt chestiuni personale care depind de cunostintele si experienta fiecaruia.

"i ajungem si la strong typing vs weak typing, care e pentru programatori ca windows vs linux pentru utilizatori. In opinia mea, pentru ca aici chiar nu exista argumente obiective, un limbaj strongluy typed iti zice mai multe lucruri despre o metoda, nu ai sansa sa trimiti parametrii gresiti, de alt tip, in ea. De asemenea,".

Pur si simplu zambesc cand aud aceste idei, si te rog sa nu te superi, dar le-am mai auzit de multe ori, insa intotdeauna de la persoane care vorbesc doar fiindca asa isi imagineaza ca este de fapt, sau pentru ca asa i-au invatat unii care au vrut sa promoveze limbajele puternic tipizate (preferate de profesorii de matematica in general).

Pot sa te intreb daca ai folosit macar o singura data un limbaj de programare dinamic si daca ai intampinat o singura data aceasta asa zisa problema?
Eu programez de mai mult de 11 ani in Perl, si inainte am mai programat si in alte limbaje care erau aproape toate puternic tipizate, dar nu am intalnit niciodata problema de a apela o functie in mod gresit.

"daca vezi o bucata partiala de cod, iti dai seama dupa tip ce operatii se fac cu variabilele, spre deosebire de weakly typed, unde trebuie sa rulezi, sa vezi cce se intampla.".


Ha ha, asta chiar arata 100% ca nu ai incercat sa vezi cum este de fapt realitatea.
In Python poate parea ca s-ar putea sa intampini aceasta problema fiindca Python desi nu este un limbaj puternic tipizat, odata ce ai initializat o variabila cu un anumit tip, nu poti sa ii aplici operatii eronate cu alte variabile de un alt tip.
Dar in Perl pur si simplu vezi ce face codul chiar mai bine decat la C# sau Java, fiindca operatiile sunt diferite pentru tipuri diferite de date.
Adica in Perl ca sa unesti doua stringuri nu folosesti plus, ci caracterul punct, iar daca compari doua siruri de text pentru egalitate nu folosesti =, <=, >= !=, <, >, ci eq care inseamna equal, ne care inseamna not equal, gt care inseamna greather than, lt care inseamna less than, ne care inseamna not equal etc.

Asa ca codul va fi clar:

if ( $var == 5 ) {
#sti ca $var este interpretata ca numar, nu ca string

if ( $var eq "foo" ) {
#sti ca $var este interpretata ca string

Asa ca nu trebuie sa rulezi nimic ca sa vezi ce se intampla. In plus, poti folosi aceleasi variabile pentru a face comparatii diferite, ca numere sau ca siruri, ceea ce este foarte util cand faci diverse sortari de exemplu.


"In multe limbaje din astea, daca nu definesti o variabila si dupa aia ii ceri valoarea, compilatorul o pune linistit pe null, si stai si te intrebi de ce nu merge, motivul fiind doar o diferenta de o litera.".

Poti enumera cateva limbaje din acestea... "multe"? :-)
Bineinteles, in afara de PHP, despre care... mai bine sa nu vorbim.

In Perl poti alege sa rulezi programul cum vrei, si daca vrei sa scri un programel de 3 linii cu care sa faci niste operatiuni rapide si apoi sa il stergi, poti sa il lasi sa nu te avertizeze despre nici o probolema, fiindca probabil in cele 3 linii nici nu vei face erori.

Dar recomandarea este sa folosesti intotdeauna la inceputul programului:

use strict;
use warnings;

Daca faci asta si incerci sa folosesti o variabila neinitializata, sa o aduni, sa o printezi etc, programul va afisa un mesaj de avertizare care iti va spune ca variabila cutare din linia cutare nu a fost initializata si poti sa corectezi.
Sau poti sa folosesti:

use warnings FATAL => 'all';

Iar atunci in locul oricarui mesaj de avertizare programul se va intrerupe si va afisa o eroare care iti va spune care este problema, ca sa nu risti sa faca ceva rau.
Asa ca daca vrei, poti sa folosesti limbajul cum doresti, fara insa sa te forteze el cum sa lucrezi cu el.

"Mie imi place ca compilatorul sa inteleaga cat mai mult din logica mea, ca sa ma poata avertiza cand gresesc. E vorba de preferinta mea pentru o paradigma de lucru, nu de "ce ai invatat la scoala" sau ""cu ce poti sa castigi bani". Ca si la autocomplete, tragi concluzii cu informatii insuficiente. Inca odata, n-am probleme cu asta, dar altii s-ar putea sa te ia in serios, de asta raspund.".

Tocmai am aratat cat se poate de clar ca tu ai informatii insuficiente si ca pur si simplu crezi ca alte limbaje nu pot face ce vrei tu, ca nu te pot avertiza, ca daca privesti o bucata de cod nu sti ce face decat daca o rulezi, etc.

Stiai ca si in Perl poti specifica tipul variabilelor daca vrei, si inca intr-un sistem de obiecte mai complex decat cel folosit de Java?
Si poti sa specifici nu doar ca o variabila trebuie sa fie neaparat Int sau Str, ci ca trebuie sa fie un array, sau ca trebuie sa fie un array care contine inauntru variabile de tip STR, sau ca este de tip Foo::Bar, unde Foo::Bar este o anumita clasa, sau ca o variabila trebuie sa isi preschimbe in mod automat tipul de data pe care il contine cu un altul, de exemplu tu ii dai valoarea 20130910, dar variabila va contine un obiect de tip DateTime pentru respectiva data, si care va oferi implicit toate metodele oferite de clasa DateTime.

Asa ca daca ai nevoie sa specifici neaparat restrictii pentru tipul de valoare pentru fiecare variabila, o poti face fara probleme si in Perl.
Atat doar ca Perl nu te forteaza sa faci nimic, cum fac alte limbaje, ci poti sa alegi fix ceea ce iti doresti tu in functie de circumstante.
Lucrezi singur? Poti sa faci cum te taie capul. Lucrezi intr-o echipa? Poti defini si reguli de formatare a codului sursa intr-un fisier de configurare si apoi cu o comanda poti sa reformatezi programele create pentru ca toata lumea sa foloseasca aceeasi formatare si sa le fie tuturor clar codul, iar acea comanda poate fi rulata chiar automat de sistemul de gestiune a codului sursa cand se adauga sau actualizeaza un program in el.
Asa ca pe computerul propriu fiecare poate sa isi formateze codul cum vrea, si sa lucreze cat mai usor si cat mai productiv, iar daca va ajunge la alti colegi, el va ajunge intr-un format standard acceptat pentru a fi usor de inteles.

"Ca fapt divers, daca se vrea utilizarea in scop personal, costurile pot fi reduse si la DotNet. Visual studio Express".

Apropos, este accesibil Visual Studio Express pentru Jaws? Mai demult nu era accesibil fiindca lipseau anumite chestii importante din el.

"sau MonoDevelop sunt gratuite, iar aplicatiile web pot fi rulate pe linux, folosind Mono.".

Mono nu prea este o solutie suportata de Microsoft, iar cu obisnuinta lor de a tot schimba cate ceva pe ici pe colo ca sa poata vinde o noua versiune, nu este o solutie de incredere... deloc.
Stau si ma gandesc, dar cred ca nu prea am auzit sa creeze cineva pagini de web in Mono.

"Am discutat despre cum pot programa nevazatorii, cred. Programare in orice conditii, inclusiv angajati intr-o firma, nu neaparat de unii singuri. De aia eu am adus in discutie doar argumente legate de dezvoltarea codului, administrarea e un cu totul alt capitol despre care aleg sa nu discut, intrucat nu am practica in domeniu.".

Mda, doar ca accesibilitatea este o problema importanta in primul rand pentru administrare, nu pentru scris un text (un cod sursa), si problemele legate de consumul mare de resurse putem spune ca tin oarecum tot de partea de administrare, nu de scrisul codului sursa.
Scrie răspuns