-
Data: 2013-02-12 20:14:34
Temat: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Feb 12, 9:19 am, Maciej Sobczak <s...@g...com> wrote:
> 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.
Jak będę kiedyś chciał ci coś sprzedać, to może się zainteresuję.
> > > 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.
Kto konkretnie, kiedy i co takiego zrobił z myślą o dużych systemach?
Bo mi wygląda na to, że opowiadasz o wymyślonej przez siebie historii
OO, a nie tej, która faktycznie miała miejsce.
> > > 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",
[...]
> Przewinąłem losowo i trafiłem na argument "Everything has to be an object".
Poszczególne argumenty odnoszą się do różnych definicji
obiektowości...
> 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.
Chodzi o to, że różnie można interpretować "cechy sprzeczne".
Technicznie nawet assembler nie posiada cech sprzecznych z dużymi
systemami, skoro istnieją duże systemy napisane w assemblerze.
To czy owo może posiadać cechy przeszkadzające albo pomocne w pisaniu
dużych systemów, ale to kategorie subiektywne - cechy przeszkadzające
komuś lub pomocne dla kogoś.
> > > 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++.
To nie ta odnoga dyskusji :)
Przy takim pytaniu nie da się przecież odpowiedzieć abstrakcyjnie:
zarówno C++ jak i Java mają swoje ograniczenia, każdy projekt ma swoje
okoliczności. Jeśli np. chcesz mieć UI w przeglądarce, to możesz
zaimplementować go:
* w dynamicznym Javascript
* jako aplikacja flashowa w dynamicznym actionScript czy jak to się
tam nazywa
* jako applet Javowy
* w C++ jako komponent ActiveX
Nie powiesz chyba, że skoro używasz już C++ albo Javy, to rozwiązanie
z tym właśnie językiem jest oczywistym wyborem.
Inny przykład, tym razem z osobistego doświadczenia: miałem rozbudować
możliwości programowania narzędzia testowego napisanego w Javie.
Zdecydowałem się zrobić to przez dodanie DSL-a. Żeby zrobić to szybko,
postanowiłem zaimplementowac embedded DSL i wybrałem do tego język
Groovy, który ma dynamiczny system typów. Z różnych względów Groovy
nadaje się świetnie do osadzania DSL-i w programach Javovwych -
wystarczy zlinkować program z jednym JAR-em, który jest dostępny w
standardowych repozytoriach (my używamy Mavena), poza tym jest
interpretowany i użytkownik może sobie program w DSL-u napisac w pliku
i uruchomić go tym narzędziem testowym - żadna faza kompilacji nie
jest potrzebna. Poza tym ma dynamiczny meta-object protocol jako część
owego dynamicznego systemu typów, przez co świetnie się nadaje do
pisania DSL-i. Pewnie dałoby się mieć język statycznie typowany,
który się równie dobrze, a może nawet lepiej nadaje do pisania DSL-i -
ja wiem o Haskellu, ale nie znam Haskella, a Groovy trochę znam i
nawet mam (kupioną w tym celu) książkę o pisaniu DSL-i w Groovym, poza
tym Haskell nie jest na JVM więc musiałbym wszystko posklejać i
dołączyć kompilator Haskella do projektu. W statycznie typowanej Javie
ani nawet w statycznie typowanej Scali nie dałoby sie zrobić równie
dobrego i wygodnego w użyciu DSL-a.
Czy w takiej sytuacji byś uznał, że wprowadzenie języka dynamicznie
typowanego do projektu w mainstreamowej Javie ma sens?
> Taki był mniej więcej klimat w tym wątku i generalnie takie są realia na rynku.
No bo Pythona czy Ruby to się w ogóle na rynku nie spotyka.
> > > 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.
Na ten temat musisz porozmawiać z tym, co ci reklamuje.
Nawiasem mówiąc, w nawiązaniu do odnogi dyskusji o wprowadzaniu
języków programowania przez programistę, najlepszy sposób uwalenia
dowolnej inicjatywy innowacyjnej to zażądanie przedstawienia bilansu.
Na zasadzie: "postawiliśmy checkboxa dla Scali bo ma lambdy? Proszę o
konkretny dowód na to, że języki z lambdami są mniej błedogenne niż
języki bez lambd".
Wagi przy checkboxach dają dodatkową zabawę "prosze mi pokazać
metodologię, z której wyliczyłeś, że pattern matching ma relatywną
wagę 2.7".
Bo bilans wyciągnięty z odbytu to każdy potrafi pokazać.
Następne wpisy z tego wątku
- 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
- 13.02.13 14:56 Piotr Chamera
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 <=