» »

C++0x

Lambda the Ultimate - Bjarne Stroustrup (oče jezika C++) je spisal kratko predstavitev novosti v prihajajočem standardu za C++ z delovnim imenom C++0x, planiranim za leto 2009.
Ostaja usmeritev k sistemskemu programiranju, poleg tega pa nameravajo poenotiti delovanje in bolj natančno definirati obnašanje v robnih pogojih. Opazna novost, poleg nekaj sintaktičnih bonbonočkov, so koncepti. To so tipi, ki opisujejo lastnosti tipov, torej zagotavljajo v katerih protokolih (iterator, tok, število, ...) lahko dani tip uporabimo.

59 komentarjev

strani: « 1 2

Gundolf ::

Skrajni čas da tole končajo.

Izi ::

>>Skrajni čas da tole končajo.
Se boš pa ša načakal. Planirano je za 2009 ponavadi se pa še malo zavleče, če negre vse po načrtih.
Čez ene 4 leta bo pa že :D

>>koncepti so tipi, ki opisujejo lastnosti tipov
Zdaj pa vse razumem >:D

Gundolf ::

V imenu standarda je 0x kar pomeni leto 200x. In tako ime ma že od devetdesetih let. Zdaj so končno dali datum izdaje v 09. Tako da tisto, da se ponavadi zavleče, je že mimo. Vleče se že predolgo, zdaj je praktično že vse odločeno. Če pa do 09 ne končajo bodo morali že ime spremenit;)

Matrin ::

A to bodo nadgradili C++, tk ko so C, ko so naredili C++, al bo sn malo neki dodano?

OwcA ::

Ne, samo dopolnili ga bodo, kot so narpimer s standardom C 98 nadgradili C, ali kot imamo PHP 5 (prej 4, 3, ...), Python 2, ...
Otroška radovednost - gonilo napredka.

Matevžk ::

Kakšno slabo desetletje so prepozni :\. Verjetno je edino, na kar računajo, združljivost s staaaaaaro kodo ...
lp, Matevžk

Vesoljc ::

> Verjetno je edino, na kar računajo, združljivost s staaaaaaro kodo ...

lahko bolj natančno poveš kaj si s tem mislil?
Abnormal behavior of abnormal brain makes me normal...

CCfly ::

Jaz bi tudi argumentacijo tegale rad slišal.
"My goodness, we forgot generics!" -- Danny Kalev

Matevžk ::

No, OK, in, kot je v novici zapisano, na low-level stvari.
Mišljeno je bilo, da se jezika C in C++ uporabljata predvsem zato, ker je v teh dveh jezikih napisano največ kode. Nekako posledično, bi se lahko reklo, ju dobri programerji najbolje poznajo. Nikakor pa nista več v ospredju kar se tiče novosti (kar prinaša s seboj lažje in bolj pregledno programiranje, kar vodi do manjšega števila napak).
lp, Matevžk

Gundolf ::

Nope, mišljeno je, da se ne podira kompatibilnosti s staro kodo in da se poleg dosedanje usmeritve v low level zadeve (ki btw ni bila preveč uspešna, ker kernel programerji še vedno raje uporabljajo C) bolj intenzivno usmeri še v področja, kjer se je C++ bolj uveljavil (veliko bolj high level zadeve, kot je bilo v Bjarnetovih načrtih).

Ko pa rečeš, da C++ ni v ospredju kar se tiče novosti, sploh takih za lažje in preglednejše programiranje, potem pa veliko poveš o svojem znanju. Morda bi si moral prebrat članek.

Matevžk ::

OK, razen tega, da sem profesionalni programer (sicer še študent, vendar med uspešnejšimi, v firmi me pa štejejo med pro) ... ne, res se nimam časa poglabljati v vse jezike in C/C++ v firmi ne uporabljamo. Uporabljamo pa Javo in Delphi (slednjega jaz zadnje čase ne več, zato ne vem, kako napredne so najnovejše verzije) in Java JE zelo napreden jezik. Tako kot je C#.

Nikakor pa to ni C++. Če ne drugega, kompatibilnost in enotnost delovanja (ki jo končno obljublja nova verzija, ta, ki je omenjena v članku) STA moderni vrlini (okej, pozabimo ti dve kar se tiče Javascripta :))). C++ ju nima.
The C++ standard does not cover implementation of name decoration, exception handling, and other implementation-specific features, making object code produced by different compilers incompatible.
(vir: wikipedia)
lp, Matevžk

Matevžk ::

In, ja, nestandardnost JE slabost. NI mi všeč, če MS implementira generike, foreach in podobne zadeve v SVOJO inačico C++, če potem to dela samo v njihovih razvojnih okoljih (čeprav je za C++ še ogromno drugih okolij). Tega se po mojem tudi MS zaveda, zato so vstopili s svojim jezikom, ki je dober in lepo standardiziran; nekaj, kar Java ponuja že več kot desetletje.
lp, Matevžk

OwcA ::

in Java JE zelo napreden jezik

Nepopisno. :\
Kaj jo po tvojem dela tako napredno?

In, ja, nestandardnost JE slabost. NI mi všeč, če MS implementira generike, foreach in podobne zadeve v SVOJO inačico C++,

Tak C++ ni več standarden.
Jezik je natančno definiran, le implementacija ni.
Otroška radovednost - gonilo napredka.

Matevžk ::

Je objektna, ima garbage collection, dobro definirane APIje, generike, for-each konstrukt, anotacije, dokumentacijo-v-kodi in še kaj.
Kaj od tega ima STANDARDNI C++? Večino tega (če ne kar vse) imajo nekatere implementacije, ampak te pa niso standardne -- pri teh je torej slabost v tem ...
lp, Matevžk

OwcA ::

Aha, torej je bilo napredno mišljeno v primerjavi s C++?
Otroška radovednost - gonilo napredka.

Matevžk ::

To vsekakor. Je bilo pa mišljeno tudi na splošno. Morda ni najnaprednejši, čeprav se razen C# ne spomnim nobenega jezika, ki bi se lahko neposredno kosal z njim (razsvetli me; manj uporabljanih jezikov ne poznam, čeprav so morda boljši in so manj uporabljani samo zaradi nižjih finančnih sredstev, kar pomeni manj propagande). Seveda pa za nekatere zelo majhne projekte/naloge ni primeren, ker je strogo tipiziran objektni jezik. Za take naloge se uporabijo neposredno interpretirani jeziki a'la shell-script-jeziki, Perl, Python, PHP, ...
lp, Matevžk

OwcA ::

Par neprimerljivo močnejših/naprednejših jezikov: Lisp in derivati, Python, Smalltalk, Erlang, Ocaml, Ruby (trenutno še precej počasen), Tcl, pogojno tudi Haskell (za nekatere probleme je zaradi ideologije precej okoren).

Zanimiva primerjava jezikov.

P.S. če se že gremo mahanje s k.+m, za boga svetega, vzemi v roko kakšno pošteno batino. ;)
Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()

Gundolf ::

Joj Matevzek, če že priznaš da se nimaš časa poglabljat v C++ (by the way tu ne govorimo o nekem C/C++, ki že po imenu sodeč ne more biti nevem kak hud jezik), zakaj potem tako vztrajno trdiš, da ni napreden. Mislim, kako lahko nekaj trdiš o stvari, ki je ne poznaš? Verjetno se ti je v šoli totalno zagabil, pa imaš še vedno travme zaradi tega, pogojni kompleks, da ti gre na bruhanje vsakič ko slišiš koga omeniti C++;)

Kaj ima C++ in Java o tem ne more niti sanjati pa ti tule ne bom govoril, ker sori, ampak flame war se grem pa le z kom, ki zna v debati pokazat nekaj znanja. Java ima garbage collection, hihi, še celo noč se mi bo smejal na tole :D

Raje se ne napihuj s tvojim pro-jevstvom no. Kot sem že rekel, preberi vsaj članek, čeprav dobivam občutek da to niti približno ne bi bilo dovolj.

Matevžk ::

No, tisti končni link je nekoliko star (7 let; pred dvema letoma se mi zdi, da 7 let nazaj ni bilo veliko, verjetno pa se boš strinjal, da je bilo v zadnjih nekaj (2?) letih narejeno ogromno na področju programskih jezikov).

Sicer pa so trditve o Lispu (povečanje produktivnosti ipd.) nekoliko povečale moje (informativno) zanimanje zanj; hvala, bom pogledal.

Še vedno pa trdim, da so za gromozanske projekte (in celo skupine projektov) bolj primerni jeziki, ki se v testih tega kova izkažejo kot slabši. Seveda, za program, ki morda dosega kvečjemu 500 vrstic (v Javi) se zdi, da je stroga objektnost z vso enkapsulacijo skupaj en velik bloat. Ko pa govorimo o 100.000 vrsticah (kar niti ni tako zelo veliko v večjih projektih, na katerih dela ogromno razvijalcev), si pa verjetno vsi bolj želimo bolj strogega jezika, kjer programer nima tako zelo veliko manevrskega prostora. Ali pač ne?
lp, Matevžk

Matevžk ::

Gundolf, tega dela ne razumem:
se nimaš časa poglabljat v C++ (by the way tu ne govorimo o nekem C/C++, ki že po imenu sodeč ne more biti nevem kak hud jezik)


Tudi v šoli nismo nikoli uporabljali ne C in ne C++, sem pa svojčas kar precej prebral o obeh (ko sem se še iskal v vsej množici programskih jezikov). Na koncu sem se po letih uspešnega dela v Delphiju odločil za Javo.

Prosim, razsvetli me, kaj ima C++ (ti dovolim navajati celo nestandardne implementacije), česar Java nima?
Kdaj si nazadnje kaj prebral o Javi?
lp, Matevžk

OwcA ::

verjetno pa se boš strinjal, da je bilo v zadnjih nekaj (2?) letih narejeno ogromno na področju programskih jezikov).

Niti ne. Lisp je iz 1958. ;)

Še vedno pa trdim, da so za gromozanske projekte (in celo skupine projektov) bolj primerni jeziki, ki se v testih tega kova izkažejo kot slabši. Seveda, za program, ki morda dosega kvečjemu 500 vrstic (v Javi) se zdi, da je stroga objektnost z vso enkapsulacijo skupaj en velik bloat. Ko pa govorimo o 100.000 vrsticah (kar niti ni tako zelo veliko v večjih projektih, na katerih dela ogromno razvijalcev), si pa verjetno vsi bolj želimo bolj strogega jezika, kjer programer nima tako zelo veliko manevrskega prostora. Ali pač ne?

Se strinjam, ampak potem ne govori o naprednosti.
Poleg tega Java ni ne edini, kaj šele najbolj, tipsko strog ali objektno usmerjen jezik.
Otroška radovednost - gonilo napredka.

Matevžk ::

Java ima garbage collection, hihi, še celo noč se mi bo smejal na tole

Kolikor vem, ima C++ to samo v obliki nestandardnih knjižnic. Ki se jih seveda ne uporablja, ko se dela benchmarke (in kaže, kako je C++ hitrejši), se jih pa uporablja v praksi, ko je bolj važno, da stvar nima memory leakov in da je razvoj lažji ...
lp, Matevžk

OwcA ::

ko je bolj važno, da stvar nima memory leakov in da je razvoj lažji

No, tako črnobelo tudi ni. ;)
Otroška radovednost - gonilo napredka.

Matevžk ::

Niti ne. Lisp je iz 1958.

Emm, ja, OK :)) Ravno to sem mislil -- če je bil že leta 1958 boljši, kot Java leta 1999, ali je tudi leta 2006 boljši od Jave leta 2006?

Se strinjam, ampak potem ne govori o naprednosti.
Poleg tega Java ni ne edini, kaj šele najbolj, tipsko strog ali objektno usmerjen jezik.

Ne, je pa AFAIK med najnaprednejšimi takimi jeziki (ima vse new-and-fancy stvari, ki sem jih že nekaj postov nazaj našteval).
lp, Matevžk

Matevžk ::

No, tako črnobelo tudi ni.

Seveda :)), verjetno se boš pa strinjal, da je razlika, če moraš "pofreejat" vseh pet milijonov vmesnih objektov, ali pa moraš biti previden samo pri globalnih spremenljivkah (pa še tu moraš biti ZARES previden le pri kakšnih globalnih statičnih zbirkah (collections)).
lp, Matevžk

Gundolf ::

Matevzek, sem ti rekel da se ne grem flamat tule s tabo.
Da me bos pa bolje razumel, smejem se tvojemu mišljenju, da je garbage collection nek feature ki naredi jezik napreden. Sploh so mi smešni tvoji kriteriji, za napreden jezik.

Kdaj sem nazadnje kaj o Javi prebral? Že dolgo nazaj. Ko so generiki ven prišli. Takrat sem se že ustrašil, da bo Java še zadnje stvari iz C++ prekopirala, a ko sem prebral o njih do konca se mi je vrnil nasmeh na lica. Sem pač vesel človek, kaj češ. :) Ampak to sploh ni poanta, jaz tu nisem ene besede čez Javino naprednost rekel.

Imaš pa glede nestandardnosti približno prav. C++ ni lastnina neke hude firme za sabo, ki bi postavljala standard za prevajalnike. Za C++ si pač vsak ki spiše prevajalnik misli, da ga zna izboljšati s svojimi nestandardnimi dodatki. Naj te potolažim, moč in naprednost C++ se ne skriva v teh 'dodatkih' (jo kvečjemu kvari) ampak v njegovi čisto običajni standardni izvedbi (c++ 98 dokler ne pride ven nova verzija).

Matevžk ::

Jaz tegale ne razumem kot flame. Flame je tisto, kar delajo (delamo?) v debatah med MS in open-source. Tam smo povedali že vse, kar se povedati da, in zdaj so samo še ideološke vojne. Tukaj govorim zato, da vidim še mnenje drugih in se ob tem tudi izobrazim (kar je, se mi zdi, nekakšen namen foruma).

Sam garbage collection je že precej stara zadeva (konec koncev ga ima Java že od svojega začetka) in tega koncepta ne štejem med stvari, ki delajo jezik napreden. Sem zgoraj naštel ostale stvari, ki pa jih štejem v to kategorijo.
Kaj je tisto, kar dela C++ dober/boljši jezik? Če misliš stvari, kot so "predloge" in večkratno dedovanje - so res dobre? So sila, ampak ali niso bolj gola sila, ki je z dobrim arhitekturnim načrtovanjem ne bi potrebovali, s čimer bi močno pridobili na preglednosti projekta (in dolgoročni ekonomski upravičenosti)?
In kakšni so tvoji kriteriji za naprednost jezika?

edit: typo
lp, Matevžk

Zgodovina sprememb…

  • spremenil: Matevžk ()

BigWhale ::

C++ je se vedno dalec najbolj portabilen od vseh... Pa ceprav lahko 'java binary' kar nekam drugam neses. ;)

Matevžk ::

Res je.
Koliko truda moraš pa v tako portabilnost vložit (mislim, da je še tvoja aplikacija portable)? In kolikokrat rabiš ta presežek portabilnosti (ki ga ima C++ preko Jave)?
Low-level zadeve (driverji, recimo) pa portabilnosti itak ne rabjo. In za te je Java tako ali tako neuporabna, o tem ni debate (C++ se pa tudi zaenkrat ni prijel, čeprav je Hurd pisan na ta način, če se ne motim).
lp, Matevžk

BigWhale ::

Low level zadeve portabilnosti ne rabijo? Mnja, ne vem koliko se ATI driver za Xorg razlikuje na PPCju in x86. Dvomim, da je razlika tako zelo veliko. Ali bi mar raje imel driver v Javi? ;)

Druga portabilnost, pa ni tako zelo vprasljiva, eno aplikacijo pisano v Qt4 je precej lahko prevesti na drugi platformi, ce je kolikor toliko pametno pisana. Effort ni tako zelo velik.

kopernik ::

C++ zgublja/bo zgubil precej developerjev zaradi Microsofta, ki se je usmeril v nove jezike. Sklepam, da so pri Microsoftu ocenili, da zadeve stojijo na mestu (kar se tiče razvoja jezika). Kar je škoda in lahko bi se Stroustrup v zadnjih letih kaj bolj podvizal, saj je imel C++ tudi zaradi Microsofta veliko bazo razvijalcev.

V primerjave jezikov pa se ne mislim spuščati, temveč bom samo rekel, da je dobro, da imamo več jezikov in lahko med njimi izbiramo, odvisno od naših potreb, zmogljivosti jezika in tudi osebnih preferenc.

Je pa dejstvo, da jezik že dolgo ni več dovolj. Potrebna so dobra razvojna okolja, knjižnice in še precej drugega. V tem oziru se je potrebno pogovarjati in delati primerjave, saj ti nič ne pomaga npr. superiornost Smalltalka (ki se meni btw. sploh ne zdi tako superioren), če šepa na vseh ostalih področjih.

64202 ::

> Kaj je tisto, kar dela C++ dober/boljši jezik?

Za mene je najbolj pomembna ta kombinacija: high-level jezik, kjer je kodo zelo lahko optimizirat. Ce hoces, se lahko brez tezav sputis tudi do assemblerja. Noben drug (popularen) jezik nima te kombinacije. Pri javi se struct (objekt) ne mores dat zanesljivo na stack :\
I am NaN, I am a free man!

Gundolf ::

Jah Matevzek, ni flame zato ker še nihče ni prijel za vabo in začel udrihat po Javi ;)
A kaj štejem kot napredno pri C++? Ne bi mogel reči, da je neka malenkost, ki naredi razliko. Celota je taka, da je trenutno kljub starosti standarda v vrhu programskih jezikov kar se tiče prožnosti, zmogljivosti, uporabe. In ne mislim zmogljivosti v smislu performanc ampak na to kaj in kako lako karkoli napišeš v jeziku.

Razvoj jezikov po C++ (vsaj teh bolj znanih in uspešnih delanih za podobne nemane) je v večini tak, da se vzame nekaj C++ lastnosti in jih priredi nekemu enostavnejšemu jeziku (Java recimo leži zelo globoko v teh vodah). Ampak s poenostavljanjem jezika se izgubi na njegovi izrazni moči. In ko si že omenil predloge/šablone/kalupe/template, ja to je eden od gradnikov, pravzaprav je češnja na torti. Bjarne je imel zelo skromne načrte za šablone in si ni predstavljal kakšno zverino je pravzaprav spustil iz verige. "ali niso bolj gola sila, ki je z dobrim arhitekturnim načrtovanjem ne bi potrebovali, s čimer bi močno pridobili na preglednosti projekta" - ne niso, to je totalen strel v temo. So tisto, kar ti ne le omogoči generično programiranje ampak ga tudi postavi na čisto drug nivo, ki si ga ti očitno sploh predstavljaš ne.

Mogoče bo tole še najboljša razlaga. Se opravičujem v naprej ker ne poznam slovenskih izrazov in nočem streljat v temo. Če morda veš kaj je Pareto front v muti-objective domenah. Če iščeš napredne jezike potem lahko C++ postaviš ob bok nekaterim drugim jezikom v Pareto front (kar bi pomenilo da je eden izmed najbolj naprednih). To pa zato, ker noben drug jezik ni Pareto dominanten nad njim. Če dodam še kratko razlago, to pomeni, da če recimo ocenjuješ le po dveh kriterijih - lahkota uporabe ter izrazna moč jezika, potem ne najdeš jezika z enako ali boljšo oceno v vseh kriterijih (tak bi bil dominanten nad njim). Res je v lahkoti uporabe bo imelo mnogo jezikov boljše ocene, tudi v izraznosti skoraj gotovo, noben pa ne bo imel enake ali boljše ocene v obeh kriterijih (če se greš tole resno potem rabiš mnogo več kriterijev).

dr. Zgemba ::

Kaj pravi Paul Graham o lispu in ostalih jezikih. Zanimivo je tudi 14 poglavje "the Dream Language" iz njegove knjige Hackers and Painters, ki pa žal ni online med ostalimi eseji.

{edit: dodal pozabljenl link}

Zgodovina sprememb…

Gundolf ::

Ja ta članek me je 'navdušil' nad lispom. Vsaj do te mere, da sem si rekel, da ga moram malo pogledat. Pa se še nisem spravil do tega, da bi ga res.

Matevžk ::

ni flame zato ker še nihče ni prijel za vabo in začel udrihat po Javi

No, če moji posti zgledajo kot vaba za flame, se opravičujem :O
da se vzame nekaj C++ lastnosti in jih priredi nekemu enostavnejšemu jeziku (Java recimo leži zelo globoko v teh vodah)

Ja, resnici na ljubo je Java nastala na tak način. V bistvu je šlo v začetku bolj za prirejanje celega jezika, kot za prijejanje posameznih lastnosti. Ideja pa je bila narest varen jezik.
Kaj je dandanes najpogostejši vzrok varnostnih lukenj pri strežnikih? Buffer overflow. Do tega pa pride zato, ker je mogoča pointerska aritmetika, ki je IM(H)O v visokonivojskih programih zastarel koncept -- zakaj bi ga uporabljal, če lahko isto stvar izraziš brez njega in to z manj nevarnostmi?
So tisto, kar ti ne le omogoči generično programiranje ampak ga tudi postavi na čisto drug nivo, ki si ga ti očitno sploh predstavljaš ne.

Očitno res nečesa ne razumem, zato pa upam, da mi boš razložil.
Kaj se (govoriva samo o visokonivojskih aplikacijah) v C++ da tako zelo zelo lepše izraziti, da se splača žrtvovati Javansko varnost?
Za mene je najbolj pomembna ta kombinacija: high-level jezik, kjer je kodo zelo lahko optimizirat. Ce hoces, se lahko brez tezav sputis tudi do assemblerja.

Kar verjetno pogosto rabiš pri kakšnih low-level stvareh, pri high-level pa ... kdaj že?
Je pa dejstvo, da jezik že dolgo ni več dovolj. Potrebna so dobra razvojna okolja, knjižnice in še precej drugega.

Se strinjam. In v tem oziru verjetno (naj me kdo popravi, če sem usekal v prazno, ker tega jezika ne poznam) Lisp ne seže prav daleč C++u in Javi (ki sta nekako na istem nivoju, čeprav pri Javi GUI design res še zelo šepa - je pa Netbeans pred kratkim IMO naredil breakthrough na tem področju).
Če morda veš kaj je Pareto front v muti-objective domenah.j

Priznam, prvič slišim, hvala za info.
Pa so v teh kriterijih upoštevana tudi razvojna okolja?
In s čim merimo izrazno moč jezika?
lp, Matevžk

Tr0n ::

Kar je pri jeziku pomembno je to, da lahko hitro sprogramiras kaksno zadevo in se ne rabis ukvarjat z zadevi na nizkem noviju, ki bi ze morale bit porihtane po defaultu.

Saj vam pise v dokumentu zgoraj, da je zelja C++ pripeljati blizje "novice" uporabnikom in to je edino prav. Vecina tukaj nas je "novice" pa cetudi nekateri programirate ze celo zivljenje.

C#/Java managed/portable style jeziki so the way to go, ker so same aplikacije vedno bol kompleksne, casa za igranje z low-level fintami pa vedno manj.

Matevžk ::

Js se podpišem.
Drugo so seveda jedra operacijskih sistemov, gonilniki/moduli in virtualni stroji za laufanje omenjene managed kode. Ti bodo ostali na C++ (oziroma bodo prešli iz C na C++), zato je prav, da se tudi ta jezik razvija.
lp, Matevžk

64202 ::

> > Za mene je najbolj pomembna ta kombinacija: high-level jezik, kjer je kodo zelo lahko optimizirat. Ce hoces, se lahko brez tezav sputis tudi do assemblerja.

> Kar verjetno pogosto rabiš pri kakšnih low-level stvareh, pri high-level pa ... kdaj že?

Vedno kadar mora delat hitro / pokurit malo rama :).
I am NaN, I am a free man!

Zgodovina sprememb…

  • spremenilo: 64202 ()

64202 ::

Primer: zahtevni strezniki, multimedija, igre, ...
I am NaN, I am a free man!

Matevžk ::

Zahtevni strežniki so redko tako v detajle (beri: s pisanjem kode v zbirniku) optimizirani. Je ceneje dodati še eno strežniško rezino, kot pa nekaj po svoje nizkonivojsko kodirati in ob tem še tvegati kar se tiče stabilnosti. Zato je vedno več strežnikov javanskih.

Optimizacija multimedijskih algoritmov (tudi pri igrah) se pa seli v nizkonivojske gonilnike in grafične knjižnice (te seveda so in bodo pisane v C++ in podobnih jezikih).
Res pa je, da managed koda (Java ali C#) pri igrah trenutno pogori, saj običajno ni mišljena kot popolnoma realnočasovna aplikacija: Java se sama odloči, kdaj bo šla uničevat objekte in kdaj bo določen razred naložila ipd. Pri igrah bi najbrž dostikrat izbrala "slab" trenutek.
Pa smo ga našli. Igre :)). Long live C++! 8-)

edit: ena razjasnitev :)
lp, Matevžk

Zgodovina sprememb…

  • spremenil: Matevžk ()

64202 ::

> Zahtevni strežniki so redko tako v detajle (beri: s pisanjem kode v zbirniku) optimizirani.

Pozabi zdaj assembler (pri serverjih), bolj pomemben je tist vmesen nivo optimizacij, ki ti jih c++ da, drugi jeziki pa ne. Torej, se vedno programiras 100% portable in elegantno, brez izgube hitrosti. To se zacne poznati, ko zacnes dodajat plasti in plasti funkcionalnosti v softver. V c++ jih lahko lazje (performancno gledano) na tanko narezes.

> Je ceneje dodati še eno strežniško rezino, kot pa nekaj po svoje nizkonivojsko kodirati in ob tem še tvegati kar se tiče stabilnosti. Zato je vedno več strežnikov javanskih.

To ni tako samoumevno. Recimo ce ti kar konkretno povem - najet server z 1Ghz/256 mb rama je eksponentno cenejsi kot tisti z 2.5Ghz/1gb rama.

> Optimizacija multimedijskih algoritmov (tudi pri igrah) se pa seli v nizkonivojske gonilnike in grafične knjižnice (te seveda so in bodo pisane v C++ in podobnih jezikih).

Skratka, ce je vecji del tvoje aplikacije multimedija (ti implementiras mm) jo najbolje napises v c++ :)
I am NaN, I am a free man!

64202 ::

Pa pozabil sem se omeniti eno veliko podrocje speficnih aplikacij za problemske domene - recimo razna strojniska/medicinska/... orodja, ki poganjajo simulacije in ostale izracune. Komot pokuris nekaj 100mb ali nekaj gb rama + laufa zadeva minute, ure ali celo dni.
I am NaN, I am a free man!

Gundolf ::

Ah, buffer overflow - to je stvar Cja, Javanska varnost - to je spet za smejat se, en garbage collection ti še ne pomeni varnosti. A kaj se da v C++ tako lepo izraziti? Vse kar se vrti okoli generičnega programiranja in vzorcev. To so principi, ki so na kožo pisani C++u. Oz. morda je C++ tako prilagodljiv, da izgleda kot da mu je to pisano na kožo. Jezik je to zmožen te IMHO koncepte prihodnosti obdelovat zelo elegantno (kar se kode tiče) in takorekoč popolnoma brez posledic pri run-time performancah. Vzorci so naslednji nivo kodiranja in ne neka managed koda, ki le olajšuje delo na sedanjem objektnem nivoju. Tako zaenkrat izgleda prihodnost, resda se stvari dostikrat obrnejo ampak do takrat ko se bodo, bomo uporabne vzorce programirali najlaže in najbolj elegantno prav v C++.

Kar se pa iger tiče, v povezavi z Javo, se vedno da gc za določen čas izklopit (da ne pride do zagona ob napačnem trenutku).

OwcA ::

Se strinjam. In v tem oziru verjetno (naj me kdo popravi, če sem usekal v prazno, ker tega jezika ne poznam) Lisp ne seže prav daleč C++u in Javi

Zastonjske implementacije res ne, ampak kakšen Allegro CL je pa pesjansko močno orodje. Da ne omenjam tega, da je v Lispu zaradi zasnove jezika relativno lahko narediti razvojno orodje za lastne potrebe. Dober primer tega je Naughty Dog Software in njihov GOAL.
Otroška radovednost - gonilo napredka.

64202 ::

> Kar se pa iger tiče, v povezavi z Javo, se vedno da gc za določen čas izklopit (da ne pride do zagona ob napačnem trenutku).

Torej ce delas hardkor streljacino, se gc sploh ne sme nikol pognat :D :P
I am NaN, I am a free man!

64202 ::

Ja, to fejst plus za c++ - zelo na izi lahko nardis precizen memory management, ne samo koliko bajtov ampak kdaj!
I am NaN, I am a free man!

Gundolf ::

> Torej ce delas hardkor streljacino, se gc sploh ne sme nikol pognat
Ne nikol, samo natempirat moraš na takrat ko reloadaš orožje :D

Matevžk ::

Javanska varnost - to je spet za smejat se, en garbage collection ti še ne pomeni varnosti.

Ne garbage collection. Virtualna mašina, managed code. To je tisto.
lp, Matevžk
strani: « 1 2


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Code translator

Oddelek: Programiranje
8629 (463) MihaFirst
»

Iskanje programskega jezika za razvoj iger

Oddelek: Novice / Igre
162465 (1982) AtaStrumf
»

Uporaba SQL brez serverja v Javi

Oddelek: Programiranje
5609 (557) B-D_
»

Microsoft razvija alternativen OS

Oddelek: Novice / Operacijski sistemi
494829 (2225) BigWhale
»

Maya poslej tudi zastonj

Oddelek: Novice / Ostala programska oprema
81358 (1358) [BISI]

Več podobnih tem