Mai intai trebuie sa te autentifici.
Diferente pentru blog/de-ce-python intre reviziile #23 si #5
Nu exista diferente intre titluri.
Diferente intre continut:
Am tot auzit lucruri bune despre limbajul de programare Python si unde lucrez are o sustinere destul de mare. Am devenit din ce in ce mai curios si la inceputul verii am scris cateva programele ca sa imi incerc puterile.
Am tot auzit lucruri bune despre limbajul de programare Python si unde lucrez are o sustinere destul de mare. Am devenit din ce in ce mai curios si la inceputul verii am scris cateva programele ca sa imi incerc puterile. Limbajul e misto si destul de repede prinzi chestiile elementare ca sa ajungi sa te descurci.
Pentru cainvetiun limbaj nu prin a citiogramada decarticiprinlucrainel,amcautatomodalitatedea scrie catevaprogramesimple. Am intrat pe'projecteuler.net':http://projecteuler.net. Acestaeun site cu in jur de 200 de probleme si fiecare problema are ca raspuns un numar.Poti incercasa gasesti rezultatul folosind creionul si hartia sau sa codezi un program in orice limbaj.Dupa ce ai rezolvat o problema ai acces la threadul de pe forum unde discuta cei ce au rezolvat problema. Acolo sunt multi oameni care isi posteaza rezolvarile cat mai concise sau cat mai eficiente si astfel vezi mai multe solutii diferite de a ta si inveti smecherii de limbaj sau algoritmi mai buni.
Si metoda de invatare pe care am folosit-o a fost una misto. Am intrat pe siteul projecteuler.net si am facut primele 50 de probleme. Project Euler e un site cu in jur de 200 de probleme si fiecare problema are ca raspuns un numar. Astfel poti sa incerci sa gasesti rezultatul folosind creionul si hartia sau sa codezi un program in orice limbaj.
Dupa cateva luni imi placelimbajulfoartemult.Chestia cea maimisto e ca am ajuns sa ma simtproductiv foarterepede in el. E un limbaj interpretat asa ca nu trebuie sa astepti dupa compilare.Pe langa asta are o consolaincarepoti sa incerci sa vezi ce fac diverse bucatidecod. Lucrufoarteutilcand nu stii limbajul.De asemenea este destul de intuitiv. S-a intamplat de mai multe ori sa nu fiu sigur de cum se fac unele lucruri, sa le incerc si sa mearga.
Imi plac mai multe chestii si deabia am inceput cu el.
Altavantajesteacelacalimbajul e dynamicallysistronglytyped.Asta inseamna ca nuosaitimaibaticapulca inC++cu erori interminabile de compilaresimaiinseamnacalimbajul suportaprogramareacugenerice.Astfelputemaveaprogramedegenul:
Chestia cea mai misto e ca am ajuns sa ma simt productiv foarte repede in el. E un limbaj interpretat asa ca nu trebuie sa astepti dupa compilare. Pe langa asta are o consola in care poti sa incerci sa vezi ce fac diverse bucati de cod. Lucru foarte util cand nu stii limbajul. De asemenea limbajul e destul de intuitiv, si s-a intamplat de mai multe ori sa nu fiu sigur de cum se fac unele lucruri, sa le incerc si sa mearga.
== code(c) |
>>> def suma(a, b):
... return a + b
>>> suma(1, 2)
3
>>> suma('mere', 'pere')
'merepere'
==
Alt avantaj este acela ca tipurile sunt weakly typed care inseamna ca limbajul suporta programarea cu generice si astfel putem avea programe de genul:
Imi place ca indentarea codului face parte din limbaj, aceasta restrictie ajuta mult la lizibilitatea programelor pentru ca impune un stil de codat similar pentru toata lumea. Iar lizibilitatea unui cod este foarte importanta, pentru ca petrecem mult mai mult timp citind cod decat scriind cod nou.
<pre> def suma(a, b): return a + b
De asemenea limbajul incearca sa ajute programatorul cat mai mult, izoland detalii care nu sunt importante. De exemplu la operatiile pe intregi avem implementate numere mari si nu mai trebuie sa avem grija sa nu facem overflow.
print suma(1, 2)
print suma("mere", "pere")
</pre>
Este un limbaj succint. Spre deosebire de java, pentru a face ceva nu trebuie sa scrii foarte mult. Are foarte multe librarii, unele dintre ele intrate deja in limbajul de baza. Ca exemple as aminti _NumPy_,o librarie de calcule numerice, care contine printre altele metode din algebra liniara sau generatoare de numere aleatoare, _sqlite_ care se ocupa cu operatii pe o baza de date si _PIL_ o librarie de prelucrare a imaginilor.
Unul ar fi faptul ca indentarea codului face parte din limbaj, aceasta restrictie ajuta mult la lizibilitatea programelor pentru ca impune un stil de codat similar pentru toata lumea.
In Python se poate folosi si paradigma programarii functionale. El are elemente ca _map()_, _reduce()_, _filter()_, si operatorul _lambda_. Metoda _map(functie, secventa)_ ne intoarce o lista care sunt rezultatele aplicarii functiei peste elementele unei secvente. Operatorul _reduce(functie, lista)_ ne intoarce rezultatul aplicarii cumulate a functiei peste elementele secventei. Putem scrie cod de genul:
Ce calitati are Python fata de limbaje ca Java sau C++
== code(c) | >>> # un sir de intregi din unul de stringuri >>> map(int, ["1", "2", "3"]) [1, 2, 3] >>> # suma elementelor din un sir >>> reduce(lambda x,y: x + y, [1, 2, 3]) 6 >>> # filtram elementele impare >>> filter(lambda x: x % 2 == 0, [1, 2, 3]) [2] ==
Python este orientat spre
Faptul ca limbajul nu este unul pur functional, face invatarea ideilor din programarea functionala mai usoara.
Nu este "verbose", adica pentru a face ceva nu trebuie sa scrii foarte mult. (succint) spre deosebire de java. E destul de intuitiv, astfel incercam unele chestii si erau deja acolo. Whites
Mai imi placsi _list comprehensions_ caresunt doar _zahar sintactic_,dar lefolosescdestulde des. Ele suntomodalitatenaturala si succinta dea crea liste. Va dau mai jos cateva exemple:==code(c)|>>># patratelenumerelor dela 1 la 4>>>[x**2forx inrange(1, 5)][1,4,9, 16]>>>#pentrudoivectori a sib>>>a,b= [1, 2, 3, 4], [1,4,8,16]>>># toatesumele intreun element dinasi unul din b>>> [x+y forxinaforyin b][2,5,9,17, 3, 6, 10, 18, 4, 7, 11, 19, 5, 8, 12, 20]==Siimimaiplac _tuplurile_ pentru ca demulte oriai nevoiede cate untipde date rapid. De exempluun punct 3 dimensionalil putem obtine ca _punct = (-1, 0, 11)_.Caminusuri,unul mare este eficienta. Astfel cand scriam solutii pentru probleme de la google code jam, unele erau de 50 pana la 100 de ori mai incete ca varianta implementata in java sau C++.Dar cred ca productivitatea programatorului este multmai importanta ca eficienta codului, iar Python lucreaza bine cu limbajul C si bucatile ineficiente pot fi reimplementate in C.Sper ca, daca nu ati lucrat deja in Python, v-am trezit putin apetitul. Daca aveti deja experienta cu Python ce caracteristici v-au placut? Cei care nu sunt convinsi inca pot citi 'aici':http://norvig.com/spell-correct.html cum se poate face un spell corrector in 21 de linii de Python.
Scrie aici despre blog/de-ce-python + rapid development + non verbose + list comprehension + array methods + gets the best out of a lot of languages functional programming, haskel, lambda functions makes it less painful + takes away details + generators + everything is generic + whitespace good indentation + library for everything + image manipulation + sql lite + numpy
Diferente intre securitate:
protected
private
Diferente intre topic forum:
3347
