Portál AbcLinuxu, 16. května 2024 02:51


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
rufuss avatar 13.7.2013 19:13 rufuss | skóre: 7 | blog: prckolo | Olomouc/Zlin
Rozbalit Rozbalit vše Re: Hříchy mládí
Odpovědět | Sbalit | Link | Blokovat | Admin

Lol...

Aktivně Stella & Win7 / Na serveru mám CentOS :D / Nésu Čech a nikdy jim nebudu!
13.7.2013 21:12 Jozin
Rozbalit Rozbalit vše Re: Hříchy mládí
Odpovědět | Sbalit | Link | Blokovat | Admin
jo, taky jsem to delal, ze sem zo tim #endif psal v komentari k cemu to patri, ale rada kompilatoru rvala, tak sem to po case nechal.
David Watzke avatar 14.7.2013 08:16 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Hříchy mládí
O to tam asi nešlo :-) ale když už o tom mluvíš, tak kterým kompilátorům to vadí? Nikdy jsem nenarazil na problém.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
14.7.2013 10:59 jekub
Rozbalit Rozbalit vše Re: Hříchy mládí
mám dojem že msc kolem verze 1.6 eště v dosu. Nebo možná Borland, tam se to muselo tuším explicitně povolit.
15.7.2013 17:38 Sten
Rozbalit Rozbalit vše Re: Hříchy mládí
Vadí to novějším kompilátorům, pokud to není komentář, ale je to #endif XDBOBJECT_H

Některé starší kompilátory (a nejspíš MSVC stále) tohle berou jako legitimní, zatímco třeba novější GCC řve, že se mu to vůbec nelíbí.
Bystroushaak avatar 14.7.2013 01:08 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Hříchy mládí
Odpovědět | Sbalit | Link | Blokovat | Admin
Co to je?
blog.rfox.eu
14.7.2013 10:57 jekub
Rozbalit Rozbalit vše Re: Hříchy mládí
Potřeboval jsem se dostat k private věcem a úpravou .h bych porušil licenci.
14.7.2013 11:31 homer
Rozbalit Rozbalit vše Re: Hříchy mládí
Pokud je tam explicitne uvedeny private a nespoleha se na defaultni viditelnost tak se to da celkem snadno resit pomoci:
#define private public
#include "x.h"
14.7.2013 11:40 __dark__
Rozbalit Rozbalit vše Re: Hříchy mládí
Nebo
#define class struct
v implicitnim pripade, fuj:)
15.7.2013 12:34 homer
Rozbalit Rozbalit vše Re: Hříchy mládí
Pravda, ale tahle verze muze rozbit nejaky kod.

Napr pokud nekdo pouziva u sablon class misto typename, tak zmena na struct nebude fungovat.

A i kdyz dusledne pouziva typename, tak treba v tomhle pripade se class nevyhne:
template<template<typename T> class U> struct X { };
15.7.2013 12:53 homer
Rozbalit Rozbalit vše Re: Hříchy mládí
jinak jeste bych doplnil, ze to ze v c++ neni mozny se nejak rozume dostat k private atributum povazuju za chybu jazyka.

Osobne radsi private promenny nejak vhodne oznacim (treba podtrzitkem na zacatku), cimz rikam pristup na vlastni nebezpeci, ale pokud to chces risknout tak ti v tom nebudu branit.

Programatori nejsou hlupaci (nebo by nemeli byt) a snazit se je takhle kontrolovat stejne nikam nevede...
15.7.2013 14:04 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Hříchy mládí
Já považuji za chybu jazyka, pokud:

a) V programovacím jazyce je možné k privátním atributům nějak přímo dostat.

b) Pokud má programovací jazyk navržená práva tak jednoduše, že je nutné sem tam zveřejňovat privátní věci (jako Java).

Pokud je třeba přistupovat k privátním atributům v C++, jedná se o špatný návrh interface či API a někdo to nenavrhl dobře.

Privátní věci jsou privátní proto, že se k nim nemá nikdo dostat. Politicko korektní významy slova „privátní“ v Orwellovském smyslu a nebo ve smysl americké špionážní definici slova soukromí – by v programovacím jazyce neměla co dělat.

A ano, jazyk by měl programátory kontrolovat a rozumně omezovat. Patří to do popisu práce programovacích jazyků.

Omezení přístupu k různým identifikátorům jen na určitá místa je nedílnou součástí všech jazyků od počátku. Je to součástí strategie, které říká, že program, kde všechny identifikátory jsou přístupné globálně + hloupý programátor, který nerespektuje omezení viditelnosti identifikátorů a hackuje nad nimi a vytváří špagetový systém vazeb v programu obvykle nevytvoří funkční a bezchybný program. I když se většina programátorů kasá, že jsou chytří, jejich mozek je zoufale zrazuje. Zatímco kompilátor nemá problém udržet přehled nad miliardou identifikátorů, lidský mozek selhává už u pár desítek či stovek. A pak šlus.

Programátoři jsou hloupí, protože jsou lidé a mají jen lidský mozek.

15.7.2013 14:13 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Hříchy mládí
Let the flame begin!
A ano, jazyk by měl programátory kontrolovat
To ano (kontrolovat ve smyslu pomahat).
a rozumně omezovat. Patří to do popisu práce programovacích jazyků.
To ani nahodou - jeste jsem nevidel problem z realneho sveta programovani (kde je neomezene casove okno), ktery by sel resit pri zachovani omezovani jazykem (tedy bez ruznych hacku).
15.7.2013 14:19 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Hříchy mládí
V čem jazyk programátorovi pomáhá, když nedokáže vynutit ani private?

On Vám někdo brání psát programy bez jediného slova private?

---

„To ani nahodou - jeste jsem nevidel problem z realneho sveta programovani (kde je neomezene casove okno), ktery by sel resit pri zachovani omezovani jazykem (tedy bez ruznych hacku).“

To, že jste prase, a nejste schopen čistě napsat žádný program, tím bych se moc nechlubil. Nehažte své handicapy na jazyk, je to Vaše chyba.

Protože já i stovky dalších lidí co znám nemáme problém psát při zachování omezování jazykem v C++.

Pokud si špatně zvolíte API a interface, pak v jakémkoli jazyce budete muset hackovat. Je to ovšem chyba Vaše, nikoli jazyka.
15.7.2013 14:32 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Hříchy mládí
V čem jazyk programátorovi pomáhá, když nedokáže vynutit ani private?
Prave tim nevynucovanim :-)
On Vám někdo brání psát programy bez jediného slova private?
Mne ne, ale dost casto se pouziti techto ficur jazyka uci uplne spatne a s vysledky se myslim setkavate i Vy. Tvurci jazyku se temi ficurami chlubi, povazuji tyhle "zbytecnosti" za must-have atd. Zacinajici programatori tedy nabudou dojmu, ze pouziti techto ficur je neco spravneho, ba dokonce bezpodminecneho a narvou to pak vsude -> fail.

Btw co se praseni tyce, uz jsme videl nekolik ekvivalentnich programu nebo dokonce primo prepisu z jednodussich jazyku (napr. Python) do tech slozitejsich (napr. C++) a mira praseni byla v obou stejna - troufam si tedy tvrdit, ze na praseni tyto omezujici vlastnosti jazyka nemaji vliv (nebo opravdu margialni).
15.7.2013 14:42 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Hříchy mládí
„Mne ne, ale dost casto se pouziti techto ficur jazyka uci uplne spatne a s vysledky se myslim setkavate i Vy. Tvurci jazyku se temi ficurami chlubi, povazuji tyhle "zbytecnosti" za must-have atd. Zacinajici programatori tedy nabudou dojmu, ze pouziti techto ficur je neco spravneho, ba dokonce bezpodminecneho a narvou to pak vsude -> fail.“

Pak je to ovšem chyba učitelů a chyba programátorů, že něco špatně používají.

Zkuste špatně používat kyanid draselný, nebo methyalkohol či se koupat v kyselině sírové a uvidíte, že příroda a realita je plná featur, které příroda dokáže velmi drsně vynucovat. A hacky moc nepomáhají.

Jednoduše člověk, který se nedokáže přizpůsobit základním vlastnostem reality, ztratil základní životaschopnost – totiž schopnost přizpůsobit se prostředí. Podle Darwina by měl vyhynout.

A ano, použití omezování viditelnosti identifikátorů je must-have, naprosto základní featura, kterou by se programátoři měli naučit mezi prvními. Pravidlo, že žádný identifikátor nebude viditelný dále, než je nutné je naprosto základní pravidlo programátora, který chce napsat něco většího, než hello world program. V týmu je pak takové pravidlo otázkou toho, zda program bude stát X peněz, nebo miliónkrát X peněz.

Použití private, a jeho důsledné vynucování u některých jazyků je dar z nebes. Je to obrovská pomoc programátorovi od velkého Manitoua.

---

„Btw co se praseni tyce, uz jsme videl nekolik ekvivalentnich programu nebo dokonce primo prepisu z jednodussich jazyku (napr. Python) do tech slozitejsich (napr. C++) a mira praseni byla v obou stejna - troufam si tedy tvrdit, ze na praseni tyto omezujici“

Možná byste se měl dívat na kódy mistrů a lidí, kteří umí programovat. A to pokud možno i v cílovém jazyku, do kterého přepisují.

Podívejte, já Vám tento příspěvek přeložím do angličtiny nebo francouzštiny, případně němčiny – ale všechny tři překlady nebudou za mnoho stát. Říká to něco o tom, jak kvalitní vyjadřovací schopnost má angličtina, němčina nebo francouzština? Ani náhodou.

Pokud se učíte od hochštaplerů, pak Vaše závěry moc platné nebudou.

Učte se od mistrů, ne od neumětelů.

Víc k tomu nemám co říct.
15.7.2013 14:54 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Hříchy mládí
Pak je to ovšem chyba učitelů a chyba programátorů, že něco špatně používají.
Nesouhlasim, protoze pokud je nekde neco navic, tak je to z meho pohledu zbytecne.
Zkuste špatně používat kyanid draselný, nebo methyalkohol či se koupat v kyselině sírové a uvidíte, že příroda a realita je plná featur, které příroda dokáže velmi drsně vynucovat. A hacky moc nepomáhají.
Toto neni vynucovani, ale presne to co pozaduji. Tedy aby me jazyk neomezoval (priroda mi dovoli nevhodne pouzivat vami uvedene latky).
Možná byste se měl dívat na kódy mistrů a lidí, kteří umí programovat. A to pokud možno i v cílovém jazyku, do kterého přepisují.
Vetsinou mi to neni doprano - asi sedim v realnem svete a ne v izolovane soustave mezi dvema borci, kteri si tresou spolecne rukou jaky krasny jazyk si sami pro sebe vytvorili.
Podívejte, já Vám tento příspěvek přeložím do angličtiny nebo francouzštiny, případně němčiny – ale všechny tři překlady nebudou za mnoho stát. Říká to něco o tom, jak kvalitní vyjadřovací schopnost má angličtina, němčina nebo francouzština? Ani náhodou.
Domnivam se, ze u programovaciho jazyka vubec nezalezi na jeho vyjadrovacich schopnostech at uz jsou jakekoliv, ale na jeho realne pouzitelnosti (tuto vsak zrejme definuji jinak nez Vy).
15.7.2013 15:01 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Hříchy mládí
„Toto neni vynucovani, ale presne to co pozaduji. Tedy aby me jazyk neomezoval (priroda mi dovoli nevhodne pouzivat vami uvedene latky).“

Jazyk Vás neomezuje. Jazyk Vám dovolí nepoužívat klíčové slovo private. Nechápu, na co si stěžujete?

„Vetsinou mi to neni doprano - asi sedim v realnem svete a ne v izolovane soustave mezi dvema borci, kteri si tresou spolecne rukou jaky krasny jazyk si sami pro sebe vytvorili.“

I já sedám v reálném světě. A věřte, že v reálném světě jsou mistři (vedle dalších lidí). Existují mistrovští houslisté, mistrovští programátoři, atd. pro všechny obory.

„Domnivam se, ze u programovaciho jazyka vubec nezalezi na jeho vyjadrovacich schopnostech at uz jsou jakekoliv, ale na jeho realne pouzitelnosti (tuto vsak zrejme definuji jinak nez Vy).“

Jako vata je tento odstavec dobrý. Jinak v něm nevidím jediný argument k tématu.
15.7.2013 15:13 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Hříchy mládí
Jazyk Vás neomezuje. Jazyk Vám dovolí nepoužívat klíčové slovo private. Nechápu, na co si stěžujete?
Jazyk umi zbytecnost -> programator ji zbytecne pouziva -> ja z toho mam problem, ktery musim resit -> jsem omezovan jazykem (protoze ten problem musim resit v tom jazyku, kde to je nejake hnusne hackovani)
I já sedám v reálném světě. A věřte, že v reálném světě jsou mistři (vedle dalších lidí). Existují mistrovští houslisté, mistrovští programátoři, atd. pro všechny obory.
Prirovnanim z realneho non-IT sveta bych se v pripade IT vyhnul. V tomto pripade je mylne proto, ze kod tu s nami je nezmeneny mnoho let a meni se pouze pozadavky (kde pozadavek neni subjektivniho charakteru), kdezto na dobre zahraneho Bacha nebo na dobre repovanou skladbu se pozadavky opravdu nemeni! Podstatnych rozdilu by se samozrejme naslo vice...
Jako vata je tento odstavec dobrý. Jinak v něm nevidím jediný argument k tématu.
Tedy znovu - jazyk s malym poctem omezeni je realne mnohem pouzitelnejsi nez jazyk s vetsim poctem omezeni.
18.7.2013 10:19 Filip Svoboda
Rozbalit Rozbalit vše Re: Hříchy mládí
Ochrana privatnich clenu neni zbytecnost, je to dobra vlastnost.

Kdyz programator napise: private int x; tak muze psat dalsi kod s predpokladem, ze mimo jeho tridu mu nikdo nikdy z vnejsku hodnotu te promenne x nemuze modifikovat, a to ani chybou, hackem, proste nijak. To je presne to co chtel a proto tam taky to private napsal.

Kdyz pise private i na promenny ktery by se mohli hodit z vnejsku tak zbytecne skryva mozne funkce/nastaveni pred okolnim svetem, kdyz nepise private nikde tak riskuje rozbyti vnitrniho datoveho modelu nejakym vnejsim kodem (a to mnohdy jen v prazvlastni konstalaci podminek - a coz tezko ladi)
pavlix avatar 23.7.2013 17:10 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Hříchy mládí
Užitečnost oddělení veřejných a privátních členů tu pokud vím nikdo nezpochybňoval. Nicméně chápat to jako bezpodmínečnou ochranu proti úmyslnému přístupu, tedy mimojiné ochranu proti debugování a testování, to mi přijde značně extremistické, náboženské, netechnické a neužitečné.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
pavlix avatar 15.7.2013 14:41 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Hříchy mládí
Samé moudře znějící argumenty, za kterými se podle mě ve skutečnosti skrývá notná dávka hulení. Ve skutečnosti jsem po delší době došel ke stejnému závěru, tedy že je pro život jednodušší private nevynucovat, nýbrž označovat a tedy příležitostné uživatele private věcí nebuzerovat, nýbrž spoléhat na to, že vědí, co dělají. Asi to není dostatečně enterprisy a nefunguje to dobře s cvičenými opicemi, ale to jde naštěstí mimo mé zkušenosti.

Typicky narážím na to, že pro účely testování či debugování potřebuju API, které bych ve skutečném programu nikdy neměl a nesměl použít. Je možnost žít s tím, co je a řešit problém složitější cestou. Nebo je možné privátní API použít. Pak je ale lepší, když má pro to jazyk přímou podporu.

Speciální označení by mělo průměrně inteligentního člověka trknout dostatečně. Pokud ne, tak by mělo dojít na warningy/errory, které se dají explicitně vypnout.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.7.2013 14:43 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Hříchy mládí
+1
15.7.2013 14:50 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Hříchy mládí
Jestliže programátoři vědí, co dělají, pak bych zkrouhnul u kompilátorů fázi syntaktické kontroly – to je jenom buzerování programátora. Stejně tak bych vyhodil fázi testování a ladění programu. A vyhodil testery. Programátoři to tedy udělají bez chyby a vědí co dělají.

Zvláštní, já programuji 25 let, a dozvídám se, co věcí najednou nejde.

Jakýkoli jazyk má přímou podporu pro cokoli. Není třeba hackovat žádné private. Jaké si to uděláte, takové to máte.

Hackování jazyka jako běžnou formu programování beru jako podřezávání si větve na které sedíte. On jazyk není Váš nepřítel, není to terorista, je to pomocník. Nemusíte se snažit ho přeprat, stačí ho využít se vším čím vám pomáhá.

Ale děláte mi radost. Kdysi jsem si myslel, že jsem starý a mladí mě převálcují. Bylo mi divné, že v posledních 10 letech si mě najímají lidé na to, abych jim udělal analýzu, interface, a další. Prý to té dnešní generaci svěřovat nechtějí, protože jsou prasata a když něco navrhnout, musí se to po prá letech předělávat, hackovat, prasit a stejně to drhne.

Prosím abyste dál udržovali stejné názory. Budu rád za maximum zakázek. Nejhorší je, když by mladí programátoři dělali věci správně, to bych byl v ….

A tím končím k této debatě.
pavlix avatar 15.7.2013 15:11 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Hříchy mládí
Snůška stařeckých keců, argument k věci ani jeden.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.7.2013 15:31 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Hříchy mládí
Argument je jednoduchý.

Pavlix a dumblob se kasají, jak nejlepší je hackovat si vlastní jazyk, ve kterém píši. Přeji jim hodně štěstí. Nicméně rozhodně nedoporučuji napodobovat.

Tisíce jiných lidí dělají to samé co pavlix a dumblob, a dělají to jinak. Pochopili, že odkrývat identifikátory všem, pokud jazyk obsahuje nástroj na jejich skrytí – tedy na možnost ohlídání, že to někdo buď a) z nepozornosti, b) s prasáckými choutkami ačkoli to nepotřebuje – pak ho s radostí využijí, protože jim šetří práci, čas a peníze.

Jistě, čas od času se vyskytne nutnost něco ohackovat, ovšem velmi zřídka. Asi tak jednou za několik let.

Programovací jazyk je od toho, aby pomáhal. Nikdo nikoho nenutí používat klíčová slova, která nechce.

Programátoři na celém světě se snaží, aby kompilátor byl maximálně restriktivní a programovací jazyk obsahoval co nejvíce nástrojů na kontrolu jejich kódu. Všichni programátoři, s výjimkou pavlixe a dumbloba tak nějak vědí, že ladění a debugování je dost dlouhá fáze, a že chyby v programu jsou spíše pravidlem nebo výjimkou. Jejich odchytávání zabere dost času. Pouze velmi nesebekritičtí programátoři si věří natolik, že si myslí, že chyby dělat nebudou. Kromě pavlixe a dumbloba jsem za svůj život žádné jiné nepoznal, a je možné že několik se jich ještě najde.

Jinak řečeno, pokud nepíšete jednorázový program, vyplatí se psaní programu směřovat spíše s tím, aby byl co nejčitelnější a co nejudržovatelnější, než k rychlosti psaní. Obvykle se delší programy déle ladí, debugují a testují, než píší.

Možná se budete divit, ale třeba v Linux kernelu se našly chyby, které tam byly řadu let. Těžko můžete podceňovat programátory kernelu, že programují špatně. Škoda, že na kernelu neprogramuje pavlix a dumblog, protože ti jsou tak chytří, že jako programátoři by si ohlídali, že chyba by ani nevznikla, natož aby tam byla několik let.

Není lepšího léku, než napsat a udržovat rozsáhlý program.

15.7.2013 15:40 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Hříchy mládí
Škoda, že na kernelu neprogramuje pavlix a dumblog, protože ti jsou tak chytří, že jako programátoři by si ohlídali, že chyba by ani nevznikla, natož aby tam byla několik let.
Za pavlixe mluvit nemuzu, ale osobne jsem uz do kernelu hrabnul a hodlam v tom pokracovat (zatim to neni ve vanilce, ale delam na tom). Takze se teste, bude v nem mnohem vice chyb, ktere se budou hledat radu let.
15.7.2013 15:42 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Hříchy mládí
To děláte dobře. Protože oni vám to budou vracet k přepracování tak dlouho, dokud budete zastávat filozofii psaní kódu, kterou jste tu prezentoval.

Nakonec se to naučíte správně, nebo to vzdáte.
15.7.2013 15:44 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Hříchy mládí
Uvidime za par mesicu, jestli uz prvni zadost odmitnou (a z jakeho duvodu :-)).
15.7.2013 15:43 homer
Rozbalit Rozbalit vše Re: Hříchy mládí
To ze programatori nedelaji chyby tady rikas jenom ty. Ostatni nic takovyho nerekli.

Zrovna tak nikdo nerika ze bys mel bezne pristupovat k private atributum. Proto to specialni pojmenovani. Aby bylo jasny ze je to na vlastni nebezpeci, a pokud mozno se tomu vyhnout.

Ale kdyz uz k tomu z nejakyho duvodu pristoupit potrebujes, tak typni si jak tam udelas min chyb:

1. kdyz mas nejakou rozumnou moznost jak to obejit

2. kdyz je jazyk naprosto striktni a ty musis delat hacky jako autor blogu, nebo jako to co navrhujes dole...
pavlix avatar 15.7.2013 16:27 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Hříchy mládí
Jsem rád, že jiní takové problémy se čtením nemají. Rád bych ještě podtrhnul to, že přístup k privátnímu API by měl být skutečně vyhrazen jen zvláštním situacím, mezi které řadím například ladění a testování.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.7.2013 16:30 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Hříchy mládí
+1

Radeji to zopakuji:

Přístup k privátnímu API by měl být skutečně vyhrazen jen zvláštním situacím, mezi které řadím například ladění a testování.
pavlix avatar 15.7.2013 16:23 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Hříchy mládí
Až budeš reagovat na to, co skutečně tvrdíme a ne ze sebe sypat tohle, možná bude mít diskuze nějaký smysl.
Obvykle se delší programy déle ladí, debugují a testují, než píší.
Což podtrhnuje můj výše uvedený názor, že je dobré mit k testování a ladění co nejlepší prostředky a nemuset kvůli tomu vymýšlet nějaké speciální hacky. Popravdě řečeno mám pocit, že mé komentáře čteš pozpátku nebo vzůru nohama, jinak bys z nich těžko mohl odvodit téměř přesný opak toho, co se v nich píše.
Možná se budete divit, ale třeba v Linux kernelu se našly chyby, které tam byly řadu let. Těžko můžete podceňovat programátory kernelu, že programují špatně. Škoda, že na kernelu neprogramuje pavlix a dumblog, protože ti jsou tak chytří, že jako programátoři by si ohlídali, že chyba by ani nevznikla, natož aby tam byla několik let.
Zajímavé větné konstrukce. V oblasti sítí jsem několik takových chyb hlásil a další čekají, až budu mít čas je pořádně ověřit. Důkazů, že (někteří) programátoři kernelu (někdy) programují špatně a výsledky jejich práce se dostanou do upstreamu, je v tom síťovém kódu víc než dost. A nejedná se zdaleka jen o nějaká přehlédnutí, jsou to i zásadní návrhové chyby.

Ale to je na dlouhé povídání a s aplikačním programováním, kde se běžně používají cizí knihovny, to nemá nic moc společného.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
Gilhad avatar 15.7.2013 20:51 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: Hříchy mládí
Jakýkoli jazyk má přímou podporu pro cokoli.

No ja bych treba velice nerad zkousel resit nejake interrupty, real-time veci ci cokoli low-level napriklad v KARLOVI. Nejak mi tam ta prima podpora pro cokoli prijde ponekud nedostacujici ...
Bystroushaak avatar 15.7.2013 14:39 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Hříchy mládí
Pokud je třeba přistupovat k privátním atributům v C++, jedná se o špatný návrh interface či API a někdo to nenavrhl dobře.
Ano. Ale co dělat, když už se dostanu před takový kód?
15.7.2013 14:53 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Hříchy mládí
Obalit ho vlastním rozhraním, kde přístupy uděláte dobře.

V nejhorším s tím, že obejdete a hacknete jednu věc, ale co nejčístěji, viz můj kód níže.

Ve vlastním zájmu si nebudete ve svém kódu kálet pod vlastní židli.
15.7.2013 15:20 homer
Rozbalit Rozbalit vše Re: Hříchy mládí
Tak nevim jestli si tady z nas delas srandu... :-)

Netvrd me ze nevidis ze tenhle tvuj kod;
struct ShadowAStruct
{
void** virtual_function_table; 
...
je 100x vetsi prasarna nez vypnuti private (napr. pomoci #define).

Pri zmenach v ty knihone bych musel presne synchronizovat i tuhle strukturu. A pravdepodobnost ze nekde pribude promenna a cely se to posune je mnohem vetsi nez pravdepodobnost nejaky zasadni zmeny kvuli ktery se zmeni funkce toho private atributu.

Navic kdyz to prelozim jinym prekladacem tak se to muze cely rozsipat...
15.7.2013 15:40 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Hříchy mládí
1) Nejčistější je nemít private tam, kde k tomu chcete přistupovat zvenčí.

2) Pokud k tomu chcete přistupovat zvenčí, a je tam private, pak existuje jakž takž čisté klíčové slovo friend, kterým udělíte práva na přístup k private jen tam, kde je to třeba.

3) Jestli si myslíte, že jakýkoli hackovací kód se nemusí znovu zkontrolovat při změnách knihovny, tedy i ten, který popisuje autor v článku, pak nemám slov.

4) Jakýkoli hackovací kód přeložený jiným překladačem může fungovat jinak, i ten co napsal autor článku.

5) Vypnutí private pomocí #define nevypíná globálně private. Už jen proto, že private je výchozí stav pro class. Tedy private jsou i věci, které nemají klíčové slovo private.

Jinak řečeno, když si pokálíte vlastní nohy tím, že chcete obejít private, pak žádné řešení není ideální kromě:

1) Změny aby cílový kód nepotřeboval lézt do private.

2) Změny interface, aby private nebylo private.

3) Nebo přidání metody třídy, který vrací hodnotu privátního členu.

4) A dalších.

15.7.2013 15:53 homer
Rozbalit Rozbalit vše Re: Hříchy mládí
1) Nejčistější je nemít private tam, kde k tomu chcete přistupovat zvenčí.
Jak tohle pomuze nekomu kdo se dostane ke kodu kde uz private je? Treba autor blogu.
2) Pokud k tomu chcete přistupovat zvenčí, a je tam private, pak existuje jakž takž čisté klíčové slovo friend, kterým udělíte práva na přístup k private jen tam, kde je to třeba.
jo a kdyby bylo mozne deklarovat friend i mimo tridu tak by to dost resilo.
3) Jestli si myslíte, že jakýkoli hackovací kód se nemusí znovu zkontrolovat při změnách knihovny, tedy i ten, který popisuje autor v článku, pak nemám slov.
uz zase si domejslis neco co ostatni nerekli...
4) Jakýkoli hackovací kód přeložený jiným překladačem může fungovat jinak, i ten co napsal autor článku.
Jak me muze prosta zmena private na public zpusobit ze to nekde bude fungovat a jinde ne? Prosil bych o konkretni priklad.
5) Vypnutí private pomocí #define nevypíná globálně private. Už jen proto, že private je výchozí stav pro class. Tedy private jsou i věci, které nemají klíčové slovo private.
to sam zminuju uz v prvnim prispevku...
15.7.2013 15:58 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Hříchy mládí
jo a kdyby bylo mozne deklarovat friend i mimo tridu tak by to dost resilo.
Tedka jak chteji zrychlit vydavani novych specifikaci C++, tak se mozna dozijeme toho, ze tam budou nastroje na omezovani a zaroven nastroje na ruseni techto omezeni (a tyto budou mit zase nejaka omezeni...) :-D.
14.7.2013 14:43 jekub
Rozbalit Rozbalit vše Re: Hříchy mládí
Tak to by mne jak nepřítele maker nenapadlo. Dobré.
Bystroushaak avatar 14.7.2013 19:26 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Hříchy mládí
Potřeboval jsem se dostat k private věcem a úpravou .h bych porušil licenci.
Heh, to bych z toho nevyčetl. Přibližně jsem pochopil co to dělá, ale ušel mi smysl :)
15.7.2013 14:15 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Hříchy mládí
A kdyby chtěl programátor dělat tato přetypování čistě a jasně v kódu, napsal by:

---

struct ShadowAStruct

{

void** virtual_function_table;

int first_private_param;

char second_private_param;

};

---

inline ShadowAStruct * ConvertToShadowStruct(A * ptr)

{

return reinterpret_class<ShadowAStruct*>(ptr);

};

---

A bylo by jasno i po 10 letech, co kouzlí v kódu.

19.7.2013 22:37 jekub | skóre: 9 | blog: noblog
Rozbalit Rozbalit vše Re: Hříchy mládí
nechapu
dolik.rce avatar 14.7.2013 09:51 dolik.rce
Rozbalit Rozbalit vše Re: Hříchy mládí
Odpovědět | Sbalit | Link | Blokovat | Admin
Jo, taky jsem zamlada psal obskurni pretypovani bez dokumentacnich komentaru vysvetlujicich o co tam jde...

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.