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