Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Statická vs. dynamická typová kontrola

hm
hm (neregistrovaný)
24. 6. 2004 2:44 Nový

1st

celé vlákno

%subj%!!!! :?)

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
24. 6. 2004 7:11 Nový

Python

celé vlákno

Byl jsem upozorněn na velmi zajímavý článek, který se (nejen) na tuto problematiku dívá očima autorů Pythonu.

http://www.py.cz/Members/honza/GuidoVanRossum

Skutečně stojí za přečtení.

ja
ja (neregistrovaný)
24. 6. 2004 7:25 Nový

Programator ma mit rozum

celé vlákno

Programator ma mit rozum a vzdy pocitat s tim,
ze se muze dostat mimo rozsah pole nebo promenne.
Slovem vzdy nemyslim for (int i=1; i<pole.length();i++).
Ale kdyz neco pocitam, v pocitaci musim mit prehled, zda vypocet nepretece. To bylo i od dob fortranu.

Je mi lito, ze se tak malo venujete Jave. Je to super elegantni jazyk. Jeste bych bral free prekladac a linker do nativniho kodu.

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
24. 6. 2004 8:01 Nový

Re: Programator ma mit rozum

celé vlákno

Ideální je, pokud se o to starat nemusí. Například pomocí konstrukcí typu foreach či do:. Neméně vhodné je, pokud čísla mají neomezený rozsah jako v některých dynamicky typovaných jazycích.

Hned máte o dva podstatné zdroje chyb méně.

Josef
Josef (neregistrovaný)
24. 6. 2004 8:11 Nový

Re: Programator ma mit rozum

celé vlákno

GCC > 3.x? nevim presne od ktere verze je zahrnut javovsky JIT compiler, ale pokud si stahnes nejnovejsi 3.4 verzi, tak tam bude urite. existuje samozrejme i verze pro widle, pokud po ni touzis.

Jan Kos
Jan Kos (neregistrovaný)
24. 6. 2004 11:19 Nový

Re: Programator ma mit rozum

celé vlákno

gcj bohuzel stale nema podporu pro graficke prvky Javy
Viz http://gcc.gnu.org/java/
AWT is currently unsupported, but work to implement it is in progress.
Tato hlaska tam je uz minimalne 3 roky.

Tomas
Tomas (neregistrovaný)
25. 6. 2004 0:13 Nový

Re: Programator ma mit rozum

celé vlákno

mno gcj je uz trosku mimo dnesni javu, ktera je uz nekde uplne jinde :)). Nicmene licence pro klasickou sunovskou javu je hodne volna.

Robert-Antonio
Robert-Antonio (neregistrovaný)
24. 6. 2004 8:21 Nový

Učebnicový příklad

celé vlákno

Ten učebnicový příklad mi připadá nešťastně zvolený. Definuji-li typ integer s omezením 0..255, musím přirozeně definovat operátor + pro všechny možné hodnoty tohoto typu. I pro hodnoty, jejichž součet je již mimo povolený rozsah. Tudíž nezahlásí-li kompilátor na váš příklad chybu, není to "vina" staticky typovaného jazyka, ale návrháře onoho typu 0..255, protože v definici operátoru + neošetřil přetečení.

Robert-Antonio
Robert-Antonio (neregistrovaný)
24. 6. 2004 8:23 Nový

Učebnicový příklad

celé vlákno

Ten učebnicový příklad mi připadá nešťastně zvolený. Definuji-li typ integer s omezením 0..255, musím přirozeně definovat operátor + pro všechny možné hodnoty tohoto typu. I pro hodnoty, jejichž součet je již mimo povolený rozsah. Tudíž nezahlásí-li kompilátor na váš příklad chybu, není to "vina" staticky typovaného jazyka, ale návrháře onoho typu 0..255, protože v definici operátoru + neošetřil přetečení.

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
24. 6. 2004 8:30 Nový

Re: Učebnicový příklad

celé vlákno

Tady nejde o to, že dojde k přetečení - to je problém, který si každý jazyk řeší po svém. Jde o to, že tuhle situaci lze pomocí čisté statické kontroly řešit jen stěží a je nutné to ošetřovat za běhu.

Robert-Antonio
Robert-Antonio (neregistrovaný)
24. 6. 2004 8:42 Nový

Re: Učebnicový příklad

celé vlákno

Leč ve staticky typovaných jazycích si mohu u každého typu zvolit, zda naprogramuji explicitní kontrolu korektnosti parametrů, anebo zda ji v daném případě nepotřebuji (a získám tím rychlejší kód než v dynamicky typovaných jazycích)
Mimochodem téměř všechny výhody dynamicky typovaných jazyků, které jste v článku zmínil, jdou IMHO zařídit i ve staticky typovaných jazycích, použijete-li vhodný objektový model.
Např. kontrolu neNULLovosti instance, generické kontejnery a přetypování v rukou programátora můžete řešit klasickým způsobem, že k objektům budete přistupovat pouze přes interface.

pan_Tau
pan_Tau (neregistrovaný)
24. 6. 2004 9:35 Nový

Re: Učebnicový příklad

celé vlákno

Navic pokud zacnete pouzivat v C++ templates a STL a zapomenete na pointry a zacnete vse delat staticky nebo pres reference ziskate temer bezpecny program (co se tyce NULL a spatneho pretypovani).

A kdyz pridate pouzivani const bude delat prekladac divy s rychlosti vysledneho kodu.

Myslim si, ze je lepsi kontrolovat co nejvic veci automaticky pri kompilaci, nez za behu resit tisice vyjimek.

Nakonec zavedeni generickych typu do javy je toho dukazem.


Nechapu totiz, v cem je vyhoda, pokud mi pouzitim dynamickych typu vzroste potreba ladit. Kdo nekdy neco vetsiho ladil, vi, ze je to PEKLO. A urcite byl rad, za kazdou pomoc, kterou za nej udelal automaticky compilator.


Budoucnost je nekde jinde. Budoucnost je ve snaze presunout co nejvice prace na automaticke zpracovani.


ALE na maly projekt je asi rychlejsi pouzit PHP

Jan Vrany
Jan Vrany (neregistrovaný)
24. 6. 2004 10:36 Nový

Re: Učebnicový příklad

celé vlákno

Dovolil bych si nesouhlasit. Myslim, ze jste spatne pochopil tu pasaz o potrebe ladeni, soude z vety cituji: Nechapu totiz, v cem je vyhoda, pokud mi pouzitim dynamickych typu vzroste potreba ladit.
Pokud mam dynamicky typovany jazyk smalltalkovskeho typu (dale jen Smalltalkoidni, ale takovy je i LISP, Self...), musim testovat (resp dost dost se to hodi). To znamena, ze pisi unit testy. Jenze - protoze je ten jazyk tak dynamicky, muzu testova nehotove kusy trid, bezprostredne kdyz je napisi (resp si napsat testiky na jednu tridu jeste pred tim, nez ji napisi :-). Takze cyklus design (v malem), implementace, testovani je velmi velmi kratky - 5,10,maximalne 15 minut. O vyhodach unit testu pri refaktoringu ani nemluvim:-) Cili velmi rychle najdu chybu a najdu ji v dobe, kdy mam v hlavne kod, ktery ji zpusobil. Moje osobni (male) zkusenosti s Javou (imho opacna cast spektra) jsou takove, ze abych to otestoval (coz musim) musim to napsat skoro cele - pak najdu chybu a sledovat, proc a kde vlastne...podle me cas straveny ladenim bude podobny u obou pristupu.

Ja jsem neco vetsiho ve smalltalkoidnim jazyce ladil a celkem dost pohoda. Unittesty mi odchytili dost problemu velmi brzo. Naopak ladeni neceho mensiho v C++ bylo pro me peklo - takze bych negeralizoval.

Jak rika pan Krivanek - pri psani v jednom ci druhem jazyce se musi pouzit zasadne odlisny styl.
Pouziti daneho pristupu k programovani v tom "nespravenm" jazyce nutne vede na vyroky typu
"kazdy musi vedet, ze to je peklo." Proto
bych rekl. ze je presnejsi rici "ze tohle je pro me peklo" :-)))

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
24. 6. 2004 10:17 Nový

Re: Učebnicový příklad

celé vlákno

Možnost volby jsem u staticky typovaných jazyků jako výhodu uvést nezapomněl.

yenda
yenda (neregistrovaný)
24. 6. 2004 8:44 Nový

Článek se mi líbil

celé vlákno

Článek se mi líbil, až se proberu, přečtu si jej ještě jednou.
Ale mám pocit, že jsem tam někde zahlédl překlep, "Samalltalku" by měl být spíš "Smalltalku", není-liž pravda?

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
24. 6. 2004 10:07 Nový

Re: Článek se mi líbil

celé vlákno

Nová varianta Smalltalku pro programátory trpící samomluvou.

Johanka
Johanka (neregistrovaný)
24. 6. 2004 12:27 Nový

Re: Článek se mi líbil

celé vlákno

opraveno, dik

Boudino
Boudino (neregistrovaný)
24. 6. 2004 9:06 Nový

Dobry ...

celé vlákno

Dobry clanek, zaslouzi pochvalu.

Rad bych podporil nazor nekoho prede mnou, totiz ze nezalezi ani tak na jazyku, jako na programatorovi, jaky vysledny produkt bude. Jde o to pouzivat jazyk spravne a vytezit z nej maximum.

Ja sam jsem jeste pred rokem delal ve Smalltalku a dodnes na ne nej nedam dopustit. Nyni jsem C# a nemam pocit, ze bych si nejak pohorsil. Vyhrady, ktere k C# jsou dany spise nevyzralosti pomerne novych knihoven trid, nez jazykem samotnym.

lzap
lzap (neregistrovaný)
24. 6. 2004 10:12 Nový

Bezpečnost

celé vlákno

Autor zjevně míchá bezpečnost jazyka (jakkoliv se mi toto vůbec nelíbí) a bezpečnost (resp nebezpečnost) při programování v beztypových jazycích. A tam je větší riziko, že se bude používat proměnná v jiném kontextu, vyšší. Nehledě na to, že kromě špatně odhalitelných chyb se mohou generovat například zbytečné převody číslo-řetězec-číslo ve smyčkách a podobně.

To všechno záleží na programátorovi. Beztypové jazyky tu jsou, jsou dobré, ale bankovní systém by s tím asi žádný tým nedělal. Mimochodem, v práci máme rozsáhlý IS napsaný v Perlu a funguje. Dělají na tom 3 lidé. Je to až k nevíře.

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
24. 6. 2004 10:33 Nový

Re: Bezpečnost

celé vlákno

Zanášíte do toho problematiku slabého a silného typování. Bankovní systémy v dynamicky typovaných jazycích samozřejmě existují, např.

http://smalltalk.cincom.com/smalltalksuccess/index.ssp?id=1&langId=1&content=profile

Ale ve slabě typovaném Perlu skutečně asi ne.

mj
mj (neregistrovaný)
24. 6. 2004 14:01 Nový

Re: Bezpečnost

celé vlákno

Většinu problémů Perlu řeší use strict; a use warnings;.

Martin Zdila
Martin Zdila (neregistrovaný)
24. 6. 2004 12:02 Nový

refactoring

celé vlákno

Zdravim
Clanok sa mi velmi pacil. Programujem vo viacerych jazykoch (Java, PHP, C, C++, JavaScript (OO), troska Perl, TCL ...). Najviac je to v Jave a nemozem si vynachvalit vyvojarske prostredie Eclipse. Neviem ci by u slabo typovanych jazykoch bolo mozne spravit take developerske prostredie, kde by vam pocas pisania programu interaktivne podciarkovalo chyby (hlavne napr tykajuce sa statickeho typovania), doplnalo casti kodu (metody, premenne, ...), navrhovalo samo opravy (ktore su IMHO celkom k veci). Naviac si viem tazko predstavit aj taky refactoring, ktory je u velkych porjektov nutny - napriklad premenovanie a presuvanie objektov, metod, premennych a inych "veci". V Eclipse (Java) je refactoring nieco uzasne - kliknem napr na metodu v class-strome, dam si premenovat a v celom projekte mi to krasne poopravuje na 100% bez chyb. Pri dynamicky typovanych jazykoch by to bolo veru dost tazke.

Velmi sa tesim kedy uz vyjde Java 1.5 - tie genericke typy budu uzasne. A paci sa mi, ze aj PHP 5.0 sa bude dost podobat na Javu, hoci ostane slabo typovanym jazykom (co nechapem ako nieco zle).

Este spomeniem Perl - robil som v nom dost, a casto som ladil metodou pokus / omyl, niekedy som nad nejakou blbostou skoro ostarel. Proste Perl je pre mna hroza.

Este by som sa velmi chcel naucit Python, trosku som ho pozeral, je to cool, len potrebujem nejaku inspiraciu a cas.

Este troska Perl vs C (dufam ze nie offtopic) - dost dlho som potreboval nejaky HTTP proxy, ktory modifikuje stranky (iba prida script na popup okno). Verzia v Perli vyuzivaluca HTTP::Proxy fungovala dobre, ale narocnost na CPU bola neskutocna. Nakoniec som pouzil transproxy (napisane v C) a narast vykonu je mozno 100nasobny. Takze na top critical speed applikacie by som pouzival vylucne iba low-level programovacie jazyky.

Jan Vrany
Jan Vrany (neregistrovaný)
24. 6. 2004 12:18 Nový

Re: refactoring

celé vlákno

Rad bych pripomnel, ze Refactoring a veskera
jeho podpora ve vyvojovem prostredi se poprve
(stejne jako Uinit testing) objevili prave v
prostredi smalltalku a je to uz dost davno.
Zatimco se vsichni vytahuji, ze jejich ide
ma refactoring. Smalltalkeri se jen usmivaji, nebot pro ne je to samozrejmost.
Naopak, co mi rikali lide
co delaji v eclipse, tak refactoring je tam proti
tomu co maji dnesni moderni smalltalky dost
slabej (ale osobne jsem to nevidel :-))

Tim nechci hanit eclipse, netbeans apod,
jen rikam, ze situace je presne opacna :-)

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
24. 6. 2004 12:34 Nový

Re: refactoring

celé vlákno

Přejděme od slov k činům:

ftp://comtalk.net/Squeak-dev.zip

Nejnovější verze Squeaku s Refactoring Browserem, SmallLintem, Monticellem, zvýrazňováním syntaxe včetně podtrhávání chybných výrazů, vyskakovacím doplňováním apod.

Mimo jiné to má i integrovaný VNC client/server pro ovládání a úpravu na pozadí běžících serverů.

Škoda, že neovládáte Smalltalk a jen stěží tak dokážete docenit, zač je toho loket.

(Je u toho přiložen virtuální stroj pro Linux a Win32, takže to stačí stáhnout a spustit VM se souborem *.image jako parametrem)

Yeti
Yeti (neregistrovaný)
24. 6. 2004 12:56 Nový

Re: refactoring

celé vlákno

> Pri dynamicky typovanych jazykoch by to bolo
> veru dost tazke.

V dynamicky typovaném jazyce obvykle při refactoringu nemusíte přejmenovávat ;-)

Ivo
Ivo (neregistrovaný)
24. 6. 2004 15:25 Nový

Re: refactoring

celé vlákno

Do Eclipse existuju pluginy aj na slabo-typovane jazyky. Napr PHP. Neskusal som ale moze to byt dobre ako pre Javu.

hermik
hermik (neregistrovaný)
24. 6. 2004 15:27 Nový

Re: refactoring

celé vlákno

Osobne se mi spise vice libi IdeaJ, dokonce ma JetBrains sidlo tady v Praze. Ma jedinou nevyhodu, stoji 500$, ale 30 dni se da zadarmo zkouset.

xarop
xarop (neregistrovaný)
25. 6. 2004 8:09 Nový

Re: refactoring

celé vlákno

a] pro dynamicky (to jste měl myslím na mysli pod pojem slabě) typované jazyky existují nádherná ide (např. Smalltalk/VisualWorks) umějící více (třeba refactoring) než Eclipse.

b] nástroje pro vizualizaci chyb týkajících se porušení statické typové kontroly v prostředích pro dynamicky typované jazyky nenajdete :)

c] -- není reakcí na váš příspěvek -- statická typová kontrola je pouze opravátor překlepů. No takový opravátor překlepů by byl výhodný. Jenže často jsou ty překlepy právě v kódu zajišťující staticou typovou kontrolu ....

Ondrej 'SanTiago' Zajicek
Ondrej 'SanTiago' Zajicek (neregistrovaný)
24. 6. 2004 15:11 Nový

Bez titulku

celé vlákno

Nedostatkem velke casti silne typovanych jazyku je to, ze zakazuje pouzivani programovacich konstrukci, ktere jsou naprosto korektni, jenom pro ne ve zvolenem typovem systemu neexistuje typ. Trivialni priklad v Haskellu:

\a -> (a a)

Semantika jasna, typovy system tomu nerozumi.

Domnivam se, ze podstatnou cast z vyhod, ktere prinasi staticke typovani jazyku, je mozne dosahnout v dynamickych jazycich pomoci programu typu 'lint', ktere checknou kod a nahlasi typove podezrele kontrukce.

neologism
neologism (neregistrovaný)
24. 6. 2004 17:41 Nový

Re:

celé vlákno

tak tohle bych rekl ze je naprosto blby priklad pac tohle je lambda vyraz a tam se rekurze takhle resit neda... ;) (aspon teda pokud mne zrak nesali)
pokud to melo byt \a -> (a,a) tak to de ne?

Ondrej 'SanTiago' Zajicek
Ondrej 'SanTiago' Zajicek (neregistrovaný)
24. 6. 2004 18:05 Nový

Re:

celé vlákno

Tohle samo o sobe zadnou rekurzi neobsahuje.

beta redukce na lambda vyraz
(\x -> (x x)) A
ti da
(A A)

Kde A je jakykoliv vyraz

Tudiz v netypovem lambda kalkulu je to naprosto korektni

neologism
neologism (neregistrovaný)
24. 6. 2004 18:39 Nový

Re:

celé vlákno

no ale v haskelu je vyraz (a a) volanim funkce a s parametrem a... nebo se mylim? s tim lamba vyrazem souhlasim nicmene ja jsem to myslel (uznavam ze to asi nebylo jasne) jako lambda vyraz v haskellovske semantice

Ondrej 'SanTiago' Zajicek
Ondrej 'SanTiago' Zajicek (neregistrovaný)
24. 6. 2004 18:55 Nový

Re:

celé vlákno

No ano - ten lambda vyraz dostane nejakou funkci jako argument a tu zavola a preda ji jako argument tu samou funkci. Tedy zadna rekurze tam nutne neni.

Nemylim-li se, tak Haskellovska semantika lambda vyrazu je snad v podstate stejna jako semantika v lambda kalkulu.

neologism
neologism (neregistrovaný)
25. 6. 2004 11:54 Nový

Re:

celé vlákno

praveze ja bych rekl ze je... uz z logiky veci
pokud y f = f (y f) (operator pevneho bodu) je rekurze pak i to vase je rekurze pac je to vlastne uplne to same akoratze bez toho f (protoze lamba nema nazev pro funkci zeo) muzu se mylit ale ja to vidim takhle ;)
jinak - tohle nema s clankem nic moc spolecneho takze bych toho zanechal ;) kdyztak mail

subway
subway (neregistrovaný)
25. 6. 2004 12:27 Nový

dotaz na autora

celé vlákno

Prilis nerozumim posledni vete v tretim odstavci od konce

"... Můžete se těšit z daleko bohatších dynamických možností vašich jazyků a z lepší podpory pro ladění a testování."

--

... jinak: kdyz uz je tu ten flame o IDE ... tak si taky prihreju:o)

... me oblibene IDE pro vsechno je: *emacs* a pro javu?: *emacs jdee*

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
25. 6. 2004 13:03 Nový

Re: dotaz na autora

celé vlákno

Dynamicky typované jazyky umožňují většinou měnit program za běhu, stírá se u nich rozdíl mezi programem a daty, mohou vytvářet třídy a metody za běhu (pokud je mají), lze na nich budovat inkrementální systémy, můžete pracovat s nehotovým programem, ladit a testovat přímo během kódování, máte jednodušší prostředky pro automatizované testy a můžete využívat spoustu dalších užitečných drobností, se kterými se v emacsu nesetkáte.

Rejpal
Rejpal (neregistrovaný)
21. 7. 2004 9:20 Nový

Re: nejlepsi ide

celé vlákno

omyl, emacs je jen sqely os, ktery ale bohuzel nema poradny editor, nejlepsi ide je vim ;)

binary_runner
binary_runner (neregistrovaný)
25. 6. 2004 18:13 Nový

typova inference

celé vlákno

A co treba takova typova inference ?

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
25. 6. 2004 19:04 Nový

Re: typova inference

celé vlákno

"...Existují studie, které se touto problematikou zabývají, a funkční projekty, které umožňují pomocí velice sofistikovaných postupů určovat typy smalltalkovských výrazů..."

Konkrétně např. http://typeinference.swiki.net/1

Studie na toto téma se objevují od roku 1983, kdy se Smalltalk dostal na veřejnost. Každopádně má svá principiální omezení a nelze ji použít vždy.

Chose
Chose (neregistrovaný)
25. 6. 2004 21:05 Nový

něco na zub ?

celé vlákno

No chlapci, až sestoupíte z nadoblačných výšin kde se to prohání všemi možnými sofistikovanými jazyky koukněte se na Euphorii, http://www.rapideuphoria.com/, kupodivu se v tom dá taky programovat, a to docela dobře.

Pavel Křivánek
Pavel Křivánek (neregistrovaný)
25. 6. 2004 22:55 Nový

Re: něco na zub ?

celé vlákno

Tak jsem se pokusil trochu sestoupit.

Má zajímavou práci s typy. Nicméně nevidím na ní nic úchvatného. Pro výuku to může být zajímavý jazyk a určitě by mohl konkurovat Pascalu nebo Basicu, ale nic moc víc bych od ní neočekával. Z oněch nadoblačných výšin je vidět pár jazyků, které jsou jednodušší, mocnější a použitelnější. A není třeba si připlácet na debugger.

Zasílat nově přidané příspěvky e-mailem