Hola a totes! fa un segle que vam deixar penjada la discussió de Python vs Java en el context de POO per DAMP i DAW. Oju, que aquest email és llarg ':-) Vaig al gra: *jo aposto per Python* inicialment. Impartiria Java al final de curs, un cop han madurat els conceptes bàsics. Si algú no ho té per mà podeu endinsar-vos amb aquest article<http://www.cacauet.org/wiki/index.php/Python:_introducci%C3%B3_r%C3%A0pida> . Avantatges de PYTHON: 1. És (molt) més simple 2. Ocupa menys codi 3. El codi és molt més llegible: The Zen Of Python<http://legacy.python.org/dev/peps/pep-0020/> 4. Quasi tot el què proves intuïtivament funciona 5. Té tantes llibreries com Java (o al menys no he trobat a faltar res mai, des de web, json, etc fins a GUI, Qt, GTK, etc.) 6. Té frameworks escalables i super potents com Pyramid, Django, etc. 7. Es pot fer servir com a llenguatge de sistema (scripts, accés a OS, etc.) 8. Educativament és més adequat per començar, ja que és més amigable pel neòfit 9. El fan servir a la UPC com a llenguatge de programació a 1r (Java a 2n) 10. Cada cop està més de moda i es demana més 11. Permet treballar sense objectes (a 1r de CFGS) 12. Fer llistes i altres estructures complexes és més senzill, el que permet avançar molt més en el 1r curs i estalviar-te els punters 13. Pots utilitzar punters, però pots oblidar-te d'ells al principi de l'aprenentatge 14. Existeix l'herència múltiple Desavantatges de Python: 1. Tipatge dinàmic: molt pràctic però no és útil per explicar conceptes com polimorfisme. Tampoc em sembla important al principi de curs, ja tenen prou feina amb l'herència i els conceptes bàsics (classe, instància, estructures de dades). 2. Es podria considerar "menys formal" pel tipatge dinàmic. Alguns podriem considerar això com un desavantatge educatiu (i m'incloc). A la pràctica no m'ho ha semblat. Altres (ni avantatges ni desavantatges): - Tots els atributs i mètodes son publics, política "Adults allowed here". Hi ha la convenció d'utilitzar un _underscore abans de les funcions que considerem privades. Avantatges JAVA: 1. Molt estès i demanat encara per les empreses 2. Estandarització de llibreries 3. Llenguatge oficial d'Android (ja ha aparegut kivy i d'altres per Python per Android, tot i que encara ha de madurar) Porto 2 cursos impartint els mòduls de DAW M3, M5 i M8 i ho he aplicat a fons. Sobre el tipatge dinàmic deixeu-me dir que tot i que als que hem après amb tipus estàtics (és a dir, amb declaració de variables que no canvient de tipus) ens pot semblar que no és bo per aprendre, la realitat és que el resultat és estupendu. Sí que podria ajudar a fixar coses al principi el tenir tipus estàtics, però a la pràctica no ha calgut. Sobre el tema del polimorfisme, el paradigma és un altre. En Python un objecte, si és verd i fa "croac", per a mi és una granota, independement de si és fill d'una granota o no. Per tant, no hi ha polimorfisme, si vull cridar a un mètode, miro si el té, i si el té el crido i punt. Es comenta (i hi estic d'acord) que és més pràctic i àgil que un "enfoc formal" d'herència estricta. Punters, news, mallocs i demés és tema del passat. Avui en dia hem d'emprar llenguatges d'alt nivell com Python, i no perdre el temps amb punters i esborrar de memòria les coses, que per això està el Garbage Collector. Els punters son obsolets com ho és un GOTO d'Assembler. L'experiència docent per mi és clara: fins que no fem GUI (2n trimestre) no maduren realment els conceptes bàsics (que son classe, instància, atributs i mètodes). Quan han aclarit tot això i s'han cansat de programar llistes, arrays i matrius de coses i cosetes compostes, llavors podem entrar en polimorfisme, mètodes estàtics/atributs de classe i altres. Explicar polimorfisme al principi només afegeix complicació innecessària. Sóc contrari a explicar coses que no poden entendre. Sí que es fer pot (i és necessari) a final de curs. Aquest any hem començat a fer servir Python a 1r de DAW/ASIX, però no he estat jo, així que ja us comentaré més endavant què diuen els professors i alumnes. Al 3r trimestre estic impartint amb Java ja que considero que: a) estan madurs per entendre un llenguatge tan "verbose" b) volem i cal fer programació Android En fi, perdoneu tanta extensió ':-) Espero que us sigui d'interés! Salut, Enric