Programujeme ve Visual Basic .NET - 22. díl - metody pro práci s polem

Diskuze čtenářů k článku

Petr Mach  |  17. 01. 2005 05:14  | 

Vždycky je pro mně jednodušší ten jazyk, který znám.

Ano, já jich znám ale několik a porovnávám je. Tlučhuba zná jen VB.NET, ale
to mu nebrání, řadu měsíců Python, který vůbec nezná, kritizovat a
odsuzovat. A to jen proto, že já jsem ho prohlásil za velmi dobrý a on vůči
mě cítí osobní antipatie. Já vím že to na nezúčastněného pozorovatel může
působit zvláštně, ale já ho dobře znám z magea, kde je tímto chováním
profláklý a běžně nazývaný jako tlučhubu. Takhle totiž bez sebemenší
znalosti věci kafrá do všeho. Já jsem VB.NET nijak zvlášť neznal, i když mi
přišel podezřele vždy, když v něm předváděl nějakou ukázku, tak obtížně
srozumitelný a nečitelný jazyk jsem ještě neviděl. Teď, když se s VB.NET
seznamuji skrze jeho seriál seznamuji, tak vidím, že můj názor byl nejen
správný, ale že trpí řadou nedostatků, které on vyčítá Pythonu. Python
je například proslavený svou jednoduchostí a srozumitelností, on ho však
nazývá pseudokódem, při srovnání s VB.NET, které je úplně mimo ve srovnání
s klasickými jazyky, kterým je Python mnohem podobnější je to dost trapné.

Ke vzájemnému porozumění lze spíše dospět tehdy, pokud respektuji názory
druhého


Ale o to tady přece nejde, on rozumět nechce, on se neptá jak a proč, on po
celou dobu tvrdí Python je špatný, špatný a špatný. Není to pravda, ale
jeho argumenty, jak sis už určitě všiml, nezajímají. Když už ho dostaneš do
kouta, že nemůže to co říkáš nijak zpochybnit (a že při tom používá hodně
špinavé triky, takže to není snadné), tak prostě přestane na danou věc
reagovat a za čas nebo jiném místě začne tvrdit zas to samé, bez ohledu na
tvou snahu mu cokoli a jakkoli vysvětlit, prostě bez skurpulí lže o věcech,
o kterých dobře ví, že nejsou pravda. Srovnej si několik měsíců starou
diskuzi na české škole a kolik lidí mu tam vysvětlovalo, že je to nebo ono
jinak a diskuzi zde a uvidíš. Přitom se tohle táhne minimálně už přes rok.
Zde je to nové v tom, že mohu jeho tvrzení porovnat s realitou a VB.NET a
předvést konkrétně, v čem všem je Python ve skutečnosti lepší. Nemyslím si,
že by to nějak přijal, ale alespoň pro ostatní to může být přínosné
srovnání. Že se diskuze přenáší do osobní roviny je u něj normální.

je z hlediska "VÝUKY PROGRAMOVÁNÍ" začátečníka úplně jedno, jaký konkrétní
programovací jazyk pro daný styl programování bude použit.


To právě není pravda, protože jazyky jsou různě složité a první jazyk
s kterým začátečník přijde do styku musí být jednoduchý, jinak se výuka
programování zvrhnr ve výuku jazyka a boj s tímto jazykem. Nezapomínejte,
že čas na výuku je značně omezený a že se žáci musí učit řadu dalších
předmětů, takže je hloupé je zbytečně zatěžovat složitým jazykem nebo
dokonce výukou ovládání komplikovaného IDE. To je velmi kontraproduktivní.

Není přece nijak obtížné něco nepoužívat a to zejména tehdy, pokud o tom
vůbec nevím.


Jak chceš u nestatického jazyka nepoužívat statické typy? To nejde, a
přitom tyto všechno právě zbytečně komplikují. I když jejich deklarace jde
vypnout, tak tím ze statického jazyka dobrý dynamický jazyk neuděláš, dobrý
dynamický jazyk jako takový musí být navržen, dynamický a statický jazyk
jsou jako voda a oheň, nesnáší se, jdou proti sobě.


Volba preferovaného jazyka je vždy subjektivní záležitostí
programátora, týmu, popř. učitele


To také není tak docela pravda. Každý jazyk má jiné vyjadřovací schopnosti
a vlastnosti a hodí se tak na něco jiného. Volba jazyka tak není volbou
osobních preferencí (ostatně, i v tom případě je nutno znát jazyky mezi
kterými volíme a tlučhuba Python vůbec nezná), ale volbou na základě daných
potřeb pro příslušnou úlohu a projekt. Proto také profesionální programátor
musí znát řadu jazyků, čím víc jich ovládá, tím lépe dovede řešit různé
úlohy a je cennější. V zvládnutí řady různých jazyků mu napomůže právě
dobrá znalost programování. To ho ale musí někdo naučit, cesta vlastních
zkušeností je bolestná a zdlouhavá a je potřeba zvládnout několik jazyků,
aby člověk dokázal rozlišit co je obecná vlastnost a záležitost
programování a co je vlastnost jazyka (tohle třeba tlučhuba nedovede a do
diskuze o výuce programování se pořád cpe s výukou vlastností jazyka, IDE a
řadou dalších nesmyslů, opět doporučuji prostudovat českou školu, je to
krásný učební materiál o jeho neschopnosti pochopit byť i jen podstatu
diskuze). Jenže ke snadnému zvládnutí je potřeba právě dobrá znalost
programování, což je svým způsobem začarovaný kruh. Proto kladu na výuku
základů programování a výběr vhodného jazyka takový důraz.

Volba preferovaného jazyka je v tomto případě volbou učitele, i když by
správně mělo být volbou školství, protože je dost obtížné si představit, že
na jedné škole se bude učit žák programovat v C a pak přestoupí na školu, kde
se učí programovat v Pascalu nebo Javě. To de teď stát může, ale tím spíše
by měl být demonstrační programovací jazyk co nejjednodušší, jak známo, o
jazyk nejde a znalosti programování jsou mezi jazyky přenositelné. A o
vhodnosti takového jazyka pro školství a jeho potřeby se bavit lze, já jsem
přesvědčen, že Python je jako první jazyk velmi vhodný.

Jinak si myslím, že M. Petřík rozhodně dokáže ustoupit pod tíhou věcných
argumentů


Já vím že ne. Samozřejmě, když se dopustí omylu, typu tvrzení, že bajt má
32 bitů, tak mu nic jiného nezbude, než připustit, že se mýlil, co se týče
názorů, tedy věcí fakticky neprokazatelných, tam nedovede. Radši bude
tvrdit, že VB.NET je lepší než python, protože používá volitelné
dvojtečky, když Python používá volitelné středníky, stejně jako ostatní
jazyky. To je jednoznačně blbost, už proto, že napsat za každým příkazem
dvojtečku je pracnější než středník, protože je k tomu potřeba Shift., nebo
proto, že význam dvojtečky je něco uvozovat, ne ukončovat, a proto je
používání dvojteček na ukončování příkazů neintuitivní, zmatečné, prostě
blbost. Ale zkuste ho přimět k tomu, aby uznal, že to je fakt blbost a
lepší by bylo, kdyby místo ní VB.NET používal středník jako Python.

Opravdu nevidím důvod, proč by měl Python uznat jako jednodušší a
vhodnější, pokud jeho osobní preference jsou odlišné.


Protože tohle je fakt, který je nezávislý na osobních preferencí. On totiž
je jednoduší, to je vlastnost věech interpretovaných dynamických jazyků
oproti statickým a kompilovaným. A protože je jednodušší, tak je i jako
první jazyk vhodnější, tohle chápal už i Jan Amos Komenský a myslím že jeho
teze, platí i v moderní pedagogice, nebo ne?

Když mluvíte o demagogii na straně M. Petříka, tak já se nemohu zbavit
téhož dojmu u Vás. Zatímco M. Petřík docela věcně obhajuje své názory
(přirozeně subjektivní), tak vy mu za to nadáváte a přitom děláte totéž.


Nejsem si jist, zda znáš přesný význam tohoto slova, demagogie není
obhajoba vlastních, tedy nutně subjektivních, názorů, ale překrucování
smyslu fakt a skutečností za účelem vzbudit jiný dojem. Tohle já nedělám.
Jako příklad si vem jeho oblíbené tvrzení, že se mé hodnocení Pythonu
otočilo o 180 stupňů. Tohle dlouho neřekl, jen sugestivně naznačoval. To je
demagogie, protože to ale teď i přímo prohlásil, už je to nejen demagogie,
ale i lež, které pod vahou vlastní demagogie uvěřil.


Skutečnost je taková, že mé hodnocení Pythonu se vůbec neotočilo a
prokazatelně jsem i tehdy prohlásil, že python je nejlepší jazyk. Ano, měl
jsem kritické připomínky, ale mám je i dnes, řada těch tehdejších už neplatí,
v něčem jsem se mýlil a vysvětlilo se to už v tehdejší diskuzi (to ho ale
vůbec nezajímá) a skutečně jsem i u některých skutečností změnil na základě
zkušeností názor. To je skutečnost, kterou tlučhuba vykládá jako 180% změnu
názorů na Python a to si přitom několikrát nechal vysvětlit, co se konkrétně
změnilo a proč už to nebo ono neplatí.

I kdyby se Python nezměnil a mé názory zůstaly v přesně stejné podobě jako
tehdy, pořád je tu ten fakt, že jsem i tehdy současně s kritikou+ prohlásil
Python za nejlepší a mé hodnocení Pythonu tak bylo jednoznačné. Tlučhubovo
chování o je ukázkový
příklad demagogie, které jsem z jeho strany řadu měsíců vystaven, osobní
výpady nejsou možná hezké, ale kdo je v tomto kontextu nechápe, nechť se
přihlásí.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  17. 01. 2005 05:15  | 

Mám tomu rozumět tak, že moje ostatní názory (třeba na Python) nejsou
mylné? Děkuji.


Ne, tomu rozuměj tak, že odmítáš přiznat i jeden jediný omyl, který je všem
zřejmý, natož ty ostatní .

Mě fungují stejně jako ty Vaše, stačí doplnit deklarace těch proměnných -
zkuste si to.... Nepotřebují odsazovat ani jinak upravovat...


Zajímavé, netvrdíš celou dobu, že python neumožňuje deklarovat proměnné?
Přiznáš se ke svému dalšímu omylu a nebo opět ne?

Ale potřebují, zkus si to sám .

Že by jste nebyl pouhým pohledem na Pythoní zdroják posoudit, zda bude
funkční, nebo ne? To je trochu smutné - jak takový zdroják potom chcete
opravovat?


Naopak, jeho nefunkčnost poznám na první pohled, přestože se chybu snažíš
skrýt co nejmenším odsazováním. , ale není ti to nic platné, stejně je
na první pohled patrné, že if a jeho else není stejně odsazené. Než znalce
začneš nabádat, aby si to vyzkoušel, vyzkoušej si to nejdřív sám .

Nemyslím, v diskusích pod mým seriálem jste začal prudit mnohem dříve.
Projděte si je.


To dost těžko, když na tento seriál jsem byl upozorněn až v diskuzi
při tvém prudění na České škole a ani pak jsem hned nereagoval, porovnej
si datumy a pak teprve začni myslet.

Vidíte, že nejsem sám, komu Vaše představy připadají nemístné. VB.NET má tu
výhodu, že jej lze používat jako primitivní skriptovací jazyk, bez typů,
dokonce i deklarací vůbec - přesně tak, jako Python. Přitom umožňuje
postupně přibírat rysy typových jazyků. Mimochodem, to je přesně postup,
který jsem použil ve svém seriálu.

To tedy nevidím . Zkus to nějak dokázat. Já jsem prohlásil, že se k tomu
stavím neutrálně přičemž se proti statickým typům zvedla vlna nevole. Dále
jsem prohlásil, že statický jazyk je složitý a nevhodný pro začátečníky. To
dokazuješ ty sám, že jsi je vypnul. Jenže VB.NET je bez toho prakticky
zřejmě nepoužitelný, protože teď už do nich čtenáře zbytečně nutíš, místo
aby ses věnoval programování a nechal je ty základy si nějak zažít a
prakticky vyzkoušet na zajímavých příkladech. Obávám se, že tenhle seriál
již dávno přišel o pozornost, protože tě ani nikdo neupozorňuje na chyby,
které v něm máš. Druhá možnost je, že tvůj výklad nikdo nechápe a tak ty
chyby ani nikdo nevidí.

To je z didaktického hlediska docela problém.

Ne, to je naopak výhoda. Protože datové typy jsou pro výuku základů
programování nejen zbytečné, ale doslova na překážku.

Až bude Python podporovat (aspoň volitelně) typové deklarace a separátory
bloků


To není otázka až, ale jestli vůbec. Separátory bloků samozřejmě podporuje,
bloky se definují odsazením.

můžeme se o jeho vhodnosti pro výuku na základním kursu pobavit znovu.

To můžeme, budeme pak zvažovat, jestli se náhodou nestal nevhodným. V
současné době tomu tak bezpochyby je, fajn že jsi to konečně uznal, i když
takovým divným způsobem.

Zatím je to jazyk očesaný o všechno, co podle mínění jeho autorů přidělává
při psaní bez IDE práci.


To není pravda. Python nemá navrženu syntaxi aby byla co nejkratší a
ušetřila co nejvíc psaní, jako např. tomu je u syntaxe Perlu nebo, dle
tvého vlastního tvrzení VB.NETu, což má za důsledek nepřehledný kód, v
kterém se snadno dělají těžko odhalitelné a detekovatelné syntaktické
chyby, což je pohroma hlavně pro začátečníky. Naopak, syntaxe Pythonu je
navržena tak, aby byla co nejpřehlednější a vyloučila co nejvíce takových
chyb.

Proto například není v Pyhonu povoleno přiřazení v podmínce. Operátor
porovnání == a operátor přiřazení = je velmi podobný. Začátečníkům se plete
a je snadné v něm udělat i překlep. Tato chyba je velmi častá nejen mezi
začátečníky a přitom je těžko detekovatelná, program se obvykle akorát
chová občas divně a nikdo neví proč. Protože se u Pythonu nesmí přiřazení
objevit v podmínce, tak, když se tak stane, hlásí Python chybu včetně toho
o jakou chybu jde a kde se nalézá, v Pythonu tak tato chyba nikoho netrápí,
přijde se na ni okamžitě. To všechno i přes to, že řada lidí do podmínky
přiřazení píše, aby si tak zkrátila kód. V Pythonu není krátkost kódu
prioritou. Takových opatření je v Pythonu celá řada a je tomu podřízena
celá syntaxe. Proto se v Pythonu příkazy explicitně neukončují, ne proto,
abys tolik nemusel psát, ale proto, abys nemohl udělat chybu v tom, že na
to zapomeneš. Zapomínání psaní takových věcí je u začátečníků běžné,
protože to je neintuitivní a zbytečná pruda. To že tato opatření vedou v
důsledku i k docela krátkému kódu (i když ne v každém případě, jak jsem
ukázal v prvním příkladě), je jen přirozený stav věcí. Krátký kód, když
není kryptický (proto Python používá delší and místo kryptického &&), tak
je sám o sobě přehlednější a snadněji pochopitelnější. Přitom nejde vůbec o
množství psaní, ale o množství informací, které musíš vstřebat a hlídat při
čtení a kontrole kódu. Takže to, že ti jakési IDE ušetří trochu psaní je
nepodstatné. Ale to, že se tím oháníš a považuješ za důležité značí, že VB
je přespříliš užvaněný jazyk a ta užvaněnost vede k nepřehlednému a
nesrozumitelnému kódu a to ať z důvodu jeho délky nebo nešťastných
konstrukcí jako goto, který se ostatní jazyky straní jako čert kříže.

Vidíte sám se svými zmínkami o statických deklaracích a fragmentaci
Pythonu, že nejsem jediný, kdo tyto věci vnímá jako omezující. Jsem si
jist, že Python se k těmto věcím nakonec dokope, a vy opět změníte názor -
jenže mezitím stihnete zaset pěkný zmatek mezi lidmi, kteří do vývoje
Pythonu zdaleka tolik nevidí.


To je pěkná demagogie ). Ve skutečnosti jsou to statické typy, které
jsou omezující a to tak, že velmi. Právě dynamické jazyky jsou známy a
ceněny pro svou pružnost a flexibilitu, pro svou snadnost používání bez
složitých konstrukcí jako jsou šablony, bez složitých konstrukcí, kvůli
kterým jen málokdo může říct, že opravdu rozumí jazyku C++, například.
Rozumíš mu snad dobře ty? Rozumíš aspoň dobře mnohem jednoduššímu C#? Tak
vidíš. Problém leží někde jinde, a to v tom, že i příliš volný jazyk
je problematický, ať je moc volný v syntaxi - problém Perlu a VB.NET nebo s
nakládáním s typy či prostory jmen - PHP. Přílišná volnost je
problematická stejně jako přílišná svázanost. Python velmi inteligentně je
přísný v Syntaxi, prostorech jmen (viz obstrukce s nakládáním s globálními
proměnnými) či typové kontrole jako silný typový jazyk a jedině kde
polevuje je právě ve své dynamičnosti. Absence statických typů je naopak
zbavení se řady omezení, díky čemuž je Python flexibilní a snadno
použitelný. Díky tomu, že nepolevil v ostatních směrech je ale stále velmi
vhodný jako aplikační jazyk, na rozdíl od ostatních interpretovaných jazyků.
Proto má v tomto směru také tak velkou podporu, opět na rozdíl od ostatních
interpretovaných jazyků.

Je možné, že se Python nakonec ke statickým typům dokope, což z něj udělá
výkonnější a volitelně ještě více kontrolovaný jazyk, ale zároveň se tak z
něj stane volitelně složitý a neflexibilní jazyk obtížnější na používání.
Pro laiky a začátečníky to nebude mít pozitivní přínos. Proto se k tomu
stavím neutrálně. Zajímalo by mě ovšem, kde bereš jistotu, že k tmu dojde,
když se proti tomuto návrhu zvedla taková nevole a žádný pozitivní ohlas
jsem naopak nezaznamenal a nebyla by to první zamítnutá věc. Kde bereš
jistotu, že za takové situace nedojde k forknutí Pythonu a neodvodí se z
něj nový jazyk, který tyto věci implementuje?

V tomto směru nemám co měnit za názor, protože tohle všechno jsou fakta,
tedy až na tvou jistotu, která vaří z vody.

Python pole ve skutečnosti vůbec nepodporuje, namísto polí používá seznamy
a i s těmi seznamy pracuje po svém a pro jejich procházení používá syntaxi,
kterou ostatní jazyky nepoužívají.


Ale di ty brepto, seznamy mají plnou funkcionalitu polí včetně způsobu
používání, ve skutečnosti je používání polí v Pythonu standardní
záležitost, zvlášť ve srovnání s tím co předvádí obskurní VB.NET. Jak
neznáš ani ty nejpoužívanější jazyky jsi již předvedl u deklarace polí.
Zase jen tlučeš hubou .

To zní sice hezky, ale toto není jednak seriál o výuce programování, ale
seriál v výuce programování ve VB.NET


Nejen že to zní hezky, je to i pravda. Právě proto, že je to seriál o výuce
programování ve VB.NET upozorňuji, že VB.NET je pro výuku programování
nevhodný.

takže nepoužívám nějaký pseudokód ala Ptyhon, ale VB.NET

To vidím, však proto také upozorňuji na nedostatky jazyka VB.NET, na které ty
čirou náhodou zapomínáš upozorňovat . Pročpak zapomínáš?

Za druhé, jazyk je sice pouhý nástroj k dorozumění, ale pokud jej
neovládáte, prostě se nedomluvíte (ať už s lidmi, nebo s počítačem).


Proto je vhodné začínat s jednoduchým jazykem a ne příšerností jako VB.NET,
jak jsem krásně doložil na příkladu práce s poli.

Chápejte ale, že používání typových deklarací patří k obecně uznávaným
návykům a proto deklarace polí předvádím s nimi, abych se k nim už nemusel
vracet.


To nepatří k obecným návykům, potřebují to jen některé jazyky. Z hlediska
výuky programování jsou nejen zbytečné, ale i na překážku. Je to jako
vysvětlování funkce motoru, svíček, rozdělovače či spíše přesný popis
elektro rozvodů škodovky či činnost mikroprocesorové jednotky a podobně při
výuce dopravních předpisů. Jistě, automechanikům se to bude hodit, ale
většina lidí nejsou automechanici a toto do výuky dopravních předpisů to
nepatří, není to jejich součást. Ostatně základy programování i dopravních
předpisů se učí na základních školách a tam je to v obou případech totálně
mimo.

Díky těm typům je také problematika polí rozsáhlejší, než v Pythonu - až
bude Python podporovat statické typy, uvidíte sám.


To dnes není otázka až, ale jestli. Krom toho já na rozdíl od tebe znám víc
jazyků, včetně statických, takže na to nemusím čekat. Já velmi dobře vím,
že statické typy komplikují všechno a všechno je kvůli nim složitější.
Proto také říkám, že statický jazyk do výuky základů programování nepatří a
demonstroval jsem to na příkladu polí. Jsem rád, že jsi to konečně
pochopil.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  17. 01. 2005 05:18  | 

Nehodlám polemizovat s Vašimi rok starými i současnými výroky

Ty s nimi pro jistotu nehodlas polemizovat vůbec, už jsi to zkusil a vis
ze neobstojis .

Bloky kódu se neukončují středníkem, dvojtečka je volitelná.

Uvádět že bloky kódu se neukončují středníkem jako výhodu VB může jen
debil. Nedělá to žádný mě známý jazyk. Máš-li tím na mysli příkazy, tak
naopak všechny mě známé jazyky používají středník, ať povinně jako Java či
C nebo nepovinně, jako JavaScript nebo Python. Tedy s výjimkou VB.NET,
který nesmyslně používá dvojtečku, která se obtížně píše přes Shift.
Ukončovat s ní každý příkaz je pruda. Kromě toho i typografický význam znaku
dvojtečka je něco uvádět, ne končit, k tomu slouží právě znak středník.
Tohle je jen další případ nesmyslnosti syntaxe VB.NET. Jestli tahle
nesmyslnost je pro tebe důvod proč používat VB.NET, tak fajn, ale chápej,
že tím nikoho nepřesvědčíš. Když vydáváš nevýhody jako výhody (zde např.
i problém s devítkou), pak jsou veškerá tvá tvrzení nedůvěryhodná.

syntaxe VB.NET lze psát inline kód podobně, jako v C# (čehož se využívá ve
VBSkriptu)


Člověče, již jednou jsi se zde dopustil trapně nesmyslného tvrzení o jiných
jazycích, aniž bys to byl schopen na rovinu přiznat a už to děláš zase.
Proč mluvíš o něčem, co neznáš a nedovedeš to ani pojmnovat?


VBSkript nic není a VB Script nemá s VB.NET kromě tvůrce nic společného, stejně
jako nic společného nemá JavaScript s Javou, jsou to různé jazyky. Že lze
něco dělat ve VB Scriptu je irelevantní ve vztahu k VB.NET a vice versa.
Jestliže lze ve VB.NET psát inline kód, proč se to nepoužívá ve VB.NET?
) Buď to nejde a nebo to k ničemu není .

Case-insensitive syntaxe.

Kterou musí opravovat IDE, další ukázka špatné vlastnosti. Vytváří se tak
závislost na IDE, které umí opravovat syntaxi, což vnímám navíc jako pěknou
prudu (myslím že zde nejsem jediný, koho sere, když mu syntaxi opravuje
Word). Navíc já chci, aby se velikost písmen držela zavedených konvencí,
tedy např. název třídy začíná velkým písmenem, její atributy, třeba metody
malým písmenem. Jenže chtít dodržování konvencí od obskurního jazyka jako
VB.NET, to je trochu moc, že? Dále to znepřehledňuje kód a hlavně, brání to
spolupráci s ostatními jazyky .NET, které klidně mohou mít vlastnosti
pojmenované shodně s rozlišením velikostí písmen.

Python typové deklarace nejen neumožňuje, on je ani nepotřebuje. Python
je dynamický jazyk a tohle je přirozená vlastnost dynamických jazyků, ne
nedostatek, jak se snažíš vydávat. S tím překlepem máš pravdu jen částečně,
může se to stát, ale jen v případě přiřazení hodnoty, jinak ne. Což je
menšinový případ. Na druhou stranu svou dynamičností Python umožňuje mnohem
jednodušší konstrukce při práci s daty (viz můj příklad práce s poli i tvůj
komentář, kde to vysvětluješ právě dynamičností Pythonu), čímž se omezuje
počet řady dalších chyb i zpřehledňuje samotný kód, takže celkově to má
kladný přínos. Ne nadarmo se dynamické jazyky považují za další vývojový
stupeň a high level jazyky vhodné pro svou snadnost používání právě pro
laiky a začátečníky.

A dále, Python sice nepodporuje statické typy, které mají hlavně význam pro
optimalizaci a rychlost kódu (za cenu velkých omezení a nepružnosti jazyka)
a na druhou stranu má výbornou podporu dynamické typové kontroly, která
naopak zabraňuje záhadným chybám. Python je jazyk dynamický, stejně jako
třeba PHP, ale zároveň a na rozdíl od PHP má silnou typovou kontrolu. Python
je jazyk dynamický se silnou typovou kontrolou, to je ten správný
kompromis, který vede k snadno použitelnému a bezpečnému jazyku. Statické
typy ve skutečnosti nic neřeší, stačí se podívat např. na jazyk vlastností
přesně opačných, než má Python, na jazyk statický se slabou typovou
kontrolou, na jazyk C a jemu podobných. V těchto jazycích se ve skutečnosti
skrývá řada chyb, které nejsou odhaleny právě kvůli špatné typové kontrole.

Bloky kódu

Ano, v Pythonu se skutečně nemusí řešit, jsou dány přehledně a intuitivně
odsazením kódu. Že to je nejlepší možný způsob dokazuje to, že všichni
programátoři svůj kód odsazují, aby se v něm vyznali, přestože nemusí. A
když už to dělají, proč by se podle toho neměl řídit i jazyk? Vždyť je to
samozřejmé, tahle vlastnost Pythonu je progresivní moderní prvek. Ano,
zkostnatělí programátoři to z prvu nechápou, zdá se jim to divné (sám jsem
si tím prošel), ale zkušenosti mi ukázaly, jak je to ve skutečnosti skvělá
věc.

Tvá ukázka se do Pythonu dá přepsat takto:

class CTest:
def __init__(self):
for i in xrange(10):
if i>5:
print i


Ano, ve VB.NET jde zapnout slabá typová kontrola, dokonce některé knihovny
jsou slabě typované, k čemu to vede viz výše , to je opravdu výhoda.
Dovolím si předpokládat, že ti občas programy moc nefungují, takže vypneš
typovou kontrolu a je to , chápu proč preferuješ takový jazyk, můžeš tak
odfláknout návrh programu, ale to je přesně to, co se v hodinách
programování přesně vyučuje .

Předávání parametrů


má Python vyřešeno, jak nevíš, velmi dobře a lze v něm snadno předávat
nejen parametry jednoduché, ale i klíčové a u obou v libovolném předem
nedefinovaném množství nebo jako volitelné s předdefinovanými hodnotami.
Tudíž přinejmenším se všemi výhodami, které přisuzuješ VB.NET.

Deklarace polí

Evidentně ti stále nedošlo, v čem se VB.NET liší od ostatních jazyků, budiž
to vnímáno jako důkaz, jak VB.NET svou obskurností křiví chápání
programátorům kteří se pak nedokáží orientovat ani v jednoduchých
záležitostech ostatních jazyků. Vydávat to za výhodu VB, kvůli které ho
preferuješ, haha . Ve skutečnosti ho preferuješ proto, že nic jiného
neumíš, na rozdíl ode mne, který s Pythonem nezačínal a přesto si jej vybral
i při znalosti řady dalších jazyků.

Ve skutečnosti zmíněné jazyky také indexují pole od nuly a VB.NET se tím
neliší (konečně), liší se deklarací počtu prvků pole, kdy jeden prvek se
nesmyslně deklaruje jako 0. Tohle není žádná featura, ale chyba, artefakt
VB minulosti, kdy se pole od 0 neindexovala, což byla také ptákovina
nejvyššího stupně, kterou bys dnes také hájil a vychvaloval, kdyby tomu
VB.NET neudělalo přítrž. Jenže ostatní syntaxe VB.NET je s touto změnou
nekonzistentní, což dělá jazyk zmatečný a nepřehledný, což se dá jednoduše
dokázat na ukázce, kterou nebudeš chtít předvést:

Předveď mi program, kterému při spuštění jako parametr předáš libovolně
dlouhý řetězec, který v cyklu for převeď pomocí indexů na pole. Tedy v
Pythonu tohle:

import sys

text=sys.argv[1]
delka=len(text)
pole=[None] *delka

for i in xrange(delka):
pole[i]=text[i]

Jsem si vědom toho, že to jde udělat různě, v Pythonu existují jednodušší
cesty jako např:

import sys

pole=[]
for c in sys.argv[1]:
pole.append(c)

Nebo dokonce jen přetypováním:

import sys

pole=list(sys.argv[1])


Ale já chci, abys předvedl práci s indexy a explicitními rozměry. A
mimochodem, neustále mi připomínáš, že jsem Pytonu vytýkal neohrabanost a
složitost, ale to bylo v době, kdy jsem takový úkol uměl řešit jen tím
prvním způsobem a nebyl si vědom toho, že se škrábu levou rukou za pravým
uchem přes hlavu, i proto jsem svůj názor, kromě řady uvedených důvodů
korigoval.

Syntaxe C# je možná zdánlivě poněkud redundantní, ale to není případ
Pythonu. Krom toho je zajímavé, že Pythonu vyčítáš že je implicitní (což
mimochodem není pravda a nikdy jsi to nepodpořil něčím konkrétním) a nyní
za implicitnost oslavuješ VB.NET . Nevidíš si ani na špičku nosu a
zapomínáš, kde jsi co tvrdil .

Ad nativní a bohaté funkce.


Jak jsi určitě postřehl, tak bohatost a kvalita prostředí byl jeden z
důvodů, který mě přiměl o k tvrzení, že Python je nejlepší jazyk ve své
kategorii, přestože jsem ho ze syntaktického hlediska vystavil, částečně
neoprávněně velké kritice.

Klasické konstrukce jako GOTO...

ani nemusíš psát dál, konkrétně na tento příkaz je uvalena všeobecná
klatba, protože se dobře ví, jaké pohromy dokáže způsobit v nezkušených
rukou laiků a začátečníků. Většina jazyků nahradila tento příkaz nějakou
bezpečnější konstrukcí. Jestli VB.NET ne, je to další z řady důvodů, proč
pro laiky a začátečníky VB.NET ne. Jestli ano, a ty se bez ní stejně
neobejdeš, ukazuje to, že neumíš navrhovat programy a jsi odkázán na tuto
berličku, což ti brání přejít na jiné jazyky. Jak důvod osobní preference
VB.NET to pak obstojí, ale zároveň je to důvod, proč se mají začátečníci
tomuto jazyku širokým důvodem vyhnout a proč není vhodný jako první jazyk
pro výuku programování, stal by se zároveň nedobrovolně i posledním.

Flexibilní větvení pomocí elseif

Je v pythonu implementováno jako příkaz elif. Python jde ale dál a
například rozšiřuje příkaz cyklu while a for o klauzuli else, která umožňuje
rozlišit, zda cyklus proběhl celý (přirozeně) a nebo byl přerušen pomocí
příkazu break a vykonat tak snadno bez používání pomocných proměnných kód
jen v případě, že cyklus proběhl v pořádku. To je jen jedna z mnoha
příjemných pomůcek Pythonu činící programování radostnějším. To samé se
týká i podmínek. Jestli nechápeš v čem je to výhodné, předvedu ti to na
ukázkách a požádám tě o implementaci toho samého chování ve VB.NET. Myslím
že to radši zázračně pochopíš a ukázky nebudeš chtít vidět .

Že srovnáváš neustále VB.NET s C# je hezké, ale porovnávej ho s Pythonem.
Jestli nemůžeš, protože Python neznáš, nechápu, jak se k němu můžeš tak
vehementně vyjadřovat a kritizovat. Co z uvedeného myslíš že Python
potřebuje a neumí? Jak snadno se v Pythonu dělají callbacky pro GUI na
které ty potřebuješ jakési delegáty, což já znám jako jeden ze standardních
návrhových vzorů, ale kdo ví co tím myslíš ty, jehož terminologie je
obdivuhodná, kdy delegáty přirovnáváš k atributům jak nazýváš modifikátory,
to je fakt těžko říct. Jak naprosto snadno a intuitivně se v Pythonu dělají
callbacky jsem ti předvedl, máš-li na mysli něco jiného, předveď ukázku.

Polopatičtější názvosloví je ve skutečnosti bordel v názvosloví. Přesně to,
co jsem (omylem) vyčítal v Pythonu. Jak se ukázalo, v Pythonu bylo nakonec
přesné, ale je to, jak předvádíš, značný problém VB.NET. To je mimochodem
důvod, proč používáš terminologii, které nikdo nerozumí, proč modifikátorům
říkáš atributy, přestože tohle je zavedený pojem v OOP pro členy tříd a
podobně. To je důvod, proč si myslíš, že třídy dědí privátní členy z
nadřazených tříd .

Co se tyče výjimek, tak ty má Python velmi dobře propracované. V první řadě
jsou objektové, takže, každá výjimka je instance nějaké třídy výjimky, což
umožňilo vytvořit stromovou hierarchii výjimek. Mohu tak zachytávat nejakou
konkrétní výjimku, třeba dělení nulou nebo přetečení typu proměnné při
matematických operacích a nebo rovnou celou větev všech aritmetických výjimek
jednou klauzulí, protože třída ArithmeticError je předek tříd
OverflowError, ZeroDivisionError a FloatingPointError. Při očekávání
výjimky ArithmeticError tak zachytím i všechny ostatní aritmetické výjimky.
A dále je možno výjimkám předávat parametry, které mohu používat při jejich
zachycení, jsou součástí instance výjimky, takže nejsou žádné potíže u
vícevláknových programů při zpracování výjimek. Příkaz try/except může
být rozšířen o užitečné else a finaly, kdy finally se provádí vždy i po
zachycení výjimky. Umožňuje to tak na jednom místě uvést čistící operace,
což je výhodné jak z důvodu přehlednosti, tak v případě, že zachycujeme
více výjimek (except je možno uvést v libovolném počtu), abychom čistící
operace nemuseli psát do každé except větve. Else pak umožňuje provést kód
jen v případě, kdy výjimka nebyla vyvolána, což je velmi užitečné v
případě, kdy zachycenou výjimku ignorujeme, ale chceme provést něco navíc v
případě, že nebyla vyvolána.

Že je psaní VB.NET kódu v drahém Visual Studiu pohodlné je pěkné, ale zároveň to
znamená, že bez něj to pohodlné není. Psaní kódu v Pythonu je pohodlné v
každém editoru, který umí odsazovat kód, kterých je přehršle. Jestliže umí
i zvýrazněnou syntaxi, automatické odsazování dle syntaxe nebo
nakonfigurovat horkou klávesu pro spuštění interaktivního interpretu na
editovaný kód, jako to umí třeba editor Vim, je to balada. A jestli se někdo
neobejde bez IDE, které mu doplňuje kód a napovídá, ani to není problém a
to dokonce zdarma.

I pro Python existuje široká podpora a co je ještě lepší i prvotřídní
dokumentace.

Souhlasím  |  Nesouhlasím  |  Odpovědět
heysa  |  25. 04. 2006 07:59  | 

Co tady pletes Python. Se ti neco nelibi tak si jdi udelat vlastni kurz a nekaz tady forum blbostma....

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petrik  |  17. 01. 2005 07:27  | 

Souhlasím  |  Nesouhlasím  |  Odpovědět
Benjamin  |  17. 01. 2005 09:31  | 

Puvodne jsem byl rozhodnuty do tohodle fora uz nepsat, protoze toho o VB mnoho nevim a nechce se mi ze sebe delat vola, na druhou stranu je tu jedna vec na kterou reagovat musim (netyka se primo clanku, ale diskuse pod nim) a tyka se lastne pana Petrika i Macha:
Jde o to, ze podle me je blbost, ze by zacatecnici nemeli prijit do styku s typy promennych - podle me meli a to hned na zacatku, kdy se o promennych zacne mluvit.
Duvod je prosty - hodnoty tech promennych stejne nejaky typ maji - bez ohledu na jazyk je prece rozdil, pokud napisu A= 50; a A = "Ahoj!!!";, prinejmensim proto, ze v prvnim pripade vim, co znamena B= A/10;, zatimco v druhem pripade to netusim. Ve vetsine jazyku pujde o chybu, v tech, ktere nekontrolujui typy se ale odhali az za behu programu, coz je dost pozde.
Nemoznost deklarovat promennym typ, je spise matouci a v dusledku omezujici. Co se tyka obtiznosti pro zacatecniky, ja myslim, ze tady se da uplatnit co rika jeden nas prednasejici (shodou okolnosti prednasi programovani) - "Tahle veta "To by nepochopili" vypovida spis o tom cloveku samotnem" - Tedy - neni to ve skutecnosti tak, ze ty nejsi schopen praci s typy vysvetlit, spis nez, ze se v nich skryva pro zacatecniky nejaky problem, ja si totiz myslim, ze na typeh nic problematickeho neni a nevim, proc by melo byt.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  17. 01. 2005 13:18  | 

To bude drobne nedorozumneni. Typy jsou v poradku,
Python je ostatne silne typovy jazyk a pokus deleni
retezce cislem vyvola vyjimku:


>>> "abc"/10
Traceback (most recent call last):
File "", line 1, in ?
TypeError: unsupported operand type(s) for /: 'str' and 'int'

Ale uz je mozno ho treba, diky pretizenemu operatoru nasobit:

>>> "abc"*3
'abcabcabc'

Problem je v statickem typovani. Staticke typovani jazyk velmi
komplikuje a zeslozituje, na tom se myslim zhodnem vsichni, vcetne
pana Petrika, ktery napr. prohlasil, ze prace s poli je ve VB.NET
slozitejsi prave kvuli statickym typum. Nutno podotknout ze
mnohem slozitejsi, staci nahlednout do diskuze 20 dilu, kde
ukazuji kompletne praci s poli v Pythonu a porovnat to se, zatim,
tremi dily o praci s poli ve VB.NET.

Staticke typy nedelaji slozitou jen praci s poli, takto komplikuji
vsechno. Pri vyuce programovani nejde o vyuku jazyka. Jazyk je jen
nastroj, ne kterem se vyuka programovani demonstruje. Proto je
zadouci a nutne, aby byl jazyk pro vyuku programovani co nejjednodusi.
Treba proto, ze kantor ma na vyuku jen velmi omezeny casovy prostor.

Kdyby mel ucit programovani ve VB.NET, tak se mu to zvrhne ve vyuku
obskurniho jazyka VB.NET a na vyuku samostatneho programovani se
vubec nedostane. Zaci by rovnez pri zadanych ulohach zapasili se
samotnym jazykem, napr. komplikovanou deklaraci pole, misto aby
resili samotnou ulohu. To vsechno je pritom zbytecne. Jsou tu jazyky,
ktere jsou jenodussi, snaze pochopitelnejsi a pro vyuku vhodnejsi.

Programovani jako takove je samo o sobe intelektualne dosti narocne
pro lidi, kteri s tim dosud neprisly do styku. Je nutno je doslova
naucit nove myslet, analyticky. Je nutno je naucit algoritmizovat
ulohy, je nutno jim vysvetlit systemove zavislosti jak pocitac
pracuje, napr. proc je mozno zapisovat na konec souboru, ale ne
doprostred, jako v textovem editoru. Je toho moc co je potreba
pochopit, naucit se a porozumet. A skutecne to neni nutne komplikovat
tezkopadnym a slozitym jazykem.

Ve vetsine jazyku pujde o chybu, v tech, ktere nekontrolujui
typy se ale odhali az za behu programu, coz je dost pozde.


Musim te opravit. U jazyku, ktere kontroluji typy staticky se
muze zpravidla dojit na typovou chybu pri prekladu, take ale
ne vzdy. U jazyku ktere kontroluji typy dynamicky se na to
dojde behem chodu programu. Tvrzeni ze prijt na to pri chodu
je dost pozde je nicim nepodlozene. Na ceske skole se objevil
naopak odborny nazor, ze je to naopak. Ze je silne motivujici,
kdyz program castecne funguje a dela aspon neco, nez dojde k
chybe a je prerusen vyjimkou oproti stavu, kdy ho neni stale
mozno prelozit pro radu chyb a nedela vubec nic. Krom toho,
to ze se ti nakonec podari program prelozit neznamena vubec
nic, jen ze jsi ho syntakticky napsal spravne. Jeste v nem muze
byt, a bude, rada dlasich moznych chyb v navrhu, logice,
algoritmech a postupne. U dynamickeho jazyka tohle vsechno resis
postupne, jak pises program a zkousis si ho. Jeho ladeni je tak
mnohem jednodusii a prirozenejsi oproti stavu, kdy musis napsat
program natolik kompletne aby sel vubec prelozit a teprve pak
muzes pristoupit k jeho ladeni.

A jeste je v tom jeden zadrhel. Jak jsem uvedl, kontrola pri
prekladu ti kontroluje syntaxi zapisu, ne logiku a dalsi veci.
Hacek je v tom, ze staticke jazyky maji syntaxi komplikovanou,
takze je to predevsim jen rada moznsosti, jak zavlest do programu
hromadu chyb.

Oproti tomu Python na to jde naopak. Ten se snazi syntaxi maximalne
zjednodusit a zprehlednit, cimz vylucuje radu syntaktickych chyb
vubec udelat.

A psledni douska. Casu je malo a cas jsou penize. Psat programy v
Pythonu (a obecne dynamickem jazyku) je mnohem snazsi a rychlejsi
nez VB.NET (a obecne statickych jazycich). To je dano podstatou tech
jazyku. Ty dynamicke jsou mnohem prirozenejsi a primocarejsi, lepe
se v nich dela. A take se snadneji pouzivaji, zadne preklady, zadne
linkovani knihoven a dalsi nesmysly, nicim z toho neni zak obtezovan.
A to je dalsi zasadni vyhodou. Takze i z duvodu casove uspory je
vhodnjsi pouzit pro vyuku zakladu programovani jazyk jako Python.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Benjamin  |  17. 01. 2005 09:31  | 

Puvodne jsem byl rozhodnuty do tohodle fora uz nepsat, protoze toho o VB mnoho nevim a nechce se mi ze sebe delat vola, na druhou stranu je tu jedna vec na kterou reagovat musim (netyka se primo clanku, ale diskuse pod nim) a tyka se lastne pana Petrika i Macha:
Jde o to, ze podle me je blbost, ze by zacatecnici nemeli prijit do styku s typy promennych - podle me meli a to hned na zacatku, kdy se o promennych zacne mluvit.
Duvod je prosty - hodnoty tech promennych stejne nejaky typ maji - bez ohledu na jazyk je prece rozdil, pokud napisu A= 50; a A = "Ahoj!!!";, prinejmensim proto, ze v prvnim pripade vim, co znamena B= A/10;, zatimco v druhem pripade to netusim. Ve vetsine jazyku pujde o chybu, v tech, ktere nekontrolujui typy se ale odhali az za behu programu, coz je dost pozde.
Nemoznost deklarovat promennym typ, je spise matouci a v dusledku omezujici. Co se tyka obtiznosti pro zacatecniky, ja myslim, ze tady se da uplatnit co rika jeden nas prednasejici (shodou okolnosti prednasi programovani) - "Tahle veta "To by nepochopili" vypovida spis o tom cloveku samotnem" - Tedy - neni to ve skutecnosti tak, ze ty nejsi schopen praci s typy vysvetlit, spis nez, ze se v nich skryva pro zacatecniky nejaky problem, ja si totiz myslim, ze na typeh nic problematickeho neni a nevim, proc by melo byt.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petrik  |  17. 01. 2005 10:42  | 

Jsem téhož názoru, nicméně pokud jazyk může být použit i bez deklarace typů, využil bych této možnosti právě k demonstraci toho, jak a čím mohou být statické typové deklarace užitečné. Jsou to v zásadě dvě věci - jednak silná typová kontrola a ochrana proti překlepům a jednak integrace Intellisense a doplňování kódu.
 
Myslím, že jazyk který toto neumožňuje se pro výuku programování nehodí, i kdyby měl řadu dalších užitečných vlastností - chybí mu prostě jeden ze základních aspektů moderních profesionálních vývojových prostředí. Je to jako kdybyste chtěli učit ježdění na rolbě, která nemá kola - naučite se to jistě také, ale ten specifický styl práce v silně typovém prostředí si neosvojíte.  Myslím, že sám autor jazyka Python, Guido van Rossum - který nyní prosazuje pro Python statické typové deklarace - tento nedostatek vnímá podobně. Podobně lze chápat absenci explicitní deklarace bloků a oddělovačů příkazů v Pythonu. Až tyto záležitosti Python bude (alespoň volitelně, jako VB.NET) mít, nic mu nebude bránit v cestě mezí mainstream jazyků.
 
Co se jednoduchosti VB.NET ve srovnání s Pythonem týče, VB.NET evidentně patří k jazykům, určeným pro vývoj v IDE. To doplňuje redundatní informace, kterými VB.NET kód disponuje samo a využívá je k takovým věcem, jako je autoformátování a Intellisense - je to jakýsi stroj na kontextově senzitivní doplňování kódu.  Python je naproti tomu zcela zjevně optimalizován pro úsporné skriptování bez podpory IDE, což v prostředí Linuxu, kterému dobré IDE na úrovni Visual Studia chybí může být výhoda - ale v profesionální praxi, která  IDE k dispozici má a v převážné většině projektů využívá se tato skutečnost obrací v jeho neprospěch.
 
Díky nástrojům jako je Visual Studio Express nebo SharpDevelop má dnes každý možnost si vyzkoušet základy práce v profesionálním vývojovém prostředí zdarma a vyzkoušet si, jaký je rozdíl oproti práci v (třebas vyspělém) textovém editoru. Ty rozdíly jsou natolik specifické, že pokud IDE dobře neovládáte, může být vaše produktivita řádově nižší - takže stejně jako je dnes součást kvalifikace práce s kancelářskými aplikacemi, měla by být součástí praxe vývojáře znalost funkce vývojového prostředí - měl by znát principy ladění, watche, práci s intellisense, objekt a code browserem, práci s šablonami a designery a nástroje pro deployment.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  17. 01. 2005 13:35  | 

To je porad jedna a ta sama pisnicka .-).

Treba:

stejně jako je dnes součást kvalifikace práce s
kancelářskými aplikacemi, měla by být součástí praxe
vývojáře znalost funkce vývojového prostředí - měl
by znát principy ladění, watche, práci s intellisense,
objekt a code browserem, práci s šablonami a designery
a nástroje pro deployment.


Vyuka programovani na zakladni a stredni skole neni
odborna priprava vyvojaru, stejne jako vyuka matematiky
neni priprava matematiku a fyziky fyzyku a hudebni
vychovy hudebniku . Vyuka programovani na zakladnim
a strednim stupni ma jiny cil.

Ucit na zakladni skole watche, práci s intellisense,
objekt a code browserem, práci s šablonami a designery
a nástroje pro deployment a to navic pri vyuce zakladu
programovani je nesmysl. )

Python je naproti tomu zcela zjevně optimalizován
pro úsporné skriptování bez podpory IDE, což v prostředí
Linuxu, kterému dobré IDE na úrovni Visual Studia chybí
může být výhoda - ale v profesionální praxi, která IDE
k dispozici má a v převážné většině projektů využívá se
tato skutečnost obrací v jeho neprospěch.


Python se nepouziva jen na Linuxu, dokonce ani nevzniknul
primarne pro Linux a zcela urcite ma vice win vyvojaru.

Krome toho, Python je zjevne optimalizovan pro to, aby mel
pochopitelnou, srozumitelnou a prehlednou syntaxi. Kdyby
byl optimalizovna na uspornou syntaxi, vypadal by jako Perl.

Co se tyce intellisense, nema Python problem a to ani na
linuxu.



čím mohou být statické typové deklarace užitečné. Jsou
to v zásadě dvě věci - jednak silná typová kontrola a ochrana
proti překlepům a jednak integrace Intellisense a doplňování
kódu.


To je pekna blbost. Intellisense viz obrazek u dynamickeho Pythonu.
Neni tedy vazano na staticke typy. A silna typovou kontrolu ma
Python rovnez, narozdil od jazyka C, ktery ma slabou typovou
kontrolu, prestoze ma staticke typy. Pletes si pojmy a dojmy .

Souhlasím  |  Nesouhlasím  |  Odpovědět
Benjamin  |  17. 01. 2005 13:10  | 

Navrhuji presunout se s touto diskuzi jinam - a to konkretne na tohle specielne urcene forum: http://www.zive.cz/forum/SubChild.asp?Qst=202191&Main=62

Souhlasím  |  Nesouhlasím  |  Odpovědět
mio  |  17. 01. 2005 16:38  | 

... nebo odříznout p.Macha od netu. No fakt na ten Python nepřejdu a nepřejdu...

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  17. 01. 2005 18:55  | 

To je v poradku Python neni pro kazdeho a ani se nehodi
na vsechno. Prechazet na Python nebo jakykoli jiny jazyk
je ze sve podstaty nerozum, zadny jazyk nepokryva vsechny
potreby a moznosti. Vhodny jazyk se vybira na zaklade
potreb pro any projekt.

Tudiz tuhle flame nevedu pro to, abych nekoho presvedcil
na Python. Mne staci ocistit jej od Petrikovych pomluv ,
popr. na nej i upozornit ty, kteri o nem jeste neslyseli
a nevi co to je zac a k cemu by jim mohl byt eventualne
uzitecny. Ja sam ovladam a pouzivam nekolik ruznych jazyku,
Python je jen jeden z nich. V kategorii dynamickych a
interpretovanych jazyku ma ale Python jedinecne postaveni.
Ac interprtovany a dynamicky, je hodne podobny systemovym
a je v rade pripadu velmi dobre pouzitelny i na aplikacni
programovani. Protoze mnoho lidi ma vuci interpretovanym
jazykum predsudky a neco takoveho by je ani ve snu nenapadlo,
myslim si, ze jde o uzitecnou osvetu.

Chtit nekoho odrezavat, to nesvedci o moc demokrtickem
pristupu . Jestlipak ty nahodou neumis jeden jediny
jazyk? To by pak mnohe vysvetlo .

Souhlasím  |  Nesouhlasím  |  Odpovědět
mio  |  18. 01. 2005 07:27  | 

Ano, ano, protože kolik jazyků znáš, tolikrát si člověkem.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petrik  |  17. 01. 2005 19:01  | 

Pan Mach si už svých pět minut slávy odřízl - stačí zagooglovat, co tvrdil o Pythonu ještě před rokem na několika diskusích současně....
 
Paradoxně ale měl tehdy na Python mnohem objektivnější názory, než teď - pod jeho tehdejší výroky bych se klidně podepsal i já.
Ale kdo chce vlka bít....  V každém případě si cením toho, že svůj úděl nese odhodlaně a statečně - přiznám na rovinu, že na jeho místě bych napodruhé zdaleka tak kategorický určitě nebyl.
  
Nekdo prohlasil ze Python je snadny jazyk pro zacatecniky,jak se v nem lehko a krasne programuje a jak je srozumitelny a vsichni ostatni to po nem papouskuji, ale skutecnost je jina. Osobne bych tuto roli spis priradil PHP, ktere si na nic nehraje a je opravdu snadne a k zacatecnikum privetive.
Knihovny se tu nazyvaji moduly a vubec mi prijde, ze cela zakladni terminologie je zbytecne prekopana. Imho je tohle vsechno hloupy a zbytecny a znesnadnuje to vniknuti do Pythonu.
A i ten uplny zacatecnik, ktery zacne s Pythonem, pak bude mit problemy s pouzivanim neceho jineho. I z tohoto duvodu si myslim, ze Python neni vhodny pro zacatecniky v programovani
Python ma byt udajne velmi jasny a prehledny, doslovne se o nem tvrdi, ze ho jsou schopni cist i neprogramatori a pak takovehle lapsy
Casto take slysim hlasku, ze Python byl navrzen jako OOP jazyk. Jestli to je pravda, tak byl navrzen desne mizerne. Protoze veci jako len(pole) do cisteho OOP jazyka jednoduse nepatri.
Python je sice od zacatku koncipován objektově ale čistota objektového navrhu v něm těžce skřipe.
Všechno je v Pythonu sice "objekt", ale stejně se to pouziva spis jako proceduralni jazyk - např. místo přiřazení x=pole.lenght používá x=lenght(pole))
Python neni ani objektovy ani proceduralni, je to takova splacanina, objekty jsou doplnovane pozdeji
Python ma sve nejslabsi stranky ve vecech, ktere maji moderni jazyky ciste vyreseny.
Iteratory jsou bezva, akorat si nejsem jist, nakolik je kod s iteratory pristupny a srozumitelny zacatecnikum.
Bloky se rozlisuji odsazovanim, otresne...
Pro prehlednost nekdy odsazuji i logicke casti bloku v pythonu nemuzu a je to pro me dost neprehledne
Jsem zvykly na jine odsazovani/formatovani zdrojaku a Python me nuti do toho, ktere me nevyhovuje
V Pythonu vznikaji problemy pri kopirovani a automatickem formatovani ruznymi editory
Problemy mi v pythonu delaji zaprve dlouhe radky, za druhe bloky odsazuju
Dale tu jsou problemy mezera vs tabulator a tabulator s ruznou velikosti.
Michat format a syntaxi kodu dohromady a delat jedno na druhem zavisle je imho hloupost a jeden za zavaznych nedostatku pythonu.
Me proste v mnoha ohledech prijde Python desne tezkopadnej (treba i tim rozlisovanim slozenych prikazu odsazenim kodu) a zastaralej.
Nemam problem se vyznat treba v 20 KB zdrojaku PHP, ale v 5 KB zdrojaku Pythonu ano. Prave kvuli vynucenemu formatovani.
Jeste jsem zapoml uvest, ze dochazi ke konfliktum s komentari
Python ma problemy s GTK a GTK2
Chtel jsem udelat program, ktery by fungoval v textovem rezimu a byl prenositelny mezi windows a linuxem. Byl jsem velmi prekvapen, ze Python pod windows neumi curses a ani jej tomu nelze naucit. Nenasel jsem ani zadnou jinou univerzalni "TUI" knihovnu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  17. 01. 2005 21:33  | 

Musim priznat, ze me prekvapuje, ze stale nedokazes vyrovnat
s tim, ze nekdo nevidi veci jen cerne nebo bile, a ze si dokonce
myslis, ze to je ostuda nebo co .

Tohle je uz jsem ti nekolikrat vysvetloval, naposledy treba ve
ve 20. dilu, nebo treba zde, na vysvetleni nereagujes, fungujes
jako zaseknuty robot, asi jsi se nejak zacyklil. Nejlepe je to
rozebrano zde:

http://new.ceskaskola.cz/ICTveskole/F.asp?ARI=101919&HID=1&CAI=2129

Ano, kritizoval jsem Python a kritizuji ho dodnes, kdyz budes
poctive Googlit, najdes urcite i aktualni vyhrady, ne jen tyto
stare a z vetsi casti neplatne, na ktere jsem te sam upozornil,
abych ti ukazal, ze Python nevnimam cernobile a nekriticky .
Z toho me nikdo nemuze obvinit.

Koho to bude zajimat, ten se dozvi, ze to je vsechno ponekud jinak,
at proto, ze to je vytrhano z kontextu a v celistve forme to zni
ponekud jinak, nebo ze to nikdy nebyla pravda a vysvetlilo se to
jiz v tech diskuzich, z kterych jsi to vytrhal a jsi si vedom toho,
ze to neni pravda, ze to jsou diskuze z roku 2002 a od te doby Python
pokrocil, takze to jiz dnes neplati a toho jsi si taky vedom, presne
sis nechal vysvetlit co se zmenil o a proc to nebo ono neplati, takze
se to da kvalifikovat jako podvod na tve vlastni ctenare, verim, ze
tvuj pristup nakladani s informacemi oceni . No a samozrejme neco
z toho plati i dodnes, a bud jsem na to na zaklade zkusenosti zmenil
nazor, nebo ani nezmenil a stale to vnimam jako vyhradu vuci Pythonu,
protoze Python, ac ho vnimam jako nejlepsi, tak ho nevnimam jako bezchybny.

V každém případě si cením toho, že svůj úděl nese odhodlaně a statečně - přiznám na rovinu, že na jeho místě bych napodruhé zdaleka tak kategorický určitě nebyl. Ano, vsiml jsem si, ze se bojis mit nazor a zaujmout nejake stanovisko u veci ktere vidis bile . Narozdil od tebe ja s nebojim kritizovat i veci ktere se mi libi a obdivuji je. Vim ze jsou kvalitni a neublizi jim to, naopak jim to prospeje. Tobe je vsak takova otevrenost cizi . Na misto toho radsi hlasas a obhajujes bludy.

Jeden blud jako ukazka. Proc tvrdis, ze je dvojtecka jako oddelovac prikazu ve VB.NET lepsi, nez strednik, ktery pouziva Python a ostatni bezne jazyky? Jinymi slovy, proc nedokazes poctive rict, ze to je nedostatek VB.NET, stejne jako ja sem za nedostatek Pythonu prohlasil, ze neumoznuje prikazy ukoncovat stredniky a vlozit tak nekolik prikazu za sebe na jeden radek? Myslis, ze tim ze budes skryvat nedostatky VB.NET nebo je dokonce bezduvodne vydavat za vyhody z nej udelas lepsi jazyk, ze ti za to nejaky ctenar podekuje?

Ja myslim ze ne, a proto nedostatky Pythonu neskryvam. Jen povazuji za hloupe, ze tu predestiras o Pythonu veci, ktere nejsou pravda a pritom vis ze nejsou pravda. Copak te vede k tomuto chovani? .-))

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petrik  |  18. 01. 2005 17:15  | 

Jinymi slovy, proc nedokazes poctive rict, ze to je nedostatek VB.NET, stejne jako ja sem za nedostatek Pythonu prohlasil, ze neumoznuje prikazy ukoncovat stredniky a vlozit tak nekolik prikazu za sebe na jeden radek?
 
 versus
 
Radši bude tvrdit, že VB.NET je lepší než python, protože používá volitelné dvojtečky, když Python používá volitelné středníky, stejně jako ostatní jazyky.
 
 
To je zajímavé, tímhle způsobem by jste mohl polemizovat sám se sebou ještě dosti dlouho...   A kde jste prosím sebral to svoje
 
Proc tvrdis, ze je dvojtecka jako oddelovac prikazu ve VB.NET lepsi, nez strednik, ktery pouziva Python a ostatni bezne jazyky?
 
Prosím ocitujte, kde to tvrdím? Víte, já myslím, že nejste schopen rozeznat výmysly od reality, dokonce ani od toho, co jste napsal sám - ale nejsem psychiatr, takže o tom s nikým nehodlám polemizovat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  18. 01. 2005 19:07  | 

To je zajímavé, tímhle způsobem by jste mohl polemizovat
sám se sebou ještě dosti dlouho...
Na tom neni nic zajimaveho,
to jsem prohlasil, protoze to Python neumel, Python neni mrtvy jazyk,
vyviji se a ted uz to umi, jak jsem napsal, rada mych kritickych
pripominek jiz davno ztratila platnost, jak je videt, stale ti nejde
na rozum, jak se muze neco vylepsovat .

Prosím ocitujte, kde to tvrdím?
Promin, ale tyhle diskuze s tebou vedu radu masicu a to i na mistech,
kde se prispevky nezachovavaji, takze to dohledavat nebudu. Udelam neco
lepsiho, ja se te na to zeptam a muzes ucinit nove prohlaseni.

Je vyhodou Pythonu vuci VB.NET ze prikazy umoznuje ukoncovat stredniky
oproti dvojteckam ve VB.NET? ANO nebo NE

Tesim se na odpoved . Mam pripraveny dalsi, az odpovis na tuhle.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petrik  |  18. 01. 2005 19:32  | 

...takze to dohledavat nebudu...  ...mam pripraveny dalsi, az odpovis na tuhle.....
 
To, že otáčíte svoje vlastní výroky je Vaše věc, ale to co tvrdíte o mých výrocích byste měl dokázat, pokud se mnou vůbec chcete diskutovat dále. Podotýkám, že jde o podmínku nutnou, nikoliv postačující.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  31. 01. 2005 01:21  | 

Presne podle ocekavani, vyhybava odpoved a snaha zabranit dalsi diskuzi,
protoze vis, ze tve tvrzeni je nedohledatelne .

Zkusim to jeste jednou:

Je vyhodou Pythonu vuci VB.NET ze prikazy umoznuje ukoncovat stredniky
oproti dvojteckam ve VB.NET? ANO nebo NE

Souhlasím  |  Nesouhlasím  |  Odpovědět
viman  |  17. 01. 2005 22:08  | 

Moje řeč. Neznám ani Python ani VB.NET (znám ale .NET), ale z toho, co je zde psáno je Python i VB.NET(.NET) silně typovaný a nemají si co vyčítat.

Jiná věc je okamžik, kdy je dané proměnné přiřazen typ a zda ten typ jde za běhu programu měnit. Tohle je patrně ta vlastnost, dle které dělíte jazyk na statický a dynamický (směrováno k diskuzi výše). Pokud smím uvést svůj názor, tak právě dynamické chování má jednu zásadní nevýhodu: Pouhým pohledem na zdroják programu nemohu zjistit, jaký typ v daném místě daná proměnná bude mít. Šikovný programátor si to jistě ošetří, ale co chudák začátečník, který se třeba po několika měsících podívá na ne příliš dobře napsaný program? Prostě díky typovosti toho jazyka si ty typy tak jako tak hlídat musíte.

Co se týče flexibility, tak tu řeší docela obstojně objektově orientovaný základ typů jazyka. V .NET (a tím i VB.NET) je každý typ potomkem třídy System.Object (tedy alespoň virtuálně - zde svou roli hraje ještě boxing), takže flexibilita je zajištěna maximální i přes staticky definované typy.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petrik  |  18. 01. 2005 13:15  | 

Ovšem. V zásadě musíte nechat kód proběhnout až do daného místa, aby jste to mohl vědět s jistotou.  
 
Další problém je, že když se v Pythonu uklepnete při přiřazení do této proměnné, zavedete místo toho do programu novou a hodnota za Vašeho přiřazení zde skončí. Něco takového se obtížně hledá, dokud si překlepu nevšimnete. Taková typová kontrola je typovou kontrolou jen napůl a začátečníka nevede k dobrým programovacím návykům. Krom toho je svého druhu stejně unikátní, jako jako deklarace polí ve VB.NET od nuly.
V Pythonu figuruje řada procedur, které nepatří do rozhraní žádné funkce, ba dokonce nejsou ani funkcemi, ale příkazy, které jsou součástí generické syntaxe jazyka (např. "print").
 
V nekonformnosti a nekonzistentnosti si nemá Python s VB.NET skutečně mnoho co vyčítat - na rozdíl od Pythonu je VB na platformě Windows dávno etablován a patří zde k nejoblíbenějším programovacím jazykům, pro svoji explicitnost a neformálnost zde slouží jako jakési programátorské Esperanto.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petrik  |  18. 01. 2005 13:51  | 

...které nepatří do rozhraní žádné funkce...
 
Chtěl jsem samozřejmě napsat "...které nepatří do rozhraní žádné třídy..."
 

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  18. 01. 2005 20:49  | 

Ano, stejne musis nechat kod probehnout az do daneho mista,
abys vedel s jistotou, jakou ma vubec hodnotu .

Další problém je, že když se v Pythonu uklepnete při
přiřazení do této proměnné, zavedete místo toho do programu
novou a hodnota za Vašeho přiřazení zde skončí. Něco takového
se obtížně hledá, dokud si překlepu nevšimnete.


Je pravda, ze je mozno si takto omylem zavest do programu
novou promennou, ale plati to jen a prave pri prirazeni. Ve
statickem jazyku stejnym omylem muzes pouzit jinou promennou.

Neni pravda, ze se to obtizne hleda. Pouzivam intenzivne tri
dynamicke jazyky, Python, PHP a JavaScript a nikdy mi to
nezpusobilo nejake vazne problemy. To uz jsem se vickrat spalil
na = v podmince misto ==. I to se da snadno dohledat, ale
treba zrovna tato chyba je v Pythonu vyloucena, resp. na ni
Python upozorni, takze neni nutno ji hledat. Ve skutecnosti diky
jednodussi syntaxi nenabizi Python tolik prilezitosti udelat
tolik ruznych chyb jako staticke jazyky. Plati to obecne a je
to jeden z duvodu, proc je vyvoj programu v dynamickem jazyku
rychlejsi a efektivnejsi, coz je mimochodem zas jeden z duvodu,
proc se Python puziva i jako prototypovy jazyk.

V nekonformnosti a nekonzistentnosti si nemá Python s VB.NET
skutečně mnoho co vyčítat

Mas-li nekonzistentnosti na mysli, ze neni ciste OOP, tak to je
pravda, je to hybridni jazyk stejne jako Java nebo C#. Prelozim-li
si slovo konformni jako shodujici se s necim, tak to neni zadny
jazyk, protoze kazdy jazyk je necim originalni. Prelozim-li si to
jako podobny necemu, tak je podstatne podobnejsi Clike jazykum
nez VB.NET.

na rozdíl od Pythonu je VB na platformě Windows dávno etablován
No aby ne, kdyz VB i Windows jsou od MS . Na oplatku je Python
multiplatformni a krome vlastniho prostredi jej lze pouzivat i v
prostredi .NET a Java.

Krom toho je svého druhu stejně unikátní, jako jako deklarace
polí ve VB.NET od nuly.

Ty v tom mas teda hokej. Dynamicky silne typovy jazyk neni nijak
unikatni, narozdil od deklarace poli od nuly, coz bych neoznacil
jako unikatni, ale jako stupidni .

V Pythonu figuruje řada procedur, které nepatří do rozhraní
žádné funkce, ba dokonce nejsou ani funkcemi, ale příkazy, které
jsou součástí generické syntaxe jazyka (např. "print").

Ano, Python podporuje jak OOP tak proceduralni tak funkcionalni
prvky programovani. Kazdy z techto stylu ma sve vyhody a hodi se
pro ruzne situace a jejich podpora cini Python praktickym jazykem.

Protoze proc delat neco tezkopadne v OOP, kdyz to jde snadno jinak?

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  18. 01. 2005 20:14  | 

Jiná věc je okamžik, kdy je dané proměnné přiřazen typ
To je spatny pohled na vec, pohled cloveka, ktery zna staticky
jazyk, ale nezna a nerozumi dynamickemu jazyku. V dynamickem
jazyku promenna nema zadny typ, nikdy. V dynamickem jazyku
nese datovy typ hodnota.

dynamické chování má jednu zásadní nevýhodu: Pouhým pohledem
na zdroják programu nemohu zjistit, jaký typ v daném místě daná
proměnná bude mít

To je pravda, ale neni to nevyhoda, to je opet jen pohled cloveka,
ktery zna jedine paradigma. Nebudu tvrdit ze je to naopak vyhoda,
takto na to nahlizet je chyba, neni mozno to takto hodnotit.

Neni to chyba, je to vlastnost. V dynamickem jazyce promenna muze
obsahovat ruzne hodnoty ruznych datovych typu. Tvrdit ze je to nevyhoda
je nerozumne stejne, jako tvrdit, ze nevyhodou promenne je, ze nelze
pouhym pohledem rict, jakou ma hodnotu, protoze muze mit ruzne hodnoty.
V dynamickem jazyce muze mit ruzne hodnoty ruznych typu, ve statickem
ruzne hodnoty jednoho typu. To je zakladni vlastnost jazyka, na zaklade
ktere se tyto jazyky deli na staticke a dynamicke. Oznacit tuto vlasnost
za chybu znamena za chybu oznacit dynamicke jazyky, a to je nesmysl.

Ja chapu, ze jsi zbehly v imperativnim a statickem programovani a ze
nerozumis prvkum jazyku, ktere pouzivaji odlisny nahled na vec. Takovych
nahledu je vic, muzes se setkat s programovanim a jazyky logickymi,
funkcionalnimi a podobne. To ze s nimi nemas zkusenosti a neumis je
pouzivat jeste neznamena, ze jejich vlastnosti jsou spatne a chyba.

Šikovný programátor si to jistě ošetří, ale co chudák začátečník,
který se třeba po několika měsících podívá na ne příliš dobře napsaný
program?

Ale ne, to neni potreba si osetrovat, to je proste vlastnost, promenna
muze mit hodnoty ruznych datovych typu, a prc by take nemohla, vzdyt je
to uzitecne, tecka. Zacatecnici s tim mit problem nebudou, naopak,
dynamicke jazyky jsou jednodussi a pro zacatecniky pristupnejsi a jsou
u nich oblibenejsi. Mezi dynamicke jazyky patri treba JavaScript nebo PHP.
Jsou to prave staticke jazyky, ktere jsou ze sve podstaty slozitejsi.

Co se týče flexibility, tak tu řeší docela obstojně objektově
orientovaný základ typů jazyka. V .NET (a tím i VB.NET) je každý
typ potomkem třídy System.Object (tedy alespoň virtuálně - zde svou
roli hraje ještě boxing), takže flexibilita je zajištěna maximální
i přes staticky definované typy.

To jsem tedy nepochopil. Rozumime pod pojmem flexibilita to same,
tedy pruznost? OOP nijak pruznost dynamickych jazyku neresi. To
ze datove typy jsou potomkem jedne tridy nic neresi. OOP ostatne
umoznuji jak staticke tak dynamicke jazyky.

Souhlasím  |  Nesouhlasím  |  Odpovědět
viman  |  18. 01. 2005 21:38  | 

To je spatny pohled na vec, pohled cloveka, ktery zna staticky
jazyk, ale nezna a nerozumi dynamickemu jazyku. V dynamickem
jazyku promenna nema zadny typ, nikdy. V dynamickem jazyku
nese datovy typ hodnota.


Celou dobu svůj špatný pohled na věc připouštím. Navíc vyloženě toužím se od Tebe něco dozvědět. Navíc nemám problém s chápáním složitějších věci. Mám představu i o ostatních  stylech (jak logickém, tak funkcionálním) a nemám problém s jejich chápáním.

To, že se na proměnnou díváš jako na symbol ukazující na hodnotu (nesoucí typ) je zhlediska nevýhod, které jsem uvedl irelevantní. Vysvětli mi prosím ten špatný pohled na věc. Jestli sis tím také prošel, jak jsi někde psal, tak bys to měl zvládnout levou zadní. Dej nějaký příklad, který jasně ty odlišné principy demonstruje.

Zacatecnici s tim mit problem nebudou, naopak,
dynamicke jazyky jsou jednodussi a pro zacatecniky pristupnejsi a jsou
u nich oblibenejsi


Nemám ten pocit, těch run-time chyb, co jim to pak hází a které by jim překladač statického jazyka včas oznámil. Zkušený programátor ten problém nemá, to je pravda. nevím, nad kolika začátečníky si bděl. Já už u třech lidí docela zjevně pozoroval, to co říkám.

Flexibilitou rozumím minimální potřebu pomocných nebo redundantních konstrukcí pro řešení nějakého problému. Jazyk (resp. prostředí) je tím pružnější, čím více druhů problémů dokážou přímočaře řešit. Já také nedávám OOP do souvislosti s dynamickými/statickými jazyky, jen říkám, že mám pocit, že dobrý OO návrh je schopen poskytnout dobrou pružnost.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petrik  |  18. 01. 2005 21:55  | 

Pane Mach, můžeme se celkem smysluplně bavit o rozdílech a výhodách C# versus VB.NET - ale stran srovnání VB.NET a Pythonu týče se obávám, že to velký smysl nemá - zvlášť pod tímto článkem ne - protože Python je prostě jiná liga a je určen jiné cílové skupině pro řešení jiných problémů. Slovu JINÉ bych zde preventivně nepříkládal jakékoliv hodnotící stanovisko, ale určitě se shodneme na tom, že Python třeba není ideální pro realtime grafiku, grabování videa, vývoj a práci s COM objekty, složité GUI aplikace s MDI formuláři apod. záležitosti, se kterými se zde budeme postupně seznamovat. 
 
Lidé kteří se zajímají o VB.NET obvykle poměrně dobře vědí, proč se neinvestují čas do studia Pythonu. Ten, kdo se rozhodl učit VB.NET tak učinil proto, že jde o snadný způsob seznámení s prostředím .NET, s platformou dobře optimalizující výkon a nároky na osvojení, s výbornou a konzistentní základnou rozsáhlých knihoven a prostředí pro tvorbu webových aplikací, širokou vývojářskou a studijní základnou , atd..
 
Python je určen k něčemu dosti jinému a v tom směru může plnit svou úlohu velmi dobře, ale je to stále "ten" dosti svérázný pomalý skriptovací jazyk s nevalnou podporou GUI Windows, což je vůči VB.NET výrazný handicap. Zatím byl  Python implementován v Javě i .NETu  (Jython, IronPython) a může na nich být jako jazyk i seriózně používán - ale na to, aby s těmito platformami mohl vážně soupeřit bych počkal do doby, až budou tato prostředí pro změnu implementovány v Pythonu. Domnívám se, že to v dohledné době nehrozí. 
 
Co se týče změny Vašich názorů na Python, tam neřeším, zda jej považujete za jazyk "ve své kategorii" nejlepší (to jste tvrdil už před rokem, jen jste tu kategorii nespecifikoval) - to nad čím se pozastavuji je posun Vašeho tvrzení, že Python není vhodný jazyk pro začátečníky, kde jste otočil o 180o, jakmile jste tím začátečníkem přestal být (...nemam problem se vyznat treba v 20 KB zdrojaku PHP, ale v 5 KB zdrojaku Pythonu ano. Prave kvuli vynucenemu formatovani...)  Nyní jste si na Python konečně zvykl, to co jste Pythonu nejvíce vyčítal dnes považujete za jeho největší přednost a zdá se, že jste pevně odhodlán své unáhlené soudy zopakovat s VB.NET. Říká se, že moudrý člověk se ze svých chyb poučí....
 

Souhlasím  |  Nesouhlasím  |  Odpovědět
Daniel  |  19. 01. 2005 18:10  | 

Pan Mach je něco jako fanatik a dogmatik .o)) Nedá si říci a furt dává své příspěvky pod článek, který nemá s pythonem nic společného :o)

Pane Petřík, to máte těžké co? Nejdříve na Vás nadávají, pak Vás linčují a nakonec Vás dostanou tímto ;) Žádný konstruktivní příspěvek, jen samé dohadování ;) Jestli to takhle půjde dál, tak už nemá vůbec smysl tady diskuze....

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petrik  |  19. 01. 2005 19:51  | 

Zas s tím tak velký problém nemám - nikdo zde přece nemusí odpovídat a ostatní čtenáři se zkrátka musí naučit, že příspěvky podepsané určitými jmény nemusí nutně korespondovat s aktuálním tématem. Když se ostatní čtenáři mezi sebou navzájem včas neumravní, je to víceméně jejich problém. Diskuse pod články přece slouží primárně jim, já jsem tu jen jeden z debatérů a na diskusích tento seriál nestojí.
 
Současně bych chtěl tímto požádat čtenáře, aby mi neposílali odborné dotazy do pošty, protože prioritou je pro mě zdopovídat na ně zde - jednak schránku nevyřizuji pravidelně, jednak je zde mnohem větší pravděpodobnost, že někdo na problém odpoví dříve, a konečně případná odpověď může být užitečná i pro ostatní a neskončí v nějakém soukromém mailu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Karel Loud  |  21. 01. 2005 10:35  | 

Linčovat se píše lynčovat

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  31. 01. 2005 12:56  | 

Na svou obranu musim uvest, ze tohle me naucil pan Petrik, ktery se presne takto
chova v diskuzi pod clankem o Pythonu . Jinak byt offtopic nepatri mezi me
standardni chovani .

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Mach  |  31. 01. 2005 12:54  | 

Tenhle graf vykonu je od tebe pekny podvod na ctenare, urcite te za to budou mit radi.

Ze jde o vedomy podvod je jasne z toho, ze jsi neuvedl zdroj a i ten obrazek jsi
zkopiroval na vlastni web, aby to nebylo dohledatelne. Jenze ja jsem si to stejne
dohledal. http://www.flat222.org/mac/bench/

Nepochybne sis precetl, ze autor byl zadan o jejich aktualizaci, ale ze odpovedel:
This page will not be updated again. Tudíž se tu vědomě oháníš starými
neaktuálními věcmi. Vzhledem k tomu, ze jsem te opakovane upozornoval na to, ze
Python prosel v poslednich letech vyraznymi optimalizacemi na vykon, každá nová
verze je rychlejší než předchozí, je to graf, ktery nema žádnou vypovídací hodnotu,
protože testy byly provedeny na Pythonu 2.1.3, což je několik generací starý interpret.

Krom toho pro Python existuje optimizer vykonu Psyco, ktery se pouziva tak, ze na
zacatek zdrojaku napises import psyco; psyco.full(), coz pouzije kazdy, pro koho je
vykon kriticky.

Na stránce jsou kódy jednotlivych benchmarku, takze jsem je vzal, ty pythoni upravil
pro pouziti s psyco a provedl testy znova:



Python: 2.3.4 + Psyco 1.4
Perl: 5.8.3
Java: 1.4.2
C++: gcc 3.3.2, překlad s optimalizací -O3

Jake prekvapeni, Python je ve trech testech nejrychlejsi (pravdepodobne jen proto, ze
dva zdrojaky C++ se mi nepovedlo prelozit) a ani v jednom neni nejpomalejsi. Takze
asi tolik k tvemu podvodnemu obrazku. Python je naopak az prekvapive rychly. Docela
by me zajimalo i srovnani s VB.NET. Dokazes ty jednoduche testiky prevest do VB.NET
a nebo je to mimo tve schopnosti?

Odpoved na ostatni veci je u dilu 24.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor
Aktuální číslo časopisu Computer

Megatest 20 procesorů

Srovnání 15 True Wireless sluchátek

Vyplatí se tisknout fotografie doma?

Vybíráme nejlepší základní desky