-
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
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
Najnowsze wątki
- 2025-05-12 Gliwice => Business Development Manager - Network and Network Security
- 2025-05-12 Warszawa => Junior Rekruter <=
- 2025-05-12 Białystok => Programista Mainframe (z/OS, Assembler) <=
- 2025-05-12 Warszawa => Programista Microsoft Dynamics 365 Finance & Operations (D
- 2025-05-12 Wrocław => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-05-12 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2025-05-12 Warszawa => Spedytor Międzynarodowy <=
- 2025-05-12 kolizja na chodniku nie ma odszkodowania
- 2025-05-12 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-05-12 presja na aplikacje i blik
- 2025-05-12 czy znacie bardziej popierdolone sieci niż polskie?
- 2025-05-12 czy znacie bardziej popierdolone sieci niż polskie?
- 2025-05-11 Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- 2025-05-11 Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- 2025-05-11 obca rejestracja budzi agresję