Înainte să recomandăm, hai să …

Înainte să recomandăm, hai să …

Întâlnesc des întrebări de genul „vreau să încep să programez, ce limbaj recomandați?”. Și sunt întrebări legitime. Sunt extrem de vagi, dar sunt legitime, pentru că cel care întreabă știe că vrea să programeze. Îl atrage asta, ar vrea să încerce, dar nu știe cu ce să înceapă.

Problema nu este la întrebare, problema e la răspunsuri, care sunt de două feluri: recomandări de cărți sau de limbaje.

Cărți

Când vine vorba de programare, sunt câteva cărți ce nu au fost citite de mulți, dar sunt extrem de recomandate:

Cum știu că cel ce le recomandă nu le-a citit? Ei bine, problema cu cărțile astea este că sunt cărți de pus în bibliotecă și uitat de ele, mai ales pentru programatorii auto-didacți. Chiar dacă numele primelor două lasă impresia unor cărți accesibile, dedicate începătorilor, sunt cărți complexe, ce dau bătăi de cap până și programatorilor profesioniști.

Ultima carte este dedicată celor ce stăpânesc un limbaj – oricare! (chiar dacă exemplele sunt în Java și parcă C) – și au nevoie de niște idei de organizare a codului. Un începător va fi înțelege cuvintele, dar nu va înțelege conceptele.

Limbaje

La limbaje e o adevărată aventură: Începe cu Java! C e baza! Vezi PHP! Ba nu, JavaScript e viitorul!

Iar problema e asemănătoare cu cea de la cărți: recomandăm un limbaj care este căutat azi, învățăm oamenii că e important să fie stăpân pe limbaj și … aia e. Dacă în cinci ani nu se mai caută limbajul, ghinion.

Ce propun

Aș vrea foarte mult răspunsurile astea însoțite și de mici informații de genul:

  • Ești autodidact sau ai urmat cursuri la o școală/facultate?
  • Ce experiență ai în programare? Ce experiență ai cu limbajul recomandat?
  • În ce stadiu al carierei ai experimentat limbajul recomandat.

Vorbim despre chestii d’astea de bun simț. Ce ziceți, se poate?

4 Comentarii

Gigel Anonimu' a scris

Taocp? Introduction to algorithms? LOL. Nu stiu daca 1% din toti programatorii din lume au citit vreuna din cartile astea (mai ales Taocp) sau macar daca le inteleg. Probabil 0.1% sau chiar 0.01% e mai aproape de adevar. Adica unul dintr-o mie/zece mii.
Utile daca scrii compilers, navigation software ptr. rachete sau kernel.

Design patterns e mai usor de inteles dupa ceva exp.

Roadmap ptr. incepatori? ASM -> C -> C++ sau C# -> JS sau Python. In ordinea asta si ptr. primele macar notiuni de baza. Macar cateva sapt. cu fiecare limbaj pana afli ce ti se potriveste. Probabil merg si in ordine inversa, in functie de aptitudinile si curiozitatile fiecaruia.
Si evident invatand limbajul dintr-o carte ptr. o viziune completa.
Ptr. ca la fel ca si felurile de mancare, nu stii ce-ti place pana nu incerci mai multe. :D

Ionuț Staicu a scris

@Gigel Anonimu’: Hai mă, termină cu asm, c, java. Astea sunt limabaje ce le recomanzi celor ce nu vrei să se apuce de programare. Ruby sau Python e potrivit pentru începători. POATE JS și PHP.

Încearcă să vezi învățatul prin ochii unui începător absolut. Pentru cineva care este la început de drum ai nevoie să excluzi toate lucrurile ce pot duce la confuzie: compilare, punct și virgulă, acolade. Ca idee, operatorii logici (!, &&, ||) sunt mult mai lejeri în python: not, and, or :)

Imaginează-ți că vrei să te apuci de tâmplărie și intri pe un forum de profil. Și ceri sfaturi. Și observi că ți se recomandă doar lemn de nuc, circular nu-știu-de-care, strung de 7439W, router, CNC șamd. Când, de fapt, tu vrei să vezi dacă te ridici la nivelul lui Isus sau nu. Ai nevoie doar de niște cuie, o teslă și un fierăstrău….

Gigel Anonimu' a scris

@Ionuț Staicu: Cum am zis – depinde de om, de abilitatile si curiozitatea lui.

Eu am inceput cu ASM dupa vreo cateva zile de Basic ptr. ca vroiam sa inteleg, chiar sa inteleg cum functioneaza masina la nivel cold metal. Vroiam sa incep initial cu binary opcodes, scris 1 si 0 manual, da’ pana la urma am facut un compromis si am ramas la x86 ASM. :))

Inteleg ca poate unii n-au chef sa-si bage nasul in maruntaiele programarii sau poate sunt mai putin masochisti. De-aia am zis mai sus ca e ok si daca fac ruta inversa: JS/Python -> C++/C# -> C -> ASM. Ba poate ruta inversa e mai buna ptr. ca deja „banghesti” concepte de programare si ai sanse sa stapanesti mai bine limbajele alea „grele”.

Deci ori incepi cu JS/python si mergi catre ASM, ori incepi cu ASM si mergi catre JS/Python, whatever. Ce conteaza e sa mergi pana la radacina limbajelor (sau pana la ramuri daca incepi de la radacina), macar in vizita daca nu permanent. :)

Repet, tine mult si de om si de ce vrea sa faca. Am un prieten care lucreaza ca finance guy si vrea sa invete python ptr. data parsing. Lui probabil o sa-i ajung python-ul forever.
Dar cineva care vrea sa invete programare bine (sau cat de bine posibil) trebuie sa treaca prin furcile caudine. Asta inseamna pointers, registri, floating points formats, etc. Toate chestiile pe care le ia for granted.

Ca sa folosesc analogia ta cu tamplaria, e ca si cum cineva ar vrea sa invete cum sa construiasca mobila. Si ar putea sa inceapa cu scule sofisticate (dar oarecum rigide si un pic neperformante) care fac lucrurile foarte usoare.
Dar mai devreme sau mai tarziu tot trebuie sa invete sa lucreze cu scule primitive cum ar fi un ciocan si-o mana de cuie. S-o faca ptr. a deveni mai apreciativ ptr. sculele performante sau ptr. a deveni un tamplar mai bun, mai flexibil.

Alex a scris

Eu unul refuz sa raspund la intrebarea seaca „vreau sa ma apuc de programare, ce limbaj?”. Prima data rafinam intrebarea, si apoi vedem ce recomandam.

Nu de alta, dar daca ce vrea omul sa faca este … nush, web scrapping, poate Python e o idee buna, ca are biblioteci integrate. Insa daca vrea omul sa faca dezvoltare pentru Android, atunci ne orientam spre ceva care are support pentru asa ceva – Java, Kotlin etc. Vrea omul sa faca GUI pentru desktop, in Windows? Pai C# in Visual Studio ar fi o idee buna.

In orice caz, daca esti nehotarit in ce directie vrei s-o apuci, atunci nu esti suficient de matur incit sa lucrezi inca in domeniu.

Ah, si apropo de alegerea limbajului pentru incepatori, mi-a placut articolul asta: https://prog21.dadgum.com/203.html

Adaugă un comentariurăspuns pentru

Link-urile în context sunt binevenite. Comentariile fără nume/email valid sunt șterse.
PS: Comentariul NU este editabil.

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

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

windows apple dropbox facebook twitter