Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Logik

Stran: 1 ... 59 60 [61] 62 63 ... 68
901
Distribuce / Re: Debian a rozsypaný apt
« kdy: 08. 11. 2010, 15:19:40 »
PCnity:
Prostě - uživateli jsi dobře poradil a zároveň jsi se projevil jako totální hulvát. Tím bych tu diskusi shrnul.

PS: Kdybys mu do odpovědi napsal něco ve stylu: "Osobně si myslím, že je daleko lepší mít systém v angličtině, protože.....", tak se nad tím nikdo nepozastaví a budeš tu za borce, co umí dobře a rychle poradit...

902
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 08. 11. 2010, 15:12:31 »
iwtu:Unix není objektovej? Odkdy? Co je např. socket, soubor, semafor? Jaktože to není objekt?
Právě např. design "vše je soubor" je krásnej příklad OO myšlení: jeden interface pro soubory a konkrétní objekty ho implementují.
 Že je většina jádra linuxu v C? No a co, to něčemu vadí? OOP se týká designu a přístupu k entitám, se kterými se pracuje, nikoli o tom, jestli něco píše tak nebo jinak. Tzn. to, že se v unixu píše místo socket.write(data, size) write(socket, data, size) nemá s tím, jestli unix je nebo není OO společnýho lautr nic.

903
Vývoj / Re: Audit zdrojového kódu v C (prípadne v C++)
« kdy: 07. 11. 2010, 20:36:17 »
Citace
Tohle je argument typu "to ví přece každý" nebo "říkali to v televizi".
Nepochopil. V tom přirovnání vůbec nejde o tom, jestli to je nebo není dobře. V tom přirovnání jde o to, že se ví, že se jezdí vpravo a tak se tomu to auto přizpůsobí.
Ale u switch konstruktu se ví (statistika), že nejpoužívanější je rozskok se separátníma blokama (za každym break), ale ten konstrukt k tomu přizpůsoben není.

Pokud konstruktéři auta předpokládají, že nejlépe se řídí s volantem vlevo a není tomu tak, je to jejich chyba, ústupek přání zákazníka či obecným zvyklostem (by se to nepletlo). Pokud návrháři jazyka navrhnou switch tak, jak je v C, tak se nepoužívá dobře. To lze objektivně změřit (délka nejčastěji používaných kódů, frekvence chyb). Např. u JAVY byl návrh ústupkem obecným zvyklostem (píše se to takhle). U C (respektive B) nebyly ale ani obecné zvyklosti ani přání zákazníka, zbývá tedy chyba...

Citace
Break znamená "vypadni ven" z příkazu.... Proč nefunguje break i u jednotlivých větví if?
Právě proto, že break NEZNAMENÁ vypadni ven z příkazu, ale z cyklu. A právě proto by šlo krásně sémanticky rozšířit i na switch.

Citace
Goto l1 není delší než continue :P
l1:
...
Goto l1
delší je. A jestli chceš svůj názor obhajovat prasečinama jako dvoupísmenej název identifikátoru...

Citace
Jenže pro kompilátor to je jiný tvar toho příkazu...
Tvrdil jsem snad, že je to syntaktická chyba? Ne.
Dělá to to, co bylo zamýšleno? Ne? Tedy je to chyba.
To, že to není syntaktická ale sémantická chyba je o to hroší -
člověk na ní něpřijde při překladu, ale později.

Citace
Ne kdo, ale co, ta dvojtečka přeci. Ta ti říká že je to label a nic víc.
Takže výraz (1+1) je volání funkce? Jsou tam závorkly a ty přeci znamenají volání funkce.

Citace
Jazyk B...
Znova. To, že to je v B nebo v assembleru tak neznamená, že to v těch jazycích bylo dobře. Takže to není argument. Vždycky se jezdilo na koních a taky to není nejlepší způsob překonávání vzdáleností.
 Ad Java - tendle jazyk dědí C++ syntaxi. Pravda odstraňuje některé nebezpečné věci, ale to je rozdíl oproti tomu "přehodit" význam. V době vývoje C to problém nebyl, protože B nemělo v podstatě uživatelskou základnu a jazyk C jazyk B nahrazoval. Teď už to samozřejmě člověk těžko změní, jen by se mu to pletlo. Ale to neznamená, že nemůže konstatovat, že to je špatně.

Btw. ve všech jazycích, co znám a co nemají C-like syntaxi se case používá bez pokračování dalšími větvemi.

Citace
případně vyskočení z více cyklů najednou, což je podle mě také dost minoritní potřeba. Osobně jsem ho v C ještě nepoužil!
A koliks toho v C napsal? Např. právě u switch příkazu uvnitř cyklu je to vcelku častá potřeba jako jedna z možností ukončit cyklus...

Citace
Prostě se hádáme zbytečně, máme dva opačné náhledy na jednu věc, já si myslím že ten můj je bližší tvůrcům těch jazyků....
Já Ti Tvůj náhled neberu. Já jen tvrdím, že z objektivních hledisek (jako je např. délka kódu u často používaných konstrukcí, odolnost vůči programátorským chybám) není návrh konstrukce switch v jazyce C dobrý. S mým, tvým či K&R pohledem na věc nemá mé tvrzení žádnou souvislost, jak délka kódu, tak frekvence chyb daného typu je veličina objektivně měřitelná :-)

904
Vývoj / Re: Audit zdrojového kódu v C (prípadne v C++)
« kdy: 07. 11. 2010, 13:26:35 »
Citace
Kromě toho existují auta s řízením uprostřed, které by bylo z mnoha důvodů nejvýhodnější. Ovšem tradice a tupost zákazníků...
Nevim, ale tendle argument mi připadá ve stylu, všichni jsou blázni, ale já jsem letadlo... Navíc nepopíráš smysl přirovnání, ale jeho nepodstatnou složku (nejde o to, jestli je to skutečně vhodné nebo ne, ale že se to tak dělá, protože je obecně příjmanej názor, že to je neergonomičtější vzhledem k použití auta).

Citace
Naproti tomu continue přeskočí na podmínku pro novou iteraci...
Jenže ve switchi žádné iterace nejsou. To prostě není cyklus a nejsou tam žádné iterace. Jak jsem v předchozím postu, význam break by šlo krásně krásně konzistentně rozšířit i na ne-cykly.
(myšlenka: switch není cyklus, ale jednotlivé case větve lze brát jako iterace. Pak to sedí daleko lépe, než současný stav, kde continue u switche nemá význam, zatímco break ano).

Citace
Continue <case> je blbost,
break je blbost, continue je blbost. To vše lze nahradit příkazem goto. Jenže všechny tyto konstrukty mají jednu výhodu - jsou o mnoho znaků kratší a zároveň neumožňují skočit někam, kde to bude na 99% špatně. Goto by tak zůstalo opravdu na "hacky" a vyloženě nestandardní konstrukty, což by opět omezilo chybovost.

Citace
"zapomenutý break ve switchi není chyba",
Zaprve zapomenutý break chyba je. Chyba není úmyslně nenapsaný break. Což ukazuje na nevhodnost konstruktu: člověk má ořemýšlet proč něco někde je a ne proč něco někde není. Dobrý jazyk, pokud má daný výraz dva možné významy, tak by měl předpokládat standadní užití a vyžadovat označení nestandardního. jinak to prostě vede k těžko odhalitelným chybám.

Zadruhé diskutuješ z pozice je to takto, takže je to dobře. Čili je to podobný argument, jako kdybych tvrdil - v atari basicu bylo pouze goto, takže je dobře, že je tam pouze goto. Proč si tedy každej, kdo moh, instaloval turbo basic, kde byly cykly?

Citace
Takže je to tak že mezi { a } je jeden blok....
A kdo mi brání se na case dívat jako na oddělovač bloků? Jednořádkovej for cyklus má taky na konci implicitní "continue", i když tam není složená závorka. Zkus trochu vystoupit ze svýho vidění "je to prostě takhle" a připustit i jiné možnosti. Já nad tím neromím slzy, já prsotě konstatuji, že kdyby byl návrh jazyka jiný, tak by docházelo k míň chybám ve zdrojácích. Např. by se nikdo nesháněl po softwaru, kterej bude auditovat všechny case větve neukončené break.

U zbytku jsem moc nepochopil vztah (co s tim má společnej jazyk B: opět argumentuješ tím jak to je, zatímco jáse bavím o tom, jak by to bylo dobře - to se jako nesmí následník jazyka vylepšit?), popř. argument, že by to zesložitilo kompilátor (naprosto marginálně).

905
Vývoj / Re: Audit zdrojového kódu v C (prípadne v C++)
« kdy: 07. 11. 2010, 00:07:50 »
Citace
To že auto může vjet do protisměru také vede k nehodám, a přesto se jízdní pruhy neoddělují betonovou bariérou. Ono se sice v 90% případů jezdí vpravo, ale občas se jiná možnost hodí, třeba při předjíždění nebo objíždění rozkopané silnice.
Proto taky je standardně volant vlevo - tzn. usnadňuje nejčastější použití auta: jízdu vpravo, ale nikterak neznemožňuje jet vlevo. Akorát ty nejlepší auta Ti zavibrují volantem, když uděláš nestandardní krok - přejedeš dělící čáru. Návrh C switch/case mi ale připomíná auto s pravostraným řízením, (plánované do evropy).

Zbytek naprosto nechápu, co tím chceš vyjádřit, já se nepřu o užitečnost této konstrukce - sám ji občas použiju, ale tvrdím, že jelikož to není časté použití, zatímco jednoduchý rozskok ano, tak by měla být explicitně označena možnost pokračovat a ne možnost ukončit.

Inkvizitor:
No mě by tam to continue ani zas tak nevadilo. Zaprvé by to odstranilo disproporci, kdy break se uvnitř switch týká jiného bloku kódu než continue. Zadruhé - break v cyklu znamená: "ukonči tuto iteraci a skoč na konec cyklu". U switch znamená: "ukonči tento blok a skoč na konec switche" - v podstatě se v definici zamění blok za iterace a cyklus za switch. Když tedy "continue" u cyklu znamená: "ukonči tuto iteraci a začni novou iteraci", stejnou substitucí dostávám význam continue u switche: "ukonči tento blok a pokračuj následujícím blokem". Což je přesně to, co by příkaz continue měl umět.
 Pak by jen stačilo zadefinovat, že case znamená ve skutečnosti break; case a jsme doma.
A kdyby např. uměl ještě continue <case>, to by byla lahůdka :-) stejně jako tam chybí možnost breaknout víc cyklů najednou apod....

906
Vývoj / Re: Audit zdrojového kódu v C (prípadne v C++)
« kdy: 05. 11. 2010, 19:09:03 »
Citace
A to bych se hádal, protože zrovna tahle věc je v Céčku úplně fantastická
Jenže vede k chybám. Samozřejmě já netvrdím, že by se měla zcela vypustit. Ale jelikož je standardní (v 90% případů se to tak používá) používat bloky samostatně, tak by měla být defaultní možnost skočit ven, zatímco možnost pokračovat dalším (nebo i libovolným - i to by se často hodilo a nejde to - teda bez goto) blokem by měla být označena nějakým klíčovým slovem.

Citace
switch není primárně určený k větvení, na to je tam if/else a dá se s nimi bohatě vystačit,
Ono vystačit si jde i s goto, že... Jde o to, co je čitelnější forma zápisu a tady switch rozhodně vede...
Navíc úplně nedá, protože switch s rozumnými numerickými hodnotami může překladač přeložit "chytřeji" než posloupnost podmínek.

Citace
...jeden blok příkazů, do kterého je možné vstoupit na libovolném místě...
Jo? IMHO switch znamená přepnout či přepínač. Přepnout znamená buď, anebo, XOR. Takže pokud je toto zamýšlené použití (imho nikoli), tak je naprosto špatně zvoleno klíčové slovo. Navíc, jak jsem psal, toto použití je minoritní. Takže buďto autoři C špatně navrhli tuto konstrukci, nebo špatně zvážili četnost užívání jednotlivých konstrukcí. "Dobře" (ve smyslu tak, aby to vedlo ke stručnému, čitelnému a bezchybnému kódu) to ale rozhodně není.

907
Vývoj / Re: Audit zdrojového kódu v C (prípadne v C++)
« kdy: 05. 11. 2010, 14:42:23 »
Proč je teda v C např. for cyklus? Ten taky nemá obdobu v asm.
C prostě není assembler a je mi úplně jedno, jak se co píše v asm. Obě konstrukce jsou sémanticky ekvivalentní a překlad obou z nich je bezproblémový. Proto je imho chyba, pokud návrháři jazyka zvolili tu, která vede k delšímu, méně čitelnému kódu s větší pravděpodobností chyb.

908
Vývoj / Re: Audit zdrojového kódu v C (prípadne v C++)
« kdy: 05. 11. 2010, 13:44:54 »
Zapomenutý break chyba je. To, že někdy je větev bez ÚMYSLNĚ uvedeného breaku je věc druhá. Jelikož je úmyslné neuvedení řidší než opomenutí, má smysl při auditu kódu se na to zaměřit, byť to chce lidskou kontrolu.


PS: V každém případě je switch jedna z chyb v návrhu C/C++, správné by bylo, kdyby se explicitně označovalo pokračování v následující (nebo ještě lépe v dané) větvi a standardně by se to chovalo jako s break.

909
Vývoj / Re: Jste zastánci OOP programování?
« kdy: 05. 11. 2010, 11:47:38 »
IMHO u setterů a getterů je třeba rozlišovat k čemu.
- jsou interní proměnné objektu, které nesou jeho vnitřní stav. Ty by neměli mít s/g, ty by neměli být vidět vůbec.
- pak jsou externě viditelné nezávislé vlastnosti objektů (např. jméno člověka). Tam by měl naopak být getter vždy a setter velmi často (např. na barvu rámečku okna)
- pak jsou externě viditeln vlastnosti, které vypovídají o vnitřním stavu objektu. Tam mívá smysl setter, ale málokdy getter (např. indikátor, zdali je stream otevřený apod.)

Mastit s/g ke každý vlastnosti a pracovat s objektem jako se strukturou není OOP, ale paskvil.

Co se týče konfiguračních objektů, u těch je otázka, jestli ve skutečnosti nejde o strukturu (teda není to objekt - samostatná entita, čistě strukturovaný vlastnost nějakého objektu). Nicméně vzhledem k tomu, že třeba časem to chce umět konfiguraci uložit (perzistence), nějak upravovat, přenášet mezi objekty atd., tak se na to často hodí nahlížet jako na objekt.
V tomdle případě jsem na vážkách, kterej přístup je správnej, asi jak kdy (podle velikosti programu, účelu struktury a také jednoduchosti s/g či properties v danym jazyku).

910
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 05. 11. 2010, 11:39:17 »
Citace
Toto ma zaujalo, vieš to nejak elaborovať? Teda nejaké konkrétne príklady problémov, keď je použitie OOP na škodu?

No, ono se často zaměňuje použít OOP s vytvořit objekt. Pokud samozřejmě pako se půl roku učí OOP a pak přijde k nějakýmu problému, tak první co udělá je, že začne prasit nějaký objekty bez ladu a skladu a myšlenky. Ale to je za
a) chyba toho paka a ne OOP
a za
b) to nemá s OOP nic společnýho, kromě objektů

OOP se týká designu programu, entit, vztahů a procesů mezi nimi a výstupem OO analýzy může bejt i např. pouze algoritmus. Byť pravda u většiny reálnejch problémů ˇjde vždycky provést dekompozice a tak těch objektů tam párr bude...

911
Vývoj / Re: Chyták pro C++ programátora
« kdy: 05. 11. 2010, 11:31:02 »
Nepochopil :-D
1)
Kód: [Vybrat]
if(!builder.getUnMarshaledData()) 

Nemá smysl. Ledaže by teda ta třída měla definován operátor !, ale to by to zas spadlo.

2) Je úplně jedno, jestli == null, ==0 nebo !, vzhledem k tomu, že je to smyslově ekvivalentní, tak je to čistě akademická debata (jediný o něco lepší řešení je ten nullptr).

3) Zopakuj si, co je to reference a jak se má používat. Pokud Ti to přijde jako normální, pracovat na jednom kódu s Tebou bych fakt nechtěl.  :o

912
Vývoj / Re: Jste zastánci OOP programování?
« kdy: 04. 11. 2010, 01:32:25 »
- OOP a garbage collector jsou naprosto nesouvisející věci
- OOP neznamená třídní dědičnost. To je jedna z možných implementací, mající své výhody i svoje limity
- objektově lze psát v každém jazyku, liší se jen míra komfortu (poskytnutých vlastností, které ulehčují často prováděné obraty)
- objektově imho chtě nechtě musí psát každý, neboť je to přirozená organizace kódu (a je úplně jedno, jestli se to v jazyku píše strpos(retezec, znak), nebo retezec.pos(znak) nebo...., to je jen syntaktický cukr. Samozřejmě uvnitř objektů se používá jiné paradigma (většinou procedurální, anebo i funkcionální), ale to je věc s tím v podstatě nesouvisející.

913
Vývoj / Re: Jazyk pro vývoj webových aplikací pro amatéra.
« kdy: 01. 11. 2010, 22:14:31 »
Pro rychlej vývoj webů bez větších ambicí bych doporučil PHP.
Pro nějaké porozumnění pro profíky možná doplnit nějakym asp.netem - ale ten se zas nehodí na hobby stránky, protože windowsí hosting je drahej.

Ruby, python atd... jsou hezký, třeba i daleko čistší než php, ale oproti němu minoritní. A i v php se dá psát čistěm jen to chce více disciplíny. Java je příliš velký objem věcí na zvládnutí na to, aby to bylo hobby.

914
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 01. 11. 2010, 15:26:05 »
No ono je OOP a (pseudo)OOP. Třeba namespace s OOP nesouvisí naprosto vůbec, má svoje místo jak v OOP, tak i procedurálním programování a jestli je něco, kam by šlo namespace zařadit, tak je to "modulární programování".

Stejnětak vyhledávání v řetězci? Jakej je rozdíl mezi strpos(retezec, znak) a retezec.pos(znak)? To co popisuješ nesouvisí s OOP, ale se znalostí vnitřností počítače a nějakého nízkoúrovňového jazyka.

Lidi co umí OOP se musí naučit procedurálně programovat, lidi co umí procedurálně se zas musí naučit objektově. Ani bez jednoho se dobrej progr. neobejde.

Protože objektovost se lépe ukazuje na větších celcích, tak je imho vhodnější začít s procedurálním stylem, jakmile ale člověk začne psát větší celky, tak na ně je OOP vhodnější paradigma a tedy čas ho začít používat.
Jakmile totiž člověk začne psát větší celky neobjektově, už si imho "kazí styl". Lepší je učit se oba přístupy najednou, aby si člověk mohl na správnou věc vybrat správnej přístup - oni totiž nejsou v protikladu, spíše se doplňujou.

A co se týče UML, tak nevím, jestli zrovna tendle jazyk je na to vhodnej - sám v něm takovou praxi nemám, ale analýza problému bez použití konkrétního jazyka, jen jako analýzu entit a jejich vztahů, je imho základní dovedností programátora a neni důvod, proč se jí neučit od začátku...



915
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 01. 11. 2010, 11:17:18 »
Souhlas. Sice si nemyslím, že je s OOP dobré úplně začít (jednou jsem učil zoufalce, co měli mít čtvrtej rok programování a nic neuměli - OOP naprosto nezvládali - ale to zas pravda asi nebylo tim OOP :-)), ale neměl by se ani odkládat.
IMHO dobrý čas, kdy s OOP začít je okamžik, kdy člověk zvládá jednoduché algoritmy (různá třídění a podobné blbinky) a začne se snažit dávat dva (a víc) takovejch algoritmů dohromady.
Když to řeknu hodně zjednodušeně - s OOP by se mělo začít v okamžiku, kdy člověk začne pracovat se dvěma různejma entitama.... No, moc jednoduše mi to nezní, snad je pochopitelný, co tim myslim... :-)

Stran: 1 ... 59 60 [61] 62 63 ... 68