Forumul Scientia

IT şi electronică => Software => Subiect creat de: alina.d din Octombrie 26, 2009, 07:01:24 PM

Titlu: Limbaje de programare
Scris de: alina.d din Octombrie 26, 2009, 07:01:24 PM
Buna ,as dori ca acest topic sa fie despre curiozitati din domeniul limbajelor de programare ( aparitii noi , intrebuintari etc)
Titlu: Re: Limbaje de programare
Scris de: mircea_p din Octombrie 26, 2009, 07:02:33 PM
Poti sa dai un exemplu de "curiozitate" din domeniul limbajelor de programare?
Titlu: Re: Limbaje de programare
Scris de: Adi din Octombrie 26, 2009, 07:22:24 PM
In lumea fizicii particulelor se foloseste C++ ca si limbaj de programare, in general sub Linux. In trecut era folosit FOTRAN. Aditionat se foloseste ROOT ca si un "C interpreter" specializat pe librarii necesare analizei stiintifice, precum realizarea de grafice, de histograme, realizarea de "fits", generarea de numere aleatorii si asa mai departe.

O noutate interesanta in C++ este libraria boost, care ofera un nou tip de pointer foarte destept, pe care nu trebuie sa il mai definesti si apoi sa il distrugi, ci doar sa il folosesti direct in aceeasi linie pe care il definesti prima data. Se numeste shared_ptr.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 13, 2009, 10:17:07 PM
Bună seara. Am dat peste acest topic si mi s-a părut interesant. Si eu sunt atras oarecum de informatică, mă gândesc să mă apuc să învăț programare, ca amator. Ce limbaj de programare ați recomanda unui novice?
Am citit câteva cărți de informatică, inclusiv mai vechi, unde era descris BASIC, dar înțeleg că azi nu se mai foloseste. As vrea să învăț un limbaj mai "usor", dar suficient de general încât să poată acoperi mai multe domenii.
Acum mi se pare că mai toate limbajele moderne sunt foarte complicate, nu atât ca număr de cuvinte-cheie, cât ca număr de funcții, module, obiecte integrate, paradigme de programare (de ex., eu nu reusesc să înțeleg programarea orientată pe obiecte-POO. Mă dezorientează pur si simplu).
Nu există ceva similar BASIC-ului, un limbaj pentru începători, fără POO, dar suficient de general pentru a face destule cu el?
Eu folosesc ca sistem de operare tot Linux (Ubuntu 9.04).
Titlu: Re: Limbaje de programare
Scris de: bbb din Noiembrie 13, 2009, 11:07:21 PM
Eu am invatat C++. E simplu de inteles, deci destul de usor de invatat singur. Mai ales ca acum sunt destul de multe carti despre C++ pe piata. E adevarat ca la inceput l-am invatat la scoala, dar apoi a devenit foarte usor de invatat acasa, in timpul liber.
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 13, 2009, 11:49:23 PM
Depinde ce vrei sa faci cu programarea. Daca vrei sa faci ceva pe domeniul stiintei, C++ este cel folosit. Daca vrei aplicatii industriale (cu animatii, grafice, console) e JAVA. Dar inteleg ca cel mai usor de folosit este C# (C sharp) pentru ca are o sinteza foarte apropiata de gramatica umana.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 14, 2009, 01:02:11 AM
Cu programarea nu vreau, deocamdată, decât să învăț să programez. N-as spune că C++ e usor de învățat, din ce am citit pare dimpotrivă stufos, alambicat, în orice caz nu ar fi indicat pentru începători, asa am înțeles.
Da, caut un limbaj cu o sintaxă apropiată de gramatica umană, dar C# nu este o opțiune pentru mine, fiindcă nu am Windows pe calculatorul meu, doar Linux.
Altceva nu există? Dacă se poate, să fie  fără POO si să fie de uz general.
Titlu: Re: Limbaje de programare
Scris de: HarapAlb din Noiembrie 14, 2009, 01:35:55 AM
CitatDa, caut un limbaj cu o sintaxă apropiată de gramatica umană...
Cred ca ai nevoie de LISP  :)

Un profesor ne spunea in facultate ca primul limbaj pe care ar trebui sa-l invete cineva care n-a avut contact cu programarea ar fi LISP (http://en.wikipedia.org/wiki/Lisp_(programming_language)). Limbajul LISP se bazeaza pe alta paradigma de calcul, numita "Lambda calcul", decat limbajele "comune" (C, Pascal, Basic ...) care se bazeaza pe masina Turing.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 14, 2009, 01:56:56 AM
LISP să fie!  :).
Există vreun IDE pentru LISP pe Linux(Ubuntu)?
Titlu: Re: Limbaje de programare
Scris de: HarapAlb din Noiembrie 14, 2009, 02:02:43 AM
CLISP -> http://clisp.cons.org/
Titlu: Re: Limbaje de programare
Scris de: cris din Noiembrie 14, 2009, 09:26:40 AM
Nici Visual Basic nu e de lepadat.
Info: http://visualbasic.about.com/
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 14, 2009, 04:05:32 PM
Citat din: cris din Noiembrie 14, 2009, 09:26:40 AM
Nici Visual Basic nu e de lepadat.
Info: http://visualbasic.about.com/
Visual Basic nu e pentru mine, am spus clar că nu am Windows. În altă ordine de idei, am mai căutat pe Google despre LISP și am găsit Scheme (http://www.plt-scheme.org/). Am înțeles că Scheme ar fi un dialect de LISP. Să-l încerc? Pare să aibă tot ce e nevoie pentru un începător.
Titlu: Re: Limbaje de programare
Scris de: HarapAlb din Noiembrie 14, 2009, 04:45:48 PM
Ce ai gasit tu e PLT-Scheme, uite ce scrie PLT Scheme is an innovative programming language that builds on a rich academic and practical tradition. S-ar putea sa fie bazat pe Scheme, insa imi da impresia ca e mai mult un mediu de dezvoltare (framework) decat un limbaj in sine. Eu ti-as recomanda sa incepi cu ceva simplu si dupa aceea mai vezi tu ...

Gasesti mai multe informatii pe pagina de la MIT despre Scheme: http://groups.csail.mit.edu/mac/projects/scheme/ acolo spune ca PLT Scheme e un mediu de devoltare.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Noiembrie 15, 2009, 05:26:47 PM
Ca utilizator Lisp cu ștate vechi, dacă nu te interesează programarea sub aspectul ei pur academic, poate ai vrea să încerci ceva mai pragmatic -- Python poate?

Lisp și dialectele lui sunt într-adevăr excelente dar ca începător o să dai de multe probleme, în special cu Common Lisp care duce o mare lipsă de coeziune la ora actuală. Asta e valabil și pentru Scheme. Sunt limbaje interesante dar din păcate cu utilizare "de nișă".

În domeniul calculelor științifice, C și Fortran sunt standard.
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 15, 2009, 10:40:13 PM
Eu as recomanda incepatorilor sa faca direct C++. Daca inveti C++ si nu C, ai un mare avantaj. Tu zici ca nu vrei programarea pe obiecte. Pai tocmai, e bine sa uiti tot ce stiai dinainte si sa inveti direct programarea pe obiecte. Asa inveti direct cum e bine si esti cel mai castigat.

Am o carte buna de C++, scrisa de doi, intre care si un roman. Dupa asta se face cursul de C++ de la laboratorul american Fermilab. Ii zice C++ Coding Standards, de Sutter si Alexandrescu. C++ merge sub linux foarte bine. Si poti rezolva probleme clare cu el.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 16, 2009, 03:26:48 AM
Acum m-ați dezorientat și mai mult. Pentru AlexandruLazăr: nu contează, pentru mine, că CommonLisp și Scheme sunt de nișă, fiindcă nu vreau să programez ca profesionist, ci doar de plăcere. Am înțeles că LISP e un limbaj general, chiar foarte general (am citit că paradigma Lambda, pe care se bazează LISP, e echivalentă cu cea a mașinii Turing, deci cu LISP se poate rezolva orice este algoritmic) și în același timp ușor de învățat, ceea ce e important pentru mine. Care ar fi problemele pe care le-aș putea avea ca începător cu LISP?
Pentru Adi: chiar nu se prinde de mine POO, am încercat să înțeleg și nu am reușit. Conceptul de obiect ce încapsulează datele și procedurile care prelucrează acele date îl înțeleg oarecum, dar moștenirea și polimorfismul nu și pace.
Mă interesează un limbaj ușor de învățat și generalist, nu unul profesional sau de largă răspândire.
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 16, 2009, 03:39:21 AM
Primul lucru pe care il faci cu un program e sa afisezi niste lucruri pe ecran, sa citesti un fisier, sa scrii un fisier, sa lucrezi cu stringuri, cu vectori, cu liste, cu map-uri. Pana aici nu ai nevoie de programare pe obiecte. C++ ofera programare pe obiecte, dar poti face chestii de baza fara ele. Sfatul meu e sa inveti direct C++.

Daca vrei sa faci programare just for fun, iti propun sa rezolvi niste probleme reale de stiinta, just for fun. Uite, iti propun una: a se masura numarul pi experimental. Uite cum faci. Iei un patrat cu latura 1 si in el inscrii un cerc cu raza 1. Arunci aleator cu o sageata undeva in patrat. Dupa ce arunci de un numer N suficient de mare, o sa vezi ca in N* a cazut pe cerc. Aria cercului impartita la aria patratului este masurata de tine ca si N*/N, ori asta e tocmai [tex]\frac{\pi R^2}{(2R)^2}=\frac{\pi}{4}[/tex]. Deci tot ce trebuie sa faci este sa vezi cum se fac numere aleatoare uniform distribuite intre 0 si 1 si sa le folosesti. Faci astfel si pe x si pe y. Pentru fiecare caz in care [tex]\sqrt{x^2+y^2}\le 1[/tex], atunci punctul e pe disc si se numara la N*. Fa asta si e deja un mare pas inainte.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 16, 2009, 04:02:08 AM
Mai este până să rezolv prin programare problema dv. Încă nu am început, am nevoie și de cărți din care să învăț programare și algoritmică. E adevărat, se pare că sunt mai multe cărți despre C++, decât despre LISP, aici C++ ar fi mai convenabil. Da, ideea cu rezolvarea de probleme prin programare e bună. Eu mă gândeam la probleme de fizică, la ceva mai concret, nu neapărat la matematică.
Dar dacă mă apuc de C++, nu ajung până la urmă la POO, ceea ce doresc să evit?
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 16, 2009, 04:17:34 AM
De ce doresti sa eviti POO pana la urma? Poate din teama ca e prea grea? Ei bine, este foarte usoara. Deci daca o inveti in joaca, just for fun, dand de ea, e minunat.

Documentatie pentru C++ exista si pe internet. Gasesti practic nu doar tutoriale si exemple, dar si fiecare functie explicata bine cu teorie si exemple in siteuri oficiale de C++.

Iti pot propune si o problema de fizica. Se un punct fix cu masa M. Se da un punct material mobil de masa m. La momentul initial punctul m are pozitia x0, y0 si viteza vx0 vy0. Sa se afle pozitia corpului la momente succesive de timp prin metoda numerica, adica presupunandu-se ca la fiecare pas delta t corpul se misca cu viteza constanta. La final, a se verifica ca traiectoria corpului m este de fapt aproape o elipsa prin afisarea pozitiei la diverse momente de timp.

Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 16, 2009, 03:45:56 PM
M-am gândit la un algoritm pentru problema de matematică expusă de dv. Dar ar putea fi complet greșit, sunt complet novice. Algoritmul nu l-am luat din vreo carte sau de pe Internet, mi-a venit în minte privind textul problemei. Arată astfel:
1. Se citește variabila N
2. Se inițializează cu 0 variabila N*
3. Am înțeles că practic orice limbaj are un generator de nr. aleatoare (rand, random, etc). Se inițializează o buclă cu N iterații, în corpul buclei se evaluează expresiile:
x=rand(0,1)
y=rand(0,1)
z=sqrt{x^2+y^2} (scuze de notație, nu am Latex)
Dacă z este mai mic sau egal cu 1, se incrementează cu 1 valoarea lui N*, altfel se trece la următoarea iterație.
4. După N iterații, bucla se termină și se trece la evaluarea expresiei (N*/N)*4, ar rezulta o valoare aproximativă a lui Pi.

Cum vi se pare?
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 16, 2009, 03:51:59 PM
În privința problemei de fizică, pare o problemă de gravitație, întrucât ambele puncte au masă. Dar nu știu încă cum să exprim algoritmic asta.
Vă mulțumesc pentru probleme, sunt instructive.
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 16, 2009, 07:08:55 PM
Citat din: Dendros din Noiembrie 16, 2009, 03:45:56 PM
M-am gândit la un algoritm pentru problema de matematică expusă de dv. Dar ar putea fi complet greșit, sunt complet novice. Algoritmul nu l-am luat din vreo carte sau de pe Internet, mi-a venit în minte privind textul problemei. Arată astfel:
1. Se citește variabila N
2. Se inițializează cu 0 variabila N*
3. Am înțeles că practic orice limbaj are un generator de nr. aleatoare (rand, random, etc). Se inițializează o buclă cu N iterații, în corpul buclei se evaluează expresiile:
x=rand(0,1)
y=rand(0,1)
z=sqrt{x^2+y^2} (scuze de notație, nu am Latex)
Dacă z este mai mic sau egal cu 1, se incrementează cu 1 valoarea lui N*, altfel se trece la următoarea iterație.
4. După N iterații, bucla se termină și se trece la evaluarea expresiei (N*/N)*4, ar rezulta o valoare aproximativă a lui Pi.

Cum vi se pare?

Excelent!

Iar pentru Latex, avem un tutorial aici. Ecuatia e exct cum ai spus tu, trebuie doar sa pui un "\" inainte de sqrt si sa pui toata expresia intre [ tex ] si [ /tex ] fara spatii.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 16, 2009, 09:36:45 PM
Citat din: AdiExcelent!

Iar pentru Latex, avem un tutorial aici. Ecuatia e exct cum ai spus tu, trebuie doar sa pui un "\" inainte de sqrt si sa pui toata expresia intre [ tex ] si [ /tex ] fara spatii.

Mulțumesc de calificativ. Îmi dau seama că expunerea algoritmului nu e riguroasă, nu sunt precizați în mod clar și detaliat pașii de urmat, dar pentru mine e ceva. Nu-mi vine să cred că am putut face asta, nu am mai programat niciodată. Vorbeam serios când am spus că nu am luat algoritmul din cărți sau de pe Internet, de aceea mi se pare incredibil.
Va trebui să văd și tutorialul despre Latex.
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 16, 2009, 09:48:25 PM
Citat din: Dendros din Noiembrie 16, 2009, 03:51:59 PM
În privința problemei de fizică, pare o problemă de gravitație, întrucât ambele puncte au masă. Dar nu știu încă cum să exprim algoritmic asta.
Vă mulțumesc pentru probleme, sunt instructive.

Algoritmul e descris in detaliu in cartea lui Feynman. Dar in mare e cam asa. Ai situatia initiala descrisa mai sus.
1. Calculezi distanta intre cele doua puncte.
2. Calculezi modulul acceleratiei gravitationale (KM/r2)
3. Calculezi componentele acceleratiei dupa 0x si 0y (caci stii directia ca este de la corpul m la Soarele considerat fix de masa M).
4. Apoi calculezi care este noua  pozitie si noua acceleratie a punctului m dupa un interval delta t cand se considera ca corpul se misca cu viteza constanta.
x1=x0+v0x*t+1/2t^2
v1=v0+v0x*t
Si la fel pentru y.

Apoi astea devin conditiile initiale pentru pasul urmator. Si poti sa iei 365 de pasi si atunci ai aproximatia ca in cursul unei zile Pamantul merge in jurul Soarelui cu viteza constanta. Si apoi vezi cati timp iti ia de calcul. Si daca nu e mult, poti sa faci ca fiecare pas sa fie doar o ora. Si tot asa.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 16, 2009, 10:02:03 PM
Ah, acum e mai clar. N-am citit cartea lui Feynman, așa că n-am știut. Dar totuși nu mă pricep la metode numerice. Apropo, cu discuția asta sper că nu sunt offtopic, fiindcă autoarea topicului spunea că e despre limbaje de programare și curiozități în acest domeniu. Ce discutăm noi e o curiozitate?  :)
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 16, 2009, 10:12:58 PM
Citat din: Dendros din Noiembrie 16, 2009, 10:02:03 PM
Ah, acum e mai clar. N-am citit cartea lui Feynman, așa că n-am știut. Dar totuși nu mă pricep la metode numerice. Apropo, cu discuția asta sper că nu sunt offtopic, fiindcă autoarea topicului spunea că e despre limbaje de programare și curiozități în acest domeniu. Ce discutăm noi e o curiozitate?  :)

Pai tocmai la asta e esentiala programarea, la metode numerice. Si nu trebuie sa stii metode numerice. Practic rezolvi problema asta si la sfarsit zici "ah, astea erau de fapt metodele numerice ... iata ca nu e asa de complicat". Deocamdata nu e offtopic, nu iti fa griji. Daca cumva devine, mutam asta intr-un topic nou, fara sa iti reprosam tie ceva. Ma bucur ca te putem ajuta.

Ehe, dupa ce faci asta, banuiesti ca pasul urmator e sa nu mai presupui ca Soarele e fix :D. E aceeasi idee, numai ca acum forta gravitationala va actiona asupra ambelor corpuri (acum practic o neglijezi asupra soarelui). Si cu aia modelezi frumos cum doua corpuri de mase egale sau comparabile se rotesc in jurul unui centru comun, de exemplu la stelele duble. Si asa chiar faci stiinta reala, intelegand numeric chestii reale din natura.
Titlu: Re: Limbaje de programare
Scris de: Mihnea Maftei din Noiembrie 17, 2009, 01:04:53 AM
Citat din: Dendros din Noiembrie 16, 2009, 03:26:48 AM
Pentru Adi: chiar nu se prinde de mine POO, am încercat să înțeleg și nu am reușit. Conceptul de obiect ce încapsulează datele și procedurile care prelucrează acele date îl înțeleg oarecum, dar moștenirea și polimorfismul nu și pace.
Mă interesează un limbaj ușor de învățat și generalist, nu unul profesional sau de largă răspândire.
Eu am invatat C++ in liceu, iar acum, la facultate, invat Java si C. Java mi se pare un limbaj frumos, clar, versatil. In plus, exista si multe resurse despre el.
Dendros, spui ca nu ai inteles mostenirea si polimorfismul (in cadrul programarii orientate pe obiecte). Mi se par niste chestii usor de inteles (desi numele lor suna poate pompos). Dar, ca intotdeauna, trebuie pur si simplu sa incepi cu bazele limbajului, sa faci exemple simple, apoi mai complicate.

Citat din: Dendros din Noiembrie 16, 2009, 09:36:45 PM
[...] nu am mai programat niciodată.
Daca doar citesti mult (vad ca ai citit despre mostenire si polimorfism) si nu faci niciun exemplu practic si apoi te astepti sa stii mult dintr-o data, nu merge... In plus, e si un proces frustrant daca faci asa.
Titlu: Re: Limbaje de programare
Scris de: HarapAlb din Noiembrie 17, 2009, 01:35:00 AM
C si Java stie toata lumea, daca ai timp si curiozitate poti incerca sa vezi cu ce se mananca si LISP-ul.
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 17, 2009, 02:50:17 AM
Citat din: HarapAlb din Noiembrie 17, 2009, 01:35:00 AM
C si Java stie toata lumea, daca ai timp si curiozitate poti incerca sa vezi cu ce se mananca si LISP-ul.

Numai ca el nu stie nici C, nici Java, ca sa poata vedea cu ce se mananca LISP-ul. De fapt, el nu a facut nimic la programare niciodata, nici macar la scoala, daca inteleg corect.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 17, 2009, 04:58:30 AM
Citat din: AdiNumai ca el nu stie nici C, nici Java, ca sa poata vedea cu ce se mananca LISP-ul. De fapt, el nu a facut nimic la programare niciodata, nici macar la scoala, daca inteleg corect.
Așa este, nu am făcut niciodată programare. Referitor la ce a spus Mihnea, e adevărat că doar am citit mult, fără să aplic ce am citit, dar motivul a fost unul simplu: până recent nu am avut calculator. Ce am postat de când m-am înscris pe forum și până acum câteva luni a fost de pe calculatoare publice și ale unor prieteni. Poate vă surprinde asta, dar e adevărat. Chiar și așa cititul mi-a folosit, nu sunt complet ignorant la teorie, dar la practică sunt într-adevăr complet novice și sper să corectez asta.
Titlu: Re: Limbaje de programare
Scris de: HarapAlb din Noiembrie 17, 2009, 09:14:46 AM
Citat din: Adi din Noiembrie 17, 2009, 02:50:17 AM
Citat din: HarapAlb din Noiembrie 17, 2009, 01:35:00 AM
C si Java stie toata lumea, daca ai timp si curiozitate poti incerca sa vezi cu ce se mananca si LISP-ul.
Numai ca el nu stie nici C, nici Java, ca sa poata vedea cu ce se mananca LISP-ul. De fapt, el nu a facut nimic la programare niciodata, nici macar la scoala, daca inteleg corect.
De aceea i-am recomandat LISP. Nu stiu daca ai urmarit discutia, dar LISP-ul este diferit de celelalte limbaje (C si Java), se bazeaza pe alta paradigma de calcul.
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 17, 2009, 03:21:01 PM
Bun, acum e alegerea lui. Si nu trebuie sa fie o alegere batuta in cuie. Poate sa incerce mai multe limbaje aproape simultan.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 17, 2009, 06:02:00 PM
Alegerea mea nu e într-adevăr fixată, mai caut. Cum am Linux, am automat C/C++, mai trebuie și un IDE. Am descărcat și CLISP, deci voi putea compara C++ cu LISP, să văd care mi se potrivește. Însă sunt deschis și la alte sugestii, sunt încă nehotărât. Din păcate nu am prea mult timp liber, dar voi încerca când pot.
Vă mulțumesc pentru ajutor, sper să realizez câte ceva, iar dacă voi reuși va fi datorită și dv.
Titlu: Re: Limbaje de programare
Scris de: b12mihai din Noiembrie 17, 2009, 06:30:06 PM
Citat din: Bianca Sala din Noiembrie 13, 2009, 11:07:21 PM
Eu am invatat C++. E simplu de inteles, deci destul de usor de invatat singur. Mai ales ca acum sunt destul de multe carti despre C++ pe piata. E adevarat ca la inceput l-am invatat la scoala, dar apoi a devenit foarte usor de invatat acasa, in timpul liber.

C++ ca limbaj este extrem de usor de invatat si de inteles. Mai grei sunt algoritmii  ;D . Parerea mea este ca o data ce ai inteles la ce iti foloseste programarea - si te-ai hotarat ca programarea iti este utila, de exemplu, pentru a rezolva probleme de fizica atunci te axezi pe asta, asumandu-ne ca tu nu vei fi platit sa faci programare...aia e alta smecherie.

Eu de exemplu nici acum nu am inteles foarte multe chestii din C++ (cum ar fi recursivitatea sau backtracking-ul - ce-i drept nici nu mi-am dat silinta sa le studiez profund), nu cred ca as fi in stare sa rezolv in acest moment o problema din manualele de informatica, ci m-am axat pe cum se aplica matematica in informatica (caci sunt foarte bun la mate si o inteleg, si foarte slab in materie de programare), si cum pot fi scrise sub forma unor algoritmi anumite probleme din matematica ce se rezolva clasic, avand la baza, culmea  :D, un algoritm

Uite un exemplu de program C++ cu functia de gradul 2 facut de mine: http://www.dreamincode.net/code/snippet2698.htm - si chiar va recomand acest forum, daca vreti sa invatati adevarata informatica, in care pasionati de programare ajuta oricand si pe oricine in orice domeniu din programare - aveti in vedere faptul ca acea comunitate are peste 100.000 de membri activi!! Aveti si o groaza de tutoriale unul mai interesant ca altul, excelent explicate de maestrii in domeniu - luati-o ca pe o curiozitate - stiati ca exista dreamincode.net - unde te ajuta lumea ca aici la StiintaAzi pe programare si pe matematica?

Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 17, 2009, 06:32:44 PM
Bravo, Gothik, tare interesant! Si tu ai facut programul si l-ai pus acolo! Felicitari!
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 18, 2009, 03:46:23 AM
Citat din: gothik12luati-o ca pe o curiozitate - stiati ca exista dreamincode.net - unde te ajuta lumea ca aici la StiintaAzi pe programare si pe matematica?
Personal, n-am știut de acest forum, mulțumesc de informație. Vă felicit pentru ce ați realizat, sper să fac și eu asta, poate și mai mult (dar timpul e cam problematic pt. mine). Într-adevăr nu vreau să programez pentru bani, ca profesionist, ci doar ca hobby, unul instructiv pentru mine.
De ex., există mișcarea open-source, unde mulți programează din pasiune. Poate mă afiliez și eu la ea, ipotetic vorbind.
Titlu: Re: Limbaje de programare
Scris de: b12mihai din Noiembrie 18, 2009, 03:23:36 PM
Miscarea "open-source" (http://opensource.org/) din cate stiu eu a aparut din dorinta de a contracara puterea celor care VAND softuri (cum ar fi Microsoft) si pana acum...cam toate programele open-source au pornit ca fiind "varza" si au ajuns sa fie cea mai buna alternativa GRATUITA a ceva pe care dai bani grei si abia merge.

CitatDe ex., există mișcarea open-source, unde mulți programează din pasiune.
Nu, nu multi programeaza din pasiune, ci TOTI. Un exemplu de astfel de oameni ii ai la acel forum  :) .

Este minunat ce se face (si mai ales ce se realizeaza) cu open-source asta si asa se invata mult mai bine, mai rapid si mai eficient programarea (oricare ar fi ea). Si e misto ca atunci cand nu iti iese ceva esti ajutat si fiecare iti ofera metoda lui de rezolvare, astfel ca vezi mai multe moduri de a gandi si poti sa iti dai seama care te ajuta pe tine...Arta e sa te prinzi repede
Titlu: Re: Limbaje de programare
Scris de: bbb din Noiembrie 19, 2009, 12:05:31 AM
Citat din: gothik12 din Noiembrie 17, 2009, 06:30:06 PM
Citat din: Bianca Sala din Noiembrie 13, 2009, 11:07:21 PM
Eu am invatat C++. E simplu de inteles, deci destul de usor de invatat singur. Mai ales ca acum sunt destul de multe carti despre C++ pe piata. E adevarat ca la inceput l-am invatat la scoala, dar apoi a devenit foarte usor de invatat acasa, in timpul liber.

C++ ca limbaj este extrem de usor de invatat si de inteles. Mai grei sunt algoritmii  ;D . Parerea mea este ca o data ce ai inteles la ce iti foloseste programarea - si te-ai hotarat ca programarea iti este utila, de exemplu, pentru a rezolva probleme de fizica atunci te axezi pe asta, asumandu-ne ca tu nu vei fi platit sa faci programare...aia e alta smecherie.

Eu de exemplu nici acum nu am inteles foarte multe chestii din C++ (cum ar fi recursivitatea sau backtracking-ul - ce-i drept nici nu mi-am dat silinta sa le studiez profund), nu cred ca as fi in stare sa rezolv in acest moment o problema din manualele de informatica, ci m-am axat pe cum se aplica matematica in informatica (caci sunt foarte bun la mate si o inteleg, si foarte slab in materie de programare), si cum pot fi scrise sub forma unor algoritmi anumite probleme din matematica ce se rezolva clasic, avand la baza, culmea  :D, un algoritm

Uite un exemplu de program C++ cu functia de gradul 2 facut de mine: http://www.dreamincode.net/code/snippet2698.htm - si chiar va recomand acest forum, daca vreti sa invatati adevarata informatica, in care pasionati de programare ajuta oricand si pe oricine in orice domeniu din programare - aveti in vedere faptul ca acea comunitate are peste 100.000 de membri activi!! Aveti si o groaza de tutoriale unul mai interesant ca altul, excelent explicate de maestrii in domeniu - luati-o ca pe o curiozitate - stiati ca exista dreamincode.net - unde te ajuta lumea ca aici la StiintaAzi pe programare si pe matematica?



Hmmm, algoritmii ce i-am studiat pana acm nu mi s-au parut grei. Cel scris de tine, cu funtia de gradul 2, a fost chiar unul din primii algoritmi pe care i-am scris pentru scoala. Imi aminntesc si acum ce fericita am fost cand am reusit in final sa il scriu, dupa ce m-am chinuit doua zile. Practic intre al tau si al meu era o singura diferenta, eu am pus la inceput "clrscr()" (sper ca nu am uitat cum se scrie), ca sa imi "curete" ecranul dupa fiecare verificare a programului...sau de fiecare data cand ma jucam cu el...
Mersi de link, chiar nu stiam de dreamincode...  :)
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 19, 2009, 12:13:16 AM
M-am uitat și eu pe acel forum, am văzut codul dvs. Mă întreb dacă voi reuși să scriu o implementare în C++ a algoritmului meu de obținere a lui pi prin nr. aleatoare. Cumva, totul mi se pare complicat, chiar dacă spuneți că C++ e simplu.
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 19, 2009, 12:19:21 AM
Pai deja ai algoritmul, pas cu pas. Acum trebuie doar sa inveti sa faci acei pasi.
Titlu: Re: Limbaje de programare
Scris de: HarapAlb din Noiembrie 19, 2009, 01:10:29 AM
Citat din: gothik12 din Noiembrie 17, 2009, 06:30:06 PM
Eu de exemplu nici acum nu am inteles foarte multe chestii din C++ (cum ar fi recursivitatea sau backtracking-ul - ce-i drept nici nu mi-am dat silinta sa le studiez profund), ...
Recursivitatea si backtracking-ul sunt tehnici de programare, nu au de-a face cu limbajul C++, ele putandu-se folosi si in C, Pascal... Recursivitatea tine de modul cum este implementat limbajul, mai precis daca suporta apeluri recursive, din cate imi amintesc limbajul Basic-ul nu accepta apeluri recursive.

Citat
Uite un exemplu de program C++ cu functia de gradul 2 facut de mine...
Ce ai facut tu acolo nu e C++, ci e C cu 'cin' si 'cout', de altfel se poate scrie la fel de eficient si in Basic. Vorbim de C++ cand avem programare orientata pe obiecte (mosteniri, clase, functii virtuale...). Daca ai fi folosit o clasa "Ecuatie" cu metodele ei gen AreSolutii(), Rezolva(), era alta treaba.
Titlu: Re: Limbaje de programare
Scris de: baka minamino din Noiembrie 19, 2009, 06:56:10 PM
am o problema la info si mam blocat nu mai stiu sa o fac ati fi amabili sa imi aratati va rog mult  :) :) :) :) :) :)
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 19, 2009, 06:59:24 PM
Citat din: baka minamino din Noiembrie 19, 2009, 06:56:10 PM
am o problema la info si mam blocat nu mai stiu sa o fac ati fi amabili sa imi aratati va rog mult  :) :) :) :) :) :)


Putem incerca cu o idee. Fa un topic nou cu problema, si pune un titlu sugestiv.
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 21, 2009, 06:11:24 PM
Am mutat discutia despre C++ intr-un topic separat in aceeasi cateogorie IT.  (http://www.scientia.ro/forum/index.php?topic=1645.0)

Aici vom discuta despre limbaje de programare in general.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 21, 2009, 10:08:49 PM
Legat de POO, și LISP e potrivit pentru cei care vor să înceapă direct cu POO, fiindcă CLISP are CLOS (http://en.wikipedia.org/wiki/Common_Lisp_Object_System) (CommonLISP Object System).
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 23, 2009, 08:28:37 PM
În cele din urmă am ales limbajul C#(CSharp). După ce am căutat, am aflat că există Mono-Project (http://www.mono-project.com/Main_Page), care este o implementare open-source a mediului C# și .NET (parțial). Se pare că rulează bine pe Linux, l-am instalat și funcționează. Mai rămâne să învăț C#, caut cărți despre el.
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 23, 2009, 08:40:04 PM
Da, am auzit ca este un limbaj foarte modern, folosit mult de firme cand construiesc chestii concrete.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 24, 2009, 12:20:54 AM
Se pare că m-am pripit cu alegerea mea. Mono rulează, dar cu erori, se pare că din cauză că nu este nativ pe platforma Linux. Tot C++ este de bază până la urmă, din moment ce compilatorul gcc este nativ Linux şi funcţionează fără probleme. Rămân deci la C++, chiar dacă, poate, nu este aşa modern ca C# (dar e puternic, din cât am înţeles în C++ se poate face orice).
Ştie cineva o carte bună de C++ (tipărită, nu electronică, şi în limba română) care se poate găsi în librării?
Titlu: Re: Limbaje de programare
Scris de: HarapAlb din Noiembrie 24, 2009, 12:37:11 AM
C# este dezvoltat de Microsoft, iti poti imagina singur ce portabilitate are  ;D

Cand invatam in facultate foloseam niste carti ("Limbajele C si C++ pentru incepatori") de la editura MicroInformatica (http://www.gmi.ro/librarie/catalog/) din Cluj
Titlu: Re: Limbaje de programare
Scris de: Adi din Noiembrie 24, 2009, 12:44:09 AM
Deci pana la urma e C++. Daca stii si ceva engleza, e bine si sa urmaresti tutoriale pe internet. Sunt foarte multe si pur si simplu poti cauta dupa C++ si cum se face cutare lucru si vei gasi foarte multe.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 24, 2009, 12:48:50 AM
Citat din: HarapAlb din Noiembrie 24, 2009, 12:37:11 AM
C# este dezvoltat de Microsoft, iti poti imagina singur ce portabilitate are  ;D

Cand invatam in facultate foloseam niste carti ("Limbajele C si C++ pentru incepatori") de la editura MicroInformatica (http://www.gmi.ro/librarie/catalog/) din Cluj
Da, portabilitate între ghilimele. Mulţumesc pentru link, pare să fie exact ce caut. Pentru Adi: da, până la urmă rămâne C++. Am să citesc şi tutoriale, dar pentru mine cartea tipărită este de bază. Mi-e greu să citesc pe calculator, pur şi simplu nu e acelaşi lucru cu a citi (şi învăţa) dintr-o carte.
Titlu: Re: Limbaje de programare
Scris de: radhoo din Februarie 06, 2010, 08:01:55 PM
problema e pusa putin gresit:
nu se cauta un limbaj de dragul programarii,
ci se identifica problema si apoi se cauta limbajul potrivit pentru implementarea solutiei.

C/C++ e un limbaj robust, exista compilatoare pentru el, cam pentru orice inseamna automat/sistem de calcul: l-am folosit pentru a programa aplicatii pentru microchipuri, PDA-uri, routere de retea, sau diverse sisteme de operare pt desktop. Tehnicile de programare sunt usor de inteles, pentru ca permite accesul direct la memorie (pointeri, liste, arbori, grafuri, toate implementate dinamic), si dispune de structuri de date intuitive.

Pascal: un limbaj extrem de capabil dar inutilizabil in contextul actual, deci e o investitie proasta.

LISP orice profesor univ. isi va lauda materia :) .  e itneresant datorita naturii duale "cod vs. date", dar nu am castigat nici un ban cu LISP pana in prezent...

Visual Basic / C# / Delphi ofera clase predefinite si o sintaxa intuitiva, extrem de usor de utilizat pentru aproape oricine fara pregatirea necesara. Permit aplicatii suficient de puternice, si au o curba de invatare extrem de accesibila. Dar vor tine programatorul departe de detalii, dupa cum se si considera in aceste limbaje high-level ca programatorul nu trebuie sa le stie pe toate, el construieste un modul , care apoi se integreaza impreuna cu altele pentru a forma aplicatia. Eu personal consider un defect ignoranta (ca ignorare a detaliilor) si nu am putut sa apreciez aceste limbaje, dar le-am folosit adesea in functie de necesitati.
Titlu: Re: Limbaje de programare
Scris de: florin_try din Februarie 07, 2010, 07:10:40 PM

LISP e pentru calcul simbolic, dar se pot face mult mai multe cu el. Matematicienii il folosesc intensiv (din cite am auzit).
La calcul simbolic Maple e suficient si mult mai prietenos pentru utilizatori de ocazie.

FORTRAN e pentru calcul numeric. Limbajul a evoluat in fortran 90/95 (implementat in practic toate compilatoarele). Nu are run-time polimorfism dar poate fi emulat. In rest are cam toate celelalte paradigme ale programarii orientate pe obiecte (OOP). Veteranii crescuti cu fortran 77 nu vor recunoaste un cod in fortran 90/95/2000.

C++ e pentru orice. As alege C++ fara ezitare.

Java e pentru interfetze, dar e leeeent; daca poti sa il eviti evita-l.
INSA: Am un apetit fantastic pentru apleturile JAVA in scopuri educationale.

Javascript e pentru web design ca sa adaugi interactivitate in partea clientului. Nu confundati Java cu JavaScript. Ca orice script, e f.f. lent (nu are compilator).

My 2 cents.
Titlu: Re: Limbaje de programare
Scris de: Adi din Februarie 07, 2010, 07:23:42 PM
Foarte frumos evolueaza aceasta discutie.
Titlu: Re: Limbaje de programare
Scris de: gheorghe1800 din Martie 17, 2010, 02:06:40 PM
Dar ce s-a intamplat cu C? De ce nimeni de pe acest forum nu recomanda limbajul C simplu? O fi el destul de batran dar in nici un caz depasit.

Prin facultate l-am intrebat pe un coleg ce limbaj mi-ar recomanda sa invat mai aprofundat. Raspunsul a venit foarte prompt si oarecum surprinzator: "invata domne C chior". Era un tip foarte bun la programare care insa nu prea intelegea de ce este nevoie de C++ (mai exact programarea pe obiecte). Pana la urma ce poti sa faci cu C++ poti sa faci si cu C si ce faci cu C poti sa faci fara probleme direct in asamblare.

Deci eu recomand C. Daca inveti C bine o sa stii atatea lucruri cate ai nevoie ca sa te descurci in orice limbaj de programare (cu foarte putin efort in plus). C++ e un limbaj care incearca sa faca munca unui programator experimentat mai usoara.(<-punct) In plus, exista riscul ca daca incerci sa inveti C++ inainte de C o sa ai multe lucruri de baza in ceata pentru ca mai toate cartile de C++ considera ca stii deja cate ceva de C.

Dovada ca C este inca un limbaj viabil (si pana la urma de ce n-ar fi) este ca Linux este scris in proportie de peste 70% in C (poate chiar mai mult, nu mai stiu cifra exacta).
Titlu: Re: Limbaje de programare
Scris de: radhoo din Martie 17, 2010, 02:19:03 PM
evindent nimeni de aici nu are cunostinte temeinice de programare asa si discutia merge dupa "ureche"

c++ aduce un nivel superior de organizare fata de c: acces la templateuri, clase de obiecte si o suita noua de posibilitati pentru un cod modular si compact.

asa cum in C pentru a nu repeta un cod de 100 de ori se defineste o functie, si se reapeleaza functia in loc de a repeta codul, in C++ se pot defini clase de obiecte definite unui scop anume, se pot defini apoi derivate si rezultatul este un cod curat, elegant, scurt , usor de inteles si de depanat.

In aplicatiile complexe, stufoase, un limbaj ca C va necesita un cod sursa extrem de lung. Eventualele defecte (buguri) vor necesita mult timp (costuri) pentru reparare. De acea se tinde mereu inspre o organizare superioara.

Dar cum am spus de la inceput, nu se invata un limbaj doar de dragul unei preocupari, ci se identifica necesitatea si apoi se alege limbajul care o poate rezolva cel mai bine. Dezvoltarea de aplicatii nu este un hobby, este o meserie care necesita o pregatire temeinica si apoi, experienta.
Titlu: Re: Limbaje de programare
Scris de: Adi din Martie 17, 2010, 09:00:24 PM
Pe noi la Fermilab ne-a invatat la cursul de programare ca e chiar prost sa stii C si apoi sa treci la C++, caci ramai cu obiceiuri vechi si proaste din C. Eu am prins direct C++ si programarea pe obiecte si asa e cel mai bine. E mai puternica si face toate chestiile simple din C, plus chestii mai evoluate. Pentru un tanar elev de liceu, recomandarea mea e sa invete direct C++. Din pacate la liceul se numeste C++ si se face tot C ...
Titlu: Re: Limbaje de programare
Scris de: HarapAlb din Martie 17, 2010, 11:52:26 PM
Citat din: radhoo din Martie 17, 2010, 02:19:03 PM
evindent nimeni de aici nu are cunostinte temeinice de programare asa si discutia merge dupa "ureche"
Nu merge dupa "ureche", ca dovada ca pana la urma tot la C++ s-a ajuns.  Cred ca nu ai nevoie chiar de cunostinte temeinice ca sa poti recomanda un limbaj de programare sau altul.

E "prost" sa inveti un limbaj fara obiecte inaintea unui orientat pe obiecte, asa cum este la fel de prost sa inveti un limbaj care te face sa gandesti ca o masina (C/C++ si restul...) inaintea unui limbaj in care poti scrie programele urmand gandirea umana (de exemplu LISP).

CitatDar cum am spus de la inceput, nu se invata un limbaj doar de dragul unei preocupari, ci se identifica necesitatea si apoi se alege limbajul care o poate rezolva cel mai bine. Dezvoltarea de aplicatii nu este un hobby, este o meserie care necesita o pregatire temeinica si apoi, experienta.
Tocmai ca intrebarea initiala nu se referea la nici o necesitate de a rezolva ceva concret, nu era vorba de meseria de programator, ci mai degraba de activitati in timpul liber.
Titlu: Re: Limbaje de programare
Scris de: gheorghe1800 din Martie 18, 2010, 01:07:32 AM
Citat din: Adi din Martie 17, 2010, 09:00:24 PM
Pe noi la Fermilab ne-a invatat la cursul de programare ca e chiar prost sa stii C si apoi sa treci la C++, caci ramai cu obiceiuri vechi si proaste din C.
Sunt curios care ar fi aceste obiceiuri... Poate pentru fizicieni e mai usor sa foloseasca C++ pentru ca poti utiliza mai simplu biblioteci cu concepte de nivel inalt fara sa iti bati capul prea mult cu ce e in spate.

Citat din: Adi din Martie 17, 2010, 09:00:24 PM
Eu am prins direct C++ si programarea pe obiecte si asa e cel mai bine. E mai puternica si face toate chestiile simple din C, plus chestii mai evoluate.
Bravo tie! Pana la urma un limbaj de programare este o unealta si unealta cea mai folositoare este unealta pe care o cunosti cel mai bine. Dar ce vroiam sa spun este ca daca incepi cu C (adica o unealta mai simpla) ai sansa il inveti mai bine, decat sa incepi direct cu C++ si sa nu reusesti sa faci diferenta intre lucruri.

Citat din: Adi din Martie 17, 2010, 09:00:24 PM
E mai puternica si face toate chestiile simple din C, plus chestii mai evoluate. Pentru un tanar elev de liceu, recomandarea mea e sa invete direct C++. Din pacate la liceul se numeste C++ si se face tot C ...
C++ nu este mai puternic, in C se pot face aceleasi lucruri care se fac in C++. Pentru un elev de liceu care vrea sa invete programare cel mai bine e sa inceapa cu C. C++ este pentru avansati si mai mult pentru productia de soft la scara larga.
Titlu: Re: Limbaje de programare
Scris de: Adi din Martie 18, 2010, 01:33:52 AM
Citat din: gheorghe1800 din Martie 18, 2010, 01:07:32 AM
Citat din: Adi din Martie 17, 2010, 09:00:24 PM
Pe noi la Fermilab ne-a invatat la cursul de programare ca e chiar prost sa stii C si apoi sa treci la C++, caci ramai cu obiceiuri vechi si proaste din C.
Sunt curios care ar fi aceste obiceiuri... Poate pentru fizicieni e mai usor sa foloseasca C++ pentru ca poti utiliza mai simplu biblioteci cu concepte de nivel inalt fara sa iti bati capul prea mult cu ce e in spate.

Nu stiu care sunt obiceiurile, caci eu nu am lucrat niciodata in C, ci direct in C++.
Titlu: Re: Limbaje de programare
Scris de: gheorghe1800 din Martie 18, 2010, 01:49:53 AM
Citat din: HarapAlb din Martie 17, 2010, 11:52:26 PM
E "prost" sa inveti un limbaj fara obiecte inaintea unui orientat pe obiecte, asa cum este la fel de prost sa inveti un limbaj care te face sa gandesti ca o masina (C/C++ si restul...) inaintea unui limbaj in care poti scrie programele urmand gandirea umana (de exemplu LISP).

Lisp nu urmeaza gandirea umana ci gandirea matematica(functionala). Un limbaj care incearca sa emuleze intr-o oarecare masura gandirea umana este CLIPS (limbaj bazat pe reguli de productie).

Daca vrei sa fii programator este necesar sa gandesti ca masina pe care o programezi, altfel te va eluda. Nu exista o masina Lisp (s-a incercat sa se faca de baietii de la emacs, dar au lasat-o balta, nu mai stiu din ce motiv). Este emulat pe PC evident, dar merge destul de greu si nu e folosit in productie (in afara de Emacs, evident). In plus Lisp nu este un "lambda machine" pur, ci se bazeaza intr-o masura semnificativa si pe chestii imperative.

P.S. Un link interesant:
http://www.youtube.com/watch?v=WVTWCPoUt8w
Titlu: Re: Limbaje de programare
Scris de: HarapAlb din Martie 18, 2010, 02:31:16 AM
Citat din: gheorghe1800 din Martie 18, 2010, 01:49:53 AM
Daca vrei sa fii programator este necesar sa gandesti ca masina pe care o programezi, altfel te va eluda. Nu exista o masina Lisp (s-a incercat sa se faca de baietii de la emacs, dar au lasat-o balta, nu mai stiu din ce motiv). Este emulat pe PC evident, dar merge destul de greu si nu e folosit in productie (in afara de Emacs, evident). In plus Lisp nu este un "lambda machine" pur, ci se bazeaza intr-o masura semnificativa si pe chestii imperative.
Astea nu-s argumente pentru a nu invata/studia un anumit limbaj de programare. In particular, invitatia de a invata LISP trebuie inteleasa ca o deschidere spre lucruri mai putin intalnite. Cred ca asta  cel mai important la inceput de drum, nu sa-i spui omului "invata limbajul X si cu el de gat o sa mori pentru ca nu-i altul mai bun".

PS: Inca un documentar despre GNU, Linux, open source si free software: Revolution OS (http://video.google.com/videoplay?docid=7707585592627775409#)
Titlu: Re: Limbaje de programare
Scris de: radhoo din Martie 18, 2010, 11:50:41 AM
Citat din: HarapAlb din Martie 17, 2010, 11:52:26 PM
CitatDar cum am spus de la inceput, nu se invata un limbaj doar de dragul unei preocupari, ci se identifica necesitatea si apoi se alege limbajul care o poate rezolva cel mai bine. Dezvoltarea de aplicatii nu este un hobby, este o meserie care necesita o pregatire temeinica si apoi, experienta.
Tocmai ca intrebarea initiala nu se referea la nici o necesitate de a rezolva ceva concret, nu era vorba de meseria de programator, ci mai degraba de activitati in timpul liber.
Ok, dar atunci hai sa dam un sens, o utilitate acestei discutii. Putem propune multe exemple, unul mai exotic ca altul, iar cei ce vor citi prin ochii incepatorului vor ramane in ceata.

Care credeti ca ar fi cerintele pentru un limbaj de programare din perspectiva novicelui?
- sa aiba o sintaxa usor de inteles/ asimilat
- sa permita citirea datelor usor (de la tastatura, din fisiere)
- sa ofere suficiente tipuri de date, pentru a servi un set minim de probleme (intreg, real, boolean)
- sa acopere un minim de operatii matematice si logice
- sa ofere o modalitate cat mai usoara de a afisa rezultatele (atat in mod text, dar si in mod grafic), uite Adi  se plangea mai sus ca intampina greutati la afisarea rezultatelor programului, pentru ca in mod consola nu poate desena planetele.

Apoi un alt set de cerinte, care vin cu pretentiile crescute pe masura invatarii ar fi:
- portabilitatea codului sursa
- programare procedurala
- programare orientata pe obiect

Pentru prima categorie, sunt cateva exemple pe care le recomand:
Basic , Pascal, C (http://zanasi.chem.unisa.it/download/C.pdf )
si variantele "Click&Go":
Visual Basic, Delphi, Visual C

In a doua categorie ar intra:
C++ , Java, C#, cele 3 visuale de mai sus inca o data

Lisp/CLISP/CLIPS nu mi se pare o alegeri bune pentru un incepator.
Sunt interesante pentru a exemplifica notiuni de inteligenta artificiala, dar pe zidar nu-l invatam despre macarale decat cand are orizonturile largite.


Titlu: Re: Limbaje de programare
Scris de: gheorghe1800 din Martie 18, 2010, 02:06:03 PM
Citat din: radhoo din Martie 18, 2010, 11:50:41 AM
Ok, dar atunci hai sa dam un sens, o utilitate acestei discutii. Putem propune multe exemple, unul mai exotic ca altul, iar cei ce vor citi prin ochii incepatorului vor ramane in ceata.

Corect!

Nu as vrea sa repet ce am spus deja mai sus. Recomand C pentru ca:
- este un limbaj foarte flexibil
- este foarte rapid
- are o sintaxa mai dificila, dar asta as zice ca nu conteaza foarte mult pentru un incepator (daca faci lucrurile grele la inceput o sa fie usor mai tarziu)
- forteaza intr-o masura programatorul sa-si structureze mai bine programul si sa faca multe lucruri "de mana" (spre deosebire de C++ sau Java care ofera multe lucruri "de-a gata")
- este (probabil) cel mai portabil limbaj (de la microcontrollere, sisteme embedded, routere, placi video pana la pc-uri, console, super calculatoare)
- sta la baza multor limbaje de nivel inalt (C++, Java, C#, etc.)

Si ar mai fi multe de spus, dar ideea de baza e simpla. Prin comparatie, unui sculptor i se pune pentru prima data in mana o dalta. Daca ii pui in mana un flex (disc de taiat electric) s-ar putea ca foarte repede sa se indrepte catre curentul cubist pentru ca nu va putea face aceleasi lucruri de finete ca si ucenicul care a fost invatat cu dalta.

P.S.: Nu as recomanda Kernigan & Richie. E o carte care descrie limbajul, e pentru programatori experimentati care vor sa faca trecerea de la fortran sau alte limbaje, sau poate servi ca un "reference book".
Titlu: Re: Limbaje de programare
Scris de: radhoo din Martie 18, 2010, 07:59:18 PM
Asa mai merge :)

Ai dreptate si cu cartea, dar hai sa vedem ce alte resurse mai potrivite ar fi, sa punem altceva pt cei interesati.
Titlu: Re: Limbaje de programare
Scris de: gheorghe1800 din Martie 19, 2010, 12:12:58 AM
Oricat de ironic ar parea, sincer sa fiu nu stiu sa dau example de carti bune in C. Stiu ca exista la un moment dat cartea lui Tudor Sorin, Algoritmi si limbaje de programare, clasa a X-a, varianta C (eu am varianta Pascal).

L-am intrebat totusi pe prietenul Google si iata ceva rezultate (se pare ca intr-adevar nu exista multe carti de C):

C Primer Plus, 5th ed, http://www.amazon.com/Primer-Plus-5th-Stephen-Prata/dp/0672326965/ref=sr_1_1?ie=UTF8&s=books&qid=1268939828&sr=1-1 (http://www.amazon.com/Primer-Plus-5th-Stephen-Prata/dp/0672326965/ref=sr_1_1?ie=UTF8&s=books&qid=1268939828&sr=1-1), pare o carte foarte buna si pentru incepatori (pentru "xerox" mesaj pe privat  ;) )

Kernigan & Ritchie, The C Programming Language, clasica, nerecomandata incepatorilor in ale programarii, un link dat mai sus de radhoo

Limbajul C, editura Albastra, Cluj-Napoca, autor Liviu Negrescu; o carte destul de greu de citit si plictisitoare (parere proprie), dar care totusi expune toate conceptele programarii (iarasi nu sunt foarte sigur, am doar varianta C++)
http://www.gmi.ro/librarie/catalog/ (http://www.gmi.ro/librarie/catalog/)

Internetul, tutoriale + exemple, nu este modul ideal de a invata ceva, dar poate fi mai "fun"



P.S.: radhoo avea dreptate cateva posturi mai sus. Invatarea e cel mai bine sa fie "application driven". Intai iti setezi un scop "vreau sa fac programul X" si apoi cauti metodele prin care sa ajungi la rezultat. Un exemplu foarte simplu pe care personal il folosesc: programul "devtodo" este o aplicatie de consola care iti permite sa iti faci foarte rapid o lista de todo-uri.

Comenzile pentru adaugare si afisare sunt foarte simple:
     tda (todo add) - adauga o intrare todo
     todo - afiseaza toate intrarile curente colorate si aranjate in functie de prioritate
     tdr - remove entry, sterge intrarea
     tdd - mark as done, marcheaza ca terminata, etc.

Programul am inceput sa-l folosesc cand mi-am dat seama ca nu exista o alternativa foarte simpla in Gnome (Tomboy notes - prea multe butoane de apasat pentru a adauga ceva, sticky notes - se pierd prea usor pe ecran si sunt greu de manage-uit). Asa in terminal nu apesi decat 3 taste si incepi sa scrii. Se gaseste in repository in mai toate distributiile de Linux: Ubuntu, Fedora, etc.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Aprilie 04, 2010, 11:14:32 PM
Cu ceva întârziere -- nu știu dacă o să mai folosească neapărat cuiva răspunsul meu, dar poate pe viitor vor fi și alții care vor să știe lucrurile astea.

1. Pentru oricine care este interesat de vreo formă de programare pentru aplicații științifice, C este la momentul ăsta practic obligatoriu. Există încă o baza importantă de cod Fortran 77 și Fortran 90, dar e vorba mai ales de aplicatii "legacy" (i.e. cod scris acum 10, 20, 30 de ani, optimizat foarte bine și pentru care nu există cine știe ce interes să fie rescris într-un alt limbaj, mai ales că există compilatoare fortran foarte bune), dar practic orice are de-a face cu calculul de înaltă performanță este la momentul actual cod C. Asta e ceva ce spun din experiență pentru că lucrez în domeniu. Acolo unde există interes pentru avantajele programării orientate pe obiecte (adică unde e nevoie de modularitate sporită sau aplicații de foarte mari dimensiuni), există biblioteci de clase C++ care oferă o interfață orientată pe obiecte pentru biblioteci scrise în C (MPI și OpenMP au asemenea binding-uri, plus diverse biblioteci de nivel mai înalt -- solvere pentru sisteme de ecuații ș.a.m.d.)

Sunt mai multe motive pentru asta, dar cele mai importante sunt 1. faptul că C, fiind apropiat de structura mașinii, permite să obții o eficiență foarte bună fără a scrie cod neportabil și 2. faptul că C++ are unele imperfecțiuni enervante; http://yosefk.com/c++fqa/ detaliază unele din ele pentru cine e interesat.

Părerea mea proprie și personală: după ce am interacționat cu C++ dincolo de nivelul cursurilor de facultate, e groaznic. Arată bine pe hârtie și arată bine ca și cod, dar numai dacă trebuie să-l folosești fără să-l integrezi într-un sistem mare. Adaugă cinci-șase biblioteci la sursa cărora nu ai acces, multithreading și exigențe portabilitate și o să stai mai mult cu debugger-ul decât cu prietena.

2. Programarea funcțională este o paradigmă bună pentru unele tipuri de probleme. Aplicatiile de data mining sunt un exemplu în sensul acesta. Nu cred că e potrivită ca paradigmă pentru orice -- dar sunt de părere că integrarea acestea cu programarea imperativă e foarte utilă. Exemplu doțent, cred că și pentru cineva care nu e programator, e destul de evident ce face:


x = [1:N];
map( (lambda (i) = (x(i-1)+x(i)+x(i+1))/3 ), x);


pentru că e mult mai apropiat de expresia matematică asociată (e vorba de un filtru medie alunecătoare).

3. În particular legat de Lisp: e folosit în producție dar numai în câteva locuri. Utilizatorii AutoCAD de exemplu ajung să-l știe destul de bine imediat ce au de lucrat cu modele mai complicate, la fel cei care lucrează în AI.
Titlu: Re: Limbaje de programare
Scris de: florin_try din Aprilie 07, 2010, 01:17:02 PM
Citat din: radhoo din Martie 18, 2010, 11:50:41 AM

Care credeti ca ar fi cerintele pentru un limbaj de programare din perspectiva novicelui?
- sa aiba o sintaxa usor de inteles/ asimilat
- sa permita citirea datelor usor (de la tastatura, din fisiere)
- sa ofere suficiente tipuri de date, pentru a servi un set minim de probleme (intreg, real, boolean)
- sa acopere un minim de operatii matematice si logice
- sa ofere o modalitate cat mai usoara de a afisa rezultatele (atat in mod text, dar si in mod grafic), uite Adi  se plangea mai sus ca intampina greutati la afisarea rezultatelor programului, pentru ca in mod consola nu poate desena planetele.


Toate punctele enuntate mai sus sunt irelevante chiar si din perspectiva novicelui. Le-am privit ca amuzament. Ce limbaj de programare nu iti ofera un "minim de operatii matematice si logice"? Pina si un limbaj de scriptare elementar (ex: windows powershell - dar chiar si batrinul cmd din dos) iti ofera suficiente operatii matematice (restul le poti compune). Cit despre cele logice tot ce iti trebuie e AND , OR , negatie si cam atit ca pe restul le compui din astea. Nu serios, ar fi ridicol sa nu....
Sau stie cineva vre-un limbaj dedicat computerelor care nu permite citirea "de la tastatura si fisiere?"  (nu ma refer la chestii BIOS sau ASM, dar si astea au IO)

Citat din: radhoo din Martie 18, 2010, 11:50:41 AM
Apoi un alt set de cerinte, care vin cu pretentiile crescute pe masura invatarii ar fi:
- portabilitatea codului sursa
- programare procedurala
- programare orientata pe obiect

Pentru prima categorie, sunt cateva exemple pe care le recomand:
Basic , Pascal, C (http://zanasi.chem.unisa.it/download/C.pdf )
si variantele "Click&Go":
Visual Basic, Delphi, Visual C

In a doua categorie ar intra:
C++ , Java, C#, cele 3 visuale de mai sus inca o data


Probabil e prea general pentru a fi util.  Ultimul lucru de care are nevoie un incepator in programare sunt principiile enuntate de tine mai sus; iti spun asta in modul cel mai respectos - si te asigur ca pot respecta pe cineva chiar daca nu sunt de acord cu el.

Iata ce cred eu ar trebui unui incepator in programare: UN PROIECT CONCRET si STIMULENT! Adica sa defineasca clar : Vreau sa scriu un program care sa faca cutare operatiune.
Exemplu sa fie cit mai concret si problema cit mai clar definita. Iar proiectul sa nu fie ceva plictisitor ci cit mai aproape de un joculet daca s-ar putea, sau ceva care sa-i dea motivatie incepatorului.
Iata o problema concreta: Ne propunem sa facem un software care sa imite functionalitatea unui calculator de buzunar si pe care sa il pot folosi la urmatoarele (schitez si o posibila motivatie)
1) din web-browser via ruta clasica (html/css/javascript) - in speranta ca o extra-utilitate in pagina de web poate aduce un surplus de clicuri ad-sense
2) dintr-un java aplet  - in speranta de a invata java asa incit sa imi vina mai usor pe viitor cu java si de a-l transforma in executabil dos cu probabil cel mai mic efort de programre (de asemeni sper sa monetizez din executabiluk dos).
3) in Adobe flash-player. - in speranta de a invata programare in flash-player asa incit sa pot folosi flash-playerul in aplicatii mai complexe
4) in C++   - in speranta de a scoate un exectabil in DOS pe care sa-l vind dar care sa nu ma duca pe ruta mai lenta (dar probabil mai usor de programat) numita java.
5) pentru telefoane gen Android si/sau iphone.  - in speranta de a le vinde si a face bani din Apple store sau Andriod store.

SI pe urma incep cu javascript.  Nu trebiue nici un compilator nimic - doar un browser. Si parcurg pas cu pas de la interfata la implementarea functiilor sau a parserului matematic (daca eval() din javascript nu ma satisface)

Dupa ce termin repet acelasi proiect in java, actionscript, C++, C#. Surpriza va fi ca de indata ce un incepator invata cum sa il scrie intr-un limbaj (NU CONTEAZA CARE) apoi ii va veni f.f.f usor sa il scrie in alt limbaj/script mai sus mentionat caci toate au la baza sintaxa C.

Ce carte sa studiez? Aventurile lui Robun Hood e suficient deoarece programarea nu se studiaza din carti ci scriind in mod concret un cod si cautind de fiecare data pe googlesi/sau helpul limbajului  care sunt comenzile.

Citat din: radhoo din Martie 18, 2010, 11:50:41 AM
Lisp/CLISP/CLIPS nu mi se pare o alegeri bune pentru un incepator.
Sunt interesante pentru a exemplifica notiuni de inteligenta artificiala, dar pe zidar nu-l invatam despre macarale decat cand are orizonturile largite.

HUH???? Eu zic ca LISP e o alegere excelenta pentru un informatician/matematician care are nevoie de calcul simbolic, nu conteaza cit de incepator sau neincepator este. Limbajul e o ustensila, importanta cu adevarat este PROBLEMA de rezolvat si alegerea limbajului protrivit pentru problema propusa. Si asta e valabil indiferent cit de incepator sau avansat esti.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Aprilie 07, 2010, 02:16:16 PM
Părerea mea -- contează cât de începător ești când începi să ai nevoie de tail recursion, CLOS, și mai ales când trebuie să mai folosești biblioteci externe sau să îți distribui tu codul cu drăcia aia de ASDF.
Titlu: Re: Limbaje de programare
Scris de: Adi din Aprilie 07, 2010, 05:06:31 PM
Sunt de acord ca plecand de la un proiect real, interesant, captivant, sa invata cel mai bine.
Titlu: Re: Limbaje de programare
Scris de: radhoo din Aprilie 09, 2010, 11:43:55 PM
Citat din: florin_try din Aprilie 07, 2010, 01:17:02 PM
Ce carte sa studiez? Aventurile lui Robun Hood e suficient deoarece programarea nu se studiaza din carti ci scriind in mod concret un cod si cautind de fiecare data pe googlesi/sau helpul limbajului  care sunt comenzile.
Google, helpul limbajului? Fii serios, ce spui tu e superficial. Merge pentru un proiect facut noaptea, dar o astfel de aplicatie nu o vei putea niciodata pune in productie/comercializa pentru ca va pica la primele teste de calitate. Nu e programarea chiar asa de simplista cum o descrii. Se invata ani multi pana se ajunge la un nivel profesional acceptabil.  Am vazut cativa care invatasera programare dupa ureche, multi nici nu aveau facultatea macar, se descurcau, dar la un nivel destul de redus.

Citat din: radhoo din Martie 18, 2010, 11:50:41 AM
HUH???? Eu zic ca LISP e o alegere excelenta pentru un informatician/matematician care are nevoie de calcul simbolic, nu conteaza cit de incepator sau neincepator este. Limbajul e o ustensila, importanta cu adevarat este PROBLEMA de rezolvat si alegerea limbajului protrivit pentru problema propusa. Si asta e valabil indiferent cit de incepator sau avansat esti.
Da, problema e importanta, ca uneltele le alegem dupa, cam asta spuneam si eu mai sus.
Statistic vorbind, cat la suta din cei ce au ca meserie programarea crezi tu ca merg dimineata la servici si incep sa codeze in LISP - Si oare care ar fi procentul pt C++/ C# ? Nu de alta dar vorbesti despre chestii concrete (android/iphone si incurajezi vanzarea pe APPstore) ca apoi sa spui ca LISP e bun pentru incepatori. Bun sa faca ce?

Tu crezi ca pentru a fi ce se numeste " fizician " , e destul sa ai asa niste idei despre una alta? Programarea tine de domeniul stiintific si rigurozitatea se impune si aici. De asta avem o anumita structurare a cunostintelor, si e bine ca un incepator sa se tina de scoala informaticii si poate pe urma de Google si alte surse rapide de informare.

Titlu: Re: Limbaje de programare
Scris de: florin_try din Aprilie 10, 2010, 07:58:57 AM
Citat
Statistic vorbind, cat la suta din cei ce au ca meserie programarea crezi tu ca merg dimineata la servici si incep sa codeze in LISP

Nu stiu care e procentul, dar daca un matematician are nevoie de nu stiu ce calcule simbolice si vrea sa foloseasca motorul lisp in acest sens, atunci va coda in lisp.

Nu procentul e important ci faptul ca cei care au nevoie de lisp folosesc lisp, cei care au nevoie de C++ folosesc C++ iar cei care doresc fortran folosesc fortran. Fiecare cu ce are nevoie functie de jobul si specialitatea sa. Nu vad care-i problema.

Citat
spui ca LISP e bun pentru incepatori. Bun sa faca ce?

Concret: Profesorul XXX de matematica din Romania vrea sa testeze un algoritm de integrare symbolica care el crede ca e cel mai bun.
Insa nu stie prea multa programare, ci doar asa un pic un ciclu for o conditie if si niste IO elementar.
Ce ii recomanzi respectivei persoane? Sa invete C++ si sa programeze in C++ o biblioteca intreaga de operatii cu graphuri si arbori pe care sa construiasca algoritmi simbolici, sau sa foloseasca LISP-ul care deja are in el ce tine de calcul simbolic?

Eu zic ca chiar daca nu stie C++, tot LISP-ul ramine mai potrivit genului sau de aplicatie, indiferent cit de incepator sau avansat este. Nu vad de ce nu ar avea sanse sa reuseasca in LISP by-pasind C-ul.

Citat
Google, helpul limbajului?
Da. Helpul interactiv al limbajului e tot ce am nevoie. TU daca descarci un  API si incepi sa vezi ce functii are, vrei sa spui ca te vei descurca mai bine cu orele de programare din scoala decit cu helpul concret ce vine cu acel API? Pai in scoala inveti citeva 10-30 comenzi, un API poate avea 500+ functii, cum poti sa stii ce face fiecare fara helpul limbajului si un pic de google?

Citat
Merge pentru un proiect facut noaptea, dar o astfel de aplicatie nu o vei putea niciodata pune in productie/comercializa
De acord ca e diferenta mare intre un proiect de o noapte si .. comercializare, diferenta poate fi de munca de luni intregi,
insa eu ce voiam sa spun este ca programarea nu se invata "din carti" si programe mici scrise pe tabla sau hirtie, ci "cu compilatorul in mina" corectind eroare dupa eroare in cod. 
Parerea mea este ca proiectele de o noapte (care mai tirziu devin de o saptamina, o luna, etc) sunt cele mai utile. Inveti la fata locului ce si cum.


 
Titlu: Re: Limbaje de programare
Scris de: radhoo din Aprilie 10, 2010, 02:08:46 PM
Citat din: florin_try din Aprilie 10, 2010, 07:58:57 AM
Citat
Statistic vorbind, cat la suta din cei ce au ca meserie programarea crezi tu ca merg dimineata la servici si incep sa codeze in LISP

Nu stiu care e procentul, dar daca un matematician are nevoie de nu stiu ce calcule simbolice si vrea sa foloseasca motorul lisp in acest sens, atunci va coda in lisp.

Nu procentul e important ci faptul ca cei care au nevoie de lisp folosesc lisp, cei care au nevoie de C++ folosesc C++ iar cei care doresc fortran folosesc fortran. Fiecare cu ce are nevoie functie de jobul si specialitatea sa. Nu vad care-i problema.
Da fiecare cu limbajul lui, problemele se rezolva cu uneltele potrivite, asta e clar.
Ti-am zis de procent pentru ca o sa vezi ca LISP e foarte putin utilizat, poate ceva mai mult in mediile universitare.
Si daca vorbim despre alegerea unui limbaj pentru incepatori, poate ar fi bine sa-i indrumam inspre ceva mai uzual, care eventual le va folosi si pe viitor.
Cate job-uri ai vazut tu sa caute programatori LISP? E chiar hilara intrebarea. In schimb alta e situatia pentru pt C++, JAVA, C#.
Si de ce aceasta diferenta, daca nu pentru faptul ca din multimea mare a problemelor care se cer rezolvate prin tehnica computationala, aceste limbaje se preteaza cel mai bine (unelte general utilizabile)

Citat din: florin_try din Aprilie 10, 2010, 07:58:57 AM
Citat
spui ca LISP e bun pentru incepatori. Bun sa faca ce?
Concret: Profesorul XXX de matematica din Romania vrea sa testeze un algoritm de integrare symbolica care el crede ca e cel mai bun.
Insa nu stie prea multa programare, ci doar asa un pic un ciclu for o conditie if si niste IO elementar.
Ce ii recomanzi respectivei persoane? Sa invete C++ si sa programeze in C++ o biblioteca intreaga de operatii cu graphuri si arbori pe care sa construiasca algoritmi simbolici, sau sa foloseasca LISP-ul care deja are in el ce tine de calcul simbolic?

Eu zic ca chiar daca nu stie C++, tot LISP-ul ramine mai potrivit genului sau de aplicatie, indiferent cit de incepator sau avansat este. Nu vad de ce nu ar avea sanse sa reuseasca in LISP by-pasind C-ul.
Profesorul XXX de matematica de abia stie sa opereze calculatorul. Si asta entru ca matematica e o stiinta, informatica e alta, sa nu facem confuzie. Daca ar fi fost asa de inrudite , ar fi fost ceva nativ ca din insusirea matematicii sa rezulte o buna cunoastere a informaticii, dar nu e asa.
Daca profesorul XXX vrea doar asa un pic un ciclu for o conditie if si niste IO elementar le poate face fara sa programeze in C++ o biblioteca intreaga de operatii cu graphuri si arbori pe care sa construiasca algoritmi simbolici , sa nu exageram (cu bold am citat cuvintele tale).

Citat din: florin_try din Aprilie 10, 2010, 07:58:57 AM
Eu zic ca chiar daca nu stie C++, tot LISP-ul ramine mai potrivit genului sau de aplicatie, indiferent cit de incepator sau avansat este.
Asta de unde ai mai scos-o? Ai vreun argument, sau sustii idei proprii dupa bunul plac?

Citat din: florin_try din Aprilie 10, 2010, 07:58:57 AM
Nu vad de ce nu ar avea sanse sa reuseasca in LISP by-pasind C-ul.
N-am zis ca nu are sanse, cred ca nu m-ai urmarit cu atentie. Poate folosi si Basic si Fortran si orice vrei tu pentru probleme uzuale. Am spus ca pentru un incepator (daca tii mitne, despre asta se discuta aici) sunt cateva alegeri in ce priveste limbajul cel mai indicat (pentru ca un incepator nu are asa mult timp sa invete de toate, el venind dinspre o alta specializare), si nu are sens sa dam indicatii "exotice" care includ si LISP-ul, pt ca (vezi mai sus) statistic vorbind, LISP nu e cel mai permisiv limbaj.
Cum spuneau si altii mai sus C poate fi folosit pt a programa microcontrolere, PDA-uri,sisteme embedded, calculatoare personale, etc.

Citat din: florin_try din Aprilie 10, 2010, 07:58:57 AM
Citat
Google, helpul limbajului?
Da. Helpul interactiv al limbajului e tot ce am nevoie. TU daca descarci un  API si incepi sa vezi ce functii are, vrei sa spui ca te vei descurca mai bine cu orele de programare din scoala decit cu helpul concret ce vine cu acel API? Pai in scoala inveti citeva 10-30 comenzi, un API poate avea 500+ functii, cum poti sa stii ce face fiecare fara helpul limbajului si un pic de google?
Ok in punctul asta incep sa realizez ca-mi pierd timpul.
Ce spui tu suna ca si cum un "practicant in ale fizicii" (ce descrii tu este un practicant in ale informaticii), ar zice ce nevoie are el sa invete despre vectori, forte, transformari ale energiei, cand vede si el ca marul pica de sus in jos.
Ca sa-ti raspund pe scurt, diferenta o face rigurozitatea.  Iar calitatea e direct proportionala cu rigurozitatea, si dorim o calitate a muncii, altfel ce faci tu nu va folosi la nimeni.
Ca sa-ti raspund cu mai multe detalii, in scoala inveti tehnici de programare. Apoi vine experienta si ajungi sa programezi mai eficient, cod mai scurt, mai robust, cu cat mai putine defecte, si cat mai usor de inteles si depanat.
Nu stiu ce vrei sa spui cu
CitatPai in scoala inveti citeva 10-30 comenzi,
, dar cum formularea  este "dupa ureche" , ma gandesc ca esti inca in liceu. Sa raspund pentru a ajuta:
Dupa cum vezi nu e destul o noapte in care cauti exemple pe Google si dai Copy/Paste in codul tau, sa ai nu stiu ce efecte de animatie in aplicatia ta, e nevoie de ani in care iti perfectionezi stilul de programare.
E nevoie de ani sa intelegi sa aloci in mod eficient resursele si sa scrii o aplicatie care functioneaza optim.
Si vorbind de asta, poti folosi cam orice unelete pentru problemele uzuale, dar nu in mod optim.

Citat din: florin_try din Aprilie 10, 2010, 07:58:57 AM
Citat
Merge pentru un proiect facut noaptea, dar o astfel de aplicatie nu o vei putea niciodata pune in productie/comercializa
De acord ca e diferenta mare intre un proiect de o noapte si .. comercializare, diferenta poate fi de munca de luni intregi,
insa eu ce voiam sa spun este ca programarea nu se invata "din carti" si programe mici scrise pe tabla sau hirtie, ci "cu compilatorul in mina" corectind eroare dupa eroare in cod. 
Parerea mea este ca proiectele de o noapte (care mai tirziu devin de o saptamina, o luna, etc) sunt cele mai utile. Inveti la fata locului ce si cum.
E parerea ta. Mediul academic utilizeaza foarte mult "cartile", si "programele mici scrise pe tabla" in scop didactic. Si apoi le diseca pentru o intelegere profunda, de pe urma careia tinerii discipoli vor putea infrunta probleme mai serioase.
Poate o sa vrei sa intelegi ca cu o asa o gandire nu te vei numi niciodata programator pentru ca lipseste rigurozitatea.
Daca ai fi fizician, erorile te-ar costa in lumea reala. In cea virtuala...merge cum merge. Dar eu nu as indrazni sa incredintez niciodata dezvoltarea unui modul dintr-un software serios unui student, sau unui licean care codeaza noaptea, "dupa ureche", pentru ca as plati mult in imagine si incredere datorita calitatii scazute.

Iar daca e sa ii indrumam pe incepatori inspre ale informaticii, sa o facem la modul serios. Dupa cum vezi pe acest forum si problemele elementare de fizica sunt analizate cu maximum de atentie.
Ce te face sa crezi ca in informatica poti sa scapi mai usor?
Titlu: Re: Limbaje de programare
Scris de: florin_try din Aprilie 10, 2010, 07:53:29 PM

Eu ma refeream la faptul un incepator (ca de la asta pornisem) ar putea gasi mult mai mult stimulent pornind de la proiecte proprii de o noapte, si invata pe cont propriu mult mai multe in acest mod, decit din orele de la scoala.
In acelasi fel, un kit de chimie (cu citeva chimicale ce isi schimba culoarea la amestecare) pote stirni curiozitatea unui cpil in ale chimiei mai mult decit o poate face un prof.
Sau tot la fel, un telescop, poate atrage un copil catre fizica/astronomie mai mult decit lectiile scolaresti o pot face.
Iar cineva care gaseste motivatie e mult mai probabil sa fie riguros.

Bineinteles ca e imposibil de avut succes de exemplu academic in ale informaticii fara rigoarea mentionaata de tine.
Bineinteles, ca elev nu va avea succes la olimpiadele de informatica fara rigoarea necesara.
Insa poti avea pe cont propriu succes comercial in scriere de programe fara sa fi facut facultatea de informatica.

Iar eu cred ca un olimpic in ale informaticii a gasit motivatia in propriile lui proiecte (fie ele si de o noapte) si o multime de munca individuala, mai degraba decit din orele de informatica/programare de la scoala, care din pacate se cam fac pe hirtie si tabla.
Titlu: Re: Limbaje de programare
Scris de: astan din Aprilie 10, 2010, 08:43:45 PM
Cred ca se discuta doua lucruri diferite.
Invatarea prin practica este eficienta in multe domenii, nu numai in informatica.
Pentru a motiva un incepator este important ca acesta sa simta ca obtine rezultate rapid. Se simte incurajat de faptul ca realizeaza ceva concret.
Practicarea meseriei de informatician este cu totul altceva. In realitate, informatica, ca stiinta, se bazeaza pe matematica. De exemplu, analiza algoritmilor presupune cunostinte bune de matematici discrete (cine a citi cartile lui Donald Knuth stie cam care este nivelul).
Din acest moment, se trece la un alt nivel. Astfel de cunostinte nu sunt necesare doar in mediul academic, ci si in cazul multor aplicatii reale (atat comerciale cat si open-source).

In cazul dezvoltarii de software profesional, nu prea mai merge practicarea ideii conform careia e de ajuns sa stii doar sintaxa unui limbaj ca sa scrii cod de o calitate rezonabila in acel limbaj.
De exemplu, sa presupunem ca cineva cunoaste bine limbajul Visual Basic si scrie un program de calitate folosind acest limbaj. Sa presupunem ca respectiva persoana trebuie sa scrie un program C++ echivalent, dar nu cunoaste limbajul C++. Presupunem ca i se pune la dispozitie documentatie privind limbajul C++ si ca invata sintaxa limbajului. Cu toate acestea, probabil ca implementarea C++ va fi de foarte proasta calitate.
De ce ? Pentru ca un limbaj are "logica" lui si scrierea unui cod de calitate presupune mult mai mult decat simpla cunoastere a sintaxei limbajului.

In privinta limbajelor recomandate unui incepator: recomand Python ca prim limbaj pentru dezvoltarea de aplicatii desktop. Are o sintaxa clara si vine cu o gramada de module incluse in distributie, care permit realizarea de task-uri practice scriind relativ putin cod (de exemplu conectarea la baze de date, programare client-server, etc).
Nu recomand C++ decat daca vrea sa urmeze ulterior o cariera in programare. Cred ca e un limbaj prea complex, care necesita destul de multa experienta pentru a scrie cod de calitate si cat mai bug-free, in cazul unui proiect non-trivial.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Aprilie 11, 2010, 12:48:21 AM
Informatica e una, programarea e alta. Exista un corpus de cunostinte de structuri de date si algoritmi care nu vin efectiv ca parte a invatarii vreunui limbaj. Daca aceste cunostinte sunt asimilate, propriu-zis este necesara in plus doar cunoasterea sintaxei limbajului; mie unuia imi ia maxim doua saptamani sa devin productiv cu un limbaj nou.

CitatDe ce ? Pentru ca un limbaj are "logica" lui si scrierea unui cod de calitate presupune mult mai mult decat simpla cunoastere a sintaxei limbajului.

"Logica" nu apartine limbajului ci problemei. Desigur, unele limbaje au o structura care fac ceva mai dificila folosirea unui anumit tip de formulare a problemelor, insa logica nu apartine niciodata limbajului ca atare.
Titlu: Re: Limbaje de programare
Scris de: florin_try din Aprilie 11, 2010, 01:38:29 AM

O discutie aprinsa pe un fel de forum pe internet despre limbaje de programare, e fortranul mort?.

Pastez mai jos replay-ul unui forumist care m-a amuzat teribil (sursa: http://gordonwatts.wordpress.com/2006/10/14/fortran-not-dead-yet/ , al 2-lea comentariu)

"
Me love FORTRAN. Me like use punch cards, line printer. Newest guy in cave, he use C++, he always talk polymorphism, encapsulation. Me take club, me smash new guy when he debug inheritance heirarchy.
Now everyone use FORTRAN.
"
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Aprilie 11, 2010, 01:50:18 AM
Eu sunt unul dintre cei care foloseste Fortran. Ok, nu de placere si nu dezvolt activ programe Fortran, dar am fost pus in situatia de a scrie aplicatii care foloseau biblioteci Fortrant. De ce? Era vorba de biblioteci de metode numerice pentru calcul de inalta performanta -- sute de mii de linii de cod, optimizate pana la ultimul semn pentru platforma tinta, in decursul a cel putin zece-unsprezece ani de dezvoltare. Efortul de a rescrie asta in C e mult prea mare.

Exista o nisa in care e foarte popular si in care se lucreaza activ la compilatoare si instrumente de programare Fortran.
Titlu: Re: Limbaje de programare
Scris de: Adi din Aprilie 11, 2010, 02:11:45 AM
Citat din: florin_try din Aprilie 11, 2010, 01:38:29 AM

O discutie aprinsa pe un fel de forum pe internet despre limbaje de programare, e fortranul mort?.

Pastez mai jos replay-ul unui forumist care m-a amuzat teribil (sursa: http://gordonwatts.wordpress.com/2006/10/14/fortran-not-dead-yet/ , al 2-lea comentariu)

In fizica particulelor pot confirma ca este mort si a fost inlocuit de C++.
Titlu: Re: Limbaje de programare
Scris de: astan din Aprilie 11, 2010, 02:38:34 AM
Citat din: AlexandruLazar din Aprilie 11, 2010, 12:48:21 AM
Daca aceste cunostinte sunt asimilate, propriu-zis este necesara in plus doar cunoasterea sintaxei limbajului; mie unuia imi ia maxim doua saptamani sa devin productiv cu un limbaj nou.

Trebuie sa marturisesc ca mie imi ia semnificativ mai mult timp ca sa ajung sa scriu cod de calitate intr-un limbaj (nici nu cunosc prea multe limbaje).

Fiecare decizie pe care o iau designerii unui limbaj are o logica in spate. O logica care justifica intr-o oarecare masura de ce anumite lucruri sunt implementate asa cum sunt, in respectivul limbaj.  La asta ma refeream mai sus, nu la logica aplicatiei. Cred ca e util ca cineva sa inteleaga astfel de lucruri, cand foloseste un limbaj. De exemplu, multe dintre deciziile de design luate in cazul limbajului C++ au fost influentate de incercarea de a fi cat mai compatibil cu limbajul C.

Despre Fortan ... Nu am scris nici o aplicatie reala in el. Am scris candva niste programele folosind g77, din curiozitate, dar nu le-as putea considera drept o experienta relevanta.
Sunt sigur ca un compilator de fortran produce cod foarte optimizat in cazul algoritmilor numerici. E in productie de ceva vreme, au avut destul timp sa tot perfectioneze compilatoarele.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Aprilie 11, 2010, 03:31:29 AM
S-ar putea sa nu inteleg eu ce ai vrut să spui :). Ideea mea e următoarea: dacă ești capabil să explici modul de rezolvare al unei probleme într-un limbaj, poți să faci asta în orice limbaj căruia îi cunoști sintaxa. Desigur, cu mențiunile de rigoare referitoare la paradigma utilizată în sine (de exemplu, cineva care cunoaște sintaxa Haskell dar nu știe ce înseamnă programarea funcțională o să fie "în pom").
Titlu: Re: Limbaje de programare
Scris de: florin_try din Aprilie 11, 2010, 03:37:34 AM

Un filmulet amuzant pe internet despre ... lectii de programare...

Partea 1:   http://www.youtube.com/watch?v=XV-7J5y1TQc
Partea 2:   http://www.youtube.com/watch?v=7zaaD_xP6nU&feature=related
Partea 3:   http://www.youtube.com/watch?v=xiE2QldpQRQ&feature=related
Partea 4: http://www.youtube.com/watch?v=NUSn59iY8U8&feature=related   (utima)
Titlu: Re: Limbaje de programare
Scris de: Dendros din Mai 27, 2010, 05:41:31 PM
Am găsit, căutând pe Internet, programe matematice free, ca Freemat (http://freemat.sourceforge.net/), Octave (http://www.gnu.org/software/octave/), Scilab (http://www.scilab.org/), ce includ și limbaje de programare. Mi se par destul de cuprinzătoare și utile pentru cei pasionați de matematică/simulări, cum e cazul meu (am citit puțin documentația lor și mi s-au părut destul de interesante ca să le menționez aici, sper să fie utile). Dacă cineva le folosește, mi-ar plăcea să-și expună părerea vizavi de ele, sunt tentat să le folosesc. Nu prea mă atrage programarea clasică, nu am reușit să-mi însușesc C++, pur și simplu nu se prinde de mine (și am încercat, pot să vă asigur). Poate fiindcă e doar un hobby și nu mă atrage să învăț ceva profesional. Poate cu acele programe e mai ușor să-mi practic hobby-ul.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Mai 27, 2010, 06:51:22 PM
Octave (şi într-o măsură ceva mai mică, Scilab) sunt "clone" Matlab. Sunt nişte instrumente foarte bune, te asigur, şi folosesc un limbaj ceva mai "relaxat" şi mai adaptat notaţiilor matematice.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Iulie 22, 2010, 05:58:31 PM
Am instalat Octave, este într-adevăr mai uşor de învăţat şi este şi cuprinzător. Dar am făcut rost şi de PLT-Scheme, despre care am vorbit mai demult cu HarapAlb. Acum se numeşte Racket (http://www.racket-lang.org/new-name.html). Am făcut asta pentru că am vrut să văd cum e cu Lisp-ul.
Sigur, există şi CLisp, l-am şi încercat, dar nu are documentaţie inclusă, sau nu am ştiut eu să caut. Dar Racket include totul: un editor cu facilităţi de depanare şi verificare (DrRacket), documentaţie amănunţită, biblioteci şi framework-uri pentru crearea de interfeţe GUI şi altele, chiar şi alte limbaje (Algol60, Honu) şi bineînţeles extensii POO.

Mi se pare că Racket este flexibil. De exemplu, funcţia care ridică x la puterea y are forma:

(expt x y)

Dar cu funcţia define am putut să o reformulez:

(define (putere x y) (expt x y))

Şi să folosesc definiţia mea exact ca şi pe expt. În manual, dacă am înţeles corect, se arată că se pot redefini toate funcţiile din Racket şi de asemenea se poate crea un nou limbaj, personalizat, prin redefinire.
Chiar atât de flexibil şi extensibil să fie Racket (şi prin extensie, Lisp în general)?
Titlu: Re: Limbaje de programare
Scris de: Sigma2 din Iulie 22, 2010, 08:29:07 PM
Dendros
Daca stii unde pot gasi o varianta free a Math Type, pe net ti-as fii recunoscator.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Iulie 23, 2010, 05:22:40 PM
Dacă prin variantă free a lui Math Type înţelegeţi un echivalent open-source/freeware, atunci ar fi Sourceforge.net (http://sourceforge.net), unde am găsit MathCast (http://sourceforge.net/project/screenshots.php?group_id=120722&ssid=9831), doar unul dintre multele programe de acest gen care se pot găsi acolo.
Dacă vreţi doar să încercaţi Math Type, există un trial (http://www.dessci.com/en/products/mathtype/trial.asp), pe care îl puteţi încerca 30 de zile.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Iulie 24, 2010, 12:56:44 AM
Legat de Lisp: da. Scheme e un dialect din care lipsesc câteva din posibilitățile extreme ale Common Lisp, pe care eu unul îl găsesc a fi ceva mai flexibil decât orice implementare Scheme -- dar da, dialectele Lisp sunt faimoase pentru flexibilitatea lor.
Titlu: Re: Limbaje de programare
Scris de: Sigma2 din Iulie 25, 2010, 07:24:25 PM
Multumesc Dendros.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Iulie 26, 2010, 07:05:21 PM
Citat din: AlexandruLazar din Iulie 24, 2010, 12:56:44 AM
Legat de Lisp: da. Scheme e un dialect din care lipsesc câteva din posibilitățile extreme ale Common Lisp, pe care eu unul îl găsesc a fi ceva mai flexibil decât orice implementare Scheme -- dar da, dialectele Lisp sunt faimoase pentru flexibilitatea lor.

De curiozitate: care ar fi acele posibilități extreme ale Common Lisp?

Citat din: Sigma2 din Iulie 25, 2010, 07:24:25 PM
Multumesc Dendros.

Mă bucur că v-am fost de folos.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Iulie 26, 2010, 10:51:14 PM
1. Lisp este un limbaj homoiconic, adică orice program Lisp valid este o listă de expresii simbolice care poate fi manipulată -- și invers, orice listă corect definită este un program Lisp valid. O aplicație foarte "perversă" a chestiei ăsteia este manipularea simbolică a funcțiilor. Cei de la Genera aveau prin anii '80 un engine de derivare și integrare simbolică, care putea integra și deriva direct funcțiile definite în LISP. Adică, funcției (integrate f) îi dădeai ca argument funcția scrisă de tine în Lisp (de exemplu, (defun square (x) (* x x)), și îți întorcea direct funcția Lisp cu expresia integralei nedefinite. Nu știu dacă mai există asta și acum, știu că vroiau la un moment dat să implementeze asta în Maxima.

2. Macro-urile, care sunt o consecință directă a homoiconicității (se poate, e drept, și în limbaje nehomoiconice, dar nu sunt la fel de puternice). E ceea ce stă în spatele faptului că poți să scrii direct

(loop for k being the hash-key using (hash-value v) of h do (format t "~a ~a~%" k v))

ca să treci prin fiecare pereche key-value dintr-un hash table.

Tot asta permite să scrii foarte ușor un DSL -- o mare parte din Maxima e implementat de fapt așa.

3. Flexibilitatea în ceea ce privește paradigmele. Poți să scrii foarte ușor un program pur functional, sau pur imperativ, cu sau făra OOP. Ce-i drept, CLOS este destul de greoi de învățat ce-i drept.

Din păcate toate astea sunt trase în jos de lipsa cronică de biblioteci.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Iulie 27, 2010, 06:20:49 PM
Interesant. Așa mai învăț și eu câte ceva. Și ceea ce ați enumerat nu este valabil în Scheme/Racket? În privința bibliotecilor, Racket pare să stea destul de bine, din ceea ce scrie în manual. Am căutat și eu, tot de curiozitate, ce alte limbaje funcționale există. Mi-a atras atenția Haskell (http://www.haskell.org/).
Se poate compara cu Lisp?

Sper că nu vă deranjează că tot întreb, chiar învăț din asta. Știu că aș putea căuta tutoriale și altele pe Internet, dar prefer să comunic. Faptul că întreb de aceste limbaje nu înseamnă că am de gând să le încerc, m-am fixat pe Octave și îl învăț acum, și din când în când Racket. Dar îmi place să învăț, cum spuneam.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Iulie 27, 2010, 10:15:26 PM
Nu întru totul. Scheme nu are un suport la fel de larg pentru macro-uri, și are o abordare mult mai "minimalistă" decât Common Lisp. De asemenea, accentul e pus pe partea de programare funcțională, mai puține sunt facilitățile pentru programare imperativă.

Haskell am încercat și eu sa învăț la un moment dat dar programarea pur funcțională nu e ceva care să îmi placa, te dezleagă de multe limitări ale programării pur imperative dar îți pune alte bețe în roate. Experiența de a învăța Haskell e totuși interesantă, mai ales dacă te pasionează aspecte ale matematicii ca teoria categoriilor.
Titlu: Re: Limbaje de programare
Scris de: Dendros din August 02, 2010, 07:26:35 PM
Am scris primul meu (mic) program în Racket/Scheme. Implementează un algoritm simplu, pe care l-am dat pe pag. 2 a acestui topic, ca răspuns la problema lui Adi privind obținerea valorii lui Pi printr-un experiment ce implică o simulare bazată pe valori aleatoare. Scuzați dacă codul are erori de formă, nu am făcut copy/paste, l-am transcris manual fiindcă postez de la alt calculator. Dar este corect scris, altfel nu aș fi putut să-l rulez. Iată-l:
(define (valoare_pi n)
            (let ((n1 0))
               (for ((i (in-range 1 n)))
                  (let ((x (random)))
                     (let ((y (random)))
                       (define z (sqrt (+ (expt x 2) (expt y 2))))
                          (if (<= z 1)
                              (set! n1 (+ n1 1))
                              (set! n1 (+ n1 0))
                              )
                        )
                  )
                )
            (let ((valoare (* 4 (/ n1 n))))
              (display valoare)
              )
            )
         )


Pare să funcționeze, l-am testat, dar are hibe. Oricum, sunt la început și sunt sigur că sunt multe subtilități care îmi scapă. Un aspect este că rezultatele furnizate sunt afișate ca fracții (rapoarte), nu ca numere. De exemplu, am rulat astfel:
(valoare_pi 3445)

Iar rezultatul este afișat așa:
10896/3445

Exact așa, ca fracție, nu valoarea ei numerică. Ce ar trebui îmbunătățit? Și se pare că Racket simplifică automat fracțiile, când se poate. De ex., au fost cazuri când pentru n de ordinul miilor a afișat fracția 22/7, ceea ce îmi spune că a simplificat rezultatul. E normal?
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din August 03, 2010, 06:39:55 PM
Dap, e normal, tipul număr rațional (i.e. reprezentare ca fracție) e unul din tipurile native în multe dialecte Lisp.

Cred că și în Racket Scheme funcționează asta: forțează tipul float fie prin coerciție manuală (asta chiar nu mai știu cum se face în Scheme, sau dacă se poate face de fapt, dar trebuie să fie prin manual), fie asigurându-te că unul din argumentele de la împărțire este de tip float. Cred că va merge așa:

(let ((valoare (* 4.0 (/ n1 n))))

(deci punând 4.0 în loc de 4)

și/sau punând

(set! n1 (+ n1 1.0))
(set! n1 (+ n1 0))

Titlu: Re: Limbaje de programare
Scris de: Dendros din August 03, 2010, 06:51:12 PM
Mulţumesc, am să încerc asta. Pot spune că e destul de greu cu Racket la început, dar apoi începe să meargă. Acum lucrez mai mult empiric, cu o carte de Lisp, manualul Racket şi câte un algoritm exprimat în pseudocod sau limbaj natural.
Titlu: Re: Limbaje de programare
Scris de: Thorth din August 11, 2010, 02:53:25 AM
Salutare,

In primul rand pentru incepatori, ca am vazut pe aici ca va incurca pointerii din anumite limbaje de programare. Ceea ce se invata la liceu i se spune C++, dar de fapt si de drept e un mare C si nu C++. Diferenta dintre C++ si C, este urmatoarea: In C++ datorita nevoilor fizice, economice etc, s-au inventat clasele cu toate aplicatiile, principiile, etc (derivare, polimorfism, templeturi, functie virtuale, functii friend, etc.) Asadar recomand cu multa caldura sa va apucati de C si nu de C# sau C++, si nu dpdv economic, sau alte lucruri, pur si simplu se iau notiunile de la baza. In C++ se folosesc acelasi lucruri din C (C++ e o continuare de la C) cu mici diferente, care nu ar trebui sa va puna probleme.
Exemplu:  in C afisarea unor variabile, rezultate se face cu printf iar in C++ cu cout.

In ziua de azi, ca limbaje de programare in aplicatii destop, bineinteles depinde de ce se doreste sa se realize, se folosec urmatoarele:

Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din August 11, 2010, 11:23:54 PM
În bună parte sunt de acord, dar mi-am făcut un obicei să amintesc asta de fiecare dată: biblioteca standard a unui limbaj nu e totuna cu limbajul. În C++ se poate folosi în continuare printf fără nicio problemă; suportul pentru stream-uri este suplimentar, dar nu înlocuieşte suportul tradiţional de I/O buffered. printf e în cstdio.h.

Edit: Apropo, cu rare excepţii, Delphi nu se mai foloseşte aproape deloc, iar C++ e în continuare standardul pentru aplicaţii desktop. C# şi Java vin destul de tare din urmă, în special C#.
Titlu: Re: Limbaje de programare
Scris de: Thorth din August 11, 2010, 11:52:29 PM
Salutare,

Referitor la primul lucru pe care l-ai enuntat, nu este o problema de programare, un lucru care ar ingreuna programarea, ci este problema programatorului, capacitatea lui de adaptare este rigida.

Referitor la a doua parte, nu stiu ce informatii ai tu si de unde, dar eu iti spun din piata cum e treaba. Inca se cauta joburi in delpfi, un part time e vreo 600 de euro si un full dublu. Referitor la Java: este un limbaj de programare foarte robust, poate cel mai cel dintre toate. Cand s-a lansat s-a folosit la programare cuptoarelor cu microunde, masinilor de spalat, etc. de ce simplu, este foarte robust si aparitia eventualelor erori de limbaj era foarte mica. Mai zilele astea cei de Sun, firma care a creat java, a optimizat destul de mult limbajul si l-a realizat destul de fiabil, inainte era greoi din multe privinte.

C# - seamana destul de mult cu programare de tip Java, chiar si delpi(desi anumite concepte sunt total diferite)


Numai bine!
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din August 12, 2010, 02:04:15 AM
Şi eu îţi spun informaţiile din aceeaşi piaţă. Se caută în continuare slujbe pentru Delphi dar în bună parte pentru menţinut aplicatii legacy, sau de către tipicul firmelor de la noi care, graţiei audienţei generale a programelor de contabilitate şi gestiune a stocurilor, nu sunt foarte selective când e vorba de cine le scrie programele. Există Lazarus şi FreePascal desigur, dar audienţa lor e mult mai puţin restrânsă decât ar merita. CodeGear Delphi (acum parcă e Embarcadero Delphi? De când l-a vândut Inprise a mai trecut prin câteva mâini) a început să fie ceva mai la zi, dar încă nu are suport nativ pentru aplicaţii 64-bit. Există aplicaţii notabile (FL Studio, AdAware, cred că şi Skype pentru Windows) care îl folosesc dar foarte puţine aplicaţii noi scrise în el, iar ăsta este primul semn de senescenţă -- în momentul în care un limbaj începe să fie folosit mai mult pentru că e neprofitabil să rescrii codebase-uri vechi de 10-15 ani decât pentru aplicaţii noi, îşi pierde momentum-ul. Nu că ar fi ceva rău; COBOL supravieţuieşte bine-mersi şi slujbe pentru COBOL se caută cam la acelaşi nivel cu slujbe pentru Ruby.

Referitor la Java: între lansare şi programarea cuptoarelor cu microunde si masinilor de spălat au trecut vreo trei ani de bancuri pe teama vitezei şi a utilităţii applet-urilor, până când au apărut primele implementări JVM pentru sisteme embedded. Cei de la Sun l-au vrut ca vehicul pentru web, abia prin '98-'99 au început să-i realizeze potenţialul pe zona embedded. Nu vreau să comentez pe tema robusteţii fiindcă asta depinde foarte mult de implementarea JVM pe care o foloseşti (de regulă e vorba ori de cea oferită de Sun (Oracle, *sigh*) ori de cea de la IBM -- dar daca incearca cineva sa te tenteze cu una pe un microcontroller, take a friendly advice and run :D). În reply-ul meu de deasupra mă refeream numai la măsura în care e folosit pentru aplicaţii desktop, şi care nu e chiar predominantă, e chiar destul de mult în urma Delphi. Fără Google, în afară de Eclipse poţi să te mai gândeşti la cinci aplicaţii desktop scrise în Java în mai puţin de 30 de secunde?

Pe partea de aplicaţii web şi enterprise lucrurile stau complet invers. Acolo e partea unde şi Java, şi C# au prins masiv. Pe partea de aplicaţii desktop, va mai dura o vreme până să scăpăm de C++. La fel cum e neprofitabil pentru cei de la ImageLine să arunce la gunoi 12 ani de cod scris în Delphi, e neprofitabil şi pentru ceilalţi jucători mari să arunce la gunoi 15 ani de cod bazat pe MFC. Mai ales ţinând cont de halul în care e MFC  ;D.
Titlu: Re: Limbaje de programare
Scris de: Thorth din August 14, 2010, 09:53:49 PM
Da, Embarcadero este compania care a cumparat softul, si acuma embarcadero a scos un pachet denumit Embarcadero RAD Studio  care contine o varientate de limbaje de programare, de la c++ la Delphi Prism(pentru dezvoltare  .NET) chiar si php.

Referitor la PHP versiune 5.3.3 ultima existenta pe piata, mie personal mi se pare suficienta pentru toate dimensiunile proiectelor web.

MFC -  pot zice ca este o gluma foarte buna  ;D

Lasa limbajele COBOL, RUBY, Eclipse -  faceam referire la clasicii programarilor ;D

Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din August 14, 2010, 10:59:04 PM
Citat din: Thorth din August 14, 2010, 09:53:49 PM
MFC -  pot zice ca este o gluma foarte buna  ;D

Din păcate prea mulţi au luat-o în serios ;).
Titlu: Re: Limbaje de programare
Scris de: Thorth din August 15, 2010, 01:37:04 AM
mai stau asa si mai cuget cand ma mai lovesc de numele de MFC, cum de acei oameni sunt asa de multumiti de ceea ce le rezulta :))
Titlu: Re: Limbaje de programare
Scris de: Dendros din Septembrie 14, 2010, 05:01:21 PM
Ce părere aveţi despre limbajul Objective-C? Am aflat de el din documentaţia XCode, se pare că este limbajul nativ al OS X. Întreb doar de curiozitate, nu am de gând să-l învăţ. După denumire, mi se pare că e un fel de C care include POO.

Atunci cu ce diferă de C++, care e tot o extensie a C la POO, dacă am înţeles corect?
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Septembrie 25, 2010, 11:18:53 PM
E o încrengătură (interesantă altfel) între C și Smalltalk. Partea interesantă nu stă în limbaj ca atare cât în runtime-ul care îl implementează.
Titlu: Re: Limbaje de programare
Scris de: Arthur6 din Noiembrie 16, 2010, 09:52:39 PM
Ati incercat c#?

mie unul imi pare destul de flexibil si puteti lucra foarte usor in mediul visual express 2008,iar mai nou 2010!
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 18, 2010, 02:27:24 PM
Eu unul am vrut să-l încerc, dar C# nu (prea) merge în Linux. Însă, da, e un limbaj modern şi flexibil. Am citit că Microsoft a programat în C# un fel de prototip de sistem de operare, numit Singularity, care ar fi un OS extrem de stabil şi sigur.
Deci se pot face multe în C#.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Noiembrie 18, 2010, 08:59:43 PM
Merge sub Linux dacă pui Mono.

Singularity e un SO experimental; ideea nu e că e stabil şi sigur (oricum nu face altceva decât să booteze şi să ruleze nişte programe exemplu), ci că a arătat că se poate scrie un SO întreg folosind numai cod managed.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 19, 2010, 02:34:49 PM
Da, ştiu de Mono, l-am încercat, dar nu a prea funcţionat. Ştiu că Singularity e un SO experimental, dar tocmai de asta l-am pomenit, ca să arăt că se pot face multe în C#.
Nu sunt expert în programare, dar cod managed cred că înseamnă că mediul de rulare are grijă de execuţia codului, iar programatorul nu mai trebuie să se preocupe de detalii de nivel scăzut, pe scurt nu mai are nevoie de nicio bucăţică de cod în limbaj de asamblare. Corect?
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Noiembrie 19, 2010, 10:53:35 PM
Cam aşa ceva. Nu e nimica nou -- e doar termenul celor de la Microsoft pentru cod-care-rulează-într-o-maşină-virtuală. Codul e compilat într-un format bytecode pe care îl execută o maşină virtuală -- aceeaşi chestie pe care o face şi JVM cu codul rezultat din compilarea programelor Java sau Scala, de exemplu.
Titlu: Re: Limbaje de programare
Scris de: Dendros din Noiembrie 26, 2010, 12:21:35 PM
Atunci înseamnă că s-ar putea realiza un SO complet în Java. S-a încercat asta?
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Noiembrie 26, 2010, 09:58:14 PM
Dap, JX e unul din ele. Şi JavaOS cred că era la fel.
Titlu: Re: Limbaje de programare
Scris de: laurz din Ianuarie 04, 2011, 12:34:25 AM
Cunosc PHP, nu sunt expert dar suficient cat sa ma descurc, mi se pare faorte ok limbajul
Titlu: Re: Limbaje de programare
Scris de: florin_try din Ianuarie 04, 2011, 07:33:40 AM
Citat din: astan din Aprilie 11, 2010, 02:38:34 AM
Sunt sigur ca un compilator de fortran produce cod foarte optimizat in cazul algoritmilor numerici. E in productie de ceva vreme, au avut destul timp sa tot perfectioneze compilatoarele.

Depinde de ce tip de program rulezi. Nu e suficient sa folosesti fortran ca sa ai cod optimizat.
De exemplu, un banal algoritm iterativ de visitare a unui graph printr-un first-order-depth walk, nu va avea nici un beneficiu de viteza in fortran. Voi da mai jos detalii:

Iata cind e FORTRANUL rapid:
-operatii cu 1D sau 2D vectori. Operatiile cu 1D si 2D sunt "vectorizate".
-Structura de date e statica si nu se schimba in timpul executiei.
-memorie static alocata. Adica aloci de la inceputul executiei un chuck estimat de memorie (de regula ceva mai mare decit necesar) si cu ala lucrezi. Daca trebuie mai multa opresti programul (sau se va opri singur prin crash) si ceri de la inceput mai multa.
-metode iterative si nu recursive.

Iata cind FORTRANUL nu mai e chiar asa rapid:
-operatii pe arbori sau graphuri arbitrare. Daca structura graphurilor (arborilor) se schimba pe timpul executiei nu mai ai nici un beneficiu, de fapt C-ul ar putea fi mai optimizat aici ca e de multa vreme cu astfel de structuri.
-crosindexari de genul arr[iv[ii]] sau arr[iv[pointer[ii]]]. chiar daca folosesti vectori 1D, cu acest gen de crosindexari e mai lent.
-array 3-dimensionali cu cel mai dinafara index accesat in cel mai din interior loop: Ex-emplu:
do ii=1,N
  do j=1,N
    do k=1,N
       sum += v[ii][j][k] + ...
e lent.

- Folosirea de recursie (posibila in FORTRAN 90/95 dar imposibila in varianta anterioara FORTRAN 77)
- Folosirea de pointeri.

Orice paradigma a OOP (chiar si encapsularea) incetineste  fortranul, daca e folosita in ciclurile critice.
Exemplu: Un obiect de genul (il dau in notatie JSON-like):

obiect: { prop1: { paradigm1:whatever,
                         paradigm2:whatever_else},
             prop2: { paradigm1:whatever,
                         paradigm2:whatever_else}
             }

accesat ca:
o[ii].prop1.paradigm1= f(o[ii].prop1.paradigm2).operatie_whatever_complexa.g(o[ii].prop2.paradigm1).operatie.gg(o[ii].prop2.paradigm2) /*am cross indexari*/
o[ii].prop1.paradigm2=...
o[ii].prop2.paradigm1=...
o[ii].prop2.paradigm2=...
..........................
intr-un loop critic, ar putea fi mai lent decit daca ai serializa tot obiectul in array 1D (re-map acordingly) si efectua operatiile pe vectorul 1D, iar la final remap in forma encapsulata. Are sens sa faci asta in looporile cele mai critice, desigur e un nonsens sa te chinui in looporile experioare ce consuma de sute de ori mai putin timp.

Cel mai rapid program de simulari complexe din domeniul in care am eu cunostinta de cauza este in C++, dar e si din cauza ca anumite loopuri critice sunt rescrise in cod-masina pentru anumite procesoare.

Stiu insa de un grup ce a rescris o aplicatie de citeva zeci de mii de linii de cod, din fortran in C, iar dupa 2-3 ani de trial-and-error, versiunea C era la fel de rapida si uneori chiar mai rapida decit cea FORTRAN, desi genul de calcul/structuri (array statici) ar fi fitat perfect unde FORTRANUL exceleaza. Tot ei mi-au spus ca traducere 'ad-literam' (ciclu cu ciclu, si 'if' cu 'if') fortran-C nu va duce la cod eficient C.


Nu stiu care e motivul pentru care FORTRANUL nu e defunct sau obsolete.
Nu e vorba ca il folosesc cei in virsta ci de faptul ca librarii in fortran sunt inca produs comercial (vezi NAG) in care se investeste.
Probabil majoritatea aplicatiilor stiintifice de calcul numeric pot fi re-mapped / re-formulate in mod iterativ si cu structuri statice de date, sau array 1D sau 2D, si atunci folosesti avantajul fortranului de a fi rapid in aceste structuri.
Titlu: Re: Limbaje de programare
Scris de: AlexandruLazar din Ianuarie 05, 2011, 01:04:13 AM
Doar câteva lucruri am de adăugat -- în mare sunt de acord :).

Citatoperatii cu 1D sau 2D vectori. Operatiile cu 1D si 2D sunt "vectorizate".

Nu ştiu sigur dacă vorbim de acelaşi lucru, dar cred că asta fac foarte multe compilatoare din ziua de azi, în condiţiile în care instrucţiunile SSE sunt de găsit aproape pe orice acum.

Citat-operatii pe arbori sau graphuri arbitrare. Daca structura graphurilor (arborilor) se schimba pe timpul executiei nu mai ai nici un beneficiu, de fapt C-ul ar putea fi mai optimizat aici ca e de multa vreme cu astfel de structuri.

Managementul memoriei nu e făcut de compilator ci de sistemul de operare :). Dacă sistemul pe care lucrezi are o implementare proastă pentru malloc/calloc, prost o să meargă indiferent cu ce.

CitatOrice paradigma a OOP (chiar si encapsularea) incetineste  fortranul, daca e folosita in ciclurile critice.
Exemplu: Un obiect de genul (il dau in notatie JSON-like):

obiect: { prop1: { paradigm1:whatever,
                         paradigm2:whatever_else},
             prop2: { paradigm1:whatever,
                         paradigm2:whatever_else}
             }

accesat ca:
o[ii].prop1.paradigm1= f(o[ii].prop1.paradigm2).operatie_whatever_complexa.g(o[ii].prop2.paradigm1).operatie.gg(o[ii].prop2.paradigm2) /*am cross indexari*/
o[ii].prop1.paradigm2=...
o[ii].prop2.paradigm1=...
o[ii].prop2.paradigm2=...
..........................
intr-un loop critic, ar putea fi mai lent decit daca ai serializa tot obiectul in array 1D (re-map acordingly) si efectua operatiile pe vectorul 1D, iar la final remap in forma encapsulata. Are sens sa faci asta in looporile cele mai critice, desigur e un nonsens sa te chinui in looporile experioare ce consuma de sute de ori mai putin timp.

Prima tentaţie ar fi să zic că acum 20 de ani probabil era aşa, dar de fapt cred că nici acum 20 de ani nu mai era aşa :). Nu ştiu sigur cum e în Fortran pentru că n-am prea lucrat cu el, dar în C zonele de memorie pentru membrii structurilor sunt fixe (nu neapărat contiguue, dar fixe) aşa că de fapt codul generat de compilator le accesează direct, fără a mai trece prin deferenţierea unei instanţe a structurii sau obiectului respectiv. Sunt pachete de calcul de înaltă performanţă (de exemplu solver-ul pentru sisteme liniare SuperLU) care foloseşte ca structură de date pentru numere complexe un struct cu doi membri, r şi i, fără a pierde din performanţă cu asta. Începe să se simtă numai dacă obiectul este foarte mare şi nu mai e stocat în zone contiguue de memorie sau dacă accesul se face prin pointeri care nu sunt const (atunci compilatorul nu poate ghici că nu se schimbă niciodată adresa şi trebuie să-i deferenţieze de fiecare dată).

Altele sunt cazurile în care un sistem OOP începe să fie mai lent -- dacă recurgi la clase virtuale, la moşteniri sau dacă vrei să faci un management automat al memoriei. Desigur că fără a recurge la toate astea e dubitabil că mai ai de-a face cu OOP în prea mare măsură...

CitatNu stiu care e motivul pentru care FORTRANUL nu e defunct sau obsolete.
Nu e vorba ca il folosesc cei in virsta ci de faptul ca librarii in fortran sunt inca produs comercial (vezi NAG) in care se investeste.

Nu-i vorba numai că se investeşte în ele, cât că baza de cod existentă este foarte mare, foarte eficientă şi testată foarte bine. Costurile de a o rescrie de la zero în C nu se justifică, mai ales că oricum rutinele Fortran se pot apela din C.
Titlu: Re: Limbaje de programare
Scris de: florin_try din Ianuarie 10, 2011, 01:59:22 AM
Citat
Prima tentaţie ar fi să zic că acum 20 de ani probabil era aşa, dar de fapt cred că nici acum 20 de ani nu mai era aşa. Nu ştiu sigur cum e în Fortran pentru că n-am prea lucrat cu el, dar în C zonele de memorie pentru membrii structurilor sunt fixe (nu neapărat contiguue, dar fixe) aşa că de fapt codul generat de compilator le accesează direct, fără a mai trece prin deferenţierea unei instanţe a structurii sau obiectului respectiv. Sunt pachete de calcul de înaltă performanţă (de exemplu solver-ul pentru sisteme liniare SuperLU) care foloseşte ca structură de date pentru numere complexe un struct cu doi membri, r şi i, fără a pierde din performanţă cu asta.

Prin 2004-2005 intel fortran compiler-ul (versiunea 7 pe vremea aia) lucra cu pina la 50% mai lent daca foloseam date incapsulate gen
a[ii].x,a[ii].y, a[ii].z in loc de a_xyz(ii,1:3). De indata ce am re-mapped datele incapsulate in array si lucrat cu array am recistigat din viteza, insa tinind cont de ce spui tu o fi posibil viteza sa o fi pierdut in alta parte fara sa imi dau seama iar explicatia sa fi fost alta.

De fapt am mai experimentat si alte ciudatenii de performanta in fortran, pe care la momentul respetiv nu prea am stiut cum de apar:
1. La cross indexari de genul a[pointer[ii]] pierde mult din viteza si azi.
2. NINT(x) intrinseca din fortran e amuzant de lenta, mai lenta ca un radical. Nu stiu daca compilatoarele mai recente au fixat asta.
3. Trimitind in subrutine / functii array la modul x[9:100] in loc de array indexati de la primul index 1 (x[:]), incetineste programul incredibil.