Re: Expertyza, czyli o Jacku slow kilka

Autor: Michal Zalewski (lcamtuf_at_gis.net)
Data: Sat 30 Jun 2001 - 23:55:29 MET DST


On Sat, 30 Jun 2001, Kolory wrote:

> Jakich to niebezpieczne nawyki masz na myśli ?

O, myslalem ze mam od Ciebie wiekulistego plonka za niemerytoryczne
dyskusje? Swiat sie zmienia. Niebezpieczne nawyki jako takie? Sposob
konstruowania kodu - wlasciwie wszystko, obsluga bledow, przepisywanie
danych, kontrola poprawnosci danych, interakcja z otoczeniem, itp. Java
dziedziczy po potomkach troche brzydactw (znowu, podkreslam, nie twierdze
ze jest to zly jezyk - po prostu ma zady i walety), jak chocby dosc
prymitywna kontrola nad typami, ich kompatybilnoscia, ograniczaniem, range
checkingiem. Jest o niebo lepiej niz w C, lepiej niz w C++, ale wciaz nie
jest to ideal. Porownaj sobie to, jak w Adzie mozesz precyzyjnie
kontrolowac typy oraz ich kompatybilnosc - Java jest tu nieco w plecy.

Zeby nie byc za bardzo goloslownym, moj ulubiony url ;)
http://www.adahome.com/Ammo/cpp2ada.html

Jesli to nie rozwiaze Twoich problemow, proponowalbym jakis FUT na inna
grupe przynajmniej ;>

> Nie wiem czy zdajesz sobie sprawę, że rynek nie zgłasza
> zapotrzebowania na programistów Ady czy konkretnych języków
> funkcyjnych.

Oj nie bredz. Jakos nie slyszalem o tym, zeby czlowiek z paruletnim
doswiadczeniem w Adzie i jezykach funkcyjnych mial problemy ze
znalezieniem bardzo dobrze platnej pracy w Stanach. Regula sa tu zarobki
ok. 1.5-2 razy wieksze niz dla programistow w C.

http://lcamtuf.na.export.pl/adaref.txt

To jakas krotka lista najciekawszych projektow w samej tylko Adzie.

Oczywiscie, Polska to Polska, ale tu i bedac programista w C++ mozna miec
klopoty. Nie wydaje mi sie, by ktokolwiek szukal programistow w Adzie jako
podstawowym jezyku. Powod dosc prosty - programisci w C++ sa na ogol tansi
(przynajmniej na zachodzie) - oczywiscie nie odnosi sie to do wszystkich,
najwazniejsze jest doswiadczenie i jakos pracy, a nie jezyk. Ale coz tu
powiedziec? Rynek dla programistow znajacych tylko Jave tez w Polsce nie
za wielki, czyz nie?

> W jakim celu ? Co przyjdzie informatykowi czy programiście z
> nauczenia się programowania sprzętu ?

Nie mowilem o programowaniu sprzetu, tylko o rozumieniu sprzetu. Co to
daje? Umiejetnosc radzenia sobie w sytuacjach gdy srodowisko
programistyczne lub mozg tegoz programisty przejawia niedoskonalosci.
Czasem cos, co powinno dzialac, nie dziala. Pomylka czlowieka. Kogo? Ano,
czasem trzeba ustalic, czy to blad kompilatora, czy blad systemu,
bibliotek czy tez po prostu nasza pomylka, ktorej nie potrafimy dostrzec.
I wtedy wiedza na temat assemblera i wladanie debuggerem i rozumienie co
tez system operacyjny robi i jak bardzo pomaga.

> Zupełnie nie rozumiem zarzutu. Chodzi o to, że wszyscy jej używają
> a chciałbyś tylko Ty snobować się nią ?

Java nie jest szalenie popularnym jezykiem. Ma niezaprzeczalna pozycje,
ale nie wyparla C/C++ i prawdopodobnie nie wyprze, zwlaszcza ze Microsoft
Javy nie lubi za bardzo - a to gryzl sie z Sunem o standardy, a to
opracowal wlasne C#, ktore posiada sporo zalet Javy... Inna sprawa, ze
szczesliwie nie wszystkie pomysly Microsoftu staja sie wielkimi sukcesami
(na przyklad spinacz z Office i .NET, ktora spotkala sie jak na razie z
duzo mniejszym entuzjazmem, niz MSFT oczekiwal - czas pokaze).

> Systemy operacyjne oczywiście nie są pisane w językach wysokiego
> poziomu co wcale nie oznacza, Ĺźe ich kod nie jest obiektowy.

A co to ma do rzeczy (pomijajac to, ze dla wiekszosci systemow nie jest to
prawda)?

> Teza, że można pisać inaczej jest chybiona.

O, to ciekawe? A jakas to sila nieczysta mnie powstrzyma?

> [...o C i asm...] Mogą nauczyć jak działa procesor, ale nie jak
> implementuje się algorytmy.

Nauka Javy nie uczy, jak implementuje sie algorytmy. Tak samo nauka C tego
nie uczy. To, czy algorytmy implementuje sie w jezyku a czy b, czy na
kartce, czy w jakims mega-super-very-high-level-language, nie gra wiekszej
roli.

Nie o tym jakby mowimy. Sa jezyki, w ktorych bezpieczniej i prosciej i
czytelniej implementuje sie algorytmy, sa jezyki, w ktorych pisze sie
szybko, sa jezyki w ktorych zadania niskopoziomowe sa proste i szybkie.
Jesli chodzilo o to pierwsze - prostote, czytelnosc, stabilnosc kodu - to
wydaje mi sie, ze Java nie jest zlym rozwiazaniem, ale tez nie jest
szczegolnie dobrym - bo wad jednak kilka posiada... A rownoczesnie napewno
Java *nie* przybiliza programisty do aspektow sprzetowych tak blisko jak
dzieje sie to w assemblerze, C, czy w duzej mierze C++ (mimo iz mniej).

A wiec to mnie troche dziwi. Skoro sa jezyki, w ktorych mozna troche
latwiej i wygodniej i czytelniej implementowac algorytmy, to czemu po nie
nie siegnieto? A jesli chodzi takze o pozniejsze aspekty, czy o
popularnosc jezyka, to czemu zrezygnowano z C++, w ktory w pewnym sensie
jest kompromisem gdzies po srodku?

Na reszte nie odpowiem, bo nie dosc, ze uzywasz Unicode, co jest dla mnie
bolesne, nie dosc ze nie oddzielasz cytatow jakimkolwiek odstepem, nie
dosc ze html, to jeszcze dokladnie od tego momentu nie zachowales
formatowania mojego maila, w srodku linii leza jakies '> ' i ogolne
pobojowisko, probowalem, nie umiem sie w tym polapac.

-- 
_____________________________________________________
Michal Zalewski [lcamtuf_at_bos.bindview.com] [security]
[http://lcamtuf.coredump.cx] <=-=> bash$ :(){ :|:&};:
=-=> Did you know that clones never use mirrors? <=-=


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Wed 19 May 2004 - 16:51:32 MET DST