Python: scripturi si tutoriale

Diverse limbaje, programare, scripting, coduri, unelte specifice etc.
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Intr-adevar, folosirea verbelor in numele functiilor/metodelor si a substantivelor in numele variabilelor/atributelor este ceva foarte logic si util in orice limbaj, chiar si in Perl unde indiferent cum le-ai denumi, intotdeauna este evident daca este vorba despre o variabila sau o functie.

Mie mi-au parut intotdeauna ciudate operatiile aritmetice simple in care 3 / 2 = 1, fiindca in mod logic ele sunt in primul rand incorecte. Daca avem nevoie doar de partea intreaga din acel numar, adica daca vrem sa o rotunjim in jos este mult mai normal sa aplicam ulterior o functie care sa faca asta cum ar fi int($variabila), fiindca la fel am putea dori sa o rotunjim in sus ca sa dea valoarea 2, sau sa sa rotunjim in jos daca zecimalele sunt sub 50 de sutimi si in sus daca sunt peste 50 de sutimi. Adica de fapt sunt doua operatii. Una simpla, aritmetica in care 3 / 2 este in mod evident 1.5, si alta in care sa facem apoi ce vrem cu acel numar.

Dar ma rog, ca in lumea reala, depinde ce anume trebuie sa facem. Daca impartim 3 kilograme de faina in doua, rezulta cate un kilogram si jumatate pentru fiecare parte si nici nu ne punem problema ca ar putea fi altfel, dar daca trebuie sa impartim 3 copii la 2 parinti divortati, atunci nu ne punem problema pe care dintre ei sa il taiem in doua. :-)

In domeniul programarii, ca si in cel al bazelor de date, aceasta categorisire a datelor in functie de tipul lor s-a facut fiindca anumite date pot fi pastrate in memorie si pe hard disk folosind mai putini biti, iar operatiile cu ele se fac mai rapid, in timp ce cu altele operatiile se fac mai lent, asa ca nu are rost sa pastrezi toate datele la fel, insa in mod practic aceste operatii se fac acum de procesoare mult mai puternice decat in trecut, la viteze foarte mari, incat diferenta este nesemnificativa sau absolut inexistenta, fiindca exista alte operatii care ocupa oricum mult mai mult din timpul procesorului, dupa cum ai putut vedea in cazul acelor comparatii intre programe facute in Perl si Java, in care programul in Perl era mai rapid, chiar daca Java este un limbaj puternic tipizat.
In domeniul bazelor de date mai conteaza totusi aceasta diferenta, fiindca trebuie preluate mai multe sau mai putine date de pe hard disk, trebuie transferate mai multe sau mai putine date catre programul client.
Iar pentru programatori, la fel ca in cazul majoritatii diferentelor intre limbaje... depinde de cum s-a obisnuit fiecare. :-)
In trecut eu credeam ca daca inveti un limbaj de nivel mai inalt cum este Perl, Python, Ruby, este apoi mai greu sa inveti un limbaj de nivel mai jos ca C sau C++, fiindca esti obisnuit ca multe lucruri sa se faca automat, multe lucruri sa fie implicite si sa nu trebuiasca sa faci nimic, si ca invers este mai usor. Dar apoi am vazut ca si invers este cam la fel, fiindca unii dintre cei care se obisnuiesc sa defineasca tipul variabilelor, sa aloce memorie, s etc prefera sa vada clar acele operatii, nu sa le fie facute automat fiindca simt ca pierd controlul asupra programului, asa ca este cam ca in cazul limbilor naturale, in mod ciudat, prima limba invatata in copilarie este cea mai bine cunoscuta, indiferent cat ar fi de simpla sau de complicata.
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Absolut, conteaza foarte mult cum ai inceput, conteaza mult limba / limbile invatate la inceput, mie tot timpul mi-a parut mai clar ca 3/2 sa dea 1, nu 1.5. Cand spun asta nu glumesc, ci asa calculam intotdeauna cand eram cu un calculator in fata, fara sa imi dau seama.
Acum ma gandesc ca de fapt am fost obligat sa gandesc astfel, in JAWS Scripting de exemplu nefiind nici o solutie nativa de a avea ca rezultat a lui 3/2 pe 1.5.
Si in cazul limbajelor umane, unul care stie germana, va invata foarte usor si engleza, sunt cateva tipuri de constructii care sunt intelese implicit, cum ar fi verbele modale. Cand se va apuca de o limba latina va fi putin mai greu, sunt ceva diferente mai mari la nivel de constructie, apoi limbile slave sunt si mai indepartate, de cele asiatice (japoneza, chineza) sa nici nu mai vorbim.
Putem spune ca limba germana este C / C++, apoi engleza ar putea fi Java, cele latine PHP / Perl, eventual Python, desi nu stiu daca asta din urma nu o fi chiar limba slava. :lol:
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 »

Daca trebuie sa creezi un program de la zero, Python ar putea fi slava in caz ca esti incepator in Python. Dar daca trebuie sa modifici/corectezi/imbunatatesti un program facut
de altcineva, poate ca ar fi mai degraba chineza. :-))
Asta bineinteles, tot in cazul in care esti incepator. Daca ai experienta este cu totul altceva. Iar programatorii in Python il prefera tocmai pentru simplitate si claritate, deci probabil ca nu le-ar placea asocierea lui cu chineza sau germana.
Ei ar spune mai degraba despre Perl ca e germana. :-)

Dar este buna asemanarea cu limbile naturale. Pentru nemti este probabil usor sa invete norvegiana cu care seamana ba chiar este mai simpla decat germana, dar poate ca le este mai greu sa invete italiana sau romana, iar pentru noi este mai simplu sa invatam italiana. Pentru fiecare in parte limba lui este oricum cea mai simpla chiar daca teoretic stie ca este mai complicata pentru straini decat alte limbi.
La fel ca in cazul limbilor naturale, si in programare este mai bine daca poti sa gandesti in limbajul pe care il folosesti, si nu sa gandesti cum ai face ceva intr-un alt limbaj si cum s-ar "traduce" acel ceva in limbajul folosit in prezent, fiindca intotdeauna ajungi la concluzia ca este mai urat limbajul curent.

Doar ca e un cerc vicios. Ca sa gandesti direct in acel limbaj trebuie sa il cunosti, iar ca sa il cunosti trebuie sa il inveti, iar invatarea se face utilizand alte elemente cunoscute, adica alte limbaje.
De aici pornesc certurile despre limbaje, ba ca limbajul preferat de mine e mai frumos, ba ca cel folosit de mine e mai rapid, ba ca e mai elegant, ba mai standard etc, fiindca daca ar exista intr-adevar unul care e cel mai bun la toate, nu ar mai folosi nimeni altceva.
Scrie răspuns