abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 09:00 | Nová verze

Vývojáři KDE oznámili vydání KDE Gear 21.04. Ne, nejedná se o novou aplikaci. Bylo rozhodnuto, že KDE Gear bude nový název pro KDE Applications, tedy pro aplikace, související knihovny a pluginy. Na počátku bylo KDE aneb K(ool) Desktop Environment, následně jenom K Desktop Environment. Později se mluvilo o KDE SC neboli KDE Software Compilation. To byl společný název pro grafické prostředí Plasma, platformu a aplikace. Dále proběhlo

… více »
Ladislav Hagara | Komentářů: 4
dnes 08:00 | Zajímavý článek

Moxie Marlinspike, vývojář komunikační aplikace Signal, se dostal ke kitu firmy Cellebrite pro forenzní analýzu smartphonů, dodávanému represivním složkám různých států včetně autoritářských režimů. V zápisku ho popisuje včetně zranitelností a možných porušení licencí. Jedna z chyb v Cellebrite vede při načtení zvláštního souboru k narušení integrity veškerých reportů. Budoucí verze Signalu mají obsahovat zvláštní soubory.

… více »
Fluttershy, yay! | Komentářů: 0
včera 23:55 | Komunita

Ubuntu 21.10 bude Impish Indri (rošťácký lemur).

Ladislav Hagara | Komentářů: 2
včera 18:22 | Nová verze

Bylo vydáno Ubuntu 21.04 s kódovým názvem Hirsute Hippo. Přehled novinek v poznámkách k vydání. Zdůrazněna je možnost integrace s Microsoft Active Directory, Wayland ve výchozím stavu a vývoj aplikací pomocí Flutteru.

Ladislav Hagara | Komentářů: 10
včera 12:22 | Komunita

Prohlášení (Twitter) Minnesotské univerzity k výzkumu proveditelnosti nenápadného začlenění bezpečnostních chyb do Linuxu: Situaci bereme vážně. Výzkum jsme pozastavili. Prozkoumáme výzkumnou metodu a její schválení. Stanovíme opatření…

Ladislav Hagara | Komentářů: 53
včera 11:22 | Nová verze

OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 16.0.0 (Current) otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). Přehled novinek v článku na Medium.

Ladislav Hagara | Komentářů: 4
včera 09:44 | Pozvánky

Na MFF UK pokračuje série on-line přednášek o architektuře a implementaci operačních systémů. Dnes je na programu Live kernel patching, příští týden ladění kernelu a kdump, další přednášky jsou naplánovány až do 3. června.

… více »
Vojtěch Horký | Komentářů: 0
včera 09:00 | Nová verze

Byla vydána nová verze 3.3 multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy a videi v oficiálním oznámení.

Ladislav Hagara | Komentářů: 0
21.4. 21:22 | Komunita

Mozilla.cz informuje, že Mozilla z Firefoxu pro Android i iOS odstraní integraci „sledovacího“ systému Leanplum. Leanplum sbírá informace, jak moc uživatelé používají záložky, panely, integraci Pocketu apod. Českých uživatelů se to prý příliš netýká.

Ladislav Hagara | Komentářů: 4
21.4. 20:44 | IT novinky

Microsoft v příspěvku na svém blogu představil WSLg (Windows Subsystem for Linux GUI) aneb rozšíření WSL přinášející možnost spouštění grafických linuxových aplikací. V dalším příspěvku je rozebrána architekturu WSLg. Videoukázka práce s WSLg na YouTube.

Ladislav Hagara | Komentářů: 4
Kolik času v průměru denně trávíte videohovory/-konferencemi? (ať už v práci, škole nebo soukromě)
 (50%)
 (12%)
 (16%)
 (12%)
 (7%)
 (1%)
 (2%)
Celkem 406 hlasů
 Komentářů: 7, poslední 8.4. 12:14
Rozcestník

pěkný C++ bashing

30.8.2007 15:41 | Přečteno: 2150× | Linux | Výběrový blog | poslední úprava: 30.8.2007 15:56

Dlouho jsem nekoukal na fefeho web, a tak mi unikly nějaké novější slajdy, mezi nimi tahle pěkná kritika C++ na zhruba 50 stránek. Potěšilo mě že tam zmiňuje věci, které mi na C++ taky vždy vadily, plus spoustu dalších o kterých jsem neměl tušení. Dále překvapil triviální kód, který g++ pošle do nekonečné rekurze.

template<class T> struct S { S<T*> operator ->(); }; S<int> i, j = i->();

Říkal jsem si: blbost, C++ přece není TAK pitomý jazyk, vždyť pro rekurzi v templates má ISO standartem předepsané nějaké limity právě aby se vyhnuli možnosti zacyklení při překladu. Kdepak, zkusil jsem a fakt si na tom g++ (aspoň to z gcc 4.1.1) vyláme zuby: sebere 100% CPU, a pomalu požírá swap... C++ překladač sice (úmyslně) není Turing-complete, to mu ale v zacyklení zjevně nijak nepřekáží ;-). Jo a programátorská varice na "až budou padat trakaře" na poslední stránce taky pobavila.

A co vy? Programujete v C++? Dobrovolně? A jak se daří vašemu mozkovému nádoru? ;-)        

Hodnocení: 65 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

30.8.2007 16:41 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
No jo, C++ je můj nejoblíběnější jazyk.

Jinak ale g++ není synonymem pro C++, je to pouze jeden z mnoha C++ překladačů, a ještě ten horší. Sice bych věděl o věcech, které na C++ zlepšit, ale kritizovat C++ na základě chybné reakce jednoho z mnoha kompilátorů mi přijde poněkud jako špatný argument. Takže mluvit, že překladač je takový a makový a myslet při tom g++ není chyba C++ překladačů obecně.

Jinak jsem se díval na tu kritiku C++ a jediné co mě napadlo, že autor je debil a C++ mu kdysi nějakým způsobem ošklivě ublížilo. Četl jsem jiné kritiky C++ a dalo se z toho něco vzít, ale tohle je opravdu zaujatost. Od pitomostí typu, že napíšu prasácký kód, který se nedá číst (což jde v jakémkoli jazyce), přes kritiku typu kdy velmi často pokládá rovnítko mezi GNU kompilátorem a C++ (autor zjevně nedospěl do bodu, kdy nechápe rozdíl mezi jazykem a jedním kompilátorem tohoto jazyka), zaměňuje naprosto jednoznačné a promyšlené vlastnosti C++ za chyby a jeho fráze "C++ is hard to read" je již trochu profláklá. Já nemůžu za to, že autor studie píše jako prase, že to po sobě nemůže přečíst, ale holt bulvár už postoupil i do kritiky C++. No co nadělám, degradace je všude.

Přitom existuje tolik seriózních kritik tohoto jazyka a autor blogu si vybere takový zumpoidní dokument.
30.8.2007 22:19 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Ony jiné překladače C++ překládají jiný jazyk? Nějaké C++, v kterém nejde prasit nečitelný kód, plný neočekávaných modifikací R-values (oblíbené & reference), volání chybných virtuálních metod v konstruktorech a destruktorech, inicializace class memberů v jiném než programátorem požadovaném pořadí, a bez možnosti zpracovávat chyby v konstruktorech? To se mi nějak nezdá, C++ je jen jednen, ne? Jinak vřískat "debil", "bulvár" a "fráze", tím nikoho nepřesvědčíte.
Táto, ty de byl? V práci, já debil.
30.8.2007 22:53 Luboš Luňák | skóre: 19 | blog: Seli
Rozbalit Rozbalit vše Re: pěkný C++ bashing
No, minimalne prekladaji trochu jine C++ nez tuhle popisovanou fantasmagorii. "Bez moznosti zpracovavat chyby v konstruktorech" ? Ha. Ty nektere ostatni jsou taky docela zabavne. Ale ono se daleko lepe kritizuje neco, o cem toho clovek moc nevi, ze?
30.8.2007 23:09 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Mam pocit, ze konstruktory a vyjimky mu vubec delaji potize...
  • Exceptions in constructor don’t unwind the constructor itself
  • Does not even clean up local variables!
  • Must do own cleanup
  • OTOH: no other way to return failure, constructors are void
31.8.2007 00:21 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Jo jo, evidentně ten člověk C++ nezná, hlavně, že ho kritizuje.
31.8.2007 00:23 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Toho člověka jsem nazval debilem proto, že člověk nemusí být ani moc kovaný v C++ aby nepřehlédl naprosto hrubé neznalosti C++ a neznalost jazyka C++ od samotného autora kritiky. Myslím si, že kritizovat C++ by měl člověk, který tento jazyk zvládá alespoň v základním levelu, což autor kritiky není.
mkoubik avatar 31.8.2007 15:37 mkoubik | skóre: 5 | blog: lorem_ipsum | Praha 8 - Bohnice
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Od pitomostí typu, že napíšu prasácký kód, který se nedá číst (což jde v jakémkoli jazyce)
To neni pravda, v brainfucku to nejde.
30.8.2007 18:23 depka
Rozbalit Rozbalit vše Re: pěkný C++ bashing
kdyz v C++ neumis a vadi ti, tak ho nech na pokoji
30.8.2007 18:40 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Takové věci obvykle píší lidé, kteří mají programování v C++ jako součást své pracovní náplně, ale na jednu stranu ho nesnášejí a na druhou nemají odvahu se sebrat a jít jinam dělat něco jiného, co by je bavilo. Kdybych byl někde zaměstnán jako windowsový systémák a bál se, že se jinak neuživím, asi bych psal podobně žlučovité výkřiky…
30.8.2007 20:19 depka
Rozbalit Rozbalit vše Re: pěkný C++ bashing
nepatrim to obvyklich lidi, pouze cim dal castej ctu veci jako "Říkal jsem si: blbost, C++ přece není TAK pitomý jazyk", priznavam vsak ze muj prispevek byl zbrkly
30.8.2007 21:43 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Možná jste to špatně pochopil, to, co jsem psal, se netýkalo vašeho příspěvku, ale původního blogpostu…
30.8.2007 19:15 ajikdpoe | skóre: 23 | blog: dvh
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Pozná snáď niekto lepší (menej blbý) kompilovaný jazyk?
Josef Kufner avatar 30.8.2007 20:05 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: pěkný C++ bashing
C
Hello world ! Segmentation fault (core dumped)
30.8.2007 20:17 foo
Rozbalit Rozbalit vše Re: pěkný C++ bashing
+1
31.8.2007 23:41 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: pěkný C++ bashing
A v cem je to "C" tak lepsi jak "C++" ? Pokud vim, tak v C++ jde vsechno co v C + neco navic. C++ nikoho nenuti pouzivat STL, vyjimky, RTTI atd.
Josef Kufner avatar 1.9.2007 01:49 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Čistší a jednodušší syntaxe, není objektové, programy jsou přehlednější a tolik nekynou.
Hello world ! Segmentation fault (core dumped)
1.9.2007 02:53 Martin Böhm | skóre: 17 | blog: Martinův stánek | Je mi to MFFUK
Rozbalit Rozbalit vše Re: pěkný C++ bashing
eh? Snad jen tu jednodušší syntax bych Vám uznal, a to rozdíl mezi syntaxí C a C++ není nijak obrovský. :o) Přehlednost závisí vždy na programátorovi, jeho znalostech a nástrojích, které používá.

Kynutí? Záleží na tom, jak ho chápeme. Kynutí v očích programátora jde obecně spíše naopak - čím "vyšší" jazyk, tím méně kynutý (kratší) kód, i když možná pomalejší. Jako vždy záleží na tom, aby si člověk uměl vybrat správný jazyk na správnou věc. V assembleru je kód ještě "dietnější" z hlediska rychlosti aplikace, ale psát takový Amarok bych v něm nechtěl.

Není objektové? Inu, objektovost není všelék, ale je sákryš užitečná.
5 z 0 přetečení bufferu doporučuje Korespondenční seminář z programování (pro středoškoláky programátory).
1.9.2007 03:57 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: pěkný C++ bashing

Neobjektovost jako výhoda? Chápu, že ne každý ocení výhodu objektového programování, ale jak může být možnost používat objekty nevýhodou?

1.9.2007 11:35 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
No, vzhledem k tomu, že prakticky lze C program přeložit i jako C++ tak nevíte co mluvíte. Neobjektovost chápu pouze jako nevýhodu. Psal jsem řadu let v C a od objevení se C++ píšu i v C++ a přebíral jsem i mnoho cizích programů - jednoznačně je přehlednější dobře napsaný C++ program, než C program. Samozřejmě je možné dobře zprasit jak v C, tak i v C++, ale pokud píšete slušně, v C++ se dá napsat mnohem přehlednější a čitelnější program, než v C, a to naprosto jednoznačně. A argument tolik nekynou naprosto nechápu.
1.9.2007 13:58 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Ja bych prave rekl, ze vyhoda syntaxe je na strane C++. Kdybych mel C++ jazyk pouzit jen na to, ze do C struktur vlozim inline metody, tak to udelam.

Zajimalo by me, co je teda podle Vas citelnejsi:

C varianta:
{
  SomeStructure a;
  SomeStructureInit(&a);
  SomeStructureDoSomething(&a);
  SomeStructureDestroy(&a);
}
C++ varianta:
{
  SomeStructure a;
  a.doSomething();
}
C++ varianta pro lepsi kontrolu:
{
  SomeStructure a;
  a.init();
  a.doSomething();
  a.destroy();
}
Vygenerovany kod prekladacem bude totozny. Obe C++ varianty jsou jednoznacne prehlednejsi, z kodu mizi zbytecne prefixovani funkci, ktere dela kod spis necitelnym.
1.9.2007 14:58 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: pěkný C++ bashing
A co teprve, když začnete v C provozovat polymorfismus, to jsou teprve syntaktické orgie…
2.9.2007 01:12 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Mam takovy pocit, ze myslite i orgie ala gtk+ :-D
( Nic proti gtk+, ale dobrovolne pouzivat to API nikdy nebudu:-) )
3.9.2007 20:58 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Ano, to je docela pěkný příklad. Bohužel ale ne jediný…
3.9.2007 10:44 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Takový /usr/include/python2.4/object.h je krásně čitelný. Sdílené atributy objektů vytvářené pomocí #define PyObject_HEAD, polymorfismus přes ukazatel na struct _typeobject. Všechny výhody C++ lze mít C také, a to bez problémů které C++ přináší, ergo C++ žádné výhody nemá. Vy opravdu expanzi makra uvnitř struct-u považujete za orgie? Vaše manželka se pravděpodobně dosti nudí. ;-)
Táto, ty de byl? V práci, já debil.
3.9.2007 10:18 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
> z kodu mizi zbytecne prefixovani funkci, ktere dela kod spis necitelnym.

1) Proč se domníváte že řádek kódu, který obsahuje VÍCE informací, je méně čitelný?

2) To prefixování v C++ nemizí, v globálních symbolech zůstává, pouze se podobně jako komunista v epicentru jaderného výbuchu proměňuje na paprsky gamma a škodí dál.
Táto, ty de byl? V práci, já debil.
9.9.2007 01:19 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: pěkný C++ bashing
1) Proč se domníváte že řádek kódu, který obsahuje VÍCE informací, je méně čitelný?
Protože neobsahuje VÍCE informací
To prefixování v C++ nemizí, v globálních symbolech zůstává, pouze se podobně jako komunista v epicentru jaderného výbuchu proměňuje na paprsky gamma a škodí dál
Pokud Vám to tak vadí, tak ty metody můžou být inline a odkazovat na extern "C" funkce (třeba pro volání z asm kódu).

Reaguji pozdě,,,já vím:)
xkucf03 avatar 7.4.2009 15:01 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: pěkný C++ bashing

 

není objektové

Což je právě ta vada :-)

 

Jinak s C++ teď začínám. Na jednu stranu je to zajímavé, ale na druhou stranu psát v Javě je mnohem příjemnější.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
30.8.2007 23:07 xm | skóre: 36 | blog: Osvobozený blog | Praha
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Jistě že ano, D. Cčko nepočítam, není objektové (a to je pro mě _velký_ mínus) ;-) C++ je oproti D naprostý humus.
Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
30.8.2007 23:13 xm | skóre: 36 | blog: Osvobozený blog | Praha
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Ještě oprava - tím "není objektové" jsem měl ve skutečnosti na mysli "objektově orientované". Skutečně objektové není ani D (a IMHO ani Java).
Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
31.8.2007 08:10 Tom.š Ze.le.in | skóre: 21 | blog: tz
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Common Lisp? :)

Už to na tomhle portálu pár lidí psalo, tak znovu - odkdy je kompilovanost vlastností jazyka a nikoliv implementace?
1.9.2007 13:32 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: pěkný C++ bashing
3.9.2007 06:57 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Erlang?
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
David Watzke avatar 30.8.2007 21:03 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Jo, C++ nemá konkurenci.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
1.9.2007 13:48 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Luboš Doležel (Doli) avatar 1.9.2007 18:05 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Nádherný zastaralý dokument a pěkný nesmysl. Jak někdo může porovnávat výkon Lispu a výkon C++? Musíte porovnávat s konkrétním kompilátorem, který jsem v dokumentu ani nenašel uvedený. Celé to má úroveň článku v Blesku.

Například tam píší, že v Lispu je (na rozdíl od jiných jazyků) možné program upravit za běhu. Tuhle věc používám i v C++ běžně (pod MSVC++).
30.8.2007 21:05 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: pěkný C++ bashing
C++ překladač sice (úmyslně) není Turing-complete.
A Zeme je placata. Neumyslne.
30.8.2007 22:05 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Země byla (při poslední kontrole) kulatá. Čteš moc Pratchetta (nebo Stroustrupa?) Zábavní jsou oba, ale ten první má lepší styl .-)

Příklady turing-complete překladačů jsou makro-assemblery, nebo třeba lisp. Je možno provádět libovolné výpočty už během compile-time. C není turingovsky úplné, protože neumí podmínky nebo smyčky v makrech. Ošetřit nekonečnou rekurzi v makrech je proto docela jednoduché. C++ umí templates, které je možno vnořovat, a která umějí podmínky a iterace, a jsou vyhodnocovány v compile-time. Aby se zamezilo možnému zacyklení, je u nich ale hloubka zanoření uměle omezena (googlujte na C++ template depth). Vývojáři C++ si garance že překlad v konečném čase skončí prostě cenili víc, než jeho výpočetní síly. Ale soudruzi z NDR zjevně někde udělali chybku, takže ani tahle garance neplatí.
Táto, ty de byl? V práci, já debil.
Václav 30.8.2007 22:08 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
Rozbalit Rozbalit vše Re: pěkný C++ bashing
A přece kráčí!
Cross my heart and hope to fly, stick a cupcake in my eye!
30.8.2007 22:10 thingie
Rozbalit Rozbalit vše Re: pěkný C++ bashing
A kdy byla poslední kontrola?
30.8.2007 22:27 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Satelitní snímky.. ale možná to bude konspirace :-)
Táto, ty de byl? V práci, já debil.
31.8.2007 00:20 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: pěkný C++ bashing
  • C preprocessor umi podminky.
  • C preprocessor umi smycky (cykly).
  • C++ templates jsou turing-kompletni. Ze je ve standardu doporucovano, aby prekladac zvladl minimalne 17 urovni zanoreni, je vedlejsi. Podobnych doporuceni je tam vice. To byste taky mohl tvrdit, ze pentium neni turing-kompletni stroj, protoze neumoznuje adresovat vic jak 4GB pameti.
31.8.2007 00:34 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: pěkný C++ bashing
  • C preprocessor umi smycky (cykly).
?
Užívej dne – možná je tvůj poslední.
31.8.2007 08:16 Tom.š Ze.le.in | skóre: 21 | blog: tz
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Hádám, ale možná jde rekurzivně používat include?
31.8.2007 13:37 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
No, moc to nejde.. nemůžu přijít na to, jak udělat přiřazení. Tohle třeba nefunguje:
$ cat factorial.h
#if (N <= 1)
1
#else
N *
#define N2 (N-1)
#undef N
#define N N2
#include "factorial.h"
#endif
CPP má lazy expanzi maker, takže na 6. řádku se do N2 uloží vždy stejný výraz, N se neexpanduje. Možná je na to nějaký hack, jak si expanzi v #define řádku vynutit, ale neznám ho.
Táto, ty de byl? V práci, já debil.
1.9.2007 15:44 Jirka P.
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Ano, preprocesor umi podminky i smycky, akorat neumi aritmetiku (coz se da ocurat, Prolog ji taky neumi, ze).

Jako priklad, postup jak udelat podminku (#if neni dost dobre, protoze z nej nejde udelat treba makro ktere by se rozhodovalo na zaklade sveho argumentu).

Mame ridici makro, treba COND, ktere bude 0 nebo 1. Na zaklade neho chceme udelat makro AB, ktere bude a kdyz COND==0, b kdyz COND==1. Prodepokladam, ze na zacatku neni nic z toho definovano.
// tohle je obechcavka, nevim presne na co
#define CAT(a, b) a##b

#define COND_0 a
#define COND_1 b
#define COND CAT(COND_, RIDICI)

//pouziti:
#define RIDICI 0
COND // melo by byt a
#define RIDICI 1
COND // ted zas b
Myslim, ze cykly by sly nejak podobne, ale uz tohle ukazuje jak se da v preprocesoru programovat.

Pokud by vas to vic zajimalo, doporucuju zdrojaky z Boost preprocessor library, je to pekny poctenicko :-)

VAROVANI: Tohle, kdyz jsem to programoval, me zpusobilo boleni hlavy jeste dalsi den.
31.8.2007 11:42 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
1) Podmínky neumí. #if uvnitř #define používat nelze. Trochu to jde obejít užíváním #include, ale strkat tělo každého makra do samostatného .h souboru je dosti nepraktické.

2) Smyčky neumí. Rekurze #define maker je omezena tím, že uvnitř makra X se už identifikátor X neexpanduje (a to i tranzitivně, kdy se navzájem expanduje maker více), takže k zacyklení dojít nemůže. Zbývá jen rekurzivní #include- a ten končí na chybě error: #include nested too deeply. U gcc je limit natvrdo po 200 zanořeních (právě vyzkoušeno).

3) Nojo, v tomhle máte pravdu. Jenže Pentium může adresovat paměti (externí) kolik chce, kdežto C++ zdroják může templaty nořit jen jak mu překladač dovolí.
Táto, ty de byl? V práci, já debil.
elviin avatar 31.8.2007 20:27 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
Rozbalit Rozbalit vše Re: pěkný C++ bashing
btw neni tam tvrzeni o prekladaci, ale v Soustrupovo prednasce na University of Waterloo konstatuje, ze C++ je Turing complete.
30.8.2007 22:37 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše C++ template depth
Tak defaultní maximální hloubka templates je 17. Legrační je že nikdo netuší proč právě 17. Asi to bylo oblíbené číslo nějakého člena komitééétu, možná mu na nohou chyběly 3 prsty.

http://motgi.net/blog/?p=6
Táto, ty de byl? V práci, já debil.
30.8.2007 23:52 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: pěkný C++ bashing
super... dalsich par argumentu do sbirky, proc nadavat na c++...

osobne taky c++ nemam v lasce... nektere veci fakt museli vymyslet pod vlivem drog.... treba pretypovani operatoru "=" nebo operatory bitove posunu, slouzici pro vstup a vystup... ale nerad bych se opakoval...

nekteri tady budou tradicne remcat, ze v c++ se programator musi naucit pracovat... bohuzel vetsi cast toho "naucit se" je o tom, naucit se "jak to prekladac vlastne dela"... to treba v C neni takovy problem... protoze je to jen prenositelny assembler... a z programu docela jednoznacne plyne co bude delat...
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
31.8.2007 00:29 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Co je špatného na přetypování operátoru=? Co je špatného na operátorech >> a << sloužící pro I/O operace?

C++ je naprosto jednoznačné, stejně jako C (v rámci standardu) - koneckonců nechápu jaké jsou zde problémy. Kdo chce nechť si C++ používá jako C třeba s několika vlastnostmi navíc, jaký problém?
Luboš Doležel (Doli) avatar 31.8.2007 02:00 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: pěkný C++ bashing
+1. Obzvlášť možnost přetypovat operator= mi připadá samozřejmá a užitečná.

Nikdy jsem nemusel moc zkoumat, jak to ten překladač dělá. Používám hlavně GCC a VC++ a ani si obvykle neuvědomuju, že právě píšu pro jiný kompilátor.
31.8.2007 12:58 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: pěkný C++ bashing
ja problem vidim tam, ze po operaci prirazeni nemate zarucene, co je v obou objektech, aniz byste vedel co je v tride. btw. v pripade, ze by to byla tak uzitecna funkce... urcite by ji prevzali i jine jazyky... treba c#.

vam vazne na operatorech << a >> nepripadne nic zvlastniho... operatory bitoveho posunu jsou naraz operatory vstupu a vystup, navic k dosazeni stejne funkcionality by stacili normalni metody... dela to vec jen zmatenejsi....
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
Luboš Doležel (Doli) avatar 31.8.2007 13:14 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: pěkný C++ bashing
ja problem vidim tam, ze po operaci prirazeni nemate zarucene, co je v obou objektech, aniz byste vedel co je v tride
Co? Jak nemám zaručené?
operatory bitoveho posunu jsou naraz operatory vstupu a vystup
Nejsou. To, že to tak nějaká konkrétní třída dělá, to je jiná věc. A navíc mi neříkejte, že vás to opravdu mate - tohle je věc jasná na první pohled.
neco << 5;
Kdo by dělal něco takového, když by šlo o bitový posun? Tam by přece vždycky bylo přiřazení nebo <<=.
31.8.2007 13:57 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: pěkný C++ bashing
nerikejte ze po provedeni a = b vite, co bude v obou objektech... aniz byste vedel jak je operator deklarovany ve tride. btw. ona je jeste sranda, ze v nekterem pripade (ted presne si nevzpominam kterem) se pouzije kopirovaci konstruktor... ale kdyz se vam takovy jazyk libi... dobre vam tak...

operatory bitoveho posunu jsou naraz operatory vstupu a vystup. Nejsou. To, že to tak nějaká konkrétní třída dělá, to je jiná věc. tak jsou nebo nejsou? s takovou tu budeme cyklit jeste dlouho. btw. dokaze me nekdo vysvetlit, proc se nepouzivaji normalni metody, jako v jinych jazycih?
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
31.8.2007 14:07 Sinuhet
Rozbalit Rozbalit vše Re: pěkný C++ bashing
A po provedeni assign(a, b);, a.assign(b);, a = b.clone();, nebo a = clone b; to jasne je?
31.8.2007 14:33 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: pěkný C++ bashing
ano to je lepsi... ten moment prekvapeni, ze se neco bude dit s obema objekty je tu mensi.... (viz pojem "rule of least surprise")
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
31.8.2007 14:40 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: pěkný C++ bashing
od toho tu predsa máme kľúčové slovíčko const. A na všetko ostatné tu zas isté múdre hlavy vymysleli dokumentáciu.
31.8.2007 14:50 Sinuhet
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Proc by mel byt mensi?
Luboš Doležel (Doli) avatar 31.8.2007 16:52 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Pokud to dělá něco jiného, než by mělo, tak je to špatně naprogramované. V takovém případě nadávejte na toho vola, co to tak naprogramoval, a ne na to, že vám jazyk umožní naprogramovat chybný kód.
Luboš Doležel (Doli) avatar 31.8.2007 16:50 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: pěkný C++ bashing
nerikejte ze po provedeni a = b vite, co bude v obou objektech... aniz byste vedel jak je operator deklarovany ve tride.
Co je to za blbou úvahu - tak snad mám rozum a vím, co dělám. Hodnota objektu b by neměla být ovlivněna a podle nějaké logiky se dá vydedukovat, že bude hodnota z b okopírována do a. To už se vás můžu ptát, jestli víte, co udělá tohle:
a.write(b)
A jakou záruku, že to udělá skutečně to, co chcete, máte bez prozkoumání zdrojáku té metody?
tak jsou nebo nejsou? s takovou tu budeme cyklit jeste dlouho. btw. dokaze me nekdo vysvetlit, proc se nepouzivaji normalni metody, jako v jinych jazycih?
Smím se zeptat, jak dobře C++ znáte? Jestli vám osobně vadí <<, tak klidně použijte nějaký .write().

Snad každý operátor se dá přetížit k jakémukoliv účelu. Zda << na číslech funguje jako bitový posun je naprosto irelevantní - hlavně že není problém chápat, co to udělá u té konkrétní třídy.
31.8.2007 17:07 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: pěkný C++ bashing

Přesně tak. To už bychom za chvíli mohli tvrdit, že je C++ špatně navržený jazyk, protože nám dovolí napsat

  inline void add_one(int& x)
  {
     x--;
  }

Jen je pak otázka, který jazyk je pak navržený dobře…

3.9.2007 07:03 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
No v Erlangu tohle napsat nemůžeš a je to tak schválně, protože se v něm pak dají psát velmi spolehlivé a bezpečné věci. Tak spolehlivé, že se to vymyká z chápání běžného c-čkaře.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
3.9.2007 12:56 Sinuhet
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Nevim, mne tohle proslo, asi to teda maji nejak rozbity. Nahlasite bug?
add_one(x) ->
    x - 1.
3.9.2007 13:21 Tom.š Ze.le.in | skóre: 21 | blog: tz
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Má to ten side effect?
3.9.2007 13:25 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
No samozřejmě, že nemá a prošlo mu velké houby. Ani to nezkusil.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
3.9.2007 13:21 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Asi jste nepochopil pointu vážený. Ten C++ kód změnil hodnotu parametru. To jestli správně, nebo špatně je nedůležité. Kdežto ten erlangový kód pouze vrátil špatnou hodnotu. S parametrem neudělal nic, protože prostě nemůže. Krom toho uvedený kód je syntakticky špatně. Když byste ho zkompiloval, tak vás na to kompilátor upozorní (badarith). Vy jste ho nezkompiloval a nevyzkoušel. Co to na mě zkoušíte?
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
3.9.2007 13:54 Sinuhet
Rozbalit Rozbalit vše Re: pěkný C++ bashing

Ale zkousel jsem si to zkompilovat. Jenze se mi pri kopirovani do formulare nekde cestou ponizila X. Pardon.

Nicmene, pokud mi neco neuniklo, tak pointa tohoto vlakne je, ze nemuzete nabyt naproste jistoty co se ve skutecnosti bude dit pouze ze jmena operatoru, ale ani funkce nebo metody. A erlang tento problem neresi.

3.9.2007 14:18 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Takovou jistotu samozřejmě nemáš, nicméně v Erlangu existuje nepochybně mnohem více jistot, pokud jde o to, co všechno se stát nemůže (což dává kompilátoru a runtimu podstatně více volného prostoru k dýchání než anarchie C++).
3.9.2007 15:43 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: pěkný C++ bashing
jj, ale psssst ... nerikej tu nahlas, ze na referencich muze byt neco spatneho, nebo te tu uslapou zaziva...
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
3.9.2007 18:14 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
pssssst!
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
3.9.2007 18:38 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Ano, pointa v tomto vlákně je, že když vidím kód
a = b;
tak si nikdy nemůžu být jistý, že v b je na konci to samé jako na začátku. Což je v principu stejný problém jako když napíšu
b = 1;
a = add_one(b);
a v b není jednička. To je pak radost takový kód číst. V erlangu můžu napsat
B = (foo, [bar, baz, (1,2,3)], foofoo),
A = any_fuckin_function(B)
a mám vždy jistotu, že v B je stále (foo, [bar, baz, (1,2,3)], foofoo) aniž bych se do té funkce musel podívat.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
3.9.2007 20:34 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: pěkný C++ bashing
pssssst! ;-]
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
3.9.2007 20:50 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: pěkný C++ bashing
a to je takovy problem dat pred tu referenci const?

Reference je vlastne ukazatel a je logicke, ze muze funkce menit jeho obsah. I to const se da obejit a nekdy je to nutne, ale to uz neni chyba jazyka.
3.9.2007 21:28 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Ale to const je úplně v jiné části kódu, v úplně jiném souboru a kdo ví co ještě a jak sám píšete, dá se to obejít. Takže nejen, že se musím kouknout kdo ví kam, ale dokonce mi ani nestačí přečíst si definici funkce, ale dokonce musím analyzovat její kód, jestli to náhodou někdo neobchází. Fakt moc príma. No a krom toho s každou novou verzí, abych to dělal znova a znova, protože to prostě jde. Taková blbost. Koho to jen mohlo jen napadnout umožnit modifikovat parametry funkce, nebo obsah reference ... :-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
5.9.2007 07:38 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: pěkný C++ bashing
a čo tak
int b = 1;
int a = add_one ( (const int) b);
v prípade, že neverím funkcii add_one ? (dtto s priradením) ?

to je to isté, ako viacnásobné dedenie. robí problémy, málokto ho používa, a kto tomu nerozumie, ten ma názor davu.

6.9.2007 09:37 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
a čo tak
int b = 1;
int a = add_one ( (const int) b);
v prípade, že neverím funkcii add_one ? (dtto s priradením) ?

To mám psát pokaždé znova a znova? To je fakt řešení, nemám si rovnou dát nohu za krk?
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.9.2007 10:33 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: pěkný C++ bashing
noha za krk? tiež rozumné riešenie :-)

samozrejme, že nie. V C++ by jeden použil šablóny, v C makrá.

#define add_one_wrapper(b) (add_one ( (const int) b))
ale nevravíme každý o tom istom. Toto je riešenie situácie, keď človek neverí add_one a ani nič o nej nevie. Normálni programátori ale podľa mňa to slovíčko const vkladajú do deklarácie funkcií/metód zo slušnosti hneď.
3.9.2007 21:53 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: pěkný C++ bashing

Uf. No jestli je pointou toto, tak nechapu proc do toho Deda Jablko na zacatku zamotal operator= a proc vy jste se chytil zrovna na referencich. Odstratenim zadneho z obou prvku sveho vysneneho cile nedosahnete.

Ale k podstatnejsi vec: pokud vam na c++ vadi tohle, tak jste tragickym zpusobem nepochopil za jakym ucelem byl navrzen, k cemu je urcen a jaka je jeho filozofie. Ze si s c++ muzete ustrelite nohu raz dva, to vam nikdo nevyvraci, zalezi jen na vas, jestli napr. vsechny parametry vsech funkci budete brat referenci, uvnitr je sestkrat "precastujete" a nahodne v nich invertujete nekolik bitu. Existuji lide, kteri jsou takovemu nutkani schopni odolat a v tomhle smeru nemaji s c++ zadny problem.

Podobnym stezovanim se pak radite k trotlum, kteri se navazeji do lispu kvuli zavorkam, makrum (jak neprehledne a matouci!) a funkcionalnimu programovani (== nema objekty!!!), nebo do erlangu, ze ma dementni syntaxi, nema normalni promenne, pouziva posilani zprav (proto zakonite musi byt 1000krat pomalejsi nez jakykoliv ne-zpravy posilajici, ne-vsechno kopirujici jazyk), ... urcite to znate. Vy jste stejny, akorat sedite o dva zakopy vedle.

4.9.2007 07:37 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
... ne-vsechno kopirujici jazyk ...
Netušíte jak to funguje.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
4.9.2007 09:43 Sinuhet
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Asi byste si ten odstavec mel precist jeste jednou.
4.9.2007 08:15 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Tak to prrr. Zatím jsem nenašel jazyk s lepším objektovým systémem, než má Lisp. ;-)
4.9.2007 10:23 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
Rozbalit Rozbalit vše Re: pěkný C++ bashing

Jak se v Lispu udělá obdoba DNU? Tedy vlastně úplné zapouzdření.

I'm sure it crashed in the most type-safe way possible.
4.9.2007 11:41 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: pěkný C++ bashing
#doesNotUnderstand? Nenapadá mě přímý ekvivalent, ale to bude tím, že většina použití #doesNotUnderstand by v lispu vyvolala chybu nenavázané proměnné - bez message passingu nějaké "does not understand" nedává moc smysl. Ale v té podmnožině OOP, kterou tvoří message passing, je to triviální - napíšu metodu generické fce (té, kterou budu používat k zasílání zpráv) pro nejobecnější případ. :-)
3.9.2007 21:01 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Obávám se, že pointu jste nepochopil spíš vy. Šlo mi právě o to, že kvůli hlouposti autora určitý kus kódu dělá úplně něco jiného, než co od něj nezasvěcený pozorovatel bez detailní analýzy očekává.
31.8.2007 17:29 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: pěkný C++ bashing
obrat a.write(b) nema zadne defaultni chovani, proto cloveka nevydesi, kdyz to nekdo implementuje po svem...

c++ znam myslim si, ze dobre, abych vedel, ze je to jazyk, ktery nevi co chce... (stejne jako c# 3.0) ... proste se kolem C naskladala hromada featur bez ladu a skladu a hlubsi koncepce... c++ vam dava dostatecne dlouhe lano a delejte si s nim co chcete... klidne se na nem muzete obesit...
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
Luboš Doležel (Doli) avatar 31.8.2007 17:42 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: pěkný C++ bashing
obrat a.write(b) nema zadne defaultni chovani, proto cloveka nevydesi, kdyz to nekdo implementuje po svem...
Zdá se mi to, nebo vám doopravdy vadí, že vám jazyk umožňuje udělat něco po svém?
c++ vam dava dostatecne dlouhe lano a delejte si s nim co chcete... klidne se na nem muzete obesit...
A to mi na něm přesně vyhovuje. Nepořebuju, aby mi autoři jazyka diktovali, jak mám něco dělat - to vím sám.
31.8.2007 18:04 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
A to mi na něm přesně vyhovuje. Nepořebuju, aby mi autoři jazyka diktovali, jak mám něco dělat - to vím sám.

+1000 :-)

Ano, já taky nechápu, proč spousta lidí obhajuje to, že mi jazyk má diktovat jak mám něco dělat. A proč to má být tak úžasná výhoda. Jestli jim to tak vyhovuje, tak ať si takový jazyk najdou. Jsem rád a miluju doslova tu volnost, kterou mi C++ dává - a kdy si můžu vybrat efektivní cestu k řešení problému a pokud vím co dělám, C++ mi vždy vyjde vstříc. Kdo umí psát básně, má rád bohatý jazyk s velkými výrazovými prostředky. Kdo skončil u slabikáře a dál se nedostane, nechť si vybere chudý jazyk, který ho povede.
31.8.2007 18:07 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Zdá se mi to, nebo vám doopravdy vadí, že vám jazyk umožňuje udělat něco po svém?

ano, vadi.

A to mi na něm přesně vyhovuje. Nepořebuju, aby mi autoři jazyka diktovali, jak mám něco dělat - to vím sám.

tak si to uzijte... ja vam v tom nebranim ;-] jenom rikam, ze dle meho ma c++ sve mouchy, ktere vam nevadi nebo si je proste nepripoustite...
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
31.8.2007 18:23 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
ano, vadi.

No ale jiným to nejen nevadí, ale ba přímo vyhovuje. Tak prostě najděte jiný jazyk, protože tohle co vám vadí je základní featura C++.

tak si to uzijte... ja vam v tom nebranim ;-] jenom rikam, ze dle meho ma c++ sve mouchy, ktere vam nevadi nebo si je proste nepripoustite...

Ale samozřejmě, že C++ má své mouchy, jako naprosto úplně všechno na tomhle světě.
31.8.2007 17:47 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
No, většina lidí po write defaultně určitý druh chování očekává.

Ano, C++ mi dává dostatečně dlouhé lano a můžu se na něm klidně oběsit, a nebo využít jeho velmi bohatých výrazových prostředků ke svému užitku. Co si vyberete je na Vás a pokud se chcete věšet, není to problém C++, ale Váš.

Jestli Vám C++ vadí, nepoužívejte ho, no problem. Najděte si jiný jazyk.
31.8.2007 22:16 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: pěkný C++ bashing
c++ vam dava dostatecne dlouhe lano a delejte si s nim co chcete... klidne se na nem muzete obesit...

Podle mých zkušeností jazyky, které vám nedají dost lana na oběšení, vám nedají dost lana ani na spoustu užitečných činností, takže mám raději ty, které mi ho dají dost na oboje a způsob použití nechají na mém uvážení. A to se netýká jen jazyků, ale třeba i operačních systémů. A to říkám jako člověk, který si před pár hodinami spílal do hlav skopových poté, co v příkazu 'init q' místo kvéčka ze zvyku napsal jedničku… :-)

31.8.2007 11:52 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Copak přiřazení, to bych ještě trochu chápal: splácáte v C++ nějaké vektory nebo matice, a potřebujete (z nějakého úchylného důvodu) hodnotovou místo referenční sémantiky. Co je ale masakr je přetížení operátorů "||", "&&", nebo operátoru ",". Najednou se pravá strana od "&&" či "||" vyhodnocuje i když nemá, výraz za operátorem "," se vyhodnocuje dříve než výraz před ním, apod.
Táto, ty de byl? V práci, já debil.
31.8.2007 17:58 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Ale no tak. Kde je problém? Je naprosto samozřejmé, očekávatelné a logické, že pokud přetížíte logický operátor, který defaultně má neúplné vyhodnocování - pak po přetížení nemůže neúplné vyhodnocování pracovat - a to téměř v žádném programovacím jazyce, nejen v C++. Protože přetížení operátorů je jen syntactic sugar pro volání funkce a ta musí dostat oba parametry. S operátorem čárka je to podobné.

Mě už tyhle neproduktivní kritiky C++ lezou krkem. Jsou kritiky C++, kde se člověk poučí, ale tohle je tisíc a jedna variace na téma nepochopení filozofie C++. Základní filozofie C++ je svoboda, obrovské možnosti a rychlost běhu programu. Za svobodu a možnosti se platí tím, že musíte vědět co děláte, jinak špatně dopadnete. Pokud někdo nemá a nedokáže si poradit s takovou svobodou a volností a dělá se mu špatně z toho, že musí vědět co dělá, pak jazyk C++ pro něho není vhodným kandidátem a nechť si vybere jiný jazyk. Tohle ale věční kritikové C++ nechápou.

Hodně se navíc na jazyku C++ projevuje to, že je koncipovaný jako high level jazyk a maximální rychlostí běhu programu a minimálními nároky na prostředky systému a tomu je hodně v jazyku podřízeno. Proto mnohé vlastnosti a věci v C++ jsou tam právě s ohledem na tento cíl. To je potřeba také pochopit, než začnete kritizovat.

Ano, jsou věci, které bych v C++ rád viděl jinak, ale o tom se tady v tomto blogu a diskusi prakticky nikdo nezmiňuje.
31.8.2007 18:43 thingie
Rozbalit Rozbalit vše Re: pěkný C++ bashing
No, a pak z toho sou sáhodlouhé popisy co nedělat a jak dělat to co dělat. To mi zase taky nepřijde jako příliš dobré.
31.8.2007 19:02 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Jenže programování prostě není pro všechny. A myslím, že je dostatek programovacích jazyků určených pro Ty, kteří chtějí jednoduchý, omezený jazyk s jakoukoli vlastností, kterou si jen budou přát.

A C++ je prostě tak trochu prostě vyšší dívčí - není to jednoduchý jazyk, ani jazyk, který vás bude vodit za ručičku. Za to vám dává svobodu, rychlost, efektivitu kódu.

Jinak sáhodlouhé popisy existují pro každý jazyk, i pro jednoduchý. Vezměte si jaké bichle a v jakém množství se třeba vydávají pro Javu - což je velmi jednoduchý jazyk. Nebo pro další jazyky.

Pravda je totiž taková, že znalost programovacího jazyka je to nejmenší. A pak je to otázka efektivity. Pro programování toho potřebujete vědět daleko víc, než jen znalost nějakého jazyka.
31.8.2007 19:20 thingie
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Mluvím o různých ,coding style guideline` a podobných věcech pro konkrétní projekty. a = b může dělat absolutně cokoliv a ta znalost jako taková musí být obsažena v obsáhlé dokumentaci... (pokud jí nemá být zdroják samotný)
31.8.2007 20:11 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: pěkný C++ bashing
hazeni hrachu na zed, by bylo asi efektivnejsi...
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
31.8.2007 20:56 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Vzhledem k tomu, že existují _očekávatelné_ vlastnosti, tak pokud se očekává, že a = b povede ke zkopírování hodnoty (což je v 99,9999%) pak není potřeba nic dokumentovat.

Navíc když bych byl puntičkář nevidím rozdíl mezi tím, jestli mám dokumentovat v C++ operator=, nebo v jiném jazyce třeba assign(), nebo clone() jakožto analogické metody, které musí existovat.

Ono totiž do dobrého stylu programování patří nepřekvapovat se chováním očekávatelných věcí - například je blbost použít operator* pro sčítání matic například, i když to jde.

Jinak programoval jsem už v mnoha jazycích a nijak jsem si nevšimnul, že by nutnost dokumentovat byla v projektech C++ vyšší, než v jakémkoli jiném jazyce. Není pro to důvod, a ani moje 20 letá praxe mi neukázala nutnost většího paklíku dokumentace pro C++ oproti třeba témuž třeba v Javě, PHP, Pythonu, Smalltalku a dalších věcech. A to jsem dělal i na rozsáhlých komerčních projektech.

Závěr: Nezažil jsem nikdy nutnost větší dokumentace pro C++ oproti jiným jazykům a technologiím, neboť to tak nějak vždycky vyšlo rozsahem dokumentace plus mínus nastejno. Můžete mi nějak objasnit, proč by se člověk při dokumentování projektu C++ musel víc upsat?
elviin avatar 31.8.2007 20:37 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Cetl jsem to pdfko a jsou tam veci, ktere jsou bud 1) proflakle problemy nebo 2) nekonecne krat opakovane temne kouty jazyka nebo 3) umele ulohy na tema 1) a 2). Ono je to totiz desne jednoduchy (a i zabavny) se dohadovat o pretezovani operatoru a jinych picovinach, ktere opravdu, ale opravdu nejsou podstatne. Slozitejsi a podstatnejsi problemy se neprobiraji, protoze to neni takova "sranda" je vyresit. Kdyz se nebudete zasekavat na techto vecech, dostenete se dal a pochopite proc to tak je a objevi se ty podstatnejsi problemy.
elviin avatar 31.8.2007 11:12 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
Rozbalit Rozbalit vše Re: pěkný C++ bashing
boost::spirit vyuziva moznosti vnorenych template k implementaci parseru a musim ze zkusenosti rict, ze je to povedeny koncept. Spirit je rychla mrcha s velkym potencialem. Jinak kolikrat kdo narazil na neukoncenou rekurzi? Autor vytahl chutovku. Hlavni chod je ale o necem jinem.
31.8.2007 14:38 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: pěkný C++ bashing
boost::spirit
o.i. i pekný príklad zmysluplného overloadovania operátorov :-)
1.9.2007 16:01 springer | skóre: 10 | blog: engineering
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Tema C++, 70 prispevku do teto chvile a jen 11 od Ing. Ponkrace. A asi jenom 3 lide se dovedeli, ze jsou debilove a C++ vubec nerozumi. Uz i pan inzenyr polevuje ...
kralovna Alzbeta a Stallmanuv holic diskutuji free software
1.9.2007 16:17 Miloslav Ponkrác | blog: miloslavponkrac
Rozbalit Rozbalit vše Re: pěkný C++ bashing
Ó děkuji za pozornost, kterou věnujete mé osobě.

Jinak já debilem nazval jen autora té kritiky a to bylo vůbec poprvé co jsem tady na abclinuxu.cz vůbec slovo debil použil. Takže nepolevuji, ale dnes jsem silně přitvrdil. Ono upřímně to pdf s kritikou opravdu bylo silné kafe, asi tak na úrovni toho, když dítě z měteřské školky píše o problematice jaderných reaktorů a nedojde mu, že na to ještě znalostně nedorostlo.

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.