Article View: pl.comp.objects
Article #16718Re: Groovy
From: waldemar.kot
Date: Sun, 06 May 2007 14:11
Date: Sun, 06 May 2007 14:11
59 lines
4790 bytes
4790 bytes
Aleksander Galicki wrote:
- Ale unit testy nie zastapia statycznego typowania. -
No właśnie to negują zwolennicy dynamicznego typowania. Jak patrzę na
w miarę niereligijnie prowadzone dyskusje (np. No Fluff Just Stuff),
to właśnie zwolennicy dynamicznego typowania upierają się, że
statyczne typowanie nie eliminuje błędów (poza - jak twierdzą -
głupimi, typu literówki, które łatwo wyjdą podczas pierwszego
uruchomienia testów lub programu) - a jedynie "zadowala" kompilator.
Błędy semantyczne pozostaną. I podkreślają przy tym, że nie ma co
nawet myśleć o dynamicznym typowaniu, jeśli nie ma się nawyku
pokrywania tworzonego kodu unit testami (przy tym podają miary
pokrycia na poziomie minimum 90%). Przyznam, że mnie to przekonuje (a
przynajmniej na razie - nie popełniłem jeszcze żadnej dużej aplikacji
w takim języku jak choćby Groovy - stąd staram się nie popadać w
skrajności i słuchać argumentów każdej ze stron). Z drugiej strony -
to co starałem się przy okazji Grooviego podkreślić - że można używać
zarówno statycznego (np. String s = 'W') jak i dynamicznego typowania.
Dynamiczne, też w dużym stopniu polega na określaniu typu implicite
(np. def i = 1.0f powoduje, że zmienna i jest typu java.lang.Float).
Każda zmienna ma typ i muszą być zdefiniowane ścisłe reguły konwersji
między typami - miejsca na magię nie ma. Gdzieś podczas przyglądania
się Grooviemu napotkałem taki rule of thumb, że jeśli podczas
tworzenia kodu "myślimy" o typie, to warto go zadeklarować, ale jeśli
myślimy po prostu o obiekcie, to można zastosować dynamiczne
typowanie.
Co do interfejsów - zgoda - ale jak się przyglądam implementacji
generyków w Java 5 (choćby w kontekście ich użycia w interfejsach, po
to aby interfejs i jego implementacje były w miarę zwięzłe), to w
sumie i tak statyczne typowanie jest często tracone, bo np. generyczne
kolekcje wewnętrznie i tak korzystają z Object.
Wydaje mi się, że dużo zależy od indywidualnego stylu programisty i
tego czy wie po co dane narzędzie zastosował - jak to z narzędziami
bywa - czasem można się pokaleczyć..
Cóż - jeśli efektem zainteresowania SOA będzie stosowanie interfejsów
i luźnych połączeń, a efektem zainteresowania językami typu Groovie
czy Ruby będzie wzrost "popularności" unit testów, to chyba warto siać
marketingiem ;-)
Co do Grooviego - to co moim zdaniem przede wszystkim wyklucza go NA
RAZIE z poważniejszych zastosowań, to:
- młody wiek implementacji ("niewygrzanie")
- wciąż duże tempo zmian w samym języku i jego otoczce
- słabe wsparcie narzędziowe (np. IDE)
- słabe wsparcie komercyjne (co pewnie jest pochodną dwóch pierwszych)
- tak, aby zaspokoić odbiorców enterprise
Co do tego co napisał A.L. - dzięki za podzielenie się doświadczeniem
(wow - milion linii w Smalltalku - ile Wam wyszło linii w Java ?). Tak
z ciekawości zapytam - czy te błędy miały związek z brakiem typowania
(bo chyba w Smalltalku ten dynamizm jest aż tak daleko posunięty -
poprawcie jeśli się mylę) ?
Pozdrawiam,
Waldek Kot
BEA
Technical Details
Message-ID:
<1178460667.001733.20730@h2g2000hsg.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!h2g2000hsg.googlegroups.com!not-for-mailReferences:
<f170i0$5uk$1@inews.gazeta.pl> <1178227403.287154.200390@l77g2000hsb.googlegroups.com> <f1dsp0$sqg$1@inews.gazeta.pl> <1178282685.193292.74900@y5g2000hsa.googlegroups.com> <f1g7tk$2g1$1@inews.gazeta.pl> <1178314635.903067.318510@p77g2000hsh.googlegroups.com> <f1g9ra$9ov$1@inews.gazeta.pl> <1178323414.721252.49930@y5g2000hsa.googlegroups.com> <f1h626$2cn$1@inews.gazeta.pl> <1178369045.701778.37370@e65g2000hsc.googlegroups.com> <f1jgpf$rra$1@inews.gazeta.pl> <74kq33tqj7drfb8pq59sogveuuuddjflu6@4ax.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!h2g2000hsg.googlegroups.com!not-for-mail From: waldemar.kot@bea.com Newsgroups: pl.comp.objects Subject: Re: Groovy Date: 6 May 2007 07:11:07 -0700 Organization: http://groups.google.com Lines: 72 Message-ID: <1178460667.001733.20730@h2g2000hsg.googlegroups.com> References: <f170i0$5uk$1@inews.gazeta.pl> <1178227403.287154.200390@l77g2000hsb.googlegroups.com> <f1dsp0$sqg$1@inews.gazeta.pl> <1178282685.193292.74900@y5g2000hsa.googlegroups.com> <f1g7tk$2g1$1@inews.gazeta.pl> <1178314635.903067.318510@p77g2000hsh.googlegroups.com> <f1g9ra$9ov$1@inews.gazeta.pl> <1178323414.721252.49930@y5g2000hsa.googlegroups.com> <f1h626$2cn$1@inews.gazeta.pl> <1178369045.701778.37370@e65g2000hsc.googlegroups.com> <f1jgpf$rra$1@inews.gazeta.pl> <74kq33tqj7drfb8pq59sogveuuuddjflu6@4ax.com> NNTP-Posting-Host: 217.197.168.106 Mime-Version: 1.0 X-Trace: posting.google.com 1178460668 23677 127.0.0.1 (6 May 2007 14:11:08 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Sun, 6 May 2007 14:11:08 +0000 (UTC) In-Reply-To: <74kq33tqj7drfb8pq59sogveuuuddjflu6@4ax.com> User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3,gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: h2g2000hsg.googlegroups.com; posting-host=217.197.168.106; posting-account=F1cYYw0AAADKFC1PXejf3vwFasL5urYN Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit