Vulpi, artă,chunky bacon și Ruby

So you’ve got to know that synergy doesn’t actually mean synergy in this book. I can’t do normal synergy. No, in this book, synergy means cartoon foxes. What I’m saying is: this book will be starting off with an exorbitant amount of cartoon foxes.

And I will be counting on you to turn them into synergy.

why the lucky stiff (aka _why), Why’s Poignant Guide to Ruby, habar n-am în ce an apărut, teoretic e încă neterminată, iată un link  spre un PDF, asta e o variantă mai nouă și probabil mai completă, mai aproape de ce citisem eu, hai să închid această linie introductivă interminabilă

La un moment dat am făcut o înțelegere cu mine. Să scriu aici de toate cărțile pe care le citesc. În urma negocierilor interne, am stabilit că nu se pun cărțile de programare, tehnice, școlare etc. „Mi-a plăcut evocarea foarte poetică a modului în care Ore construia lanțuri K-alternante în grafuri bipartite” cumva nu are o sonoritate prea bună…Acum o să sparg regula, pentru că, deși avem de-a face cu o carte de programare, nu are grafuri bipartite. Are cartoon foxes.

Un limbaj de programare e o limbă, cum ar fi catalana sau finlandeza, în care vorbești cu calculatorul tău. Îi spui „bă, afișează ‘Neața!'” sau „Când spun calculează inversul unui text tu fă-mi un text nou în care pui fiecare literă începând de la sfârșitul ăluia pe care ți l-am dat până la început. Și dă-mi textul nou”. Ahamz. Deci româna nu merge. Ruby mai merge. E un limbaj pornit în Japonia, în anii ’90, care în ultimii ani a devenit popular, apoi a devenit trendy, apoi a devenit un pic enterprisey și acum se pregătește să fie foarte enterprisey. E ca un om la 50 de ani.

Cu diferența că poate fi foarte simpatic și pare că nu va fi îngițit de direcția „aplicații pentru afaceri”. Nope, e o cultură mai puternică, de oameni care scriu programe într-un Starbucks cu ochelari de soare pe cap noaptea, care trag întrucâtva în direcția opusă. why e unul din acești oameni. Sau a fost, e greu cu timpul. De curând și-a șters toate conturile pe care le avea și s-a făcut dispărut de pe internet. Să sperăm că a trecut la chestii mai interesante. Da, da, omul își face bine stat-cu-ochelarii-de-soare-pe-cap-noaptea-ul: e interesant și educativ, amuzant și, desigur, are momente în care pare forțat, dar în limite rezonabile.

E o carte care începe cu o ceapă. Cu un îndemn spre a ne închipui că avem cartea asta în față, pe hârtie, tocmai am deschis-o și am găsit înăuntru o ceapă. Suntem impresionați. Și trebuie să lăsăm ceapa să-și facă efectul: să plângem, să ne minunăm și să plângem în fața frumuseții a ce vom vedea. Observăm ironia autorului, care e conștient că nu ne poate emoționa fără o ceapă.

Deci da, vulpi. Secțiuni cu vulpi desenate, multicele. Povești cu vulpi desenate, savanți nebuni, câini cu baloane atârnând de picioare. Vulpile se întreabă dacă pomenind „chunky bacon” vor apărea în carte. Două exemple mai încolo, niște cod Ruby afișează „chunky bacon”. O carte perfect citibilă ca beletristică, dar poate mai neînchegată. Nu știu, mi-am spus că o dată o s-o citesc ca programming și o dată ca beletristică și am citit-o de două ori, dar nu știu de care dată cu ce interpretare. Sunt mai greu de deosebit.

Meta. Destul de mult meta, dar nu până la trendynessul absolut (deși aproape, cam dureros de aproape). Savantul nebun găsește pe undeva un exemplar din carte. De acolo află ce trebuie să facă în continuarea cărții. Se întâlnește cu o capră, care a citit cartea de vreo 30 de ori. Și care consideră că e „totally misquoted”  și că uau, savantul nebun arată altfel în realitate decât în carte. Pentru următoarele câteva capitole, nu își mai amintesc ce trebuia să facă în diverse situații. Personajele omului nu-i pot ține minte acțiunea din propria carte, deci mă scuzați dacă mie-mi sunt neclare detaliile. Apropo, pentru părțile meta din Ruby, vedeți al doilea link, e mai finisat. Cred că e ce am citit la prima mea citire. Și are și citate drăguțe din alți oameni care leagă frumos totul:

When one learns to learn, one is making models, using symbols, analogizing, making metaphors, in short, inventing and using language, mathematics, art, politics, business etc. At the critical brain (cortex) size, language and its consequences appear. To avoid the necessity of repeating learning to learn, symbols, metaphors, models each time, I symbolize the underlying idea in these operations as metaprogramming.

John C.Lily, Programming and metaprogramming in the human biocomputer, New York, 1972.

Okay, acum hai să citez și din autorul pe care îl tot pomenesc aici și din carte ne-citând altă carte. Ești pe o planetă străină. Într-un castel. Vrei parola liftului. Parola e aparent inaccesibilă. Doar că fraierii au scris softul care controlează liftul în Ruby. Muahaha.

Hmm. Instance variables are only available inside an object. And class variables are only available inside a class. How could he get to that password?


class Elevator

    def Elevator.maintenance_password

        @@maintenance_password

    end

end

Elevator::maintenance_password

=> "Stairs are history!"

Alright! He got the password! Did you see that?

He added a class method to the Elevator class. Isn’t that great how you can start a new class definition for Elevator and Ruby just adds your changes to the existing definition?

Și ăsta a fost fragmentul pe care nu-l va înțelege nimeni. Nu știu cât de good idea, dar e destul de flexibil. Also, argumentele în care autorul îți aruncă în față o bucată de cod și spune „Uite, e ca o propoziție în engleză!” mă lasă cam rece mereu. Pentru că nu-i și pentru că există limbaje care chiar arată ca o engleză în limita în care un limbaj de programare poate: SQL și COBOL. Toată lumea le urăște pentru că ești prins într-o mare de cuvinte. După care vine la mine și spune „Uite frate: str.gsub!(/[^\d]/, ”), exact ca-n engleză!” Also, spre sfârșit parcă se diluează ciorba. Autorul e din ce în ce mai prins în propria-i poveste și nu prea ne mai servește cu cod, după care ne mai servește un pic, dar parcă un pic prea complicat pentru cât de puține explicații i se alocă. E o senzație de plictis și corvoadă pe final.

Și mai e senzația că nu există un target clar. Oameni care n-au mai programat? Da, după chestiile introductive, nu, după viteza cu care evoluează. Indivizi cu experiență și care vor să vadă cum e cu Ruby? Nu, pentru că începe cam prea pentru … începători. Da, pentru că se termină cu why getting funky with metaclasses. Copii? Da, pentru vulpi, chunky bacon și prima jumătate a cărții, nu prea pentru un savant nebun care-și electrocutează nepoata. Și metaclasses.

Secțiunea de observații negative fiind încheiată, trebuie să spun că totuși impresia e pozitivă. Pentru că e o carte care te învață să pui pasiune în lucruri, să te distrezi, s-o iei puțin ca pe o artă și deloc ca o prelucrare prin așchiere (I’m looking at you, cărțile gen „Java instant for dummies în 10 zile” și utilizatorii lor). Pentru umorul dubios, dar parcă o dubioșenie pozitivă. Iată un om care urăște cartea. Vă las și cu el.

Hai, v-am dat linkurile, puneți mâna și citiți. Dacă după 10 pagini nu vă place, vă puteți opri oricum. (It’s not gonna get better. It might get worse.) Voie bună!

Anunțuri

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s