Festivalul National de vorbit in public “Titlul fara nume” Fest

Posted in Premiul n00bel on February 29th, 2016 by jos8cal

… a ajuns la editia a VII-a si este in continuare in cautare de noi talente!

Prin urmare, daca aveti un titlu cu care credeti ca puteti intretine atmosfera timp de 45 de minute, sinteti asteptat cu drag pe 7 Mai la Cluj pentru a va invinge frica de vorbe si de public. Intrarea este libera, va asteptam cu drag!

PS. Mai jos aveti lista cu Titlurile aflate in concurs anul acesta:

primul11

 

 

 

 

 

 

 

 

 

 

 

 

Tags: , , , , , , ,

Geniu de Stiinta Roman – Realizarea Imposibilului

Posted in Premiul n00bel, Stand-up philosophy on November 2nd, 2013 by jos8cal

Pe data de 19 Octombrie 2013, Imposibilul a fost Realizat. Ovidiu Anghelidi CEO Inventikon a declarat pentru cel mai important portal de nulostiinta din Romania, CodExpert:

“Buna ziua,
As dori sa prezint “Realizare Imposibilului”, o scurta poveste care poate sa inspire pe altii despre
cum se poate ca fara studii de specialitate, fara a vorbi cu nimeni, fara a obtine nici un ajutor 
si aproape fara nici un ban, sa ajungi la nivel mondial intr-un domeniu de cercetare de varf si 
sa descoperi lucruri importante.

Ma numesc Ovidiu si am facut trei descoperiri importante: 
1. am rezolvat o problema complexa de biologie moleculara in neurostiinta
2. am gasit un algoritm criptograhic care e imposibil de descifrat (unbreakable encryption) 
3. am gasit o noua sursa de energie

Am facut de asemenea cea mai mare simulare de creier din lume (a se vedea urmatorul articol de pe Discovery Channel)
http://www.inventikon.com/articles/discovery.html

Pentru mai multe informatii a se vedea pagina urmatoare:
http://www.inventikon.com/ovidiu/index1.php

Multumesc.

Cu stima,
Ovidiu Anghelidi

Email: oanghelidi@inventikon.com
Telefon: 1-647-701-8803″

 

Redactia noastra a reusit sa obtina mai multe informatii despre Complexa Problema de Biologie Moleculara in Neurostiinta si chiar sa publice Fisa de lucru folosita de Ovidiu pe parcursul celor 40 de ani de pelerinaj mental. Este vorba despre Germinatia Bobului de Fasole si energiile ascunse de acestea. Aparent modul de viata retras al bobului este foarte asemanator cu cel a lui Ovidiu, de unde si sursa de inspiratie.

IMG_0461

Proiect: Bobul de fasole si sursa de energie.

Scopul Activitatii: Observarea cresterii si dezvoltarii la fasole.

Modul de lucru:

  1. Puneti la incoltit 10 seminte de fasole:- intr-o cutie de plastic (farfurie), pe un strat de vata acoperit cu sugativa (servetel);
  2. Umeziti “patul” (vata si sugativa);
  3. Asezati pe “patul” umed, semintele;
  4. Acoperiti semintele cu sugativa (servetel);
  5. Mentineti umezeala permanent.
  6. Observati etapele germinatiei, crestere si dezvoltarea la fasole!
  7. Dupa formarea frunzelor, plantati fasolea intr-un ghiveci cu pamant.
  8. Continuati ingrijirea plantei asigurandu-i umezeala, lumina, caldura, aer.
  9. Notati observatiile:
  • a) – pana la formarea frunzelor – ZILNIC!
  • b) – dupa plantare – SAPTAMANAL!

 La sfarsitul experimentului – comentariu personal pe toate forumurile din Romania in legatura cu activitatea desfasurata.

ETAPELE GERMINATIEI LA FASOLE

2 aprilie – am pus la incoltit 10 seminte de fasole
3 aprilie – au inceput sa-si mareasca volumul
4 aprilie – a crapat tegumentul la cateva din seminte
5 aprilie – a inceput sa creasca radacina
6 aprilie – a cazut tegumentul
7 aprilie – au aparut primele frunze
8 aprilie – plantele au crescut cativa cm
12 aprilie – am plantat fasolea in pamant
15 aprilie – plantele au crescut si au aparut mai multe frunze
Concluzie:
Toate semintele folosite la experiment au incoltit si s-au dezvoltat, deci sint un geniu.
Comentariu:
Acest experiment a fost unul interesant deoarece am putut observa toate etapele germinatiei, cresterii si dezvoltarii plantei.
Si filmul marturiehttp://www.youtube.com/watch?v=93q6FZhTrlY

Simpleton Pattern

Posted in Premiul n00bel on June 10th, 2012 by Mihnea

Cu siguranta ati remarcat ca minerul si-a cam suspendat activitatea tutorialistica in ultimul timp. Cind firma aia care n-a auzit de Google l-a luat la sinul ei dupa despartirea de multinationala si l-a reprofilat pe Java, Silviu a fost cuprins de o bucurie de copil mic cu mintea goala. Vazind ca Normele de Exploatare mentioneaza prezenta unui garbage collector, s-a simtit obligat sa produca cit mai mult gunoi in timpul programului, astfel incit foarte rar ii mai raminea timp de cite un tweet extracuricular despre psihologie si Einstein. Spre fericirea noastra insa, dupa aproape un an de truda a avut pentru prima data nevoie sa declare o variabila globala si vechile instincte de pedagog s-au reaprins in el.

Dupa cum stie toata lumea si a aflat si Silviu saptamina asta, in Java nu ai voie cu variabile globale, deoarece incalca Principiul Celor 50 De Linii de Cod. Acest principiu, formulat de niste muisti ale caror nume mi-e lene sa le caut acum pe Wikipedia cind s-au strins nu stiu unde cacat sa faca ei limbajul viitorului care in 3 ani sa devina unicul limbaj folosit in intreaga lume, suna asa:

Se va numi Java acel limbaj obtinut pornind de la C++ si eliminind feature-uri pina cind orice program imaginabil necesita minim 50 de linii de cod.

In constructia dogmaticii lor, muistii s-au inspirat viguros de la unii care incercasera si ei sa impuna o limba unica in Europa cu vreo 50 de ani inainte si pina la urma au avut cam tot atita succes. In fine, cert e ca pentru a cirpi gaurile din Java, s-au gasit alti 4 muisti care au intemeiat o noua dogmatica: design patterns. Pentru a contrabalansa neonazismul lui Gosling (na, ca l-am cautat pina la urma), astia 4 muisti s-au inspirat din comunism, deci muie Ovidiu Cucu.

Pardon, divaghez. Ce voiam sa spun este ca design patterns sint diverse metode de a implementa banalitati ca variabile globale, instructiunea for, instructiunea switch etc. in Java, cu clase. Si cum for si switch sint concepte avansate pentru unii, orice retardat care cedeaza impulsului de a scrie un articol pe tema intelligent design in programare incepe cu singletonul, adica variabila globala.

Retardarea asta insa are grade. Exista retardati care pot fi convinsi sa nu mai incerce sa bage patratul prin cerc, retardati care musca din patrat in timp ce se pisa pe cerc si jos de tot, sub toti ceilalti retardati, exista Silviu Ardelean. In contextul de fata, Silviu Ardelean poate fi recunoscut cu usurinta, pentru ca va incerca sa aplice acest hack necesar pentru a avea variabile globale in Java la C++, care deja are variabile globale.

Articolul nu dezamageste. Lasind la o parte ilaritatea care survine cind ne uitam cum se framinta ortacul sa fie thread-safe si in pas cu C++11, la o trecere sumara prin articol sintem izbiti de o schimbare radicala in exprimare, pe undeva pe la mijloc, cind incep partile “dificile”. De la “that’s way I’m trying to figure a few implementations, some base on C++ 11 features” si “pointer final deleting problem disappears“, trecem brusc la “it might just happen that the OS scheduler unwittingly interrupts the first thread at this point“. Poftim? Unwittingly, pe bune? Probabilitatea ca Silviu sa foloseasca cu de la sine putere cuvintul “unwittingly” este la fel de mare ca in cazul ala din trecut cu “this is in contrast with“, deci ma simt obligat moral sa-l intreb pe Google ce parere are despre fraza aia. Si ce sa vezi, primul hit contine exact descoperirile originale ale minerului, cu tot cu numerotarea aia a liniilor-problema: de fapt e un citat din cartea lui Alexandrescu.

Mai jos observam ceva actiune SF cu std::call_once si std::lock_guard. De unde cacat stie Silviu despre std::call_once, va intrebati? Pai ia cautati codul ala exact asa cum e pe Google, si veti afla: de pe Stack Overflow. Daca va uitati putin mai atent, cum a facut-o un suflet rau ce a si comentat la miner pe blog, va puteti chiar intreba de ce cacat mai ai lock-ul ala acolo, daca faci call_once. Pai simplu: pe Stack Overflow zice unu’ sa folosesti call_once, da’ nu arata exact codul rezultat, asa ca minerul a pus pur si simplu cu copy/paste peste codul original, deoarece habar n-are ce fac cacaturile alea. Totul e sa dea articol++. A, scuze, ++articol, ca asa e optim.

Ma rog, articolul are acea calitate remarcabila de a-ti oferi cite o noua timpenie amuzanta de fiecare data cind il recitesti. N-o sa va stric placerea, va las sa va bucurati in tihna de acest mic miracol al programarii. Vreau doar sa-l intreb pe Silviu: ba, tu esti chiar atit de prost incit nu-ti dai seama cind e cazul sa te opresti din copy/paste?

PS: daca zice cineva ceva de avantajele singletonilor fata de variabile globale pentru unit testing si mock objects si pula mea, ia ban direct. De asemenea se confera ban pentru infierarea singletonului ca anti-pattern si sustinerea celorlalte pattern-uri.

 

Tags: , , , , , , , , , , , ,

Nevoia cunoasterii lui Dumnezeu.

Posted in Premiul n00bel, Regula 0 on January 7th, 2012 by jos8cal
Asa ai arata tu daca Silviu ar fi portretist.

Asa ai arata tu daca Silviu ar fi portretist.

Aceasta nevoie o simt de fiecare data cind citesc ceva scris de Silviu Ardelean. Si de fiecare data ma imaginez stind in fata lui Dumnezeu in timp ce ma proroceste, iar cind ar ridice ochii sa ma masoare, i-as fute una in coaie sa-l las lat pe jos. Si imobilizat asa de durere, sa-l intreb cum pula mea a reusit sa faca un specimen cu care nu te poti intelege, care se trighereaza pe cuvinte si nu intelege in pula mea nimic, niciodata. Orice subiect i-ar atinge sfecla, el cotrabaie in beciul mintii sa vada daca are ceva stocat din ce au spus altii despre ce se discuta si incepe sa-ti turuie cu o convingere de mai mai sa-i dai omor. Si tot timpul are un prieten care oricind poate garanta pentru spusele lui. Fie el un Assemblerman ori un Javaman, toti in general sint Dumnezei in ce fac si n-au altceva mai bun de facut decit sa faca propedeutica cu Silviu despre absconsa problema a pasarii optime a unui const char* la o functie.

De multe ori m-am intrebat cu Mihnea, cum e sa stai cu Silviu la o bere. Oare cit ai rezista sa vezi cum te izbesti subiect dupa subiect de un munte de ignoranta si prostie etalate cu o nonsalanta rar intilnita?

Am ajuns intimplator pe pagina de facebook a unui fondator Codexpert si observ ca omul empatiza cu durerea utilizatorilor de Eclipse, de Java, de Android si alte mizerii. Vad si poza botului de Silviu si incep sa citesc ce zice, moment in care am vazut negru (iarasi; pentru a cita oara). Iata cursul argumental al dialogului. Nu conteaza ca textul pe care se discuta era scris de Mihnea, ce conteaza e logica de mineriada:

“Nu numai ca pe Android trebuie sa scrii Java, acest limbaj conceput de si pentru copiii cu sindromul Down rezultati din relatiile incestuoase intre pigmei retardati; actul creator se petrece in Eclipse, un fel de editor de text care stie vag ca lucrezi la un proiect compus din mai multe fisiere, dar nu e niciodata sigur care sint fisierele alea, ce sa faca ca sa le compileze si cind.”

Si trinitatea de cuvinte Java, Eclipse, Compilator, au spawnat ortacul:

Silviu-Marius Ardelean Se vede ca autorul nu a ajuns sa lucreze in Eclipse. Daca o facea, ar fi constatat ca in Eclipse exista un mecanism de autocomplile on the fly.

Aici e momentul in care l-as arunca din cer pe Dumnezeu si l-as trimite sa copilareasca in Hateg, sa intre in mina calare pe un vagonet si sa moara pentru mine, sa reinvie si sa o luam de la capat.

Silviu-Marius Ardelean Un alt lucru inedit ce-l poti face in Eclipse cu Java e sa inserezi cod cand esti atasat la un proces (in anumite limite – cateva linii pe care le lasi inainte goale) si sa reevaluezi in mod debug portiunea de cod recent scrisa fara a fi nevoit sa pui noile binare si sa repornesti proiectul.

Pe linga ca nu este nici o legatura intre textul initial si dejectia Ardeleana, Silviu a reusit sa scrijeleasca pe peretii lui facebook o definitie a lui Edit&Continue, a lui HotSwapping, JRebel sau ce neamuri de nume retardate or mai fi in Java pentru Edit&Continue. Practic un FAQ de talie codexperta. Asadar, parafrazind:

Ce este Edit&Continue?

Silviu-Marius Ardelean: Edit&Continue este un alt lucru inedit, dar limitat, in care daca lasi citeva linii goale inainte sa compilezi, poti insera cod cind esti atasat la proces (deci nu pornesti in debug, ci te atasezi mai tirziu) si poti sa reevaluezi in mod debug portiunea de cod recent scrisa fara a fi nevoit sa pui noile binare si sa repornesti proiectul.

Intrebare pusa de interlocutorul sau: Deci au inventat si Eclipse debug and continue, sa inteleg.

Silviu-Marius Ardelean Ceva de genul dar mai transparent datorita autocompilarii si faptului ca nu era nevoie sa pun ultimele binare pe serverul remote la care eram atasat. Javaman ce mi-a aratat feature-ul era foarte incantat… :)

Il observam pe Javaman cum a pus capat zilelor negre in care zilviu impingea la vagonetul cu binare prin galerii.

Si ca sa fiu in ton cu inceputul de an, declar deschisa petrecerea sfirsitului lumii in 2012: Muie Dumnezeu.

Tags: , , , , , , ,

Invatati, Invatati, Invatati

Posted in Premiul n00bel, Regula 0, Slagare internationale on January 5th, 2012 by Mihnea

Sper ca sinteti abonati la lista de lecturi obligatorii a Partidului Codexpert Roman, unde muezinii Bancila si Cucu sufla zilnic in trompeta uzinei pentru a culturaliza masele de codexperti. Daca nu ati aderat inca, voi incerca sa va conving acum s-o faceti, prezentind citeva din recomandarile publicate de catre Primi Inter Pares.

In primul rind, ne este dat un link catre un articol in care Raymond Chen povesteste despre un asa-zis “for-if anti-pattern”. Imi pot inchipui cum formatorii de opinie din Codexpertia au schitat un zimbet condescendent dar incredul citind despre tendintele unora de a lua la rind elementele din directoare sau hash map-uri in cautarea unei valori. Cu certitudine nici cel mai prost aspirant nu ar scrie asemenea cod, nu? NU?

Ma rog, in asteptarea momentului in care Silviu va face apel la Regula 0 si Cucu il va bana pe Raymond Chen de pe codexpert, sa ne indreptam atentia spre o noua propunere din categoria Radio Erevan: [WinAPI] Cum aflu frecventa procesorului? Dupa cum ne-a obisnuit, sectoristul iscoditor nu se multumeste sa-si raspunda la intrebari cu un simplu “nu stiu”, ci insista sa ne demonstreze prin cod ca habar n-are. Prima metoda expusa de dinsul, in legatura cu care avea nedumeriri si acum 9 ani, nu reuseste sa ne dea valoarea exacta, dar se apropie. A doua metoda are avantajul de a fi mai “simpla”, dar din pacate are si un dezavantaj: returneaza tot timpul 0. Unii cititori vor spune ca decit gresit, mai bine deloc, insa altii vor sustine ca dimpotriva, mai bine ceva decit nimic. Gardianul Ovidiu lasa aceasta decizie de ordin filosofic la alegerea ta.

Si cum fara norme de buna purtare n-am putea face nimic pe lumea asta, ultimul imbold muncitoresc ne trimite la un articol in care Danny Kalev ne spune cum putem determina cu usurinta daca stim sa programam. Pe Danny l-am cunoscut intr-un episod anterior, in care ne arata ca nu stie ce face header-ul iosfwd, desi in CV se jura ca a fost baiat de comitet C++. De data asta el isi ia si mai in serios rolul de chibit, spunindu-ne ca n-ai voie sa faci clase cu mai mult de 8 metode publice, dind si exemplul std::string, care in opinia sa este de mare cacat si ar fi trebuit spart in mai multe clase care sa deriveze unele din altele. De asemenea, n-ai voie sa folosesti propriile containere in loc de std::map sau std::vector, deoarece Danny a citit pe Internet ca ce ni-i dat in STL este thread-safe si imbatabil ca performanta. Sigur, nu conteaza ca nu le poti folosi in interfata unui LIB/DLL/SO, ca majoritatea fac o alocare per element si se tiriie ingrozitor din cauza asta, ca poate ai nevoie sa fie lock-free, sau alte astfel de lucruri care ii preocupa doar pe inferiorii care scriu cod. In capul lui Danny conteaza ca au rvalue references, pentru a se comporta optim intr-o serie de cazuri in care oricum n-ar fi trebuit sa ajungi. Danny n-are timp sa scrie cod, e prea ocupat sa scrie pilde. A da, si n-aveti voie cu pointeri; daca ar fi dupa Danny, s-ar scoate de tot pointerii din limbaj si s-ar inlocui cu tipuri clasice, de exemplu vectori sau structuri.

 

Tags: , , , , , , , , , , , , , , , , , ,

Stop. Hamming time.

Posted in Premiul n00bel on October 20th, 2011 by Mihnea

Mai stiti cind zicea Marius Bancila ca distanta Hamming este cea mai rapida metoda de a calcula distanta Hamming (sau ma rog, “Hammering” cum a botezat-o el initial)? Mai stiti cind ziceam eu ca timpeniile codexpertilor sint contagioase? Ei bine, iar am avut dreptate:

Inainte de asta domnul Richard [Hamming, n.r.] s-a jucat cu numaratul bitilor dintr-un string de bytes si, asa cum s-a mai discutat pe acest forum, a generat cea mai optima metoda in acest sens.

Acum crezul asta dublu-pleonastic este intiparit in mintea lui bu7ch3r, iar el ii va infecta la rindul lui pe altii. Deci copii, aveti grija sa va protejati cind intrati in codexpertia, ca altfel luati chestiuni ce nu trec nici cu Moldamin.

Putin mai devreme am primit de la colegul de redactie acest link in care se povesteste cum au dispersat comunistii o rascoala a minerilor stropindu-i cu cacat. N-ar fi frumos ca intr-o zi cacatul cu care aruncam noi inspre codexpertia sa disperseze minerii de acolo?

PS: bu7ch3r a mai avut citeva interventii ce m-au facut sa suspectez ca este un membru conspirat al Rezistentei angajat intr-o campanie de trollaj extrem de fin. Daca e asa, felicitari tovarase. Daca nu, nu.

Tags: , , , , , , ,

Mineguru

Posted in Codare cu premeditare, Premiul n00bel on October 18th, 2011 by Mihnea

Dupa cum remarcam intr-un comentariu anterior, minerul si-a luat putin din pila articolul ala copiat de pe codeguru si l-a pus pe codeguru. Citind el ce i-am zis despre functia imaginara snwprintf() si alte aberatii, a schimbat placa si n-a mai incercat sa fie cross-platform, ci a incercat sa fie cross-character set. Problema de pornire s-a schimbat peste noapte si a devenit:

The writing of this buffer was done using: vswprintf(). As we know, this function is unsafe and is not recommended.

Iar solutia ar fi:

#if defined(UNICODE) || defined(_UNICODE)  
#define usprintf(x, ...) \
   _snwprintf(x, _countof(x)-1, ##__VA_ARGS__); \
   x[_countof(x)-1] = 0
#else
#define usprintf(x, ...) \
   _snprintf(x, _countof(x)-1, ##__VA_ARGS__); \
   x[_countof(x)-1] = 0
#endif

Lasind la o parte faptul ca n-a inteles cind i-am zis ca macro-urile cu mai multe statement-uri nu se scriu asa, trebuie sa ne intrebam totusi urmatoarele:

  • de ce e vswprintf() “unsafe”, si de ce e _snwprintf() mai “safe”?
  • cum inlocuiesti un apel la vswprintf(), care doreste un va_list, cu macro-ul ala imbecil?

Si daca trebuie sa ne intrebam, ne-am intrebat. Ortacul a facut greseala fatala de a posta pe un site unde nu poate sterge comentariile incomide. Veni si raspunsul:

Sorry, I’m not talking about vswprintf() versus _snwprintf(). I just decided to use one of these.

Ok, n-a inteles intrebarea, deoarece era pusa in limba lui Shakespeares si se referea la articolul lui, pe care doar l-a scris, nu l-a si citit. Am incercat o reformulare, pe care a inteles-o si a raspuns cu un copy/paste din MSDN urmat de propria concluzie:

“Using vsprintf, here is no way to limit the number of characters written, which means that code using this function is susceptible to buffer overruns. Use _vsnprintf instead, or call _vscprintf to determine how large a buffer is needed. Also, ensure that format is not a user-defined string. For more information, see Avoiding Buffer Overruns.” Same story with vswprintf().
http://msdn.microsoft.com/en-us/library/28d5ce15(v=VS.80).aspx

Priviti-l, stimati concetateni, in toata splendoarea lui. Acest cercopitec e atit de sigur pe el incit imi da condescendent si un link la MSDN pe care el nu l-a citit. I-am indicat gratios faptul ca o pula “same story”, asa ca a editat articolul, a pus swprintf() in loc de vswprintf() si a declarat:

The functions used in the macro (_snwprintf/_snprintf()) are not proper to replace functions like vswprintf() – this function has different count of mandatory parameters and uses a list of arguments parameter. Sorry, in article I mean swprintf() witch is unsafe. Thanks for observation.

Aha, doar ca nici vrajitoarea swprintf() nu e “unsafe”, dupa cum i-am explicat deja, dar a uitat; si dupa cum scrie in link-ul la care ma trimitea pe mine, pe care tot nu l-a citit. Silviu nu are nevoie de documentatie sau de realitate, el are 11 ani de experienta.

Va tin la curent pe masura ce-si editeaza articolul si-si fabrica noi justificari, ca in vremurile bune. Sper ca se va incheia triumfal cu Bancila sau Cucu (care sint moderatori pe site-ul ala de tutorialisti indieni) operind “small cosmetics” asupra comentariilor mele.

 

Tags: , , , , , , , , , , ,

Incompetenta de miercuri dimineata

Posted in Premiul n00bel, Slagare internationale on October 5th, 2011 by Mihnea

Pe linga ziarul ce are pe post de editor-sef un bot (nu, nu ala), codexpertii au si o agentie de stiri de la tribuna careia informeaza Universul despre lucrurile care-i umplu de uimire si bucurie. Vislind prin torentul de platitudini si fantezii Metrosexuale marca Kanal 9, azi dimineata am dat de citeva cugetari programatoricesti ce cred ca au nevoie de un plus de mediatizare cum numai site-ul nostru le poate oferi.

Prima propunere codexpertica ne indreapta pasii spre reputata publicatie a doctorului Dobbs, unde reputatul Mark Nelson, ce ne-a mai delectat in trecut cu bijbiielile sale in lumea STL-ului, expune o metoda revolutionara de a automatiza login-urile in putty. Odiseea lui Mark zugraveste in culori tipatoare dirzenia unui erou pornit pe drumul consacrarii. El se ia la trinta cu toate obstacolele aruncate in cale-i de zei si soarta, descinde in pintecul bestiei si intr-un final o struneste magistral dupa ce-i umbla prin surse si-i infige un WM_COPYDATA direct in inima. Sigur, ce vrea el acolo se putea face un pic mai simplu folosind public key authentication, dar o poveste despre cum sa pui calea catre un fisier in setari SI ATIT nu e la fel de captivanta ca un poem epic pe 4 pagini despre perseverenta si viol.

Pentru a doua propunere raminem tot pe tarimul bunului doctor, caci Dan Saks, de profesie profesor profesionist, are o opinie si nu se teme s-o foloseasca. In fiecare secol se naste un geniu care schimba modul in care semenii sai privesc lumea. Dan isi depune candidatura pentru acest titlu cu un articol despre unde sa pui keyword-ul const. Pentru colectia de toamna-iarna 2000-2099, el ne propune un “stil neconventional”, spargind tiparele si preconceptiile pentru a redefini normalul si a lasa codul sa zburde liber si aspirational, scapat din ghearele ternei ambiguitati. Cam ca astea:

Practic Dan rezolva in acest articol ultima dar si cea mai mare problema a filosofiei esteticii gnoseologiei programarii. Generatiile viitoare nu-si vor mai pune intrebari despre CUM sa scrie codul, ci se vor preocupa doar de banalul CE sa scrie. Oricum, cred ca e timpul ca drdobbs.com sa se afilieze la AXTI, sa publice Regula 0 pe prima pagina si sa comaseze (sau consolideze, cum se zice acum) toate categoriile alea din stinga sub un singur stindard: “Working is the delight me, thinking is the disgust or revolting me”.

Ultima propunere a zilei ne trimite la un blog mesedenistic unde un indian neidentificat ne arata cum sa ne alegem algoritmul de sortare paralela. Intentiile sale sint bune, pina ajungem la cod si vedem ca singele indian apa nu se face:

std::vector<int> GetInputRandom(const size_t& numElems)
{
    std::vector<int> v;
    for(int i=0; i < (int)numElems; ++i)
    {        
        int e = i;
        if ((rand() % 2) == 0)
            e = -e;
        v.push_back(e);
    }

    std::random_shuffle(v.begin(), v.end());
    return v;
}

Sa-mi spuna si mie cineva de ce cacat ai vrea sa trimiti un intreg ca un pointer const, in loc sa-l trimiti direct. Obligi compilatorul sa puna intregul ala undeva in memorie (chiar si cind e o constanta), ca sa poata sa dea adresa lui catre functie, ca functia sa ia adresa de pe stiva si s-o dereferentieze ca sa obtina valoarea, iar adresa aia are fix aceeasi dimensiune ca intregul respectiv. Si e mai mult cod de scris. DE CE? De ce scriu oamenii “cod didactic” in halul asta, si de ce returneaza vectori by value, in loc sa-i trimita ca parametru? De ce nu face reserve sau resize pe vector, daca tot stie cite elemente va avea, si de ce isi da numElems ca size_t, daca stie ca ii trebuie ca int si il si casteaza la int cum il prinde? De ce acesti muisti invata generatiile urmatoare sa scrie cod in halul asta, si de ce sint lasati sa publice asemenea dejectii pe MSDN? Cine e seful astuia si de ce nu-l incuie intr-o pivnita fara internet, de unde sa nu poata otravi mintile fragede? Sau poate asa scrie indianul cod si in practica, si d-aia are nevoie Visual Studio de 5 ani ca sa porneasca?

Ca bonus, iata la ce se ajunge cind incepi sa returnezi vectori by value si pe drum vrei sa te dai si (cod)expert in C++11:

std::vector<int> sawtoothData(std::move(GetInputPreSorted(toothSize)));

Incredibil.

Acum vreo doua saptamini am mai vazut un articol (pe codeguru, parca) ce primise binecuvintarea codexpertilor in care un cretin explica pe 5 pagini cum sa faci un state machine si in tot codul pasa si returna vectori si string-uri by value. Mi-e lene sa dezgrop link-ul, dar cum pula mea ba? De ce au astia voie sa scrie articole?

Muie Internet.

 

Tags: , , , , , , , , , , ,

Invataturile minerului Silviu Ardelean catre cine l-o asculta

Posted in Premiul n00bel on September 29th, 2011 by Mihnea

Ieri seara un incepator extrem de ghinionist s-a ratacit pe codexpert, punindu-si astfel serios in pericol sansele de a invata vreodata sa programeze. El a intrebat de ce compilatorul ii da eroarea “non-lvalue in assignment” in codul if(x%20=0).

Ovidiu i-a dat omului rezolvarea, dar Silviu a simtit ca e loc si pentru o contributie a sa, caci schema de desfasurare a discutiilor aprobata in sedinta plenara de consiliul suprem al expertilor este intrebare – raspuns (optional) – propunere. Ca si in episoadele anterioare, utilajul minier semi-autonom s-a activat la un cuvint cheie fara sa inteleaga contextul si a emis urmatoarea Cugetare Predefinita:

Aditional la cele spuse de Ovidiu iti recomand ca atunci cand ai conditii cu constante sa pui constanta in stanga. La astfel de greseli compilatorul iti va da peste degete inainte de-a rula aplicatia, evitand astfel de buguri: if(0 == x%20) …

Deci: daca scrii 0 = x%20, compilatorul iti va da eroare, spre diferenta de cazul in care scrii x%20 = 0, cind iti va da exact aceeasi eroare. Bug evitat! Vorba aia, Regula e Regula. In programare e ca-n minerit: trebuie sa te bazezi pe reflexe, nu ai timp sa gindesti.

Este amuzant si cum a ratat ocazia de a o da la intors spunind ca de fapt a zis altceva decit a zis. Daca n-ar fi ilustrat propunerea cu cod, ar fi putut pretinde ca vorbea despre cazul real in care se aplica gaozaria aia cu literalu’ in stinga, dar din exces de zel s-a coborit in mocirla concretului si acum nici nu se mai poate baza pe Ovidiu sa-l ajute cu “few cosmetics”. Ca tot ii plac lui citatele, o sa citez si eu din operele unui instalator cu care am avut mai demult onoarea sa port o discutie: “Meseria asta (mineritul, n.r.) e mai grea decit carnea de porc”. Amin!

Tags: , , , , , ,

Izbavirea programatorilor 3D e aproape

Posted in Premiul n00bel, Slagare internationale on September 19th, 2011 by Mihnea

Microsoft au mai avut de-a lungul timpului diverse idei nastrusnice gen Songsmith sau momente de imbecilitate absoluta gen MSI, dar acum incep sa cred ca le pune cineva LSD in brifcor. Dupa ce au transat problema shell-ului, aratindu-ne ca PC-ul a murit si viitorul apartine tabletelor pe care vei putea sa vezi poze fullscreen si cam atit (nimeni nu va scrie soft pentru tabletele alea, ca nu poti sa scrii soft pe tablete), acum au decis ca e timpul ca si Visual Studio sa capete niste glam. In speta, s-au uitat cu atentie la nevoile programatorilor 3D si raspunsul lor a fost asta (am link-ul de pe twitter de la codexpert, care l-au postat cu maxim de entuziasm, conform principiului ca daca nu intelegi ceva, probabil e cool):

Pe scurt, programarea 3D tocmai a devenit accesibila tuturor multumita urmatoarelor dispozitive revolutionare:

  • editorul ala inutil de imagini din VS care l-ar face sa se sufoce de ris pe un utilizator de Paint poate acum sa deschida DDS-uri. Ce mai, un vis devenit realitate.
  • VS contine un viewer de FBX-uri. In film ni se spune ca-i cel mai folosit format 3D sau ceva. Epic.
  • PIX e integrat in VS. Asta nu-i un lucru rau, dar evident nu se mentioneaza ca-i ceva ce exista de vreo 6 ani pe PC si 9 pe Xbox, ci este prezentat ca un feature nou.
  • au implementat un editor vizual de shadere. Nu pot nega factorul ridicat de coolness al zoom-ului aluia care iti deseneaza nodurile in 3D cu un model de preview deasupra, dar pot nega utilitatea respectivului editor. De fapt, pot spune ca te pisi pe el. O sa-l deschizi o data sa te bucuri cum face zoom, dupa care o sa descoperi ca e la fel de util ca mental mill si alte chestii d-astea. Artistii nu vor folosi in viata lor Visual Studio ca sa ia shaderele din pila, programatorii saraci vor vedea ca-i de jucarie si e prea mare bataie de cap sa-l integrezi in engine, iar programatorii bogati au Unreal.

Aceste cacaturi provin din plictiseala. Un programator plictisit s-a decis sa incropeasca un viewer de FBX-uri (care va crapa sau va desena spike balls cu 60% din fisierele pe care i le dai ca na, e FBX), PM-ului plictisit i s-a parut extraordinar de cool si asa a devenit un feature. Programatorul ala e rockstar acum, iar VS are inca niste bloatware in el. Edit and continue tot nu merge in 64 de biti si IDE-ul porneste tot de aproximativ 5000 de ori mai incet decit VC6, desi nu face mai nimic in plus. Numarul de programatori de DX care au nevoie sa vada FBX-uri in general este egal cu numarul de programatori care au nevoie sa vada FBX-uri in VS, adica 0, dar acest lucru este irelevant. Ce e relevant este ca putem sa ne aratam coolness-ul pe Kanal 69 intr-un interviu luat de un dobitoc platit sa spuna “wow” din 2 in 2 minute IN FIECARE FILM.

Revolutia a fost intimpinata cu urale de catre aplaudaci. theahuramaz​da ne arata ca intotdeauna e bine sa ai o opinie, chiar daca nu e bazata pe nimic:

I’m not a DirectX developer(dabbled a bit) but this does look very cool and extremely productive.

HeavensRevenge cistiga insa detasat cursa retardarii de saptamina asta:

Nice render tree! Please take notes from XSI (Autodesk Softimage) render tree editor since it is the king of Shader “tree” editors in my eye.

(Pentru fericitii care nu au avut de-a face cu mizeriile astea, editorul din Softimage este cel mai cretin lucru cu putinta, cu exceptia aluia din Max, care de fapt e un hack mincinos, deci nu se pune).

Tags: , , , , , , , , , ,