eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingjaki wybrac jezyk?Re: jaki wybrac jezyk?
  • Data: 2011-08-19 20:05:25
    Temat: Re: jaki wybrac jezyk?
    Od: Zbigniew Malec <a...@i...invalid> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Mon, 15 Aug 2011 12:46:29 -0700 (PDT), Maciej Sobczak wrote:

    >> *W tym  
    >> kontekście* absolutnie zgadzam się ze stwierdzeniem, że w Javie robi się  
    >> mniej błędów.

    > Otóż nie, to nie przeszkadza w robieniu błędów. Ten mechanizm je co
    > najwyżej wykrywa. W run-time. Nic nie stoi na przeszkodzie, żeby
    > wysłać klientowi program z błędem i w tym kontekście uważam, że Java
    > nie wnosi istotnego postępu w dziedzinie poprawności.

    Otóż właśnie przeszkadza w popełnianiu pewnej klasy błędów. Najbardziej
    oczywistą klasą błędów są błędy wynikające z użycia błędnego wskaźnika - w
    Javie się to po prostu nie zdarza. O wycieki pamięci też jest dużo
    trudniej. A to jest tylko najbardziej oczywisty przykład.

    > Jawne deklarowanie wyjątków się nie sprawdziło w praktyce i Javowcy
    > masowo to pomijają. Nie, nie chodzi o początkujących adeptów, robią
    > tak również projektanci poważnych frameworków. Po prostu się nie
    > sprawdziło.

    A mi właśnie brakuje takiego jawnego deklarowania wyjątków w językach,
    które go nie używają. Są sytuacje, w których jest to denerwujące, ale dla
    mnie w większości przypadków jest to po prostu wygoda.

    > import java.util.TreeSet;
    >
    > class NonComparable {}
    >
    > public class Test {
    > public static void main(String[] args) {
    > TreeSet<NonComparable> mySet = new TreeSet<NonComparable>();
    > mySet.add(new NonComparable());
    > mySet.add(new NonComparable());
    > }
    > }
    >
    > W funkcji main są trzy linijki.
    > W języku z poważną statyczną kontrolą typów powinien być błąd
    > kompilacji w pierwszej linii, gdzie tworzony jest bezsensowny typ
    > zbioru. Tak się stanie np. w Adzie (w równoważnym przykładzie).

    To *w ogóle* nie jest kwestia siły typowania języka, tylko rozwiązania z
    biblioteki. To jest tylko i _wyłącznie_ kwestia api udostępnianego przez
    klasę TreeSet. Po prostu TreeSet nie narzuca na klasy konieczności
    implementowania interfejsu Comparable. Co więcej, umożliwia korzystanie z
    klas, które tego interfejsu nie implementują. Można bez problemu napisać w
    Javie odpowiednik TreeSet, którego użycie spowodowałoby błąd kompilacji już
    w pierwszej linijce. Więc tak, jest tutaj silniejsza kontrola typów.

    --
    Pozdrawiam
    Zbyszek Malec

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: