Incepe django-rails?

Când m-am trezit de dimineață am deschis Code Complete prima oară după câteva săptămâni. Citește mai departe ca să vezi ce m-a făcut să fac asta.

Mă joc de 3 zile cu wordpress și pot să zic că e cel mai fain CMS pentru bloguri pe care mi l-aș putea dori. Face tot ce-mi trebuie până acum. N-am ce să-i reproșez. Concluzia logică e că: trebuie schimbat42.
Mă apuc să-mi scriu propriul software de blogging. Nu m-am hotărât încă în ce limbaj/framework. Nu-l pot scrie în php bineînțeles. Gândindu-mă mai mult, ajung la dilema django-rails. Dar să intru mai în amănunte, poate reușesc să stârnesc vreun flame-war ;-) (promit să nu moderez pe nimeni).

Observ că îmbătrânesc pentru că azi nu mă gândesc decât la 2 limbaje de programare cu adevărat posibile pentru proiectul ăsta: python și ruby. Pot să zic că deja sunt familiarizat cu limbajele astea două, deci nu prea mai pare o aventură. Probabil dacă aș fi avut mintea de acum un an, aș fi folosit azi Cappuccino (și totuși cred că o să citesc cel puțin jumate de oră despre cappuccino astăzi. Poate cine știe… :-).
Trecând de limbaj, parcă nu m-aș aventura cu vreun framework relativ necunoscut cum sunt: Camping – care totuși mi se pare excelent pentru prototipuri sau pentru site-uri mici1 sau merb – care deși propune lucruri interesante (pare un — wannabe — rails-killer), nu mă atrage la capitolul documentație, pylons – deși cred că mă atrage cel mai mult (pentru asemănările cu rails și scopul declarat de a se da laoparte din fața ta atunci când lucrezi — extensibilitate, flexibilitate, modularitate) în timp django a căpătat pe lângă notorietatea, numărul de dezvoltatori și utilizatori (care scriu documentație!) și un loc drag în inima mea, pentru că mi se pare că face cel mai bine distincția între literele din MVC. Ar mai fi webpy , dar îmi dă din nou impresia unui framework pentru prototyping, apropiat de Camping, care deși e folosit (era?) de reddit nu mă satisface — probabil tot din lipsa documentației cauzată de modularitatea excesivă, până la urmă toate extensiile în webpy sunt programe 3rd party.
Era să uit de TurboGears (de fapt am uitat, dar m-am întors). Deși am lucrat ceva vreme cu el, nu m-a impresionat. Nu pot să zic că a fost rău. În afara lipsei documentației, e destul de interesant, poate și pentru că adevărata bătălie se dă în SQLAlchemy și genshi care sunt bine documentate. Pe de altă parte nu m-a uimit niciodată cu feature-uri neașteptate la care aș vrea să mă întorc. Pentru mine va rămâne un framework ok, pe care l-aș alege probabil pentru un proiect mare în defavoare lui django, dar nu m-a distrat niciodată la fel ca rails sau django.

Ajungând la cei doi monștri: rails și django. Aș alege rails pentru că m-ar distra să scriu din nou cod ruby (care mi se pare cel mai distractiv limbaj de departe), pentru grămada de pluginuri și gem-uri de tot felul (rivalizând la ușurința de implementare cu un plugin wordpress) și pentru cât de ușor e de scris o aplicație rails — neavând garanția că peste câteva luni vei fii mândru de ce ai scris — fără să citești prea multă documentație (care de altfel nu e prea frumos structurată sau ușor de găsit — în general mi-a dat impresia că dacă vrei să înveți rails trebuie să iei o carte despre rails).
Pe de altă parte, django excelează la capitolul documentație. Citind codul, nu te face să chicotești o dată la 16 rânduri ca ruby, pentru că are o notă mai serioasă, ceea ce-l face și mai ușor de citit și întreținut (dar cui îi pasă de code maintenance?). Templating system-ul a fost cel care m-a făcut să mă întorc la rails cu o înțelegere adevărată a paradigmei MVC sau MTV cum o numește django, pe care n-o căpătasem încă din cărțile de rails. Are un minus pentru că nu e la fel de distractiv ca rails, iar mie îmi trebuie distracție când îmi scriu blogul personal. Are un plus pentru că încă nu reușesc să “găsesc” mare lucru despre el în blogosfera românească, pe când de rails mai toată lumea a început să audă, sau asta e impresia mea…

Acum poate ar mai trebui să mă gândesc și la ce voi învăța din experiența asta pentru o viitoare angajare. Și aici am de ales între rails — care mă duce cu gândul la proiecte relativ mici, web2.0 sau startup-uri, în nici un caz companii mari — și orice-alt-framework-python — care îmi va da experiență python pe care o voi putea folosi la proiecte mari care folosesc și alte frameworkuri. Ăsta e un atu important, dar faptul că proiectul este personal mă face să aleg mai degrabă ceva distractiv decât ceva practic. Ăsta e și motivul pentru care post-ul ăsta a fost foarte puțin tehnic — pentru că nu mă interesează atât de mult dacă am the right tool for the job, ci mai mult cât de colorat e.

Aș mai scrie și despre framework-uri lisp sau smalltalk sau perl sau java, dar iarăși s-a făcut 12:00 și n-am mâncat și în plus, nu știu mai nimic despre ele ;-). Urmează ca în prima parte a zilei de azi să citesc și să îmi instalez majoritatea frameworkurilor de care am vorbit pe care nu le aveam deja instalate — abia aștept să încerc cappuccino — și să văd mâine (sau după-amiază) de ce mă apuc.
Postul ăsta marchează și mult-așteptata întoarcere la programare după vacanță, iar fără el probabil că nu aș merge acum să mă uit la celelalte frameworkuri interesante (la care ziceam că n-o să mă uit la începutul postului). I’m young again!!1

42 Iar eu am blahg, nu blog. blaahag!! blaaahhhhg!

1 Am găsit un screencast Camping foarte interesant în timp ce căutam situri rails.


Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License.