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 ... 58 59 [60] 61 62 ... 68
886
Windows a jiné systémy / Re: Windows 32 nebo 64 bit?
« kdy: 01. 12. 2010, 14:29:11 »
Hardware, co neběží s 64bit windowsama?
U mě
- jedna webkamera genius, typ už nevím, neřešil jsem
- tiskárna minolta page pro 1350W
- částečně zrcadlovka canon 350D (nefunguje ovládání z počítače apod.)

Jinak u 4GB fyzické vyjde je 32bit a 64bit plus mínus nastejno, s víc paměti určitě 64bit, s míň dle osobních preferencí, obé má své plusy a mínusy.

887
Vývoj / Re: Jste zastánci OOP programování?
« kdy: 01. 12. 2010, 13:10:41 »
Citace
Nejdriv se nauc cist! Ja jsem nikde kategoricky netvrdil, ze C# je jediny pupek sveta!
Opravdu jsi to netvrdil?
Citace
C# je momentalne nejmodernejsi a nejefektivnjsi jazyk na programovani.
No comment.

-----

Citace
Ne! Interakce mezi objekty v realnem svete neprobiha pomoci procedur, ale pomoci udalosti a parametry, ktere objekt prijima a vydava jsou taky objekty..... Takze pokud nepochopis o cem OOP, tak logicky nemuzes videt jeho vyhody.
Mě je úplně jedno, jak nazveš argument funkce. Furt v drtivé většině OOP jazyků: přijmout zprávu = zavolat metodu = spustit proceduru. Alespoň teda v C#, v některejch OO jazycích (např. onen CLOS) to opravdu tak není (viz dále).
 
A jak např. bez procedurálního programování zparsovat hlavičky mailu by mě zajímalo. Jako myslíš najdu objekt znak, kterej je dvojtečkou, všechno předtím je objekt název položky, všechno za tím až po objekt znak konce řádky je objekt položka hlavičky... A je tam všude slovo objekt, takže je to OOP, že?

Netvrdím, že to nejde bez procedurálního programování, parsovat mail jde i v prologu či lispu. Protože pro popis algoritmu existují dva přístupy: procedurální a deklarativní - C# je procedurální, prolog/lisp deklarativní. Žádnej OO popis algoritmu ale neexstuje, OOP popisuje jak se má dělat interakce mezi objekty a jak mmá vypadat objekt, nikoli jak jsou implementovány objekty uvnitř.

(Teda neexistuje - pokusy samozřejmě jsou, např.
http://www.cse.ohio-state.edu/sce/papers/algorithms-paper/algorithms-paper.pdf
ale tam to zas končí u druhé alternativy - deklarativního programování.)

A naopak procedurální programování popisuje jak popsat algoritmus, čili jak posloupností jednodušších kroků provést jednu konkrétní věc, čili jak implementovat jednu konkrétní fci. To, jestli získání 5tého znaku z řetězce se napíše charat(string, 5) nebo string.charat(5) je z hlediska procedurálního programování šumák.... a vlastně z hlediska OOP taky.

888
Vývoj / Re: Jste zastánci OOP programování?
« kdy: 29. 11. 2010, 23:06:24 »
Ivan: Anebo se taky dá říct, že primitiv vyžaduje, aby objektovej jazyk se zapisoval s tečkou mezi objektem a metodou, zatímco inteligentnímu člověku je jedno, jak se to zapisuje.

Co se týče bohatosti syntaxe a jejích možností, je na tom CLOS daleko lépe než C#. Akorát se tam holt nepíše ta tečka, takže to prostě není a nemůže být OOP, že. A mluvit se dá taky pouze a jen anglicky a kdo to nevidí a chce mluvit jinak, tak je blbé, že?

Citace
kdo nevidi zavislost efektivity programovani a vyvoje na jazyku
Posadím Tě k C# ořezaném o všechny knihovny. Sám budu psát ve Visual Basicu s knihovnama. Schválně, kdo bude produktivnější....

Anebo jinak - to si fakt myslíš, žes jedinej pupek světa, kterej přišel na to, že C# je jedinej produktivní jazyk, zatímco miliony programátorů po celém světě jsou blbci, který neuměj programovat a zbytečně ztrácej čas? Chlape, tvoje sebevědomí bych fakt nechtěl mít...

PS: Jako úsměvná epizoda na dokreslení pak působí x letá snaha MS napsat Windows znovu v managed kódu v C#. Pět let někde a zbyl z toho nejméně úspěšný (snad kromě windows ME a obstarožních Windows 1.0) operační systém, co kdy MS vydal - Visty. Napsanej hezky postaru povětšinou v C/C++.

----

Jinak opakuju, svět sice je z objektů, ale ty spolu interagujou pomocí procedur. Takže oddělovat OOP a procedurální styl nelze. I starý dobrý unity v turbopascalu nebo unixový sockety jsou objekty, jen se jim prostě v tý době tak neříkalo.

889
Vývoj / Re: Jste zastánci OOP programování?
« kdy: 27. 11. 2010, 20:00:13 »
Ivan: Kvalitu tvoje příspěvku imho charakterizuje už to, že pokládáš SQL za procedurální jazyk...

Řešit problémy s výjimkami musíš v C++ úplně stejně jako v javě (jen java to o něco víc hlídá), s dobrou knihovnou nemusíš řešit správu paměti ani v C++ a naopak implementace správy jiných zdrojů (soubory, databáze etc.) se zas lépe řeší v C++ (viz problém chybějících destruktorů).

Osobně má z Tebe dojem, že umíš C# a neumíš C++ a proto je pro Tebe C# lepší. Jsou lidi, co uměj C++ daleko lépe a vsadím se, že některý úlohy by měli v C++ třikrát rychlejc, než ty v C#. Totéž platí pro Javu.

Jinak používanej jazyk rozhodně nemá majoritní vliv na produktivitu. To, co má největší vliv jsou knihovny. Viz příklad Delphi - ta dojela hlavně na svoje knihovny, které byly sice na první pohled jednoduché, ale chybové a velmi špatně rozšiřitelné - co jsem se s nina natrápil :-). Takže psát složitější projekt v Delphi bylo za trest a proto taky delphi skončilo tak, jak skončilo.

Člověk, co umí programovat, tak programuje čistě, čitelně a rychle nezávisle na jazyku.  Jen si v některém musí dopsat knihovny, což ho zdržuje. Např. pro C++ už ale většinou všechny potřebné knihovny jsou, jen holt nejsou standard (což může bejt i výhoda, protože je můžeš upravit, když potřebuješ).

Jinak, co se týče objektovýho a procedurálního programování, tak tvrdit, že to či ono je lepší než to druhý je imho BLBINA, protože každý koncept řeší úplně něco jiného. Větší celek nenapíšeš rozumně a čitelně bez rozčlenění na objekty, ale samotné objekty nenapíšeš rozumně bez procedurálního programování.

890
Software / Re: Efektivní a úsporný Cronjob?
« kdy: 21. 11. 2010, 20:03:52 »
A neni lepší než x cronjobů udělat na serveru jednu souhrnnou stránku, která provede všechny joby najednou?

891
Vývoj / Re: Jak zkompilovat program ve Fortranu
« kdy: 17. 11. 2010, 16:54:08 »
No ještě tam je pár špeků. Zaprve někde je gfortran a někde je g77 nebo f77.
Zadruhé má fortran více norem zdrojového textu (s fixní délkou řádku či novější fortran 90 s variabilní), takže někdy je třeba dát přepínačem najevo, o jakou délku jde.

Kdyby Ti to házelo chyby, tak pohledej v manuálový stránce, jakej je to konkrétně přepínač, nebo sem postni chybovej výstup.

PS: Vhodně nakonfigurované stačí, ale to znamená přidat balíček pro frontend fortranu.

892
Hardware / Re: Po zastavení se disky někdy nerozeběhnou
« kdy: 13. 11. 2010, 15:55:56 »
Taky bych to tipoval na zdroj.

893
Vývoj / Re: Optimální algoritmus výpočtu
« kdy: 11. 11. 2010, 11:42:37 »
Jde, ale je to jiný problém. Ale imho bude taky NP - protože ty čísla nemusí být tak extrémní, takže bude větší rozdíl za cenu jednoho balení, než mezi možnými kombinacemi. A pak se vyhazování nevyplatí. A jsme zase doma :-)

894
Vývoj / Re: Jste zastánci OOP programování?
« kdy: 09. 11. 2010, 15:40:58 »
Většina VM kritiky IMHO spíše souvisí s tím, že dost lidí chápe OOP jinak, než co to IMHO ve skutečnosti je.
1) Jak to souvisí s OOP? Kdyby teď letělo procedurální programování, tak budou lidi houfně generovat procedury na přístup k datům....
2) Pokud to někdo takhle dělá, tak to není OOP - copak je položka formuláře samostatná entita?
3) Fór je v tom, že málokdy člověk předem ví, co bude. Navíc to, co popisuješ je v přímém rozporu s myšlenkou OOP, protože se nemá přistupovat k hromadě vlastností objektu, ale zavolat jeho jedna metoda, která provede co je třeba.
4) Když je program navrženej blbě, tak je to proto, že ho navrhoval blb :-) Není to teda vina použité metody, ale toho, kdo ji používá. Naopak dobrý OOP návrh je imho nejčitelnější, protože každá entita v programu má definovanou svoji zodpovědnost a úlohu, takže nikde nedochází k sideefektům, k dělání pěti věcí najednou a podobným zhůvěřilostem, které čitelnost snižují nejvíce.

895
Vývoj / Re: Audit zdrojového kódu v C (prípadne v C++)
« kdy: 09. 11. 2010, 12:34:49 »
Citace
Jenže v C to normální je (přiřazení je výraz)\
Na daném místě to je z 95% chyba. Proto má před tou chybou jazyk chránit. Je úplně jedno, že je to normální C výraz. Je to stejné, jako některé konstruktory v C++ se označují jako explicit, aby se odchytila náhodná nechtěná konverze. Taky by to šlo i bez toho, ale pokud ta konverze běžně nemá smysl, je chyba ten konstruktor tak neoznačit.

Jinak co vím, tak snad kompilátory varují před použitím undefined proměnných, aspoň ty, co jsem používal já... ale je fakt, že u GCC teď nevim....

Citace
Takže výsledek je stále tentýž, C a pár dalších prehistorických jazyků má implicitní fall-through, modernější jazyky ho nemají.
No ale to v podstatě znamená, že návrh C nebyl dobrý a proto ho v novějších jazycích změnili, ne? Kdyby to bylo dobře, tak by to v modernějších (no, modernějších, takový pascal je z stejné doby jako C a nemá to :-)) jazycích zůstalo stejně, ne?

PS: jinak v C a Assembleru vidím dosti podstatný rozdíl: v asm je to jumptable (čili seznam návěstí), v C je to switch (volba). Takže když si to přečte laik nezatížený programováním, tak u jumpu si řekne - program skočí tam a pokračuje. U volby si řekne - program zvolí jednu z možností. V C je to prostě neintuitivní - a to vede k chybám.
Jumptable taky funguje jinak, jde prostě o indexovaný skok, v C specifikuješ hodnoty.
Takovej pascal - vzniknul plus mínus stejně - to má ještě o něco podobnější asm a má to bez problémů jinak.



896
Vývoj / Re: Audit zdrojového kódu v C (prípadne v C++)
« kdy: 09. 11. 2010, 01:49:24 »
Ad historie. V asembleru je to natolik odlišné, že by to problémy nezpůsobovalo. Dokladem toho je, že co vím žádný jazyk se syntaxí neodvozenou od C (ať už jde o pascal, python, ruby, plsql, visual basic, fox pro, eifell, perl, bash, C#) nemá příkaz switch s automatickým propadem do další větve. IMHO už to zcela jasně ukazuje, že ta konstrukce v C nebyla volena štastně, když to všichni ostatní mají jinak.

Citace
Prostě jako když při if(a=b) dostanu warning, zatímco při if((a=b)) je všechno v pořádku.
Ale vždyť to je přesně ono. Normální je nedělal v ifu přiřazení a jazyk by měl být navržen tak, aby varoval, když děláš něco nestandardního. Ty dvojité závorky tu slouží jako upozornění: ano, vím, že dělám něco nestandardního, něco, co na daném místě není běžné a co může být typo chyba či opomenutí. A proto to explicitně označuji. Pomíjím tedy možnost, že člověk udělá dvojité závorky jen tak, to je u mě čuně a toho nezachrání nic :-)

 Stejně tak se v majoritním případě používá case jako rozskok, pokračování do dalšího case je minoritní, a často se dělá chyba v opomenutí break. Proto by měl být jazyk, stejně jako u = a == v ifu, navržen tak, aby standardní zápis vyhodil alespoň varování a umožnil ho explicitně označit za správný (např. formulkou continue, nebo jako v C# goto case x, i když to se mi také moc nelíbí).


Ad C#: Právě proto, že zapomenuté breaky způsobovaly chyby, není v C# legální na konec neuvést nic, vždy tam musí být goto nebo break.  Asi jsi se tedy chtěl zeptat, jak se to dělá v perlu, kde lze explicitně přeskočit na další pomocí continue a break je implicitní. No právě pro lidi je přirozené, že větev dalším case končí, takže jim nedělá problém označit explicitně přeskok na jinou větev. Stejně jako by dělali chyby, pokud nějaký jazyk by zaved prioritu sčítání před násobením, tak dělají chyby, když C zavedlo prioritu pokračování před ukončením. Prostě jedna možnost přirozená je, druhá nikoli. 

Co se týče C#, ideální to imho také není, je to ale výsledek toho, že se návrháři C# (asi správně) neodvážili u C like jazyka změnit smysl příkazu. Neboť to by způsobilo přesně to, v čem je problém switche v C: člověk automaticky napíše něco co čeká, že se chová tak a ono by se to chovalo jinak.
Zas si ale byli vědomy velké problematičnosti toho konstruktu a tedy přidali bezpečností obstrukci. To, že v podstatě explicitně oproti Javě a C nutí člověka psát "zbytečnosti" jen více jen dokládá, že to problém je. Takže C# řešení je z nouze ctnost.


Citace
Tenhle "příkaz" jsem měl na mysli.
 
Argumentuješ kruhem. Pokud se bavíme o správné sémantice "break" v konstruktu switch, nemůžeš argumentovat sémantikou break v konstruktu switch. A pokud vezmeš všechny ostatní případy, kdy je break použito, vždy jde o cyklus. Naopak ve všech ostatních "necyklových" konstrukcích (if, funkce, blok) příkaz break použít nelze.
  Z toho plyne, že break v příkazu switch má nestandardní a posunutou sémantiku (to dokládá i to, že jedině ve switch nelze užít continue na místě break.) Proto nevidím žádný problém, kdyby ta sémantika byla posunuta trochu jinak.
  Ono právě to, že nejde jednoduše říct - např. break ukončuje cyklus, ale musíš dát seznam příkazů, které ukončuje, ukazuje na to, že není definováno "konzistentně" (rozuměj u všech příkazů stejně - viz if).
 
Citace
1. Každá větev switche je ukončená breakem, stejně jako každá funkce je ukončená returnem.
2. Pokud nechci aby větev skončila nebo funkce vracela hodnotu, tak tam break nebo return nepíšu.
Rozdíl je ten, že případ 2, pokud nastane omylem, pro funkci kompilátor odchytí (function should return value), ale pro switch nikoli. Pokud se opravdu umíš pohlídat, že nikdy nezapomenš break, tak Tě to ctí. Z praxe se ale ukazuje, že ostatní s tím problémy mají :-)... jak ukazuje i úvodní dotaz v threadu (admini, nejde tu polemiku přesunout do samostatného threadu? :-)).

897
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 08. 11. 2010, 23:06:22 »
Kdo umí C, je dobrej a inteligentní programátor.
Kdo umí javu, je většinou břídil.

Je třeba dodat, že java programátorů oproti C programátorům je v poslední době více
(Cčko se už skoro bohužel neučí) a že existuje i dobrej Java programátor.

Co z toho plyne? IMHO nikoli: "neučte se javu, udělá z vás blbce", ale "javu se naučí i blbec". IMHO je to spíš argument proto, aby se začlo s Javou :-)

898
Vývoj / Re: Chyták pro C++ programátora
« kdy: 08. 11. 2010, 23:01:56 »
Jenže evidentně ten kdo to "spáchal", tak nechtěl, aby to spadlo, ale chtěl zneužít vrácení referencí.
Ono to co napsal není chyba ve smyslu, že by to dělalo něco jiného, než by chtěl, nebo že by to padalo. Ona je to "jen" prasečina. 

Co se týče operátoru !, tak tam mě předběh ondra. Jo, šlo by to tak, ale je to prasečina. A navíc - u některejch objektů má ! smysl (ale pouze u některejch) a tam by se to tlouklo významem.
. A hlavně, mimo spešl hodně dobře odůvodněnejch a okomentovanejch případů by nikdy nemělo nastat, že this==0, takže smysl toho operátoru nechápu. I v tom procházení stromu je imho daleko lepší varianta mít strom s hlavou.
A už vůbec nevím, kdes vzal, že v STL je všude definován operátor not. Co vím, tak kontejnery ho právě nemaj (aspoň ta implementace, co jsem používal). Ono, jakej by měl smysl?


Co se týče ==0 tak je to hezkej assemblerovskej hack, ale co jsem zkoušel, tak používá instrukci test, která narozdíl od or neukládá výsledek.

PS: Jinak za invektivu se poke, omlouvám :-) co se jí týče, máš recht :-)

899
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 08. 11. 2010, 21:44:04 »
iwtu: Ale my nikdo nepopíráme, že kvalitní programátor se nemusí učit takový věci, jako RB strom. Jen že není potřeba, by to dělal hned od začátku. Je to určitě jedna z možných cest, ale rozhodně ne jediná a já osobně nevím, jestli nejlepší.
Osobně si myslím, že ať už člověk začne s OOP, nebo s algoritmizací, tak by měl hodně rychle začít i ten druhej směr - jeden bez druhýho v podstatě nemůže existovat.

Co se týče dobrejch a špatnejch javistů a C++, tak Java je mladá, takže ji uměj mladý ucha, zatimco starý zkušený programátoři se učili v C++. Popř mladý schopný se učili od starejch schopnejch.. zas C++.
Ono to dost často vypadá (na školách), že učit v javě znamená učit jakoby pascal, akorát v javovský syntaxi. A to je blbina. To ale neznamená, že nejde dobře učit v javě.

900
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 08. 11. 2010, 20:23:44 »
iwtu - jenžeš algoritmy nejsou všechno. Zrovna takovej červenočervenej strom v podstatě pochopí a napíše každej blb. A kdo ne, tak nemá šanci se naučit programovat.
Jenže pak přijde okamžik, kdy máš ten červenočervenej strom použít. A tam už se opoužití OOP nevyhneš.

Samozřejmě jsou špičkoví odborníci, který např vymejšlej co nejefektivnější IO plánovač. Tam se uplatní hlavně algoritmizace a jen okrajově o OOP. Ale stejně tak musí při psaní jádra existovat člověk, kterej vůbec vymyslí, že tam bude nějakej plánovač, že bude mít zodpovědnost za todle, že bude se zbytkem systému komunikovat takhle atd... A to je doména, kde bude excelovat člověk s dobrým OO myšlením.

Tím netvrdím, že lepení komponent k sobě je vrchol programování. Ale mezi lepením komponent a psaním algoritmu je ještě velkej prostor. Např. kdyby se OO návrh dodržoval při psaní linux kernelu, tak by se teď nemusel odstraňovat big kernel lock... Když se koukneš na vývoj kernelu, tak bych řekl, že daleko víc problémů je dáno špatným původním návrhem, kdy se to teď snaží zlepšit, aniž by porušili zpětnou kompatibilitu, než špatných algoritmů, které je třeba vylepšit (špatný algoritmus se snadno nahradí, špatný návrh nikoli).

Nebo naopak - jací jsou Ti nejhorší programátoři? Lepiši komponent. Z toho vyplývá, že lepit komponenty je evidentně nejednodušší k pochopení. Takže rozhodně jedna z dobrých cest, jak se naučit programovat je začít lepit komponenty. Navíc je to "povzbuzující", protože je daleko dříve vidět hezký výsledek. Samozřejmě, chytrej člověk u toho lepení komponent nesmí zůstat dlouho...

PS: A i u toho RB stromu se částečně využije OO myšlení - jednotlivé nody jsou objekty a na psaní stromu se můžeš koukat jako na metody těch objektů. Samozřejmě třeba kvůli rychlosti nebudeš striktně vyžadovat zapouzdření apod., ale pokud se na ten RB strom "správně" podíváš, tak máš půl práce hotový. A to je přesně to OOP - umět se správně podívat na to, co píšeš.

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