[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 21:09:58 +0200

Tot i estant d'acord amb la proposta del teu missatge, voldria insistir en
que jo proposo Java FC a segon malgrat prefereixo molt més com juguen els
Python United :P


El dia 1 abril de 2014 20.18, J. Moreno <jmorep@xxxxxxxxx> ha escrit:

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