Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Rename SQL column

Achiziționare tuner TV !

Din ce este facuta terasa asta?

Cum accesez site-ul CNAS ?
 Algoritm simplu de calculare al u...

Bitdefender Total Security ș...

casa verde 2024

Intrerupator cu N - doza doar cu ...
 Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...
 probleme cu ochelarii

Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National
 

Cum sa aleg intre C si C++

- - - - -
  • Please log in to reply
54 replies to this topic

#19
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012

View Postxyv123, on 17 mai 2014 - 14:17, said:

Poti prefera limbajul C daca:
- scrii software care vrei sa interactioneze usor cu alte limbaje.
- daca scrii cod embedded. In domeniul embedded C-ul e dominant. Nu C++
- din motive de portabilitate
- daca scrii module de kernel sau drivere

Tu trebuie sa intelegi faptul ca sunt destui programatori care au ales sa dezvolte o aplicatie anume in C in mod constient si determinat.
Si ca nu fac asta pentru ca sunt incompetenti, ca neaparat nu stiu C++ (ca altfel sigur il alegeau pe el), ca n-au vazut "lumina" sau ca sunt "hateri" fata de C++. Multi sunt programatori foarte buni in C++ si totusi aleg sa foloseasca C pentru anumite tipuri de proiecte.
Pur si simplu e o alegere. Un limbaj e doar o unealta. Iar noi pierdem mult prea multa vreme discutand filozofic despre unelte in loc sa discutam despre ceea ce facem cu ele.

PS: Am citit de mult cartea respectiva.
Si tu crezi ca eu n-am ales vreodata C in mod constient si determinat? :) Ai un mod interesant de-a pune problema; interpretezi ceea ce scriu eu intr-un mod extremist. Te-as ruga sa nu-ti mai evidentiezi punctul de vedere cu prostii de genul "nu fac asta pentru ca sunt incompetenti" sau "ca n-au vazut lumina".

Motive sa alegi C inca exista; dar IMO vorbim mai degraba de acele cazuri in care C++ nu e potrivit - nu e suportat corespunzator pe toate platformele pe care aplicatia trebuie sa ruleze, de exemplu. Experienta echipei reprezinta de asemenea un factor important, daca ai la dispozitie programatori C asta o sa folosesti.

In cea mai mare parte insa, dezavantajele C++ se impart in doua categorii:
+ imaginare
+ care pot fi ocolite

PS: Bun, da-o mai departe :)
PPS: Fugi de-aici cu Pythonul tau.

#20
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
Chestia e ca subiectul e "Cum sa aleg intre C si C++"; si n-as vrea sa divagam iarasi catre alte limbaje (Python sau altceva).

Edited by TS030, 17 May 2014 - 19:14.


#21
duca_razvan

duca_razvan

    Member

  • Grup: Members
  • Posts: 243
  • Înscris: 29.03.2008
Ce aveti cu Python? Eu in liceu am facut "C++" (adica C), iar in primul semestru la facultate am studiat Python. Acum proiectele prefer sa le fac in python. Eu zic ca pt proiecte scolare, python este excelent. Mi-as fi dorit ca in liceu sa fi facut Python si la facultate C & C++.

#22
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
N-am nimic, doar ca este off-topic.

#23
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
OK, discutia s-a "impotmolit". xyv123, iti respect opinia, e bazata pe experienta; daca intelegi ca nu sunt extremist ci deschis unei discutii argumentate, chiar te rog sa continui sa raspunzi. Imi cer scuze daca te-am suparat cu ceva; nu asta a fost intentia.
Aceeasi invitatie pentru toti programatorii cu experienta; cred ca putem face o treaba mult mai buna decat prostia aia de site.

Imi voi reitera punctul de vedere:
Intre C++ si C alegerea logica este C++, cu exceptia unui numar de cazuri in care utilizarea C++ nu este oportuna. Evident (sper), "alegerea logica" nu implica obligativitate.
Context:
- C++ "is a better C". C++ ofera tot ceea ce ofera C-ul; C++ poate fi la fel de low level, poate oferi acelasi nivel de control. Dar chiar si pentru programarea procedurala ofera avantaje e.g. type safety etc.
- poti programa procedural, defini tipuri de date, orientat obiect, generic; poti folosi sau nu exceptii, RTTI... nimeni nu-ti impune un anume stil. Si asta vine impreuna cu:
- "zero overhead". Ce nu folosesti, n-o sa aiba impact asupra codului tau; cu alte cuvinte, neutilizarea unei facilitati din C++ nu este un motiv pentru a arunca totul la gunoi si-a trece la C.
- "most of what you don't know won't hurt you" - C++ este monstruos (si creste cu fiecare noua iteratie), dar poate fi invatat treptat si folosit cu success.
- eficienta. Un cod C++ bine scris nu va deveni mai eficient daca ar fi complet rescris in C.
- presupunem ca echipa e "fluenta" in ambele limbaje, si ca nu exista cod legacy care trebuie refolosit.

Acum, putem incerca sa identificam motivele reale (justificate technic) pentru care-am folosi C in loc de C++.

A. Pseudo-motive pentru a alege C:
- integrarea cu module scrise in alte limbaje
  - exista workaround / C linkage
- programare embedded: C este alegerea uzuala
  - C++ este de asemenea folosit pe scara larga in domeniul embedded.
- stabilitatea limbajului
  - C++ a fost standardizat in 1998, ce mai e de spus?

B. Motive pentru care utilizarea C++ nu ar fi oportuna:
- lipsa suportului pentru anumite platforme
- ABI complex

Haideti sa completam cele doua liste, si - daca exista argumente - chiar sa mutam chestii dintr-o parte intr-alta.

#24
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
Nimeni? :(

#25
magic-gabi

magic-gabi

    Senior Member

  • Grup: Senior Members
  • Posts: 2,925
  • Înscris: 04.07.2006

View PostTS030, on 19 mai 2014 - 13:45, said:

B. Motive pentru care utilizarea C++ nu ar fi oportuna:
- lipsa suportului pentru anumite platforme
- ABI complex
Alegi C cand efectiv nu poti sa folosesti C++. Multe proiecte vechi sunt realizate in C pentru ca C++ nu era nici pe departe ce e astazi, in alte cuvinte "motive istorice". ABI-ul nu conteaza pentru ca daca vrei sa faci de exemplu plugin-uri sau mai stiu eu ce, poti sa expui functii C care apeleaza functii C++ si e acelasi lucru.

C duce la probleme nasoale chiar daca esti expert si esti foarte atent la ce faci. C++11 poate fi folosit cam la fel de usor ca Java.

In scoli ar trebui sa invete Python, in niciun caz C sau C++ Posted Image. Majoritatea elevilor gresesc din cauza problemelor legate de pointeri si undefined behavior (ce expert C nu a facut nici macar un signed integer overflow?) si in loc sa acorde atentie problemei, pierd timpul cu detalii inutile.

#26
danzi23

danzi23

    Senior Member

  • Grup: Senior Members
  • Posts: 6,072
  • Înscris: 14.08.2013

Quote

In scoli ar trebui sa invete Python, in niciun caz C sau C++
+1
Si eu sunt de parere ca in liceu ar trebui predat Python si la facultate C.

Vin eu cu o alta intrebare: De ce o persoana care a invatat Python, C ar trebui sa studeize C++ si nu sa treaca direct la C#, Java ?

#27
magic-gabi

magic-gabi

    Senior Member

  • Grup: Senior Members
  • Posts: 2,925
  • Înscris: 04.07.2006

View Postdanzi23, on 22 mai 2014 - 12:15, said:

+1
Si eu sunt de parere ca in liceu ar trebui predat Python si la facultate C.

Vin eu cu o alta intrebare: De ce o persoana care a invatat Python, C ar trebui sa studeize C++ si nu sa treaca direct la C#, Java ?
Studiezi ce iti place sau ce iti trebuie (in functie de proiectul la care lucrezi) Posted Image.

#28
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,571
  • Înscris: 30.07.2003

View Postdanzi23, on 22 mai 2014 - 12:15, said:

De ce o persoana care a invatat Python, C ar trebui sa studeize C++ si nu sa treaca direct la C#, Java ?
Daca a studiat C atunci nu C++ e mai la indemana sa aplice OOP ? Apoi in C#/Java ai mai putine problematici din sfera in cauza.

Edited by neagu_laurentiu, 22 May 2014 - 12:58.


#29
MrReason

MrReason

    Senior Member

  • Grup: Senior Members
  • Posts: 9,266
  • Înscris: 08.10.2010

View PostOriginalCopy, on 17 mai 2014 - 07:07, said:

"Ni s-au prezentat" suna pasiv. Iar clasele nu sunt totul in C++, ci doar inceputul.
Cam sunt... adica OOP-ul e caracteristica de departe cea mai importanta... ca exista alte balarii ca template metarahat, e alta poveste, insa alea in general sunt (cu exceptiiile de rigoare)  pt. copchii cu prea mult timp liber care se cred mai destepti decat sunt...

View Postdan-s, on 17 mai 2014 - 07:54, said:

Mai ales că se pune un mare accent pe dezvoltarea de algoritmi și dezvoltarea gândirii și mai puțin pe limbaj.
Adica extrem, extrem de gresit. Dezvoltarea gandirii my ass.

View Postdan-s, on 17 mai 2014 - 08:00, said:

Eu personal cred că mai bine era dacă se studia C și să îți dea bazele de a programa un mouse sau de a face programare grafică, etc. în C în loc de atâtea probleme de matematică.
De acord ca obsesia cu matematica e imbecila si trebuie inlaturata, dar mouse si grafica sunt treburi avansate si dependente de api-uri de sistem de operare...  

View Postmagic-gabi, on 22 mai 2014 - 12:03, said:

In scoli ar trebui sa invete Python, in niciun caz C sau C++ Posted Image. Majoritatea elevilor gresesc din cauza problemelor legate de pointeri si undefined behavior (ce expert C nu a facut nici macar un signed integer overflow?) si in loc sa acorde atentie problemei, pierd timpul cu detalii inutile.
Asta cam asa-i. Dar si python are hibele sale plus o sintaxa cam exotica. Eu zic ca se poate incepe cu orice, DAR e necesara familiarizarea cu limbajul si caracteristicile lui pana la un nivel macar mediu inainte de a trece la implimentarea a tot felul de algoritmi.

Ideea asta cu bagam algoritmii intai ca astia sunt chipurile "baza" este extrem, extrem de prosteasca.

View Postdanzi23, on 22 mai 2014 - 12:15, said:

Vin eu cu o alta intrebare: De ce o persoana care a invatat Python, C ar trebui sa studeize C++ si nu sa treaca direct la C#, Java ?
Nu trebuie sa studiezi "mai intai" un anume limbaj si nu exista vreo ordine de invatare a limbajelor. Poti sa incepi cu oricare si sa continui cu oricare.

#30
dan-s

dan-s

    Active Member

  • Grup: Banned
  • Posts: 1,699
  • Înscris: 02.07.2013

View PostMrReason, on 22 mai 2014 - 13:38, said:

Adica extrem, extrem de gresit. Dezvoltarea gandirii my ass.
Argumentează.

#31
MrReason

MrReason

    Senior Member

  • Grup: Senior Members
  • Posts: 9,266
  • Înscris: 08.10.2010

View Postdan-s, on 22 mai 2014 - 16:13, said:

Argumentează.
Am tot argumentat de m-am plictisit, ca s-a tot discutat subiectul asta. Sorry, dar am ramas cu impresia ca argumentez la pereti, asa ca nu ma mai obosesc.

Patru carti bune, pt. patru limbaje diferite, de patru autori diferiti, inclusiv un limbaj non OOP.

Casca ochii pe unde si cam dupa cata si ce materie apar algoritmii & co.

Daca priepi ceva, bine, daca nu, nu.

Iar daca ai impresia ca e intamplare sau ca cei din invatamantul romanesc sunt mai geniali, eu zic sa te mai gandesti.

Attached Files


Edited by MrReason, 22 May 2014 - 17:09.


#32
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
E chiar asa de greu de respectat subiectul thread-ului si al ariei? :(

View Postmagic-gabi, on 22 mai 2014 - 12:03, said:

In scoli ar trebui sa invete Python, in niciun caz C sau C++ Posted Image. Majoritatea elevilor gresesc din cauza problemelor legate de pointeri si undefined behavior (ce expert C nu a facut nici macar un signed integer overflow?) si in loc sa acorde atentie problemei, pierd timpul cu detalii inutile.
Elevi sau experti, decide-te. Elevii nu-si pun majoritatea problemelor pe care si le pune un expert (inclusiv integer overflow). Expertii nu fac majoritatea greselilor pe care le face un elev.
Apropo, cat iti ia sa observi prin cateva hectare de cod diferenta dintre ' si ` ?

View Postdanzi23, on 22 mai 2014 - 12:15, said:

Si eu sunt de parere ca in liceu ar trebui predat Python si la facultate C.
Vin eu cu o alta intrebare: De ce o persoana care a invatat Python, C ar trebui sa studeize C++ si nu sa treaca direct la C#, Java ?
Cartea pe care-o recomandam acum cateva posturi te poate ajuta sa decizi daca vrei sa studiezi C++, daca principiile pe care acest limbaj a fost proiectat sunt sau nu importante pentru tine.
Nu vreau sa ma lansez intr-o polemica ce nu-si are rostul aici, voi prezenta insa cateva idei:
- C++ este "statically typed", ceea ce inseamna ca o buna parte a erorilor (nu cele de logica, evident) sunt prinse de compilator.
- C++ nu este un "standard proprietar"; dimpotriva, e disponibil pe o sumedenie de platforme.
- C++ este eficient. Folosit cum trebuie, programele scrise vor fi cel putin la fel de eficiente ca cele scrise in C (si implementand exact aceleasi facilitati). Costul fiecarei facilitati propuse a fi introdusa in limbaj a fost analizat si para-analizat, refuzandu-se cele pentru care nu exista o solutie corespunzatoare.

OOP este doar una dintre paradigmele pe care C++ le suporta. Programare procedurala, mai facila ca in C (in mare parte datorita type checking-ului superior). Tipuri de date utilizator. OOP. Programare generica. Elemente de programare functionala.
Chiar daca nu folosesti OOP poti totusi sa definesti tipuri de date utilizator. Poti sa folosesti RAII, controland mai bine resursele (RAII nu e posibil in orice limbaj).

#33
Rhesus

Rhesus

    Senior Member

  • Grup: Senior Members
  • Posts: 2,882
  • Înscris: 22.04.2014
Parerea mea:

In scoli, sunt deacord cu Pascal. De ce?
1. In liceu, trebuie dezvoltata in primul rand gandirea si algoritmica. Astfel, ajuti si acei 80% din elevi care dau la medicina, drept sau alte balarii. Nu ar trebuie insistat mult pe un limbaj de programare, ci doar cei care doresc sa urmeze o facultate in domeniul IT

Acuma vine durerea:
In liceu, cine stie ca vrea sa urmeze IT, obligatoriu ar trebuie sa porneasca facultatea cu minim 2 limbaje de programare (invatate pe cont propriu). Bineinteles, nu C si C++ (adica C si C). C++ si Java sau C# de ex. Algoritmica si gandirea sa fie exclusiv aprofundata in clasele a 9-a (maxim inca un semestru dintr-a 10-a).

Se ajunge in facultate cu studenti care nu stiu bine nici macar un limbaj de programare.... stiu algoritmii tociti, pe de rost, din asa zisa informatica pe foaie de liceu. NU! ASA NU.
Plus ca nu ne mai permitem sa facem ore de programare clasica in facultate, cand IT-ul evolueaza enorm, si ar trebui trecute in vedere alte chestiuni precum servicii, retelistica, tehnici de programare, programare web, cloud computing si altele.


2. Trebuie studiate si intelese toate tipurile de paradigme de programare:
- programare imperativa (structurata si procedurala)
- programare logica
- programare functionala
- programare orientata pe obiect, pe subiect si pe rol
- programare orientata pe servicii - asta e viitorul.
Se aprofundeaza dupa aceea, una sau 2 in functie de ce vrei sa faci.

Facultatea de IT ar trebui sa te lase cu 3-4 limbaje de programare invatate la nivel HIGH (invatate in sensul intelegerii mecanismelor din spatele limbajului, nu tocirea entitatilor) + habar mediu din fiecare paradigma.

Un programator ca lumea trebuie sa stie de toate. Sa aiba habar din fiecare.

Ca sa fiu ontopic:
Ce sa aleg intre C si C++?
AMBELE.

Se studiaza toate bibliotecile C si C++, fara a merge ,,doar,, pe un limbaj.
C++ - orientat obiect (+ imperativ)
C-  imperativ

Studierea diferentelor intre C si C++, nu ar trebui sa dureze mai mult de .... o saptamana.

Edited by Rhesus, 22 May 2014 - 23:43.


#34
magic-gabi

magic-gabi

    Senior Member

  • Grup: Senior Members
  • Posts: 2,925
  • Înscris: 04.07.2006

View PostTS030, on 22 mai 2014 - 21:06, said:

Elevi sau experti, decide-te. Elevii nu-si pun majoritatea problemelor pe care si le pune un expert (inclusiv integer overflow). Expertii nu fac majoritatea greselilor pe care le face un elev.
Apropo, cat iti ia sa observi prin cateva hectare de cod diferenta dintre ' si ` ?
Ce nu iti e clar? Daca si expertii fac greseli nasoale care invalideaza programul prin undefined behavior atunci cum poate un elev sa faca un program corect? Aproape toate programele elevilor, chiar daca afiseaza rezultatul corect au o multime de probleme. Multe probleme lucreaza cu numere mari la liceu si Python lucreaza foarte bine cu asta. Python e folosit si de multi oameni de stiinta din cauza asta. Un program poate fi corect din punct de vedere logic dar sa nu functioneze corect din cauza ca e implementat in C++ folosind tipuri primitive.
Nu inteleg unde bati cu diferenta dintre doua glife.

View PostRhesus, on 22 mai 2014 - 23:41, said:

Studierea diferentelor intre C si C++, nu ar trebui sa dureze mai mult de .... o saptamana.
Ce intelegi prin diferente? Sunt unii care au programat zeci de ani in C++ si tot nu stiu nici pe departe tot.

#35
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
Tocmai, ca-mi este clar Posted Image
Problemele cu numere mari de la liceu sunt date tocmai in ideea de-a le rezolva "manual". Un elev trebuie sa le rezolve manual; un programator va apela la o librarie sau limbaj construit pentru asa ceva.
Unde crezi ca bat? :)

#36
magic-gabi

magic-gabi

    Senior Member

  • Grup: Senior Members
  • Posts: 2,925
  • Înscris: 04.07.2006

View PostMrReason, on 22 mai 2014 - 17:08, said:

Am tot argumentat de m-am plictisit, ca s-a tot discutat subiectul asta. Sorry, dar am ramas cu impresia ca argumentez la pereti, asa ca nu ma mai obosesc.

Patru carti bune, pt. patru limbaje diferite, de patru autori diferiti, inclusiv un limbaj non OOP.

Casca ochii pe unde si cam dupa cata si ce materie apar algoritmii & co.

Daca priepi ceva, bine, daca nu, nu.

Iar daca ai impresia ca e intamplare sau ca cei din invatamantul romanesc sunt mai geniali, eu zic sa te mai gandesti.
Nu ti se pare normal ca o carte care te invata un limbaj de programare sa te invete mai intai cum se foloseste limbajul ala? Nu vad ce legatura are cu ce se intampla in scoli. In scoala se invata informatica, nu programare. E mare diferenta intre cele doua, una fiind o stiinta si cealalta, un mestesug. E ca diferenta intre a proiecta o cladire si a o construi. Degeaba ai cea mai buni muncitori daca proiectul tau e praf. Ar fi aberant sa invete elevii 4 ani un limbaj de programare, in loc sa invete informatica. Informatica se poate aplica in orice limbaj de programare!

View PostTS030, on 23 mai 2014 - 11:02, said:

Unde crezi ca bat? Posted Image
Nu stiu, de aia te-am intrebat Posted Image.

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate