Pagini: [1] 2   În jos
  Imprimă  
Ajutor Subiect: De ce Python?  (Citit de 43926 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« : Noiembrie 08, 2008, 10:28:18 »

Comentarii la postul http://infoarena.ro/blog/De-ce-Python
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #1 : Noiembrie 08, 2008, 13:13:39 »

Ai dreptate, am corectat.
Memorat
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #2 : Noiembrie 08, 2008, 13:56:29 »

Eu tot nu prea vad avantajele lui python fata de php.
Da, sunt foarte diferite ca gandire, insa toate lucurile pe care le-ai enumerat aici le are si php Smile
Si ce are php in plus si nu are python este o documentatie buna!

Nu sunt fan php, insa mi se pare ca lumea lauda prea mult python
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #3 : Noiembrie 09, 2008, 04:33:52 »

@Ovy Despre map, filter si lambda, Guido zice in articolul asta http://www.artima.com/weblogs/viewpost.jsp?thread=98196 ca pana la urma le va pastra desi vroia initial sa scape de toate (map, filter, reduce, lambda) si acum va sterge numai reduce. Exemplul meu la reduce e putin prost, practic sum e un reduce. Putea fi cu produsul elementelor si nu era asa simplu de rejectat.

Daca vrei sa mai zici de generators mai mult, ar fi interesant. Nici de programare obiectuala nu am zis.

Sa traiesti Smile, daca ai chef poate vrei sa scrii un blog post care sustine limbajul mai bine Smile.

E tare cand apar pe blog si alte puncte de vedere, si altfel apare un articol despre python scris de cineva cu experienta in limbaj fata de unul scris de un incepator.
Memorat
alexthero
De-al casei
***

Karma: 121
Deconectat Deconectat

Mesaje: 129



Vezi Profilul
« Răspunde #4 : Noiembrie 09, 2008, 14:00:36 »

Am un curs la universitate despre aplicatii web si baze de date. Ca parte a acestui curs, trebuie facut un proiect in python. Chiar daca la inceput imi placea python, in scurt timp mi-am dat seama de cateva probleme pe care le are acest limbaj, in programarea web.

Faptul ca indentarea face parte din cod nu e un lucru bun in PSP, deoarece trebuie avuta multa grija cu blocurile de cod HTML. Instructiunile gen if/else/for continua si cu codul HTML, iar pentru a iesi din blocul curent am fost nevoit sa adaug comentarii aiurea. Mi se pare mult mai ok folosirea {} pentru blocurile de cod.

Erorile sunt slab documentate pentru web. De exemplu, python returneaza un None-type pentru un entry care nu exista in baza de date, insa nu-ti spune exact unde a aparut aceasta eroare. Se pierde o gramada de timp in felul acesta.

Python pentru web e slab documentat. Sunt putine articole/tutoriale referitoare la acest subiect, iar siteul python.org nu ofera foarte mult ajutor prin structura. Searchul - implementat cu google search - nu mi se pare deloc cea mai buna solutie pentru acest site. Majoritatea cautarilor facute de mine au dat rezultate irelevante.

Python e pe drumul cel bun, dar va mai dura pana va ajunge un limbaj folositor pentru web. Momentan, eu raman la PHP.
Memorat

Tine minte ca mintea conduce pumnu, nu invers
alexthero
De-al casei
***

Karma: 121
Deconectat Deconectat

Mesaje: 129



Vezi Profilul
« Răspunde #5 : Noiembrie 09, 2008, 23:34:19 »

Am folosit python server pages ca modul de apache.
Nu putem folosi nici un framework pentru python la proiect pentru a "intelege profunzimea limbajului", insa o sa ma uit peste Django si poate-mi schimba parerea despre Python.
Memorat

Tine minte ca mintea conduce pumnu, nu invers
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #6 : Noiembrie 09, 2008, 23:59:30 »

Amuzant site-ul asta de care ziceai: ProjectEuler. Pare numai bun pentru a incepe sa inveti un limbaj nou. Cel putin pe mine m-a tinut vreo doua zile in priza sa tot fac probleme Smile
Memorat
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #7 : Noiembrie 10, 2008, 00:03:27 »

@svalentin Ai folosit Python, ai scris cod in el? Python nu reprezinta doar sintaxa limbajului ci si filozofia din spatele lui care incurajeaza productivitatea si calitatea codului ("there should be one—and preferably only one—obvious way to do it"). In PHP trebuie sa te chinui sa impui niste reguli de coding si de structura care in Python vin de la sine, intr-un mod natural.
Si eu am fost sceptic in privinta limbajului, dar odata ce am invatat sa-l folosesc cum trebuie, mi s-a parut superb! Cred ca comic-ul asta exprima foarte bine cat de misto e Python:

Din punctul meu de vedere, Python e ca iPhone-ul sau ca Obama (cool, simple, slick) si recomand oricui sa-l incerce Yahoo!

@alexthero Cred ca problemele pe care tu le-ai intalnit nu au legatura cu limbajul in sine ci cu librariile/tool-urile pe care le folosesti. Cum a zis si Ovy, nu e o idee buna sa amesteci codul cu HTML-ul. Daca vrei sa faci programare web pe bune cu Python cel mai usor este sa folosesti un framework cum e Django, care e pythonic.
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #8 : Noiembrie 10, 2008, 00:25:32 »

@ Adrian, alt site de care am auzit e http://www.pythonchallenge.com/ in care treci de la un nivel la alt nivel folosindu-te de Python. Conceptul e similar cu hacker puzzle, from a to craZy sau brain tower  de care ziceam aici http://infoarena.ro/blog/jocuri-web doar ca trebuie sa scrii programe.
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #9 : Noiembrie 10, 2008, 09:41:31 »

Din punctul meu de vedere, Python e ca iPhone-ul sau ca Obama (cool, simple, slick) si recomand oricui sa-l incerce Yahoo!

De altfel tot timpul e bine sa-ti alegi presedintele pentru ca e cool si slick Tongue
Memorat
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #10 : Noiembrie 11, 2008, 00:39:53 »

Din punctul meu de vedere, Python e ca iPhone-ul sau ca Obama (cool, simple, slick) si recomand oricui sa-l incerce Yahoo!

De altfel tot timpul e bine sa-ti alegi presedintele pentru ca e cool si slick Tongue

N-am insinuat asta Very Happy Nu iti place Obama sau Python?  peacefingers
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #11 : Noiembrie 11, 2008, 15:54:39 »

Din punctul meu de vedere, Python e ca iPhone-ul sau ca Obama (cool, simple, slick) si recomand oricui sa-l incerce Yahoo!

De altfel tot timpul e bine sa-ti alegi presedintele pentru ca e cool si slick Tongue

N-am insinuat asta Very Happy Nu iti place Obama sau Python?  peacefingers

Python rules Wink
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #12 : Noiembrie 11, 2008, 20:28:19 »

@svalentin Ai folosit Python, ai scris cod in el? Python nu reprezinta doar sintaxa limbajului ci si filozofia din spatele lui care incurajeaza productivitatea si calitatea codului ("there should be one—and preferably only one—obvious way to do it"). In PHP trebuie sa te chinui sa impui niste reguli de coding si de structura care in Python vin de la sine, intr-un mod natural.

Da, am folosit Python, folosesc in continuare Python si ii exploatez din ce in ce mai mult posibilitatiile.
Stiu ca python iti impune practic o anumita filozofie, te forteaza sa scrii cod intr-un anumit fel, etc. Dar faptul ca iti impune un lucru nu inseamna ca celalalt limbaj este mai slab. La fel de "ordonat" scriam cod si inainte sa incerc python.

Da, sunt de acord, are exceptiile tratate foarte frumos, are unele librarii construite peste care sunt foarte misto (BeautifulSoup de exemplu), dar se creeaza un efect de halou in jurul lui. In afara de lucrul cu liste, tot ce a scris Cosmin despre python se regaseste si in php. (again, am folosit php doar ca exemplu argumentativ, nu sunt neaparat fan)

Si ca sa continui pe analogia ta: iPhone e super, are tot ce poti sa iti doresti, dar nu l-as cumpara nicidata pentru ca il tine mult prea putin bateria. Smile (deseori nici macar o zi)

Uite un exemplu de lucru care m-a enervat in python: vreau sa printez ceva pe ecran fara separator dupa. Stiu ca se poate, dar nu in aceiasi formula simpla cu print.. (si deci se duce avantajul simplitatii pe cazul acesta particular)
Memorat
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #13 : Noiembrie 11, 2008, 23:58:08 »

List comprehension, sau lucrul cu listele cum ziceai tu, e un concept foarte puternic dupa parerea mea. Ca dovada, C# 3.0 are LINQ, care iti ofera aceasta functionalitate (exemple).

Bateria la iPhone 3G nu este un punct forte, dar nici nu se consuma foarte repede. Eu aveam inainte un Nokia E70, a carui baterie tinea tot cam atat, deci nu mi se pare iesit din comun.

N-am inteles exemplul cu separatorul, poti sa dai mai multe detalii?
Memorat
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #14 : Noiembrie 12, 2008, 13:24:15 »

>>> print 'test'
afiseaza 'test' si "\n"

>>> print 'test',
afiseaza 'test' si spatiu dupa

>>> import sys
>>> sys.stdout.write('test')
afiseaza doar 'test'
Memorat
wickedman
Echipa infoarena
Nu mai tace
*****

Karma: 227
Deconectat Deconectat

Mesaje: 670



Vezi Profilul WWW
« Răspunde #15 : Noiembrie 12, 2008, 18:01:04 »

In afara de lucrul cu liste, tot ce a scris Cosmin despre python se regaseste si in php. (again, am folosit php doar ca exemplu argumentativ, nu sunt neaparat fan)

Un lucru care mie imi place mult si pe care Cosmin nu l-a mentionat este ca Python are closures. Cred ca asta e o diferenta semnificativa fata de PHP.

In Python este foarte usor sa impachetezi niste cod intr-o functie (folosind def sau lambda) si sa-l pasezi mai departe. PHP are create_function insa nu suporta closures.

Exemplu:

Cod:
def logger(storage, tag="ERROR"):
    def log(msg):
        storage.append("%8s: %s" % (tag, msg))
    return log
...
loglines = []
elog = logger(loglines)
wlog = logger(loglines, "WARNING")
...
elog("Am ramas fara spatiu.")
wlog("Treaba merge greu.")
...
print loglines

afiseaza

Cod:
['   ERROR: Am ramas fara spatiu.', ' WARNING: Treaba merge greu.']
Memorat
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #16 : Noiembrie 12, 2008, 18:06:48 »

Now this is cool! Pentru asta trebuie laudat python!
Memorat
StTwister
Client obisnuit
**

Karma: 11
Deconectat Deconectat

Mesaje: 86



Vezi Profilul
« Răspunde #17 : Noiembrie 14, 2008, 13:14:30 »

Foarte interesant http://www.pythonchallenge.com/.

Isi mai bate si altcineva capu? Momentan sunt la nivelul 15 si pana acum mi s-a parut foarte educativ, nu numai fun. Chiar te invata lucruri despre limbaj de care dai mai greu prin alte modalitati de invatare. Plus ca you learn by actually doing it!
Memorat
rgrig
De-al casei
***

Karma: 46
Deconectat Deconectat

Mesaje: 144



Vezi Profilul WWW
« Răspunde #18 : Noiembrie 18, 2008, 13:33:48 »

Cum ar trebui inițializată cu 0 o matrice mxn în Python? Eu scriu

Cod:
[[0 for _ in range(n)] for _ in range(m)]

dar parca trebuie sa fie si o metoda mai buna.
Memorat
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #19 : Noiembrie 18, 2008, 14:48:40 »

Cod:
[[0] * M] * N
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #20 : Noiembrie 19, 2008, 05:36:21 »

Despre cum sa scrii cod ce respecta paradigmele limbajului Python: http://python.net/%7Egoodger/projects/pycon/2007/idiomatic/handout.html
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #21 : Noiembrie 22, 2008, 21:36:48 »

Am si eu o nelamurire. Am doua fisiere (nu stiu daca le pot zice module ):

ColorWrite.py:
Cod:
class ColorWrite:
        FWHT="\033[37m " # foreground white
        def __init__(self):
                print "Using ColorWrite\n"+self.FWHT,

FolderScanner.py:
Cod:
import os
import ColorWrite as cw

class IFolderScanner:
        w = cw.ColorWrite()
        def scan(self, path):
                pass

class fs1( IFolderScanner ):
        def __init__(self):
                w.write("Using basic file scanner (1)", "info")
        def scan(self, path):
                r = os.listdir(path)
                print r

Daca din interpreter dau import FolderScanner, imi va instantia una dintre cele doua clase din acel fisier, pt ca imi afiseaza mesajul din ColorWrite. Am importat initial si ColorWrite sa vad daca de acolo i se trage:

Cod:
Python 2.5.2 (r252:60911, Apr 21 2008, 11:12:42)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ColorWrite
>>> import FolderScanner
Using ColorWrite


Aveti idee de ce face asa? Confused
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #22 : Noiembrie 22, 2008, 22:07:24 »

Cod:
class IFolderScanner:
        w = cw.ColorWrite()

Astea ar trebui sa fie in __init__ daca vrei sa fie creat obiectul w doar cand se creaza o instanta a clasei IFolderScanner. Cauta pe google diferenta intre class attributes si instance attributes.

"Class atributes" sunt parsate cand e declarata clasa si o sa apara in toate instantele create dup-aia.
« Ultima modificare: Noiembrie 22, 2008, 22:18:45 de către Bogdan Tataroiu » Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #23 : Noiembrie 22, 2008, 23:13:28 »

Multumesc, am cautat si pe net si am inteles. Interesant ca e o singura variabila pentru toate instantele (sper ca nu gresesc)
Memorat
rgrig
De-al casei
***

Karma: 46
Deconectat Deconectat

Mesaje: 144



Vezi Profilul WWW
« Răspunde #24 : Ianuarie 27, 2009, 13:06:21 »

@domino: Dacă faci [[0]*3]*4 lista de 3 zerouri e shared, asa ca asta nu initalizeaza o matrice de 4x3.
Memorat
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines