[cfinformatica-grup] Re: Python vs Java

  • From: Moisès Gómez <iesmoises@xxxxxxxxx>
  • To: "cfinformatica-grup@xxxxxxxxxxxxx" <cfinformatica-grup@xxxxxxxxxxxxx>
  • Date: Tue, 1 Apr 2014 20:03:46 +0200

Moltes gràcies Enric!

Vaig introduir Python a DFSI (un crèdit de segon de l'antic ASI) i
l'experiència va ser brutal. Alguns alumnes van reconèixer que gràcies al
Python havien per fi entés de què anava la programació. Entre ells, uns
quants van aconseguir aprovar la programació de primer!

El curs passat vaig voler repetir amb programació de primer d'ASIX amb la
idea de que un administrador de sistemes l'aprofitaria molt més que el C.
Amb tot, discutint amb el company que fa el crèdit equivalent a DAW, em va
"convèncer" de que calia C perquè després els seria més fàcil entendre
altres llenguatges de notació "heretada" com ara el Java. Així que vaig
intentar tots dos llenguatges i com que allò va ser massa per un
percentatge important d'alumnes... vaig sacrificar Python. Crec que va ser
un error i no el tornaré a cometre a menys que al centre m'obliguin
d'alguna manera.

En resum, la meva opinió al respecte és:

* Python és el llenguatge ideal per primer

* Amb les idees realment clares des de primer (sospita fonamentada en els
pocs que passen així a segon), no té tanta importància quins llenguatges
facin servir a segon. Penso que Java és una bona opció al M03 per la seva
demanda al mercat i perquè els conceptes POO estan molt documentats a
llibres que per mi són de referència (ex. "Refactoring" del Fowler o "Clean
Code" de l'Uncle Bob).

Dit això, si haig d'expressar la meva preferència personal, jo faria Python
a primer i a segon, simplement perquè m'encanta :)

salut


El dia 1 abril de 2014 18.25, Enric Mieza <emieza@xxxxxxxx> ha escrit:

> 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
>
>

Other related posts: