-
51. Data: 2011-08-15 18:11:52
Temat: Re: jaki wybrac jezyk?
Od: "Wojciech \"Spook\" Sura" <spook"mad@hatter"op.pl>
Dnia 14-08-2011 o 14:23:40 Maciej Sobczak <s...@g...com>
napisał(a):
> On Aug 13, 10:56 pm, m...@t...pl wrote:
>
>> Nie znam takich języków jak Prolog, Lisp, Python, Perl. Zastanawiam
>> się czy warto któregoś się pouczyć.
>
> Warto. wszystkich, może oprócz Perla.
>
>> Kiedyś Java była reklamowana w ten sposób, że pisząc w Javie
>> popełnia się mniej błędów, że Java ma np. kontrolę zakresów
>> tablic, itd.
>
> To jest akurat bzdurny argument. To, że Java ma kontrolę zakresów
> tablic kompletnie nie przeszkodzi w zrobieniu błędu polegającego na
> użyciu złego indeksu. W tej kategorii Java stoi na tym samym poziomie
> co C, bo do obsługi indeksów ma jednego biednego inta.
> Natomiast run-time Javy taki błąd wykryje i strzeli wyjątkiem, czyli
> wywali się ładnie zamiast nieładnie. I to jest właśnie cały postęp:
> można pisać programy, które się ładnie wywalają.
> Faktem jest, że wielu ludziom to wystarcza, ale to nie jest ten sam
> argument.
To nie jest prawda. Jest możliwe, że taki program w C nie tyle wywali się
nieładnie, co w ogóle się nie wywali - ba, w niektórych okolicznościach
będzie nawet działał poprawnie. Zdecydowanie wolę, żeby program z marszu
rzucił wyjątkiem niż żeby działał dalej w niezdefiniowany sposób. *W tym
kontekście* absolutnie zgadzam się ze stwierdzeniem, że w Javie robi się
mniej błędów.
Poza tym chodzi tu o cały pakiet tego typu wymogów językowych - m.in.
jawne deklarowanie rzucanych wyjątków, silniejsza kontrola typów i tak
dalej.
W dyskusji na temat tego, czy jeden język jest bardziej błędogenny od
drugiego warto zastanowić się, czy rozmawiamy o teorii, czy o praktyce. W
teorii jawne deklarowanie rzucanych wyjątków nie powstrzyma mnie przed
zadeklarowaniem, że klasa rzuca Exception i olaniem całej kwestii. W
praktyce czasami może zdarzyć się, że kompilator zgłosi mi, że nie
obsłużyłem jakiegoś wyjątku, o którym po prostu zapomniałem - i już mam
jedną ryzykowną sytuację z głowy.
Ponadto kwestia błędogenności języka jest mocno subiektywna. Jeśli ktoś
łapanie wyjątków ma głęboko gdzieś, to nie ma żadnego znaczenia, czy pisze
w C++, w C# czy w Javie, bo w każdym z nich ma możliwość zignorowania
rzuconego wyjątku.
Pozdrawiam -- Spook.
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !
-
52. Data: 2011-08-15 18:22:39
Temat: Re: jaki wybrac jezyk?
Od: A.L. <l...@a...com>
On Mon, 15 Aug 2011 20:11:52 +0200, "Wojciech \"Spook\" Sura"
<spook"mad@hatter"op.pl> wrote:
>Dnia 14-08-2011 o 14:23:40 Maciej Sobczak <s...@g...com>
>napisał(a):
>
>> On Aug 13, 10:56 pm, m...@t...pl wrote:
>>
>>> Nie znam takich języków jak Prolog, Lisp, Python, Perl. Zastanawiam
>>> się czy warto któregoś się pouczyć.
>>
>> Warto. wszystkich, może oprócz Perla.
>>
>>> Kiedyś Java była reklamowana w ten sposób, że pisząc w Javie
>>> popełnia się mniej błędów, że Java ma np. kontrolę zakresów
>>> tablic, itd.
>>
>> To jest akurat bzdurny argument. To, że Java ma kontrolę zakresów
>> tablic kompletnie nie przeszkodzi w zrobieniu błędu polegającego na
>> użyciu złego indeksu. W tej kategorii Java stoi na tym samym poziomie
>> co C, bo do obsługi indeksów ma jednego biednego inta.
>> Natomiast run-time Javy taki błąd wykryje i strzeli wyjątkiem, czyli
>> wywali się ładnie zamiast nieładnie. I to jest właśnie cały postęp:
>> można pisać programy, które się ładnie wywalają.
>> Faktem jest, że wielu ludziom to wystarcza, ale to nie jest ten sam
>> argument.
>
>To nie jest prawda. Jest możliwe, że taki program w C nie tyle wywali się
>nieładnie, co w ogóle się nie wywali - ba, w niektórych okolicznościach
>będzie nawet działał poprawnie. Zdecydowanie wolę, żeby program z marszu
>rzucił wyjątkiem niż żeby działał dalej w niezdefiniowany sposób. *W tym
>kontekście* absolutnie zgadzam się ze stwierdzeniem, że w Javie robi się
>mniej błędów.
>
>Poza tym chodzi tu o cały pakiet tego typu wymogów językowych - m.in.
>jawne deklarowanie rzucanych wyjątków, silniejsza kontrola typów i tak
>dalej.
Jednak na koncu lancucha jest programista. Typowe jest deklarowanie
wyjatkow jako podklas RuntimeException. Dlaczego?... No, jak mi
tlumaczyl pewnien mlody "miszcz" bo jak sie zadeklaruje jako Exception
to potem ciagle trzeba pisac "throws".
Neistety, sztuka pisania programow odpornych jest sztuka i jest w
rekach programisty.
Otwarty pozostaje problem bledow ktore mozna wykryc podczas
kompilacji. I tu z Kolega Sobczakiem sie zgadzam - z jezykow
"popularnych" Ada jest pod tym wzgledem bezkonkurencyjna. Co nei
znaczy ze w Adzie tez nie mozna pisac byle jak.
A.L.
-
53. Data: 2011-08-15 18:24:24
Temat: Re: jaki wybrac jezyk?
Od: A.L. <l...@a...com>
On Mon, 15 Aug 2011 19:13:41 +0200, m...@t...pl wrote:
>> On Mon, 15 Aug 2011 17:38:29 +0200, m...@t...pl wrote:
>
>> >W C i w C++ od dawna jest arytmetyka wskaźników, polega ona np. na
>> >dodaniu do wskaźnika zmiennej typu int. Od zawsze w programach
>> >wymagających wydajności znajdowały się w nich ujemne wartości
>> Bzdura
>To że Panu nie przyszedł do głowy żaden pomysł na wykorzystanie
>ujemnych indeksów nie oznacza jeszcze że to jest bzdurą :)
>Pozdrawiam
Owszem. Uzywalem je nagminnie w Fortranie IV. Ale od tego czasu stuka
programowania poczynila jednak pewien postep. Nie widze powodow aby
uzywac ukemnych indeksow w C++.
A.L.
-
54. Data: 2011-08-15 18:59:38
Temat: Re: jaki wybrac jezyk?
Od: "R. P." <r...@w...to.wp.pl>
A.L. wrote:
> On Mon, 15 Aug 2011 20:11:52 +0200, "Wojciech \"Spook\" Sura"
> <spook"mad@hatter"op.pl> wrote:
>
>> Dnia 14-08-2011 o 14:23:40 Maciej Sobczak <s...@g...com>
>> napisał(a):
>>
>>> On Aug 13, 10:56 pm, m...@t...pl wrote:
>>>
>>>> Nie znam takich języków jak Prolog, Lisp, Python, Perl. Zastanawiam
>>>> się czy warto któregoś się pouczyć.
>>> Warto. wszystkich, może oprócz Perla.
>>>
>>>> Kiedyś Java była reklamowana w ten sposób, że pisząc w Javie
>>>> popełnia się mniej błędów, że Java ma np. kontrolę zakresów
>>>> tablic, itd.
>>> To jest akurat bzdurny argument. To, że Java ma kontrolę zakresów
>>> tablic kompletnie nie przeszkodzi w zrobieniu błędu polegającego na
>>> użyciu złego indeksu. W tej kategorii Java stoi na tym samym poziomie
>>> co C, bo do obsługi indeksów ma jednego biednego inta.
>>> Natomiast run-time Javy taki błąd wykryje i strzeli wyjątkiem, czyli
>>> wywali się ładnie zamiast nieładnie. I to jest właśnie cały postęp:
>>> można pisać programy, które się ładnie wywalają.
>>> Faktem jest, że wielu ludziom to wystarcza, ale to nie jest ten sam
>>> argument.
>> To nie jest prawda. Jest możliwe, że taki program w C nie tyle wywali się
>> nieładnie, co w ogóle się nie wywali - ba, w niektórych okolicznościach
>> będzie nawet działał poprawnie. Zdecydowanie wolę, żeby program z marszu
>> rzucił wyjątkiem niż żeby działał dalej w niezdefiniowany sposób. *W tym
>> kontekście* absolutnie zgadzam się ze stwierdzeniem, że w Javie robi się
>> mniej błędów.
>>
>> Poza tym chodzi tu o cały pakiet tego typu wymogów językowych - m.in.
>> jawne deklarowanie rzucanych wyjątków, silniejsza kontrola typów i tak
>> dalej.
>
> Jednak na koncu lancucha jest programista. Typowe jest deklarowanie
> wyjatkow jako podklas RuntimeException. Dlaczego?... No, jak mi
> tlumaczyl pewnien mlody "miszcz" bo jak sie zadeklaruje jako Exception
> to potem ciagle trzeba pisac "throws".
>
> Neistety, sztuka pisania programow odpornych jest sztuka i jest w
> rekach programisty.
>
> Otwarty pozostaje problem bledow ktore mozna wykryc podczas
> kompilacji. I tu z Kolega Sobczakiem sie zgadzam - z jezykow
> "popularnych" Ada jest pod tym wzgledem bezkonkurencyjna. Co nei
> znaczy ze w Adzie tez nie mozna pisac byle jak.
A znasz jakis, chocby jeden duzy profesjonalny projekt napisany w Adzie?
-
55. Data: 2011-08-15 19:37:08
Temat: Re: jaki wybrac jezyk?
Od: "slawek" <s...@h...pl>
Użytkownik "A.L." <l...@a...com> napisał w wiadomości grup
dyskusyjnych:qvoi47hfhumcqm0ivm8l4gkuhb07l27e4e@4ax.
com...
> Owszem. Uzywalem je nagminnie w Fortranie IV. Ale od tego czasu stuka
> programowania poczynila jednak pewien postep. Nie widze powodow aby
> uzywac ukemnych indeksow w C++.
A jaki problem dać Dimension A(-16:16) w Fortranie 95 lub nowszym?
Oczywiście nie muszę tłumaczyć, na czym polega przesunięcie zakresu z 0,1,
..., n-1 na 1,2, ..., n w zwykłym C. I dlaczego teraz są z tym problemy.
-
56. Data: 2011-08-15 19:39:17
Temat: Re: jaki wybrac jezyk?
Od: A.L. <l...@a...com>
On Mon, 15 Aug 2011 21:37:08 +0200, "slawek" <s...@h...pl> wrote:
>
>Użytkownik "A.L." <l...@a...com> napisał w wiadomości grup
>dyskusyjnych:qvoi47hfhumcqm0ivm8l4gkuhb07l27e4e@4ax
.com...
>> Owszem. Uzywalem je nagminnie w Fortranie IV. Ale od tego czasu stuka
>> programowania poczynila jednak pewien postep. Nie widze powodow aby
>> uzywac ukemnych indeksow w C++.
>
>A jaki problem dać Dimension A(-16:16) w Fortranie 95 lub nowszym?
>
Ja napisakem: UZYWALEM W FORTRANIE IV. FORTRANIE _ CZTREY
A.L.
-
57. Data: 2011-08-15 19:46:29
Temat: Re: jaki wybrac jezyk?
Od: Maciej Sobczak <s...@g...com>
On Aug 15, 8:11 pm, "Wojciech \"Spook\" Sura" <spook"mad@hatter"op.pl>
wrote:
> To nie jest prawda. Jest możliwe, że taki program w C nie tyle wywali się
> nieładnie, co w ogóle się nie wywali - ba, w niektórych okolicznościach
> będzie nawet działał poprawnie. Zdecydowanie wolę, żeby program z marszu
> rzucił wyjątkiem niż żeby działał dalej w niezdefiniowany sposób.
Tak, jest w tym jakaś wartość. Przynajmniej wiadomo, że program nie
brnie "w buraki".
> *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.
> Poza tym chodzi tu o cały pakiet tego typu wymogów językowych - m.in.
> jawne deklarowanie rzucanych wyjątków,
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.
> silniejsza kontrola typów
Np. gdzie?
Bo ja znalazłem taki fajny przykład:
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).
W języku z trochę gorszą kontrolą typów poleci błąd kompilacji w
drugiej linii, gdzie dodawany jest element do zbioru. Tak jest w C++.
W języku, który jest niepoważny, błąd poleci dopiero w run-time i
dopiero w trzeciej linii, chociaż ona kompletnie nie różni się od
drugiej. Tak jest w Javie i większości skryptowych.
Sorki, ale dla mnie to lipa.
> i tak
> dalej.
To "i tak dalej" to głównie marketing.
> W dyskusji na temat tego, czy jeden język jest bardziej błędogenny od
> drugiego warto zastanowić się, czy rozmawiamy o teorii, czy o praktyce.
Oj, tak. :-D
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
-
58. Data: 2011-08-15 19:49:25
Temat: Re: jaki wybrac jezyk?
Od: Maciej Sobczak <s...@g...com>
On Aug 15, 8:59 pm, "R. P." <r...@w...to.wp.pl>
wrote:
> A znasz jakis, chocby jeden duzy profesjonalny projekt napisany w Adzie?
http://www.seas.gwu.edu/~mfeldman/ada-project-summar
y.html
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
-
59. Data: 2011-08-15 21:07:19
Temat: Re: jaki wybrac jezyk?
Od: Michoo <m...@v...pl>
W dniu 15.08.2011 19:23, R. P. pisze:
> A.L. wrote:
>> Przykro mi, ale od zawsze mam taka politke ze osoby dyskutujace na
>> temat mojej skromnej osoby wsadzam do KF.
>> A.L.
>
> Moze po prostu osoby zadajace "niewygodne" dla ciebie pytania wrzucasz
> do KF, co? :)
Udzielające "niewygodnych" odpowiedzi na zadane przez niego pytania też ;)
--
Pozdrawiam
Michoo
-
60. Data: 2011-08-15 21:48:00
Temat: Re: jaki wybrac jezyk?
Od: "R. P." <r...@w...to.wp.pl>
Michoo wrote:
> W dniu 15.08.2011 19:23, R. P. pisze:
>> A.L. wrote:
>>> Przykro mi, ale od zawsze mam taka politke ze osoby dyskutujace na
>>> temat mojej skromnej osoby wsadzam do KF.
>>> A.L.
>>
>> Moze po prostu osoby zadajace "niewygodne" dla ciebie pytania wrzucasz
>> do KF, co? :)
> Udzielające "niewygodnych" odpowiedzi na zadane przez niego pytania też ;)
>
Taaa, pamietam to jego zadanie ze wspolbieznego, ktore rozwiazales.
Oczywiscie pewnie przeczytal, zastanowiwszy sie, ze jednak nie bylo
takie trudne jak pierwotnie myslal, wsadzil Cie do KF. Dobre ;) Nawet
bardzo dobre :)