Cel mai bun limbaj de programare! Incepatori

Salutare tuturor!
Cred ca pe grupul asta, 100% sunt multi incepatori in programare care vor sa isi inceapa o cariera in IT, dar totusi nu stiu de unde sa inceapa. Am decis sa deschid topicul asta si sa va cer parerea. Ce limbaj de programare considerati ca e cel mai bun pentru un incepator?
Prin “cel mai bun”, vreau sa ma refer la:

  • bine platit
  • beginner friendly
  • care poate rezolva in mare, toate problemele
  • biblioteci bune

Parerea mea e ca, unul dintre limbajele de programare care e beginner friendly e Python. E un limbaj bine platit, care a inlocuit alte limbaje si are o librarie foarte mare care iti permite sa te extinzi si pe partea de Software Development, nu doar pe partea de Data Science. A voastra care e?

Cel mai bun limbaj e liceul profil informatica + facultatea profil informatica. De acolo lucrezi cu ce limbaj doresti.

4 Likes

Eu zic că Python e limbajul cel mai bun pentru începători. Accesibil de început, dar se fac și lucruri serioase în el web sau desktop.

E și limbajul meu preferat, după ce-am trecut prin vreo 10 (superficial sau mai serios).

Ai o comunitate imensa de resurse și biblioteci. Și e un paradox că e bun de început, dar e folosit și la proiecte foarte mari.

Lui Python i se poate reproșa că nu e strong typed, cum sunt C++, C# etc., adică nu vei afla la compilare daca folosești ca parametru/operand un tip greșit. Strong typing ajuta mai ales la proiecte mari și foarte mari, unde e mai dificil să depanezi.

Aud că la UBB se face acum Python in primul an.

3 Likes

Eu nu am folosit python la nimic serios, e folosit in machine learning, boti si scraping destul de mult. Se poate realiza si un backend destul de bun cu FastAPI de exemplu. Ai micropython pe embedded, dar iti limiteaza drastic memoria disponibila.

Problema cu python e ca e foarte greu sa inveti ce se intampla in spate. E un limbaj foarte bun ca sa intrii in programare si sa vezi cum scrii un algoritm, dar dupa cand lucrurile devin foarte complexe nu te ajuta. Ideal inveti python, te atrage spre programare dar dupa trebuie sa te fortezi sa cresti, te duci spre un proiect care necesita altceva. Unde se foloseste python problema nu e programarea sau algoritmul ci matematica/ordonarea/normalizarea datelor (data wrangling).

Exemple de limbaje dupa utilitate:
Exista limbaje care iti arata cum sa procesezi datele in mod functional ca sa poti garanta (in mod teoretic, ca e imposibil sa verifici) ca programul tau e corect si pur (adica daca rulezi acelasi program mereu va returna acelasi output pe un input). Primul care imi vine in minte e Haskell, dar e si Clojure, Lisp, Scala si multe altele. E mult mai greu ca si Python, daca te-ai obisnuit cu python o sa iti fie foarte greu sa inveti programare functionala.

Exista C++, care te ajuta mult cand scrii jocuri, ceva realtime fiindca nu exista un garbage collector, un garbage collector are un stop the world event care iti introduce pauze din ce in ce mai lungi cu cat folosesti mai multa memorie. Vezi Java si Minecraft, in functie de cata memorie ai o sa ti se blocheze jocul pentru cateva ms si poti simti asta daca te misti exact atunci sau iti apare ca atingi un cub dar nu se intampla nimic. Cu C++ inveti despre memorie (trebuie sa o aloci si dealoci manual), pointeri si type-uri. Poti invata si assembly cu el, poti decompila codul de C/C++ in assembly si sa vezi ce face codul tau in procesor si memorie. (poate fi foarte important la embedded sau din cauza securitatii, vezi usor daca ceva face ceva ce n-ar trebui)

Exista Java, Kotlin, C# care sunt foarte utile cand iti trebuie un framework, utilitar, o platforma sau chiar client care le foloseste, de exemplu C# e folosit cu Unity, care e unul din cele mai bune framework-uri pentru creat jocuri. Java e folosit la aplicatii foarte mari, ai librarii mature pentru cam orice, e mai multa configurare decat programare ca sa realizezi aplicatii foarte complexe. Kotlin e un limbaj mai modern compatibil cu librariile pentru Java, e folosit in mod nativ pe Android. Altfel ca si avantaj major la Java/C# sunt cartile si cursurile disponibile. Sunt limbaje sprijinite de cele mai mari companii - Oracle, Google si Microsoft. C# si Kotlin pot fi similare cu TypeScript - util daca faci Full-Stack, C# e si limbajul multor aplicatii pe Windows. Pe Mac/iOS ar fi Swift si Swift Playground-ul e probabil cel mai bun mod de a incepe sa inveti despre programare.

Exista Go, care iti permite sa scrii programe multi-threaded pur si simplu scriind ‘go’ in fata unei functii. (bine e putin mai complicat de atat) E si mai special fiindca returnezi mereu valoarea si eroarea (ai 2 return-uri de la o functie) si trebuie sa tratezi mereu erorile. - Te invata sa tratezi mereu erorile, sa programezi defensiv.

Exista Rust, Rust e un limbaj mai special care iti garanteaza ca daca codul tau se compileaza nu vei avea erori la rulare. Te invata foarte multe pattern-uri utile - care nu sunt optionale si implica mult efort pentru a le intelege. La fel ca C++ nu are garbage collector, dar se asigura din principii ca o sa scrii cod sigur. Vrea sa inlocuieasca C/C++.

Exista JavaScript, care ruleaza in browser in mod nativ, e cel mai util limbaj fiindca apesi F12 si poti sa il folosesti. Pentru proiecte serioase ai TypeScript. Nu e un exemplu de limbaj foarte bun, dar e puternic si util. Poti sa il folosesti si pe server cu NodeJS. Se poate combina cu webassembly.

Exista bash, care ruleaza in terminalul de linux/mac si chiar Windows. E un limbaj care consta din programe la care le poti lega output-ul ca si input la un alt program. Este foarte puternic, practic si util.

Daca vrei sa fii un programator serios bash cu linux si toate utilitarele sunt un must-have. Dupa poti alege python si dupa inveti ceva in functie de ce vrei sa faci. S-ar putea ca python sa iti ajunga pentru tot. Probabil nu e o idee buna pentru front-end, mobile si jocuri (chiar daca multe jocuri il folosesc pentru scripting precum lua/smalltalk).

3 Likes

Pentru începători, probabil PHP.

Python e ok, dar e complicat pentru un începător de exemplu să pună pe picioare un website scris în Python. În primul rând că pentru Python trebuie neapărat folosit un framework gen Flask sau Django, după aia trebuie să ştii cum să creezi/activezi un serviciu unix, după care trebuie să ştii să faci reverse proxy pe apache/nginx/whatever. O groază de chestii de ştiut care ar putea băga în ceaţă un începător.

2 Likes

Orice nu e Python sau JavaScript.

Python nu pentru că e greu să înțelegi ce se întâmplă în spate, cum au zis și colegii mai sus. Plus, mi se pare infinit mai greu să treci de la Python la Java/C#/Go, etc, decât invers.

JavaScript nu pentru că trebuie să rămână strict pe frontend, nu să te apuci să faci aplicații desktop cu el (da, singurul argument e că urăsc JS).

1 Like

Eu zic că Go/Golang e unul bun pt începători…

2 Likes

Nu știu de ce ar vrea un începător să știe ce e “în spate” și ce sunt aia pointeri când n-a făcut un IF sau un FOR în viața lui.

Adică nu știi să folosești un cuptor cu microunde sau legea lui Ohm, dar vrei să îl desfaci sa vezi ce e înăuntru. Îți spun eu ce e înăuntru: mii de volți. Vezi mai bine de panoul frontal prima dată. :slight_smile:

Eu am inceput cu BASIC, alții cu Pascal. Chiar sunt curios cine a început cu C++? C++ e un limbaj foarte dificil. Daca nu mă înșel unul din autorii limbajului zicea că îți trebuie 5 ani să îl înveți.

Primul pas e să înțelegi ideea de algoritm și să poți face independent mici probleme gen FizzBuzz. De ce și-ar complica un începător existența cu chestii low level din C++?

Ideea e să feliezi o problema/provocare, nu sa încerci să rezolvi toate deodată că vei fi copleșit.

Poți foarte bine sa treci apoi la C++ sau Java, nu văd care e problema. Măcar ai depășit algoritmica și alte lucruri de baza și afli apoi că obiectele alea sunt pointeri, nu e ceva magic, cum credeai la început.

1 Like

Io zic sa inveti lucruri transferabile pe care le poti aplica in orice limbaj.

1 Like

In niciun caz Python nu este pt. incepatori. Eu unul cred ca Php este cel mai bun pe partea de inceput.

Eu sunt incepator. Am inceput prin a vedea tutoriale pe youtube despre cel mai bun limbaj sa invat prima data. Unii spuneau ca python e pentru incepatori si e usor. Am inceput sa invat basic de la python care mi se pare ok de invatat ba chiar am cumparat linkedin learning sa vad niste tutoriale si acolo. Am vazut si despre C# . Am descarcat si ceva aplicatii pe mobil de invatat. Da pana la urma eu nu prea stiam ce e o variabila ce e un string ce e un oop, asa ca ideea este ca la inceput trebuie sa inveti programming foundations ca altfel nu pricepi nimic.

La un moment dat incercasem sa intru cumva pe un post de testing la recomandarea unor cunostiinte ca daca as lucra in IT as invata mai repede un limbaj de programare. Am inceput sa invat si testing cu indienii de pe Udemy ca la final din 8 interviuri sa nu ma accepte nimeni.

Daca esti incepator eu cred din experienta mea sa incepi sa inveti programming foundations ca sa pricepi ce doresti sa faci.

1 Like

Pe langa fundamentele programarii calculatoarelor (+OOP) consider ca un incepator trebuie sa abordeze prima data un limbaj statically typed si nu unul dinamic. Asta pentru a intelege mai bine cum stau lucrurile in spate, ai nevoie de asta chiar daca la prima vedere nu pare acest lucru. Este si motivul pentru care in scoala se incepe de exemplu cu limbajul C. Limbajele dinamice pot asigura un shortcut pentru animite operatiuni dar nu iti ofera o buna intelegere asupra lucrurilor daca nu le sti deja.

In al doilea rand nici un limbaj nu este simplu sau complicat, totul depinde de puterea fiecaruia de intelegere a acelui limbaj. Intradevar, Python este un limbaj acoperitor dar nepotrivit pentru a incepe si mai ales proiecte mari si asa cum s-a afirmat mai sus trecerea la statically typed e foarte dificila. De asemenea nu as recomanda JS de inceput si in principal exclud Node din orice schema datorita complexitatii (dar asta e o parere strict personala).

Ordinea mea ar fi Go (ca sa nu zic C) si apoi Python daca ne referim doar de scopul tau enuntat in primul post.

In plus cred ca ceva notiuni de baze de date cat si de Linux sunt absolut obligatorii indiferent in ce zona te plasezi.

Nu exista asa ceva.

Problemele le rezolva codul implementat de catre programator, nu limbajul.

Iar ‘toate problemele’ e un ‘pic’ cam pretentios.

Problema: Sa se simuleze un organism uman ‘ab initio’.
Toate calculatoarele din Univers: running, running, one billion years, ten billion years, 10^10 billion years, fassssss, crash, booom.
In special daca ruleaza python :slight_smile:

2 Likes

Dintre cele statically typed as incepe cu C#:

  • E un limbaj matur si folosit in industrie
  • Are o sintaxa similara cu alte limbaje populare (spre deosebire de Go)
  • Nu are atatea complicatii inutile pentru un incepator (spre deosebire de C++ sau Java cu ale sale int vs Integer)
  • Poti dezvolta orice in el (de la niste algoritmi intr-o aplicatie consola la interfete grafice native la web sau mobile)
  • Dispune de tooling matur, chiar din partea mai multor companii.
1 Like

Eu as incepe asa

Nu stiu daca ai nevoie doar de un limbaj sa rezolvi toate problemele si probabil nu o sa fie nevoie sa rezolvi toate problemele mai ales singur.
Poti sa inveti prima data bazele si dupa te poti orienta spre un limbaj.

2 Likes

Ideal ar fi să urmezi o facultate de informatică sau măcar programa unei facultăți de informatică; dacă nu-ți place de la noi, ia una de afară. Dacă nu, poți începe cu ce limbaj îți e la îndemână și de acolo tot la programa aia ajungi pentru că, în afară de limbaj, va trebui să asimilezi o grămadă de alte lucruri care sunt mai voluminoase ca limbajul.

Un alt aspect e că, chiar dacă limbajul “poate rezolva in mare, toate problemele”, problemele le vei rezolva tu. Trebuie să înțelegi problema, să o modelezi și să testezi soluția. Partea asta, tratată destul de superficial de mulți, e poate mai importantă ca programarea în sine. Vrei să faci o aplicație financiară, ai nevoie de cunoștințe în domeniu; vrei să faci MI, ai nevoie de matematică; vrei să faci ceva pentru “digitalizarea de la stat”… acolo merge, iese ce se vede. E o carte celebră de marketing care începe cu “you cannot do anything to anybody”. Fiecare nișă are preferințe pentru anumite limbaje. Poate și ăsta e un punct de plecare.

Dar dacă un criteriu important în alegerea limbajului este $$, atunci mai întâi uită-te la piață - cât de mare e, ce cerințe sunt, ce internship-uri/ job-uri pentru juniori există. Intră pe LinkedIn și fă un research, vezi ce profil au programatorii ăia în limbajul în care crezi tu că se câștigă bine. Crezi că poți concura cu ei?

3 Likes

Eu folosesc bash ptr. administrare sistem sau altele dar mai rar ptr. programare. Poate chestii gen sa numer liniile de cod dintr-un folder. Poate un ‘bat’ sa vad rapid continutul unui fisier.
Dar sunt curios cum se poate folosi bash ptr. a completenta procesul de a programa in sine. :slight_smile: Tu cum il folosesti ptr. programare?

1 Like

Eu am facut de-a lungul timpului in bash si awk diverse aplicatii utilitare mai mult sau mai putin complicate (unele programe de sute de linii) inclusiv cu baze de date, parsare de argumente, json data exchange, etc… Am si vazut la un moment dat pe net (nu mai stiu exact unde) un program care facea facturi in awk. In principiu daca mai pui si zenity merge sa faci diverse aplicatii, poate mai mult in zona utilitarelor, pe care le-ai face mai cu efort intr-un limbaj conventional in special daca folosesti procesari de text complicate. Daca nu te deranjeaza diferenta de performanta poti completa proiectele mari cu diverse utilitare in aceasta forma.

2 Likes

Aha! Deci aplicatii utilitare ajutatoare. Asa da, asa folosesc si eu bash/awk/sed/…! :slight_smile:

Eu intelesem folosit-ul bash-ului intr-un mod care ajuta procesul de programare in mod direct. De exemplu ca o utilitate de plugin ptr. IDE.

In acest sens Vim e foarte strong (dar si complex de folosit). De exemplu poate fi folosit ptr. a curata sintaxa a sute/mii/zeci de mii de fisiere cod sursa. (creare macro universal, aplicare macro cu argdo/bufdo).
Probabil sed/awk ar merge si ele ptr. modificare masiva de cod sursa.

Recomandările s-ar putea să fie subiective.

Eu recomand JavaScript. Câteva motive:

  • ușor de exersat - poți exersa direct in browser.
  • se folosește si in front si in back end.

In back end, adică pe NodeJS, imi place că nu îl amesteci si cu alte limbaje.

In conjuncție cu NodeJS îmi place că erorile sunt mult mai usor de înțeles ca pe alte platforme/tehnologii.

De exemplu in .NET și PHP era un coșmar să fac debugging.

1 Like