Cu ce limbaj începi?

Cu ce limbaj începi? ©

Vrei să te amuzi? Citește comentariile de aici, unde o întreagă ceată de adulți responsabili recomandă C++, Java și .Net pentru cineva care e la început de drum.

Sau să vezi cum mulți încep să bată câmpii despre liceu, facultate, ce limbaje se caută și tot așa.

Am zis că e pentru un copil de șapte ani?

Pentru că mulți au uitat cum e la început, uite care sunt secretele asimilării unui limbaj:

  1. Trebuie să fie suficient de simplu pentru a putea fi înțeles prin trial & error. De asta BASIC a fost inclus pe toate HC-urile. Îl puteai rula oricând, puteai modifica, puteai vedea instant rezultatele modificărilor tale. Cum compară cu un limbaj compilat, de exemplu C, unde trebuie să scrii 10 linii de cod pentru un simplu hello world. Chiar și Linus Torvalds a zis că a început cu BASIC, deci scuza cu „basic îți strică modul de gândire” este puerilă.
  2. Este nevoie de ceva vizual. Nu, nu la modul Visual C++ ci la modul „dacă schimb asta, apare asta pe ecran”. Și nu, nu trebuie să ai grafică 3D ci este suficient să te întrebe numele, să schime litere etc. Chestii super simple!
  3. Trebuie să existe suficiente metafore pentru a explica ceva. Oricât de evident ar fi pentru tine, ca adult, metafora „Clasa Ford moștenește Clasa Mașină”, pentru un copil s-ar putea să nu fie chiar atât de evident. În schimb, un goto s-ar putea să fie mai util, mai ales dacă a jucat vreodată „Nu te supăra frate;)

Iar astea sunt chestii foarte evidente nu pentru că ai considera că respectivul copil e prost – cum s-a sugerat în comentarii – ci pentru că respectivul copil nu se poate raporta la nimic atunci când îi explici ceva din OOP.

Și ca să răspund la întrebarea din titlu: începi cu Basic, Python sau Ruby. Toate au sintaxă și directive suficient de simple pentru a fi înțelese de oricine care înțelege minimum de engleză.

PS: dacă un limbaj este căutat azi nu este nimic care-ți garantează că peste zece ani va fi la fel de căutat. Sau peste 15; am menționat că sfaturile erau pentru un copil de șapte ani?

8 Comentarii

Malin a scris

Eu la 12 ani am inceput cu QuickBasic si am invata suficient incat sa pot intelege ulterior si C si PHP si o gramada de alte limbaje. Nu scriu cod decat foarte rar si cand o fac de obicei modific cod existent sau repar diverse erori pentru ca n-am perseverat cu programarea si n-am mai invatat cap-coada niciun alt limbaj de atunci.
Uite un exemplu concret: am invatat Basic acasa si in liceu colegilor mei li se explica structura limbajelor de programare si tot felul de chestii care nu ma interesau pentru ca le stiam deja asa ca eu stateam pe net si profesoara m-a prins ca mi se oglindea monitorul intr-un geam din spatele meu.
M-a intrebat ce fac si i-am zis ca scriu in Pascal (asta se preda la liceu atunci) un program care sa rezolve ecuatia de gradul 2 pe care o scria ea pe tabla ca PoC. Stia ca mint, dar mi-a zis ca daca termin pana la pauza am nota 10, altfel am 4.
Nu scrisesem in viata mea o linie de cod in Pascal asa ca am cautat repede sintaxa pe net si am scris programul, iar profesoara s-a tinut de promisiune.
Asa ca zau acum, pana la urma modelul de urmat ar trebui sa fie identic cu restul invatamintelor pe care le deprinde un copil. Scrierea si matematica nu incep cu romanele lui Cartarescu sau ecuatii ci cu alfabetul si operatii de baza precum adunarea si scaderea si e absurd sa crezi ca in programare se poate altfel.

Paul a scris

Eu am inceput cu QBasic, am uitat tot, am continuat cu ActionScript (un soi de JavaScript) apoi am invatat C (a se intelege ca pana la C doar m-am jucat).

As zice ca la inceput ar trebui sa se invete programare, nu un limbaj. Prea des aud chiar si studenti legand concepte de sintaxa unui limbaj („fac un for in for”, „un nod intr-un tree are 2 pointeri”). Cat despre copii, stiu copii(10-14 ani) care au invatat foarte bine programare incepand cu C. Altii cu PHP, altii cu Python. Nu as spune ca C e greu de inteles/imaginat pentru un copil daca este ghidat corespunzator, dar poate fi un efort mai mare necesar pentru a-l explica si nevoie de o dorinta mai mare din partea copilului. Pe de alta parte, nu stiu daca aruncand sub pres unele probleme fundamentale (cum ar fi tipurile variabilelor) in limbaje „usoare” precum Python e o solutie – la un moment dat te vei lovi de ele si spor la explicat. In limbajele strongly typed, macar e clar de la inceput ce si cum.

Ionuț Staicu a scris

@Paul:

Pe de alta parte, nu stiu daca aruncand sub pres unele probleme fundamentale

Pentru un copil chestia asta e atât de neimportantă încât nici nu ar trebui adusă în discuție.

Educația unui copil se face cel mai bine prin… joc (de asta Montessori și Waldorf au mai mare succes). Și într-un joc vei avea nevoie de asemenea detalii cam… niciodată. De fapt, vei avea probleme când vei încerca să aduni un string cu un integer, dar asta ar fi acele mici gotcha care îți pun puțin mintea la treabă :)

Nu zic că e imposibil să începi cu C sau ASM, dar poate că o introducere mai blândă reduce posibilitatea unui „fuck it, nu e pentru mine!” venit din partea copilului.

Gigel Anonimu' a scris

Pentru un copil de 7 ani primul limbaj ar trebui sa fie engleza. :) Dupa vorba ta, ceva vizual – Tynker, Scratch, etc. Python sau Basic sunt deasemeni alegeri bune. C/C++ doar daca are inclinatii deosebite catre IT si programare.

Eu am inceput cu x86 ASM dar aveam 24 de ani. Dealtfel pentru adultii care vor sa devina programatori ASM -> C -> C++ or C# -> JS or Python mie se pare un drum foarte bun de urmat – intelegi masina si cum lucreaza, procedural programming urmat de OOP urmat de scripting. In felul asta nu capeti prea multe obiceiuri proaste. :)

Ionuț Staicu a scris

@Gigel Anonimu’: Ajută engleza? Cu siguranță. E indispensabilă? N-aș zice.

Orice limbaj are un set relativ mic de cuvinte cheie/funcții uzuale; le înveți mecanic și aia e. La mine au fost cel puțin cinci ani între „primul program scris” și „înțeleg/pot scrie engleza la un nivel decent”.

Gigel Anonimu' a scris

@Ionuț Staicu: Agree to disagree. O mare parte din documentatie/carti/articole/tutoriale este scrisa in engleza. Engleza este lingua franca a programarii. Mai ales daca inveti singur si n-ai acces la cursuri in limba ta nativa.
Sigur, daca programarea e doar un hobby sau o chestie pe care o faci ptr. prima data iti poti permite sa nu stii engleza. Daca vrei insa sa evoluezi – engleza tata. :)

Ionuț Staicu a scris

@Gigel Anonimu’: absolut, sunt de acord cu tine. Dar când ești tabula rasa, ai nevoie de minimum de instrucțiuni. Nu vei intra în design patterns din prima zi. Nu vei toca TDD sau BDD din prima săptămână.

Dar din nou, vorbim de un copil de șapte ani care își descoperă hobby-uri.

Gândește-te cum ar fi să vrei să tai ceva cu bomfaerul și să-ți zică cineva: oh, dar stai, trebuie să știi chimie, să vezi cum e cu structura metalului, trebuie să știi ceva din rezistența materialelor șamd. Iei, tai, vezi dacă te descurci.

La fel și cu codul când ești la prima linie de cod din viața ta.

Adaugă un comentariurăspuns pentru

Link-urile în context sunt binevenite. Comentariile fără nume/email valid sunt șterse.

Site-ul blog.iamntz.com utilizează cookie-uri. Continuarea navigării presupune acceptarea lor. Mai multe informații.