[cfinformatica-grup] Re: Python vs Java

  • From: "J. Moreno" <jmorep@xxxxxxxxx>
  • To: cfinformatica-grup@xxxxxxxxxxxxx
  • Date: Tue, 1 Apr 2014 20:18:21 +0200

Aquest fil té tota la pinta de convertir-se en una defensa del que agrada a
cadascú. En temes de llenguatges de programació, molt em temo que passa com
amb la política o el futbol. Si ets d'un equip o partit, la resta no
importa gaire ;-/

Personalment, trobaria més interessant discutir sobre la concreció dels
conceptes i procediments que creiem que cal treballar i assolir amb
l'alumnat i després valorar per a cada un d'ells si un o altre llenguatge
s'adiu més perquè l'alumnat aprengui el concepte o el procediment.

Els arguments de l'Enric són molt interessants, tot i que parteixen d'una
elecció prèvia. Si es tracta d'escollir un llenguatge com a eina per
treballar els conceptes i procediments de la programació de les tres
primeres UF del mòdul M03 (que crec que és el que es planteja), hi ha
alguns comentaris que em semblen molt interessants, sobretot els que fan
referència a l'ús de variables, tipus, classe d'emmagatzemament en memòria,
etc. El fet que estigui de moda o l'utilitzin a la UPC no em semblen tan
rellevants.

No sé si entra el tema en aquest fil, però trobo més interessant centrar-se
en què volem aconseguir i no en les eines. Segurament descobrirem que tenim
també idees bastant diferents sobre què és més important treballar ala
programació de primer. :) i segur que seria enriquidor posar-les en comú.

Salutacions.

José Moreno


2014-04-01 20:03 GMT+02:00 Moisès Gómez <iesmoises@xxxxxxxxx>:

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