[cfinformatica-grup] Re: Python vs Java

  • From: Moisès Gómez <iesmoises@xxxxxxxxx>
  • To: "cfinformatica-grup@xxxxxxxxxxxxx" <cfinformatica-grup@xxxxxxxxxxxxx>
  • Date: Thu, 3 Apr 2014 23:48:12 +0200

Potser sí que caldria crear un o més fils per discutir els diferents punts
que van apareixent. Altrament penso que la complexitat se'ns menjarà.

Si no us fa res, continuaré amb el tema "original" amb la versió desviada
per José ;P: és a dir, definir què hem d'ensenyar a programació abans de
decidir quin llenguatge fer servir.

M'ha agradat força la classificació en tres tipus de criteris que ha
proposat l'Enric. Trobo que simplifica força la discussió. Crec que molts
ens guiem més pels criteris tipus 3 (expliquem del que més en sabem) que
pels altres dos.

Per altra banda, la remullada del José incorpora elements dels que estic
totalment d'acord (ex. introduir la programació modular quan abans millor,
orientació a la prova, ús de patrons bàsics). Hi ha d'altres, però, que no
acabo de veure clars. En concret estic donant-li voltes i voltes a una de
les afirmacions:

El llenguatge utilitzat hauria de permetre distingir amb claredat
> l'emmagatzematge automàtic (governat pel controlador en funció de la
> ubicació de la declaració de les dades) i el dinàmic (controlat pel
> programador que decideix crear i destruir objectes). Aquest fil conductor
> hauria de guiar la major part del curs.
>

Entenc que acceptant-lo, l'elecció del llenguatge sigui evident: C/C++.
Però, perquè aquest punt et sembla tan important? La meva opinió està més
en la línia del que deia l'Enric al començament del fil:

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

Bé seguim llegint-nos


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

> Ara potser rellisco, però... crec que la suposada "estandarització" que
> predica Oracle+politic del deptartament no l'ofereixen les empreses
> privades. En tot cas ho fan ents com l'IEEE juntament amb consorcis
> d'empreses quan es posen d'acord (SATA, USB, etc.). Quin morro aquests
> d'Oracle. A sobre que rebenten (benu, potser diria que "paralitzen") la
> feina feta per Sun ! (virtualbox i openoffice)
>
> Estandarització del seu model? Quin estàndard és això? Es mereix que li
> fem un toque al polític aquest.
>
> Com podem contestar a això? La idea del José em sembla molt bona i el tema
> és important. La segueixo:
>
> Us fa liar alguna jornada de debat de "les coses nostres"? Podriem
> plantejar llenguatges de programació a impartir, serveis, metodologia
> d'aprenentatge, recursos compartits com els de ctrl-alt-d , profesfp i
> cacauet, infraestructura del centre educatiu, etc. Podem establir algunes
> recomanacions (sempre a criteri final del docent, és clar).
>
> Després podríem anar al departament d'educació tots plegats i tibar de les
> orelles a algú ;P O enviar-li un bon virus!! :D
>
> Revolució! jaja
>
> Enric
>
> PD: potser cal obrir un altre fil pel tema estandarització / recomanacions
> / jornada de debat , ens estem anant del tema... sorry!
>
>
>
> 2014-04-03 10:50 GMT+02:00 Carles Balbastre <
> cbalbastre@xxxxxxxxxxxxxxxxxxxx>:
>
> Hola,
>>
>> Em sembla aberrant que el representant polític potencii les
>> certificacions minusvalorant la titulació estatal. Cada cosa té el seu lloc
>> però pretendre que els centres fem de departament de formació de les
>> empreses privades (estrangeres, a més) i, sovint, que paguem pel
>> "privilegi"em sembla insultant. La cosa pública al servei dels accionistes
>> de Wall Street.
>>
>> Bé, ja m'he desfogat. Ara, saber Java o Python o C++ no és tant
>> important. És important tenir clars els conceptes per saber programar. El
>> canvi de llenguatge o el canvi de base de dades concreta o el canvi de
>> servidor ldap és una tasca petita si tens les idees clares.
>>
>> --
>> Carles Balbastre
>> "All statements are equally true".- Jim Leonard
>> Res és real... a menys que es declari enter.-
>>
>>
>> 2014-04-03 10:31 GMT+02:00 J. Moreno <jmorep@xxxxxxxxx>:
>>
>> Totalment d'acord amb el que diu l'Enric. Pel que fa al tema de la
>>> diversitat i la conveniència de fer coses diferents a cada centre, jo
>>> sempre havia pensat també d'aquesta manera, però darrerament m'ho estic
>>> replantejant i m'agradaria introduir aquest tema al debat.
>>>
>>> Aquest dimarts passat vaig ser a la jornada de presentació de Oracle
>>> Student Campus. Vaig detectar un cert interès en potenciar les
>>> certificacions privades en front de les nostres titulacions, fins i tot per
>>> part del representant polític que va presentar la jornada. El fet
>>> diferencial és que les certificacions privades ofereixen (això és el que
>>> venen) una garantia d'estandardització que els nostres títols no tenen. Tal
>>> com pinten les coses de cara al futur, ja no estic tan convençut que sigui
>>> bo que els curriculums dels nostres cicles admetin tantes diferències.
>>> Potser caldria desenvolupar el que en el seu moment van anomenar
>>> especialitzacions (posteriors al cicle), de manera que es diversifiquin els
>>> títols i no la formació que es fa a cada títol. Les empreses volen saber
>>> quina formació tenen els candidats i el fet que el títol per sí mateix no
>>> sigui prou clar i definit, juga en contra nostra i dels nostres alumnes.
>>>
>>> D'altra banda, com diu l'Enric, és impossible tractar a fons totes les
>>> tecnologies (llenguatges, plataformes, frameworks, ...) dintre d'un únic
>>> cicle i les necessitats de formació (i les necessitats de les empreses) són
>>> massa diverses.
>>>
>>> Salutacions.
>>>
>>> José Moreno
>>>
>>>
>>> 2014-04-03 8:47 GMT+02:00 Daniel Herrera <dherrera@xxxxxxxx>:
>>>
>>> Hola,
>>>>
>>>> m'heu fet recordar aquesta pregunta de l'stackoverflow:
>>>>
>>>>
>>>> http://stackoverflow.com/questions/9461864/data-structure-class-in-college
>>>>
>>>>
>>>> salut,
>>>> daniel herrera
>>>> *"9 de cada 10 exercicis enquestats prefereixen ser publicats
>>>> a Exercicis FP <http://uf.ctrl-alt-d.net/> i escapar del Moodle ;)"*
>>>>
>>>>
>>>>
>>>> El dia 3 abril de 2014 0.32, Enric Mieza <emieza@xxxxxxxx> ha escrit:
>>>>
>>>> Jo no crec que es tracti de gustos, que fem informàtica i no literatura
>>>>> ;P
>>>>> Hem de clarificar criteris i després que cadascú decideixi en
>>>>> conseqüència.
>>>>>
>>>>> Jo resumiria els criteris en 3 grans grups:
>>>>>
>>>>> 1- Criteris pedagògics: quin llenguatge és millor per explicar què.
>>>>> 2- Criteris de mercat: què ens demanen les empreses.
>>>>> 3- Experiència del profe: sol ser millor explicar el què conèixes
>>>>> millor.
>>>>>
>>>>> El punt 3 ve a ser el punt dels "gustos" personals. És important ja
>>>>> que no crec que sigui positiu forçar-nos a explicar coses que no acabem de
>>>>> dominar, i de vegades no arribem a tot (sobretot quan fem substitucions, 
>>>>> ja
>>>>> sabeu). Però en el nostre sector més que els altres o et renoves o et
>>>>> tornes un dinosauri, i els nanos se n'adonen. I què carai, que per això 
>>>>> ens
>>>>> paguen.
>>>>>
>>>>> Vamos, que de tant en tant (millor dit: tot sovint) ens toca aprendre
>>>>> coses noves, i d'aquí el debat: *cap a on reciclar-nos*?
>>>>>
>>>>> Personalment sempre havia programat en C/C++ i PHP (punt 3), i el
>>>>> Python m'ha vingut fa poquet (2 anys). Em resultaria molt més "natural" el
>>>>> Java. Però crec que el Python té molts més avantatges (punt 1). I tot i
>>>>> així haig d'impartir Java si vull explicar programació en Android (punt 
>>>>> 2).
>>>>> O sigui, que... jo què sé! :D
>>>>>
>>>>> Com que crec en la biodiversitat també crec que deu ser bo que fem
>>>>> coses diferents en cada centre (em sembla impràctic explicar tants
>>>>> llenguatges als alumnes).
>>>>> I també està bé que filosofem i ho compartim com estem fent :)
>>>>>
>>>>> Enric
>>>>>
>>>>>
>>>>>
>>>>> 2014-04-02 19:12 GMT+02:00 J. Moreno <jmorep@xxxxxxxxx>:
>>>>>
>>>>> Hola,
>>>>>>
>>>>>> Aquest debat s'està posant molt interessant.
>>>>>>
>>>>>> Ja que jo he proposat parlar de com orientar la programació de
>>>>>> primer, suposo que m'hauré de mullar una mica.
>>>>>>
>>>>>> Tenint en compte els conceptes i procediments que necessitem com a
>>>>>> preparació per a la POO, aquí van algunes idees sobre continguts i
>>>>>> metodologia que estem discutint al nostre centre.
>>>>>>
>>>>>> Començar el més aviat possible amb la programació modular i treballar
>>>>>> la descomposició funcional dels problemes. Això implica treballar el pas 
>>>>>> de
>>>>>> paràmetres a funcions i dominar els conceptes d'àmbit, visibilitat i 
>>>>>> temps
>>>>>> de vida de les variables. El llenguatge utilitzat hauria de permetre
>>>>>> distingir amb claredat l'emmagatzematge automàtic (governat pel 
>>>>>> controlador
>>>>>> en funció de la ubicació de la declaració de les dades) i el dinàmic
>>>>>> (controlat pel programador que decideix crear i destruir objectes). 
>>>>>> Aquest
>>>>>> fil conductor hauria de guiar la major part del curs.
>>>>>>
>>>>>> Un dels problemes conceptuals que troben els meus alumnes amb la POO
>>>>>> és la distinció entre l'àmbit i el temps de vida de les variables
>>>>>> referència (les que apunten als objectes i que tenen emmagatzematge
>>>>>> automàtic) i els corresponents als propis objectes als quals apunten (que
>>>>>> tenen emmagatzematge dinàmic). Crec que cal treballar més els temes de
>>>>>> punters a estructures de dades (arrays, structs, registres i altres, 
>>>>>> segons
>>>>>> el llenguatge) per entendre la POO i les variables dinàmiques.
>>>>>>
>>>>>> En canvi, no trobo necessari treballar l'emmagatzematge estàtic ni
>>>>>> les variables globals.
>>>>>>
>>>>>> Pel que fa a les estructures de control, crec que s'han de treballar
>>>>>> dintre de contextos significatius (fer recorreguts de col·leccions de
>>>>>> dades, o cerques, ..., presa de decisions) i barrejades amb la definició 
>>>>>> i
>>>>>> ús de funcions. No veig que sigui convenient fer una separació clara 
>>>>>> entre
>>>>>> la programació estructurada i la modular.
>>>>>>
>>>>>> També soc de l'opinió que l'objectiu final és que el disseny que
>>>>>> l'alumnat faci de les aplicacions sigui el més independent possible del
>>>>>> llenguatge i estigui orientat a la prova, de manera que puguin programar 
>>>>>> en
>>>>>> el seu futur professional en qualsevol llenguatge amb els mateixos 
>>>>>> patrons
>>>>>> de disseny bàsics. Coincideixo completament amb l'opinió del Moisés sobre
>>>>>> la legibilitat del codi.
>>>>>>
>>>>>> Per últim, crec que és un gran valor pedagògic disposar de jocs de
>>>>>> prova dels programes abans de codificar-los, així com demanar a l'alumnat
>>>>>> que faci prototips d'aplicació que permetin provar les funcionalitats
>>>>>> demanades amb orientació al client.
>>>>>>
>>>>>> No entro a discutir els temes de POO.
>>>>>>
>>>>>> Salutacions cordials i disculpeu pel 'rotllo'.
>>>>>>
>>>>>> José
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2014-04-02 12:15 GMT+02:00 Julio Amorós <
>>>>>> jamoros@xxxxxxxxxxxxxxxxxxxxxxxxxxx>:
>>>>>>
>>>>>> Hola,
>>>>>>> debat i aportacions molt interessants.
>>>>>>> La veritat és que no puc decantar-me amb objectivitat per un dels
>>>>>>> dos, ja que he utilitzat Java molts anys i en canvi Python molt poc.
>>>>>>> Això sí, crec que efectivament, partim dels nostres gustos i del
>>>>>>> llenguatge que més hem fet servir.
>>>>>>> Una altra de les idees que gairebé tothom té, ja que s'ha après
>>>>>>> així, és que el llenguatge fàcil és l'imperatiu o estructurat i el 
>>>>>>> difícil
>>>>>>> és l'orientat a objectes.
>>>>>>> Entenc que Python està a la frontera dels dos models i es fa difícil
>>>>>>> col·locar-lo 100% a una de les dues bandes. Però estic suposant que
>>>>>>> introdueixo la programació amb Python sense fer servir el paradigma POO.
>>>>>>>
>>>>>>> Fa ja bastants anys vaig fer servir l'entorn i el llibre de 
>>>>>>> blueJ<http://www.bluej.org/about.html>per introduir la programació 
>>>>>>> orientada a objectes com a primer llenguatge i
>>>>>>> els resultats no van ser ni millors ni pitjors. Això sí, tota aquesta
>>>>>>> comunitat defensava que és igual de fàcil aprendre a programar amb POO 
>>>>>>> que
>>>>>>> començar amb altres paradigmes. Fins i tot deien que si no estaves
>>>>>>> "contaminat" per altres models de programació encara era més fàcil, ja 
>>>>>>> que
>>>>>>> argumentaven que la realitat que ens envolta està representada per 
>>>>>>> objectes.
>>>>>>> En qualsevol cas, com be deia Carles, al nostre centre a ASIX fem
>>>>>>> servir Python i els resultats sembla que són molt bons.
>>>>>>>
>>>>>>> Respecte a la gestió de memòria que es feia referència al primer
>>>>>>> email, potser no he entès be el text, però el llenguatge que necessita 
>>>>>>> que
>>>>>>> gestionem la memòria, alliberant-la quan calgui, és C/C++ i no Java, 
>>>>>>> que té
>>>>>>> el seu propi garbage collector que crida automàgicament per evitar
>>>>>>> precisament el problema. De la mateixa manera que les referències que
>>>>>>> utilitza Java per apuntar a un objecte simplifica el concepte de punter 
>>>>>>> de
>>>>>>> C (menys potència per més simplicitat).
>>>>>>>
>>>>>>> Diuen alguns que Java va néixer (internet a banda) amb l'objectiu de
>>>>>>> simplificar el llenguatge C++. I diuen altres que la van "cagar" quan 
>>>>>>> van
>>>>>>> començar a afegir coses poc digeribles com els tipus genèrics allà per 
>>>>>>> la
>>>>>>> versió 1.5
>>>>>>> (Segur que va ser algun matemàtic algebrista de la punyeta ;D)
>>>>>>>
>>>>>>> Potser Python és a Java el que en el seu moment va suposar Java a
>>>>>>> C++.
>>>>>>>
>>>>>>> Vagi bé.
>>>>>>>
>>>>>>> Julio
>>>>>>>
>>>>>>> P.D: Per cert, mai he trobat a enlloc com es diu "el paradigma
>>>>>>> oposat a la programació orientada a obejectes". Sempre em surt una 
>>>>>>> barreja
>>>>>>> ...
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> El dia 1 abril de 2014 23.37, Moisès Gómez <iesmoises@xxxxxxxxx> ha
>>>>>>> escrit:
>>>>>>>
>>>>>>> Muy bonito José, llences el repte però no et mulles ;P
>>>>>>>>
>>>>>>>> Apa, ara seriosament, sobre la concreció d'objectius de programació
>>>>>>>> que proposa José, i acceptant que pot ser un tema encara més polèmic 
>>>>>>>> que
>>>>>>>> l'elecció del llenguatge, em pronunciaré en termes molt generals i
>>>>>>>> segurament després de fer "envia" me n'adonaré que en falten coses:
>>>>>>>>
>>>>>>>> *A primer*: els alumnes han d'aprendre a resoldre problemes
>>>>>>>> algorísmics amb els elements fonamentals de la programació (dades,
>>>>>>>> expressions, assignació/ES, control de flux i modulació) més 
>>>>>>>> l'habilitat de
>>>>>>>> l'anàlisi descendent i alguns hàbits bàsics com ara la generació de 
>>>>>>>> codi
>>>>>>>> llegible, fer-se seva la responsabilitat de resoldre el problema, tenir
>>>>>>>> confiança en les seves capacitats de resolució, etc.
>>>>>>>>
>>>>>>>> El llenguatge de programació bàsicament hauria de no destorbar i,
>>>>>>>> si a sobre té sortida al mercat, encara que no és l'objectiu principal,
>>>>>>>> doncs *miel-sobre-hojuelas*. Vaig fer un MOOC que treballaven amb
>>>>>>>> Racket <http://racket-lang.org/>, un llenguatge funcional
>>>>>>>> dissenyat per l'aprenentatge sistemàtic dels conceptes de programació 
>>>>>>>> sense
>>>>>>>> destorb. No té, fins on jo sé, cap sortida al mercat. Aquí, sense
>>>>>>>> dubtar-ho, escolliria *Python* amb codi no massa *pythonic* (qui
>>>>>>>> programeu amb Python ja m'enteneu). Reptaria a qui proposi un altre
>>>>>>>> llenguatge a resoldre un problema en tots dos llenguatges i veure quin 
>>>>>>>> és
>>>>>>>> més fàcil d'entendre per a un alumne de primer.
>>>>>>>>
>>>>>>>> *A segon*: els alumnes han d'aprendre a desenvolupar amb eines
>>>>>>>> actuals que els permetin sortir al mercat, trobar feina i començar a
>>>>>>>> produir des del dia 1 (és FP i no universitat). Idealment haurien de
>>>>>>>> saber-se manegar amb més d'un llenguatge. Encara que la diversificació
>>>>>>>> redueixi la profunditat, els oferirà més perspectiva i els farà una 
>>>>>>>> mica
>>>>>>>> més resistents als "canvis de moda" tecnològics.
>>>>>>>>
>>>>>>>> Per tot plegat, i amb la situació actual (mireu per exemple l'índex
>>>>>>>> tiobe <http://www.tiobe.com>), considero que els DAW haurien de
>>>>>>>> sortir *havent programat* aplicacions en Java, Javascript, PHP
>>>>>>>> i... Ruby. Per DAM probablement Java (o/i C#?) i Objective-C.
>>>>>>>>
>>>>>>>> Ja dieu
>>>>>>>>
>>>>>>>>
>>>>>>>> El dia 1 abril de 2014 21.18, J. Moreno <jmorep@xxxxxxxxx> ha
>>>>>>>> escrit:
>>>>>>>>
>>>>>>>> Podria ser que juguin millor per l'àrbitre ;-)
>>>>>>>>>
>>>>>>>>> Bromes a part, no vull generar polèmica ni molestar ningú. Només
>>>>>>>>> mirava de traslladar el debat una mica a un altre terreny, si us 
>>>>>>>>> sembla
>>>>>>>>> interessant.
>>>>>>>>>
>>>>>>>>> Acabo de veure el missatge del Carles i penso, com ell, que a ASIX
>>>>>>>>> resulta de molta utilitat Python, segurament més que Java.
>>>>>>>>>
>>>>>>>>> Salutacions.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2014-04-01 21:09 GMT+02:00 Moisès Gómez <iesmoises@xxxxxxxxx>:
>>>>>>>>>
>>>>>>>>> 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
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Un professor català  té la mensualitat número 13 de 17 autonomies.
>>>>>>> "La culpa és de Madrid" Artur Mas dixit.
>>>>>>> Un president català té la mensualitat número 1 de 17 autonomies. Un
>>>>>>> 50 % més que la segona. "La culpa és de l'IPC" dita popular, convergent,
>>>>>>> socialista ...
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Other related posts: