Sektor van Skijlen
2006-03-23 08:35:18 UTC
Ponieważ aktywność grupy nieco spada, postanowiłem ją nieco rozruszać. Temat
jest z pozoru oklepany, a w rzeczywistości nie taki znów oczywisty.
Przyznaję, nie dysponuję aktualnie żadnymi statystykami dotyczącymi użycia C++
w przemyśle i porównania z podobnymi statystykami dotyczącymi Javy. Jakiś czas
temu ktoś gdzieś (bodaj tu) rzucił statystykami, dotyczącymi tylko OpenSource,
które wskazywały, że C i C++ razem mają jakieś 60%, a Java ok 11%. Mówię z
pamięci. Po pierwsze, jednak, statystyki OpenSource nie są miarodajne dla
całego rynku, a po drugie, to było jakieś dwa lata temu i wiele mogło się
zmienić.
Co prawda widzę dość sporo dziedzin, w których Java raczej nie ma czego
szukać, ale już tu czytam jak to pewien osobnik obserwuje, jak firmy na gwałt
wycofują się z C++ i przechodzą na Javę. Co prawda trzeba to traktować z
drobnym przymrużeniem oka, ale myślę, że to nie jest uzasadnione.
Oczywiście jeśli C++ okaże się kiedyś narzędziem nie spełniającym wymagań dla
pisanego przez mnie oprogramowania i znajdą się lepsze, to zostawię C++ i nie
będę po nim płakał. Tak samo, jak olałem swego czasu Amigę, komputer, który w
czasach swej świetności bił na głowę PC pod każdym względem (w tym ceną), a
potem przez przez zatrzymanie się w rozwoju (i jakieś fatum, które powodowało,
że kolejno przejmujące ją firmy plajtowały) dała się PC przegonić. I też nie
było mi jej żal. Przestałem mówić dobrze o Amidze, kiedy słyszałem o super
karcie graficznej dla Amigi (jakby ktoś chciał Amigę stosować profesjonalnie;
ciekawe że podobno miały to założenie spełniać układy wbudowane), która
zawierała po prostu... układzik S3. Przy czym była trzykrotnie większa od
PC-owego odpowiednika i prawie dziesięciokrotnie droższa :)
Ale jak na razie nie widzę, żeby z C++ miało zejść ze sceny, co więcej, w
pewnych zastosowaniach, jak chociażby oprogramowanie na wbudowanych systemach
czasu rzeczywistego, nie wyobrażam sobie zastąpienia go czymkolwiek innym.
Moim zdaniem fakt, że Java zastępuje C++ w pewnych zastosowaniach wynika m.in.
stąd, że dla Javy opracowano pewne wygodne technologie do pisania złożonych,
rozproszonych aplikacji, aplikacji opartych o klient-serwer, a dla C++ trochę
nie bardzo. A przynajmniej nie słyszałem o niczym powalającym. Miałem krótki
kontakt z projektem, w którym goście przepisywali na Javę coś, co działało na
C++ z COM-em. W takim, chociażby, przypadku, muszę przyznać, że owszem, COM
jest -delikatnie mówiąc- "nienajlepszą" technologią, ale lepszej o tym samym
zastosowaniu do C++ nie wymyślono, a do Javy tak. Problem polega zatem na tym,
że o ile do Javy opracowano mnóstwo narzędzi, bibliotek, technologii,
metodologii i innych różnych pierduł - co z tego, że co najmniej 60% to
bzdety, w końcu dzieła wybitne powstają przez rafinację badziewia - a C++
długo pod tym względem kulał i porównując z Javą niestety kuleje nadal.
Inaczej mówiąc, C++-owi brakuje głównie wszelkich aktywności okołojęzykowych i
jakiegoś sensownego marketingu. Jak to się dzieje, że nt. Javy jest tak dużo
tego typu aktywności, a jeśli chodzi o C++ to Stroustrup tylko raz na jakiś
czas ponarzeka, że ludzie nie publikują swoich sukcesów z C++?
Zresztą, jeśli oczywiście jakiś inny język/inna technologia z pewnych względów
jest lepsze, to dobrze, niech będzie stosowana. Jeśli C++ jest gorszy, to
niech się go nie stosuje. Ale to dla mnie w dalszym ciągu nie tłumaczy,
dlaczego tak wielu ludzi wykazuje się w stosunku do C++ wręcz nienawiścią. No
bo jak inaczej mam nazwać wypowiedzi, które życzą C++, aby jak najszybciej
zszedł ze sceny, "Goodbye C++", "- C++ jeszcze długo się będzie trzymał ;
- Eee tam nie bądźmy takimi pesymistami" i tak dalej?
Nie wiem, na ile ktoś czytuje np. grupę pl.comp.objects, ale raz na jakiś czas
ta grupa stawała się czymś w rodzaju "centrum nienawiści do C++". A wątki nt.
tego, jak to ludzie nie lubią C++ potrafią ciągnąć się długo i namiętnie. I to
jeszcze, żeby ktoś wskazywał na jego konkretne słabości i różne cechy, które
utrudniają jego stosowanie czy coś w tym sensie - ale gdzie tam. Większość
wypowiedzi to stanowcze stwierdzenia, że C++ to straszne badziewie. Kurde,
nie można pogadać np. o technologiach, które ludzie lubią, a C++ po
prostu olać?
Widzę w tym wszystkim po prostu wylewanie frustracji w związku z tym, że
"znowu w życiu komuś nie wyszło" z C++. Najwyraźniej Java stała się dla tych
sfrustrowanych jakimś wielkim ratunkiem i to nawet z depresji, chociaż biorąc
pod uwagę aktywność takich opinii, nie założyłbym się. Mimo swoich
właściwości, wciąż wychodzi na to, że C++ co najwyżej powoli zastępuje język
C [kolejność zdania normalna: podmiot-orzeczenie-dopełnienie! :)], a do
pisania dużych aplikacji - być może, bo jak mówię statystyk nie znam -
przestaje się go stosować. Czy C++ nie stać na to, żeby mieć dobre technologie
do łatwego i bezproblemowego pisania dużych aplikacji? Oczywiście, że stać.
Czy dodanie odśmiecacza w nowym standardzie coś tu zmieni? Oczywiście, że nie
zmieni. I to nie dlatego, że wprowadzony zostanie tak późno, tylko dlatego, że
nikt nie opracuje technologii tworzenia aplikacji konkurencyjnych dla
istniejących i dobrze trzymających się rozwiązań (i to akurat wiem, bo jak
społeczność C++ cokolwiek w tym względzie zmieni pierwszy raz od 20 lat to mi
kaktus na dłoni wyrośnie). Dokładnie to samo dzieje się z Linuxem, który
"szanse na stanie się konkurencyjnym dla Windowsa" ma już od dobrych 20 lat i
jakoś zdecydowanie za mało z tego korzysta.
Może to też kwestia tego, że C++ jest dla niektórych za trudny? Słyszę o tym
od dawna, ale jakoś nie chce mi się w to wierzyć. Kwestię arytmetyki
wskaźników to może olejmy, bo tego argumentu nie można traktować poważnie.
Może jednak właśnie chodzi o to, że niektórym potrzeba takich klapek na
oczach, żeby byli w stanie cokolwiek zaprogramować? Może, ale nawet jeśli tak
jest, to nie ma co na nich wyrzekać, tylko się dostosować. Bez dostosowania
się do "przeciętnego użytkownika" nie można liczyć na sukces. A bez tego na
pewno nie można liczyć na rozwój technologii okołojęzykowych. I bez tego na
pewno C++ czeka los Lispa, czy Eiffla.
jest z pozoru oklepany, a w rzeczywistości nie taki znów oczywisty.
Przyznaję, nie dysponuję aktualnie żadnymi statystykami dotyczącymi użycia C++
w przemyśle i porównania z podobnymi statystykami dotyczącymi Javy. Jakiś czas
temu ktoś gdzieś (bodaj tu) rzucił statystykami, dotyczącymi tylko OpenSource,
które wskazywały, że C i C++ razem mają jakieś 60%, a Java ok 11%. Mówię z
pamięci. Po pierwsze, jednak, statystyki OpenSource nie są miarodajne dla
całego rynku, a po drugie, to było jakieś dwa lata temu i wiele mogło się
zmienić.
Co prawda widzę dość sporo dziedzin, w których Java raczej nie ma czego
szukać, ale już tu czytam jak to pewien osobnik obserwuje, jak firmy na gwałt
wycofują się z C++ i przechodzą na Javę. Co prawda trzeba to traktować z
drobnym przymrużeniem oka, ale myślę, że to nie jest uzasadnione.
Oczywiście jeśli C++ okaże się kiedyś narzędziem nie spełniającym wymagań dla
pisanego przez mnie oprogramowania i znajdą się lepsze, to zostawię C++ i nie
będę po nim płakał. Tak samo, jak olałem swego czasu Amigę, komputer, który w
czasach swej świetności bił na głowę PC pod każdym względem (w tym ceną), a
potem przez przez zatrzymanie się w rozwoju (i jakieś fatum, które powodowało,
że kolejno przejmujące ją firmy plajtowały) dała się PC przegonić. I też nie
było mi jej żal. Przestałem mówić dobrze o Amidze, kiedy słyszałem o super
karcie graficznej dla Amigi (jakby ktoś chciał Amigę stosować profesjonalnie;
ciekawe że podobno miały to założenie spełniać układy wbudowane), która
zawierała po prostu... układzik S3. Przy czym była trzykrotnie większa od
PC-owego odpowiednika i prawie dziesięciokrotnie droższa :)
Ale jak na razie nie widzę, żeby z C++ miało zejść ze sceny, co więcej, w
pewnych zastosowaniach, jak chociażby oprogramowanie na wbudowanych systemach
czasu rzeczywistego, nie wyobrażam sobie zastąpienia go czymkolwiek innym.
Moim zdaniem fakt, że Java zastępuje C++ w pewnych zastosowaniach wynika m.in.
stąd, że dla Javy opracowano pewne wygodne technologie do pisania złożonych,
rozproszonych aplikacji, aplikacji opartych o klient-serwer, a dla C++ trochę
nie bardzo. A przynajmniej nie słyszałem o niczym powalającym. Miałem krótki
kontakt z projektem, w którym goście przepisywali na Javę coś, co działało na
C++ z COM-em. W takim, chociażby, przypadku, muszę przyznać, że owszem, COM
jest -delikatnie mówiąc- "nienajlepszą" technologią, ale lepszej o tym samym
zastosowaniu do C++ nie wymyślono, a do Javy tak. Problem polega zatem na tym,
że o ile do Javy opracowano mnóstwo narzędzi, bibliotek, technologii,
metodologii i innych różnych pierduł - co z tego, że co najmniej 60% to
bzdety, w końcu dzieła wybitne powstają przez rafinację badziewia - a C++
długo pod tym względem kulał i porównując z Javą niestety kuleje nadal.
Inaczej mówiąc, C++-owi brakuje głównie wszelkich aktywności okołojęzykowych i
jakiegoś sensownego marketingu. Jak to się dzieje, że nt. Javy jest tak dużo
tego typu aktywności, a jeśli chodzi o C++ to Stroustrup tylko raz na jakiś
czas ponarzeka, że ludzie nie publikują swoich sukcesów z C++?
Zresztą, jeśli oczywiście jakiś inny język/inna technologia z pewnych względów
jest lepsze, to dobrze, niech będzie stosowana. Jeśli C++ jest gorszy, to
niech się go nie stosuje. Ale to dla mnie w dalszym ciągu nie tłumaczy,
dlaczego tak wielu ludzi wykazuje się w stosunku do C++ wręcz nienawiścią. No
bo jak inaczej mam nazwać wypowiedzi, które życzą C++, aby jak najszybciej
zszedł ze sceny, "Goodbye C++", "- C++ jeszcze długo się będzie trzymał ;
- Eee tam nie bądźmy takimi pesymistami" i tak dalej?
Nie wiem, na ile ktoś czytuje np. grupę pl.comp.objects, ale raz na jakiś czas
ta grupa stawała się czymś w rodzaju "centrum nienawiści do C++". A wątki nt.
tego, jak to ludzie nie lubią C++ potrafią ciągnąć się długo i namiętnie. I to
jeszcze, żeby ktoś wskazywał na jego konkretne słabości i różne cechy, które
utrudniają jego stosowanie czy coś w tym sensie - ale gdzie tam. Większość
wypowiedzi to stanowcze stwierdzenia, że C++ to straszne badziewie. Kurde,
nie można pogadać np. o technologiach, które ludzie lubią, a C++ po
prostu olać?
Widzę w tym wszystkim po prostu wylewanie frustracji w związku z tym, że
"znowu w życiu komuś nie wyszło" z C++. Najwyraźniej Java stała się dla tych
sfrustrowanych jakimś wielkim ratunkiem i to nawet z depresji, chociaż biorąc
pod uwagę aktywność takich opinii, nie założyłbym się. Mimo swoich
właściwości, wciąż wychodzi na to, że C++ co najwyżej powoli zastępuje język
C [kolejność zdania normalna: podmiot-orzeczenie-dopełnienie! :)], a do
pisania dużych aplikacji - być może, bo jak mówię statystyk nie znam -
przestaje się go stosować. Czy C++ nie stać na to, żeby mieć dobre technologie
do łatwego i bezproblemowego pisania dużych aplikacji? Oczywiście, że stać.
Czy dodanie odśmiecacza w nowym standardzie coś tu zmieni? Oczywiście, że nie
zmieni. I to nie dlatego, że wprowadzony zostanie tak późno, tylko dlatego, że
nikt nie opracuje technologii tworzenia aplikacji konkurencyjnych dla
istniejących i dobrze trzymających się rozwiązań (i to akurat wiem, bo jak
społeczność C++ cokolwiek w tym względzie zmieni pierwszy raz od 20 lat to mi
kaktus na dłoni wyrośnie). Dokładnie to samo dzieje się z Linuxem, który
"szanse na stanie się konkurencyjnym dla Windowsa" ma już od dobrych 20 lat i
jakoś zdecydowanie za mało z tego korzysta.
Może to też kwestia tego, że C++ jest dla niektórych za trudny? Słyszę o tym
od dawna, ale jakoś nie chce mi się w to wierzyć. Kwestię arytmetyki
wskaźników to może olejmy, bo tego argumentu nie można traktować poważnie.
Może jednak właśnie chodzi o to, że niektórym potrzeba takich klapek na
oczach, żeby byli w stanie cokolwiek zaprogramować? Może, ale nawet jeśli tak
jest, to nie ma co na nich wyrzekać, tylko się dostosować. Bez dostosowania
się do "przeciętnego użytkownika" nie można liczyć na sukces. A bez tego na
pewno nie można liczyć na rozwój technologii okołojęzykowych. I bez tego na
pewno C++ czeka los Lispa, czy Eiffla.
--
// _ ___ Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `| /^\ ,() <ethourhs(O)gmail.com>
// \_ |\ \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
// _ ___ Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `| /^\ ,() <ethourhs(O)gmail.com>
// \_ |\ \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"