[webdev] Prezentări și prezentatori

"Ionuț G. Stan" ionut.g.stan at gmail.com
Mon Jan 9 21:25:44 EET 2012


On Jan/09/2012 10:57, Răzvan Botea wrote:
> On 1/9/2012 10:13 AM, Andrei Maxim wrote:
>> Context: cel mai probabil sunt persoana care se ocupă de workshop-ul de pe 17 martie.

Context și pentru mine: e destul de probabil să țin partea a doua a 
prezentării de JavaScript, de pe 7 aprilie. Am început să scriu deja din 
prima deși probabil n-o voi ține eu, dar am nevoie de context ca să-mi 
dau seama spre ce aș putea evolua în a doua. Deocamdată mă gândesc să 
fac ceva despre UI heavy applications, în care nu există "reîncărcări" 
de pagină, ci totul se petrece via apeluri Ajax. E de văzut cum 
evoluează lucrurile după prima prezentare.

>>
>> Predarea unor concepte de web development în mai multe limbaje va crea doar confuzie. Presupun că ai citit cărţi care aveau exemple de cod în Java, altele în C++ şi altele în C simplu. Efortul necesar din partea unui student ca să facă schimbarea de limbaj de la un concept la altul este mult prea mare, iar în final nu obţii mult mai multe beneficii decât dacă ai spune la începutul cursului că aceleaşi rezultate se pot face şi în alte limbaje de programare.
>>
>> Tu cum ai vedea un curs făcut cu trei limbaje de programare? Câte un workshop pentru fiecare limbaj? Cu conţinut identic, doar exemplele de cod diferite? Sau concepte introductive în PHP, un workshop de nivel mediu în Python şi chestiuni avansate în Ruby? Sau să fie slide-urile împărţite în trei, cu cod PHP în stânga, cod Python la mijloc şi Ruby în dreapta? Şi de ce doar PHP, Python şi Ruby? Ce are ASP.NET MVC, de exemplu?
>
> Se predau conceptele (iar pentru exemplificări se pot da câteva
> sample-uri în 2 limbaje să zicem), la proiect fiecare student poate
> alege orice server-side scripting language.
>
> Nu se face niciun workshop pentru fiecare, fiindcă nu se predă limbajul,
> ci doar implementarea, conceptele, etc. Altfel puteam simplu să
> redenumim cursul în "Limbajul X în mediul de dezvoltare Web". But if
> it's too much of hassle to give freedom of choice (eu știu PHP, poate
> vroiam să mă înscriu și eu, dar la ruby nu ma pricep și parcă nu prea
> mai am timp să învăț Ruby, nu știu cat de ușor e de învățat, nu prea am
> interacționat cu el).

Eu sunt total de acord cu Andrei Maxim, ba chiar mai mult. Aș obiecta că 
se vrea ca partea de modele să se facă cu Sinatra iar cea de view + 
controllers cu Rails. Adică două framework-uri.

Nu am înțeles un lucru în ceea ce ai spus. Ai fi vrut să te înscrii ca 
și cursant sau ca și prezentator?

> For another +1: noi dacă îi învățăm să dezvoltăm aplicații web o mare
> parte din această activitate se rezumă pe citit și pe research, noi nu
> trebuie să le dăm: uite așa se definește o clasă statică in python, uite
> așa se scrie un switch in python (uh oh, nu are, my bad). Noi le arătăm
> cum se dezvoltă o aplicație web, independent de limbajul ales, poate că
> unele sunt mai bune la o anumită chestie decât altele, but that's not
> the point. Trebuie să muncească și ei nu ? PHP are o documentație super,
> python are documentație, despre ruby/asp.net nu am citit. În cadrul
> aplicației lor dacă vor să folosească o bază de date pur și simplu se
> uită pe documentația respectivă și învață, și să dau un exemplu concret,

Total de acord. Oricum nu va fi timp de citit referințe. Eu unul însă 
voi pleca de la premiza că ei vor ști doar C (așa mi-a sugerat Dan, dacă 
e altfel atunci corectați-mă). Inevitabil va trebui să explici câteva 
chestii de sintaxă și semantică.

> eu știu PHP și pot să-i îndrum să nu folosească funcțiile banale mysql_*
> ci să folosească PDO instead.

Dar ăsta nu e un sfat care ține de programarea web în general, ci de 
PHP. Nu cred că e ok să spui unor începători despre idiomuri/best 
practices aparținând de 3,4,5 platforme diferite. Nici mie nu mi se pare 
"corect" să le ascunzi atâtea alte posibilități (Ruby nu se numără 
printre limbajele care-mi gâdilă entuziasmul), dar... trebuie să 
pornești de undeva. Nu poți să construiești din nimic.


> Până la urmă mă puteți întreba și pe mine cum aș vrea să văd un curs ca
> acesta. Eu am învățat singur web dev (and i still do), nu prea am avut
> pe nimeni să-mi spună să folosesc PDO, și așa am stat cu chestia asta
> mult timp până am aflat că funcțiile alea sunt "nașpa", pe scurt.
>
> Să spunem că eu nu prea știu OOP în web dev (dar știu de la facultate în
> java/c++), și mie la cursul ăsta mi se predă în Ruby/Python/PHP/wtv. Păi
> nu prea s-a rezolvat nimic, eu știu în php spre exemplu cum să definesc
> o clasa abstractă și s-o moștenesc. Dar altu-i scopul: să înțelegem
> esența, de ce se face așa, vreau de exemplu să înțeleg de ce nu e bine
> patternul singleton, vreau să văd niște use case-uri mai ample pentru
> factory pattern să-i înțeleg folosința. Asta, zic eu, se poate preda cel
> mai bine de la cei cu experiență practică (job, și chiar și proiecte
> foss acasă cu o pregătire mai amplă), fiindcă până la urmă pot să citesc
> și eu documentația să aflu cum se extinde o clasă abstractă în orice limbaj.

Există o premiză implicită în ceea ce ai spus, și anume că OOP e la fel 
în toate limbajele, lucru pe care eu nu îl consider adevărat. Ca să nu 
mai vorbim de faptul că poate OO nu mai e de ajuns și că ar trebui să 
știe și despre Functional Programming (FP). Cel puțin :)

Ceea ce cred că ar fi util pentru ei, ar fi ca în toate prezentările, 
indiferent de ceea ce se explică să se urmărească trei lucruri "în 
background":

  - separarea responsabilităților
  - eliminarea codului duplicat
  - îmbunătățirea numelor folosite pentru variabile, funcții, selectori 
CSS, etc.

Lucrurile astea chiar sunt cross-language/paradigm și din punctul meu de 
vedere mult mai utile decât orice discuție despre OO design patterns.

Oricum, cred că e de înțeles poziția lui Răzvan și de-asta mă gândesc că 
e probabil o idee bună să existe o listă de link-uri către aceleași 
concepte implementate pentru alte platforme. Spre exemplu "DB 
migrations". Sunt bune pentru X și cam așa se procedează în Rails. Dar 
există și pentru alte platforme. Django are South. Java are Flyway. În 
PHP le puteți face cu Doctrine. șamd


-- 
Ionuț G. Stan  |  http://igstan.ro


More information about the webdev mailing list