eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJakie typowanie jest najlepsze i dlaczego statyczne?Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
  • X-Received: by 10.49.58.140 with SMTP id r12mr1289378qeq.35.1360696474700; Tue, 12
    Feb 2013 11:14:34 -0800 (PST)
    MIME-Version: 1.0
    X-Received: by 10.49.58.140 with SMTP id r12mr1289378qeq.35.1360696474700; Tue, 12
    Feb 2013 11:14:34 -0800 (PST)
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!goblin1!goblin.stu.neva.ru!p13no13551359qai.0!news-out.google.com!k2ni
    24985qap.0!nntp.google.com!p13no12332575qai.0!postnews.google.com!hl5g2000vbb.g
    ooglegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Tue, 12 Feb 2013 11:14:34 -0800 (PST)
    Complaints-To: g...@g...com
    Injection-Info: hl5g2000vbb.googlegroups.com; posting-host=80.254.146.36;
    posting-account=jr5y-woAAAAWidgVjrSJ6j8m650CTb-v
    NNTP-Posting-Host: 80.254.146.36
    References: <f...@g...com>
    <keuri4$nje$1@somewhere.invalid>
    <1...@g...com>
    <keuusd$ovj$1@somewhere.invalid>
    <7...@g...com>
    <kf1b5r$cvj$1@somewhere.invalid>
    <51152b96$0$1306$65785112@news.neostrada.pl>
    <3...@x...googlegroups.com>
    <4...@g...com>
    <kf61vl$fh0$1@somewhere.invalid>
    <c...@g...com>
    <kf8mrj$piq$1@somewhere.invalid>
    <3...@g...com>
    <kf9c7i$61o$1@somewhere.invalid>
    <8...@g...com>
    <kfbuak$lvs$1@somewhere.invalid>
    <0...@g...com>
    User-Agent: G2/1.0
    X-HTTP-UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like
    Gecko) Chrome/24.0.1312.56 Safari/537.17,gzip(gfe)
    Message-ID: <5...@h...googlegroups.com>
    Subject: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
    From: Andrzej Jarzabek <a...@g...com>
    Injection-Date: Tue, 12 Feb 2013 19:14:34 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:202025
    [ ukryj 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ć.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: