Piękny język programowania

Piękny język programowania
MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Warszawa
  • Postów:1454
0

aplenos,nikt poza zatwardziałymi javowcami nie będzie tu twierdził,że java jest (tak generalnie,w każdym przypadku) szybsza od C++.
Ale,nie w tym tkwi jej moc,tylko w pełnej przenośności i niezależności od architektury


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 1x, ostatnio: MasterBLB
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 3 godziny
0

@up:
Stara wersja Javy. Weź pod uwagę to, że gdy pierwsze JVMy powstawały to popularne kompilatory C już były w miarę dojrzałe.

Nowszy benchmark: http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php
Różnica jest generalnie znacznie mniejsza.

Owszem Java wykonuje się średnio kilkadziesiąt procent dłużej, ale czy to takie strasznie ważne? W C/C++ programuje się znacznie wolniej i trudniej, łatwiej też popełnić błędy. A czas programistów jest ograniczony. Być może np mając ten sam czas na napisanie programu, w Javie da się w średnim przypadku napisać program o mniejszej złożoności obliczeniowej. I wtedy ta niewielka różnica w stałej (w złożoności obliczeniowej) nie robi już na nikim wrażenia.

Poza tym weź poprawkę na to, że popularne JVMy kompilują kod w locie (do kodu natywnego) za każdym odpaleniem VMki. Do czasu wykonania musisz w takim razie dorzucić czas kompilacji, aby porównanie było całkowicie fair.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
Zobacz pozostałe 7 komentarzy
Spine
Jakby to było moje hobby to pewnie bym przeznaczył i całe życie :P Ale jako, że mam inne hobby to na nie przeznaczam mój czas na tym świecie :P
Wibowit
No widzisz. Dlatego ja omijam Pythona szerokim łukiem, bo nie chcę spędzać 10x więcej czasu na testowaniu własnych programów. Byłby to totalny bezsens.
Spine
Zabawne, bo ja właśnie dzięki Pythonowi tracę mniej czasu na testowanie moich gier :D Zwłaszcza jak szukałem silnika graficznego do pracy inżynierskiej, to wybrałem Pandę3D w Pythonie, zamiast jakichś silników pod C++, bo w nich (Ogre, Irlicht, Lightfeather, CrystalSpace) zawsze trzeba było dość długo czekać na kompilację, zanim zobaczę coś na ekranie. W Pythonie z Pandą 3D natychmiastowo po uruchomieniu skryptu widziałem efekty swojej pracy. Nie ma języka idealnego do wszystkiego, pewnie Twoje hobbystyczne kompresory wymagają dużo więcej obliczeń,...
Spine
...więc używaj sobie wydajniejszych rozwiązań. Przy części produkcji wydajność nie odgrywa kluczowej roli i zamierzony efekt jest taki sam osiągnięty niższym nakładem pracy. Nie każdy pisze kompresory...
Wibowit
Pod OpenGL też pisałem. W Javie. Wydajność na pewno niższa niż w C++, ale nie wydaje mi się, aby była drastycznie niższa jeżeli użyje się buforowania po stronie GPU i shaderów do większości rzeczy. Czas kompilacji do bajtkodu niski, co nie jest żadnym zaskoczeniem. Nota bene: OpenCLowy kod też wywoływałem z kodu Javowego.
0

@alpenos23

Benchamrk:
http://shootout.alioth.debian.org/u64/performance.php?test=chameneosredux

Total execution time for C++: 6.57 seconds

Total execution time for Java Server VM: 3.28 seconds

02
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 8 lat
  • Postów:1176
0

Mały przykład jak wygląda development w C++. Kolega miał do rozwiązania problem, który nie da się rozwiązać standardowymi metodami. Tak więc wymyślił, że zrobi to sobie algorytmem genetycznym. Zaklepał to w tydzień oczywiście w C++ bo to jest C++ hardcore. Algorytm jest dosyć skomplikowany i działa w chu* wolno (jeden dzień obliczeń) pomimo tego że go zoptymalizował i zrównoleglił.
Ja rozwiązywałem ten sam problem w tym samym czasie. Przetestowałem w tydzień kilka algorytmów w Matlabie, wybrałem najlepszy. Algorytm daje lepsze wyniki i w wykonuje się w 20 minut (w Matlabie) na znacznie większych danych. Teraz to mogę sobie spokojnie zaklepać w C++, żeby był jeszcze szybszy (i przynajmniej będę wiedział czy to dobrze zrobiłem bo mam do porównania wersję w Matlabie). Pisząc od początku w C++ w życiu bym tego nie osiągnął. Po prostu C++ przerzuca uwagę programisty na niskopoziomowe optymalizacje (bo to w C++ łatwo zrobić), a nie na problem który faktycznie rozwiązujesz.
A i programista o którym wspomniałem bynajmniej nie jest słabym programistą - w zasadzie uważam go za lepszego od siebie.

edytowany 1x, ostatnio: 0x200x20
hauleth
Bo to prawda. Ja też testuję algorytmy w innych językach i dopiero przerzucam je na C++. Testuję w językach, które są prostsze, ale nie koniecznie szybsze, jednak jeśli algo jest dobre to język schodzi na dalszy plan. Ogólnie do testowania używam Ruby, Octave, R, etc. Tego co akurat pod ręką i najbardziej nadaje się do rozwiązania danego problemu (jak będzie trzeba to użyję i funkcyjnych (Haskell czy OCaml), ale to raczej rzadko jest potrzebne).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.