[ itf @ 21.11.2008. 15:28 ] @
Čitam nešto po netu da će C++0x standard dopuštati implementaciju garbage collector-a? Što znate o tome i čega sve novog očekujete u ovom standardu?
[ Nedeljko @ 21.11.2008. 15:58 ] @
Mislim da je Stroustrup bio u pravu kada je rekao da je C++ vec isuvise komplikovan i da nikakva prosirenja ne dolaze u obzir. Prosirenja jezika C++ su odavno presla u onanisanje zato sto se C++ sve manje koristi van bazicnih namena (drajveri, OS-evi itd.). Za jednostavne programe kao sto je ovaj

Code:
#include <iostream>

using namespace std;

int n = 5;

void f(const double &x) {
    n++;
    cout << x << endl;
}

int main() {
    f(n);
    
    return 0;
}


smatram da bi bar 95% profesionalnih programera na tom jeziku trebalo da zna (sa sigurnoscu) sta ispisuje bez kompajliranja. Da li je to slucaj? Sumnjam da vise od 80% profi C++ programera sa sigurnoscu zna tacan odgovor.
[ itf @ 21.11.2008. 18:18 ] @
Očito se ostali baš i ne slažu već se na neki način trude poboljšati C++... Nitko ne kaže da je jednostavan, no ono što ga "krasi" je svakako snaga, i zato se ipak danas dosta koristi i nema razloga da ga se ne unaprijedi.

I proširenje ne znači nužno da će se komplicirati. Štoviše, vjerujem da će se i olakšati i pojednostaviti u dosta segmenata.
[ mmix @ 21.11.2008. 20:19 ] @
Ima tu dosta lepih stvari ali koliko ja znam GC nece biti jedna od njih, iskreno ni ne patim mnogo za time u C++u, mnogo me vise raduju neke druge stvari kao sto su generics-i i lambde i templates sa varijabilnim brojem tipova. Al sve u svemu dosta smo jos daleko od tranutka kad se 0x bude zvanicno pojavio u mainstream alatima.
[ EArthquake @ 21.11.2008. 23:04 ] @
osnovni smisao C-a, pa i C++-a je brzina ,
c++ je vec prilicno usporen zbog nekih zahteva objektne metodologije

a sumnjam da bi dodatak GCa povoljno uticao na brzinu
a i ne vidim zasto bi to bilo potrebno,

@Nedeljko , zavisi sta se smatra za profesionalnog programera :)
[ deerbeer @ 22.11.2008. 00:00 ] @
Citat:
EArthquake
a sumnjam da bi dodatak GCa povoljno uticao na brzinu
a i ne vidim zasto bi to bilo potrebno,

Pa i ne bas... naravno, al mozda bi mogao neki "kontrolisan nacin" upotrebe GC-a a ne njegovo totalno prisustvo ..
ili neka vrsta poboljanog pracenja alociranja/dealociranja memorije , sa detaljnijim izvestajem u debug-u itd ..
da bi u nekom smislu skratili nekad potrebno vreme razvoja programa ili nekog testiranja ..
Nekad i brzina nije bas presudan faktor osim ako je rec o 3D igrama , drajverima , zahtevnom grafikom ili nekom real-time simulacijom,
Verovatno kreatori novog standarda imaju viziju takve buducnosti da li ce c++ da postane jezik
za uzan krug ljudi sa specificnom namenom ili ce da ostane i dalje koliko toliko siroko rasprostranjen.
Ostaje nam da vidimo ...
[ Nedeljko @ 22.11.2008. 15:16 ] @
C++ je jedini programski jezik u svemiru za koji je nemoguće napisati kompajler koji bi bio kompletan i zaustavljiv. To je matematički dokazano. Oćete li nink na PDF?
[ itf @ 22.11.2008. 15:41 ] @
Citat:
Nedeljko: C++ je jedini programski jezik u svemiru za koji je nemoguće napisati kompajler koji bi bio kompletan i zaustavljiv. To je matematički dokazano. Oćete li nink na PDF?

Može
[ NastyBoy @ 22.11.2008. 16:42 ] @
C++ je ruzhan, zastrashujuce obiman i preterano liberalan. I trenutno prolazi kroz drugi pubertet. Ako mislite da pada u zaboravan ili niste u toku ili gledate u pogreshnom pravcu. I ne, GC je totalno nepotreban takvom jeziku - imate D odmah preko puta; moguce je da ce imati lepu buducnost.

@Nedeljko
Koja je poenta tvog posta o "profesionalcima"?
[ Goran Rakić @ 22.11.2008. 17:01 ] @
Citat:
Nedeljko: nemoguće napisati kompajler koji bi bio kompletan i zaustavljiv


Fora sa pretprocesorom?
[ EArthquake @ 23.11.2008. 22:56 ] @
Citat:
NastyBoy: C++ je ruzhan, zastrashujuce obiman i preterano liberalan. I trenutno prolazi kroz drugi pubertet. Ako mislite da pada u zaboravan ili niste u toku ili gledate u pogreshnom pravcu. I ne, GC je totalno nepotreban takvom jeziku - imate D odmah preko puta; moguce je da ce imati lepu buducnost.

@Nedeljko
Koja je poenta tvog posta o "profesionalcima"?


mislim da je poenta posta , da dobrim c++ programerima ne treba GC
tj da ljudi koji stvarno poznaju kako treba programirati na tom jeziku , a ne "kursadzije" koji su procitali c++ za 21 dan, umeju da upravljaju memorijom , i da to nije nista preterano tesko
[ Nedeljko @ 24.11.2008. 08:06 ] @
Citat:
Goran Rakić: Fora sa pretprocesorom?


Fora sa sablonima (templates).

http://en.wikipedia.org/wiki/C%2B%2B#Templates

Citat:
In addition, templates are a compile time mechanism in C++ which is Turing-complete, meaning that any computation expressible by a computer program can be computed, in some form, by a template metaprogram prior to runtime.
[ Nedeljko @ 24.11.2008. 08:09 ] @
Poenta sa profesionalcima je da ni profesionalni C++ programeri ne znaju sve aspekte jezika C++, jer je previse zakomplikovan raznim "prosirenjima". Koliko shvatam, lepota C++ jezika u odnosu na C nije tipa "zivela sloboda", jer je C za to dusu dao, vec mogucnost stavljanja nekih stvari pod kontrolu.
[ deerbeer @ 24.11.2008. 09:26 ] @
Citat:
EArthquake: mislim da je poenta posta , da dobrim c++ programerima ne treba GC
tj da ljudi koji stvarno poznaju kako treba programirati na tom jeziku , a ne "kursadzije" koji su procitali c++ za 21 dan, umeju da upravljaju memorijom , i da to nije nista preterano tesko

Slazem se sa poentom , ni meni ne treba GC ,al vidis kad radis "profesionalno" pa nasledis neki kod-projekat od nekog
pre tebe, pa juris danima bug-ove koji su nastali zbog memory leak-ova u programu , jer covek je bio razmazen
pa nije citao ni sta mu pise u output prozoru ni ostale compiler warnings-e ..
Ukucas onda u guglu onda "debuging memory leak software" i izbaci ti 100 linkova sa programima koji to detektuju
i od kojih neki kostaju par hiljada dolara . Ocigledno odnos ponude i potraznje je dobar cim se prodaje za te pare ...
A upravo je i to poenta "kursadzije" koji su procitali c++ za 21 dan" i dobrih C++ programera :)


[ Nedeljko @ 24.11.2008. 13:39 ] @
Ako cemo tako, dobrom programeru je dobar i asembler.
[ deerbeer @ 24.11.2008. 16:00 ] @
Citat:
Nedeljko: Ako cemo tako, dobrom programeru je dobar i asembler.

Super ,pa onda pisi u asembleru programe tipa : Word ,Excel , Photoshop ,Autocad itd ...
I to isto preporuci tim velikim firmama i njihovim programerima koje prave pomenute programe :)


Citat:
Nedeljko: Poenta sa profesionalcima je da ni profesionalni C++ programeri ne znaju sve aspekte jezika C++, jer je previse zakomplikovan raznim "prosirenjima". Koliko shvatam, lepota C++ jezika u odnosu na C nije tipa "zivela sloboda", jer je C za to dusu dao, vec mogucnost stavljanja nekih stvari pod kontrolu.

Ok .. pa reci onda koje su to stvari ?

[ Nedeljko @ 24.11.2008. 16:10 ] @
Na primer "poluautomatsko" skupljanje djubreta (treba napisati kod klase kako treba, a onda konstruktori i destruktori rade posao), enkapsulacija (ne mogu da guram nos gde mu nije mesto) itd. Treba li da nabrajam?

Citat:
deerbeer: Super, pa onda pisi u asembleru programe tipa : Word ,Excel , Photoshop ,Autocad itd ...
I to isto preporuci tim velikim firmama i njihovim programerima koje prave pomenute programe :)


O tome ti celo vreme i pricam. Nisu ljudi dzabe izmisljali GC i ostala pomagala. Ma, da, ja sam ekstra mega vau giga programer i ne treba mi nista od toga - samo hex editor, pa udri. I MS i Adobe i Autodesk imaju ekstra mega vau giga programere, pa koriste savremena dostignuca da bi bili konkurentni.

[ Nedeljko @ 29.11.2008. 10:41 ] @
Kad su vec dodavali razne perverzije, zasto se nisu setili statickih klasa (sve metode i atributi su automatski staticki) za najjednostavnije implementiranje singltona?
[ Eurora3D Team @ 29.11.2008. 15:10 ] @
Moje misljenje je da je C++ dobar za dobre programere , a imas i veliku kontrolu u svakom smislu.
Oni koji su lenji ili oni koji nemaju toliko smisla za arhitekturu :) uvek mogu da izaberu neki "automatizovaniji" jezik , npr. C# (koji je by the way dobro zamisljen )
Normalno nemogu svi da znaju sve elemente C++ - a ali bi trebalo da bar to sto znaju rade kako treba ... sto bi rekli ovi iz MS - a good practices.
C++ je osmisljen da bi se povecala produktivnost u odnosu na C. Npr. ako Adobe pravi novu verziju Photoshop - a uzece klase is stare i isvesce nove , prosirene , neke ce da doda , neke da oduzme itd . i to je mnogo brze nego kod proceduralnih jezika gde bi za svaku verziju morali da procesljavaju ceo kod i da menjaju milion sitnica (i time naprave neke nove greske) da bi nekoj novoj funkciji mogli da proslede odgovarajuci tip podatka itd ...
Ovo sa automatizacijom stoji ali ko zna sta bi bilo sa brzinom da postoji (jer tu automatizaciju mora da radi neki ubaceni kod) ... inace imas i auto pointere.
Verovatno bi najbolje bilo da postoji neko extra dobro IDE za C++ (nesto kao za C#) koje podvlaci i upozorava na moguce greske itd. itd. sto nije nemoguce da se napravi.

I ovo za GC
Jedino intererpretirani jezici ili jezici kod kojih je izvodjenje programa na neki nacin kontrolisano mogu da imaju kompletan GC.
Kod C++ programa sve sto se desava kontrolisano je samo nasim kodom (i onim sto kompajler ubaci :) )tako da sve vezano za GC mora da se uradi u trenutku kompajlovanja.




[Ovu poruku je menjao Eurora3D Team dana 29.11.2008. u 16:34 GMT+1]
[ Dragi Tata @ 08.12.2008. 20:14 ] @
Citat:
Nedeljko: Kad su vec dodavali razne perverzije, zasto se nisu setili statickih klasa (sve metode i atributi su automatski staticki) za najjednostavnije implementiranje singltona?


Crni Nedeljko :)

Statičke klase su perverzija za jezike koji nemaju slobodne funkcije. C++ kao i svi normalni jezici ima slobodne funkcije i ništa mu ne trebaju statičke klase.
[ Nedeljko @ 23.12.2008. 18:58 ] @
Pretpostavljam da "slobodan" znači "globalan", tj. da nije član nijedne klase, pošto RMS ima svoje shvatanje slobode.

Pa, vidiš, nije da ne trebaju statičke klase. Možeš ti takve stvari da potrpaš kao globalne. Ali đe je tu enkapsulacija? Statička klasa može da ima privatne atribute za koje je garantovano da se po njima ne prčka direktno, već samo preko interfejsa klase.
[ Dragi Tata @ 23.12.2008. 19:22 ] @
Citat:
Nedeljko: Pretpostavljam da "slobodan" znači "globalan",


Ne obavezno, slobodna funkcija može da bude i u nejmspejsu.

Citat:
Nedeljko:
tj. da nije član nijedne klase


E, to da.

Citat:
Nedeljko:
pošto RMS ima svoje shvatanje slobode.


Ima ga i Džoni Štulić

Citat:
Nedeljko:
Pa, vidiš, nije da ne trebaju statičke klase. Možeš ti takve stvari da potrpaš kao globalne. Ali đe je tu enkapsulacija? Statička klasa može da ima privatne atribute za koje je garantovano da se po njima ne prčka direktno, već samo preko interfejsa klase.


Anonimni nejmspejsovi, naravno. Tu ti je još bolja enkapsulacija jer se funkcije ne vide ni u heder fajlu. Pazi primer:

Code:

// primer.h :

namespace SvetliPrimer 
{
void MojaSvetlaFunkcija();
}

// primer.cpp

namespace
{
void MojaPrivatnaTamnaFunkcija1()
{...}
void MojaPrivatnaTamnaFunkcija2()
{...}
} // kraj anonimnog nejmspejsa

namespace SvetliPrimer 
{
void MojaSvetlaFunkcija()
{
  MojaPrivatnaTamnaFunkcija1();
  MojaPrivatnaTamnaFunkcija2();
}
}

[ Nedeljko @ 24.12.2008. 07:58 ] @
Za mene je globalno ono cemu mogu da pristupim odakle hocu, pa cak i ako moram da dokucam nesto (ime namespace-a), ali dobro razumeli smo se. Vidis, ovo sa neimenovanim prostorima imena je resenje do jaja. Celu "staticku klasu" izdvojis u jedna cpp fajl, sve sto je "privatno" stavis pod namespace {}, a u heder sve ostalo (interfejs).
[ Dragi Tata @ 25.12.2008. 02:50 ] @
Citat:
Nedeljko: Za mene je globalno ono cemu mogu da pristupim odakle hocu, pa cak i ako moram da dokucam nesto (ime namespace-a), ali dobro razumeli smo se.


Ima smisla to što pričaš, ali standard razlikuje ova dva slučaja - "globalno" je sinonim za "u globalnom nejmspejsu"

Citat:
Nedeljko:
Vidis, ovo sa neimenovanim prostorima imena je resenje do jaja. Celu "staticku klasu" izdvojis u jedna cpp fajl, sve sto je "privatno" stavis pod namespace {}, a u heder sve ostalo (interfejs).


O, da. Inače, donekle sličan sistem za "nestatičke klase" je PImpl idiom: http://www.gotw.ca/gotw/024.htm