-
Data: 2013-02-12 10:19:14
Temat: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu wtorek, 12 lutego 2013 00:19:46 UTC+1 użytkownik Andrzej Jarzabek napisał:
> No to odpowiem: ty nie dałbyś, ale kto inny dał. Tajemnica wyjaśniona?
Nie bardzo. Kiedyś pewien akwizytor do mnie zapukał i chciał mi coś sprzedać
powołując się na fakt, że mój sąsiad też kupił. Zgadnij, jaki osiągnął sukces.
> > Poza tym, że obiektowość powstała z myślą o dużych systemach
>
> W którym momencie?
W takim, że w małych nie było powodów, żeby powstała.
> > i sama w sobie nie ma cech, który by były z nimi sprzeczne.
>
> http://c2.com/cgi/wiki?ArgumentsAgainstOop
Przewinąłem losowo i trafiłem na argument "OO runs too slow", z którym nawet autor
tej strony się nie zgadza, ale ponieważ gdzieś to usłyszał, to napisał.
Przyznaję, że rzuciłem też okiem na inne argumenty na tej liście, ale one też mnie
nie porwały.
> http://folk.uio.no/andersmo/oo.html
Przewinąłem losowo i trafiłem na argument "Everything has to be an object".
Sorry, ale dzisiaj mam też trochę pracy do zrobienia.
Jeżeli chciałem pokazać, że na absolutnie każdy temat można znaleźć w necie stronę
zatytułowaną "Why XYZ sucks", to wiem, że można.
> > Jeśli coś ma być inaczej, to ma być po coś i ma się opłacać.
>
> A dlaczego akurat to dynamiczny, a nie statyczny system typów to jest
> "inaczej"?
Bo rozmawialiśmy o możliwości wprowadzenia nowego języka w miejscu, gdzie używa się
czegoś mainstreamowego - w domyśle Javy lub C++. Taki był mniej więcej klimat w tym
wątku i generalnie takie są realia na rynku.
> > Możliwe, ale nie czuję się tym pokrzywdzony a skoro tak, to
> > najwyraźniej nic nie straciłem, że nie widziałem. Poproszę o lepszy
> > argument, niż "niewiele widziałeś".
>
> Poproszę o lepszy argument, niż "nie widziałem".
Ale to nie jest zły argument. Skoro nie widziałem i moi koledzy/koleżanki nie
widzieli w obecnej firmie i w poprzedniej/poprzednich, to przypuszczalnie obserwuję
jakąs regułę albo chociaż coś, co jest obserwacyjnie uzasadnione.
> > Statyczne typowanie ma swój koszt. Pytanie, jaki jest końcowy
> > bilans.
>
> I uważasz, że potrafisz ten bilans policzyć?
Nie, ale oczekuję tego od kogoś, kto mi reklamuje nowe rozwiązanie.
> Poza tym pozostańmy nawet przy heterogeniczności. Dość popularnym
> rozwiązaniem z językami dynamicznymi jest Javascript w przeglądarce i
> jakiś Python czy inny Ruby na serwerze. W celu serializacji obiektów i
> przesyłania ich przez sieć wymyślono format JSON - dzięki niemu można z
> łatwością serializować dane w Pythonie i przesyłać do javascriptowego
> klienta lub odwrotnie. Można to spokojnie robić bez potrzeby
> uzgadaniania definicji typów pomiędzy serwerem a klientem - każda strona
> korzysta z tych właściwości, jakich potrzebuje, i każda jest w stanie
> wziąć odserializowany obiekt i zserializować go z powrotem razem ze
> wszystkimi polami/właściwościami, nawet jeśli nie były one jeszcze
> zdefiniowane w momencie pisania tego kodu.
Tak. Nie mam większych problemów z użyciem C++ w takim systemie, choć zależnie od
użytego rozwiązania w tym jednym konkretnym miejscu składnia dostępu do pola może być
dłuższa.
> BTW można się zastanowić nad faktem, że dynamicznie typowany Erlang jest
> przeznaczony do, i używany w systemach wysokiej niezawodności.
Można. Jak również nad innym faktem, że w wielu systemach wysokiej niezawodności
Erlang nie jest używany.
> Nie jest. Prosty przykład - w C++ nawet niewielka zmiana definicji typu
> danych między biblioteką a programem z niej korzystającym może
> spowodować spektakularne wylecenie wszystkiego w powietrze.
Na moim komputerze kompilator pokaże, gdzie nastąpiła niezgodność.
> > A czy ja gdzieś w tej dyskusji napisałem, że Java jest dla mnie
> > statycznym językiem?
>
> W myśl powszechnie rozumianego podziału na dynamiczne i statyczne
> systemy typów, Java jest językiem o typowaniu statycznym.
class CannotCompare {}
TreeSet<CannotCompare> s = new TreeSet<CannotCompare>(); // 1
s.add(new CannotCompare()); // 2
s.add(new CannotCompare()); // 3
(mniejsza o dokładne nazwy, nie chce mi się tego sprawdzać)
W języku statycznym powyższe nie ma prawa się skompilować. W Adzie wyleci na 1., w
C++ na 2. W Javie kompiluje się radośnie i wylatuje z wyjątkiem dopiero na 3.
Można nawet zrobić unit test, który wykona linijki 1 i 2 i zrobi raport, że jest
dobrze...
W tym przykładzie Java zachowuje się dokładnie jak skryptowy język dynamiczny.
Dodając do tego kulturę, która kieruje programistów w stronę dynamicznego ładowania
klas, opisu ich związków w XML, itd., mamy język, w którym istotnymi elementami są
wyjątki ClassDefNotFound oraz NoSuchFunction.
Jak dla mnie - jeśli coś kwacze jak kaczka, to jest to kaczka.
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
Następne wpisy z tego wątku
- 12.02.13 20:14 Andrzej Jarzabek
- 12.02.13 22:28 Andrzej Jarzabek
- 12.02.13 22:42 M.M.
- 12.02.13 23:27 AK
- 12.02.13 23:32 AK
- 13.02.13 00:25 M.M.
- 13.02.13 01:02 Roman W
- 13.02.13 01:03 Roman W
- 13.02.13 05:37 Andrzej Jarzabek
- 13.02.13 06:31 Andrzej Jarzabek
- 13.02.13 07:11 Roman W
- 13.02.13 09:09 Adam Wysocki
- 13.02.13 10:10 Maciej Sobczak
- 13.02.13 10:29 Maciej Sobczak
- 13.02.13 14:00 Michal Kleczek
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-11-08 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-08 Warszawa => Key Account Manager <=
- 2024-11-08 Szczecin => Key Account Manager (ERP) <=
- 2024-11-08 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-11-08 Wrocław => Senior PHP Symfony Developer <=
- 2024-11-08 Warszawa => QA Engineer <=
- 2024-11-08 Warszawa => QA Inżynier <=
- 2024-11-08 Warszawa => Key Account Manager <=
- 2024-11-08 Gdańsk => Software .Net Developer <=
- 2024-11-08 Akumulator Hyundai
- 2024-11-08 Warszawa => Manager/Specialist e-commerce (B2C) <=
- 2024-11-08 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-08 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-08 znaj podstawe
- 2024-11-08 Chrzanów => Specjalista ds. public relations <=