Dzisiaj jest piątek, 23 czerwca 2017
15 rzeczy, które pomogą Ci stać się bogatymJak nie tracić czytelników blogaDLACZEGO tak szybko oceniamy?
Java vs C++ - runda #1

Java vs C++ - runda #1

środa, 2011-04-060

Bity pochodzą z banku zdjęć Fotolia

Zacznę od tego, że nie jestem wymiataczem w żadnym z tych języków, najlepiej czuję się w PHP. C/C++ znam dobrze jeśli chodzi o składnię (twórcy wykonali tu kawał dobrej roboty), PHP preferuję ze względu na łatwe tworzenie GUI - po prostu generuje się kod HTML.

Dostałem jednak propozycję napisania aplikacji desktopowej z założeniem, że musi być przenośna i łatwo komunikować się z bazami danych. Sugerowano mi Pythona, ale z miejsca odrzuciła mnie jego składnia. Jako że na co dzień używam PHP, wolałem nie kombinować z zupełnie nowym językiem, bo późniejsze przeskakiwanie między nimi może doprowadzić do bólu głowy. Java była więc najlepszym kompromisem.

Na pierwszy ogień (w celu nauczenia się języka) poszła moja aplikacja do wystawiania faktur, którą najpierw napisałem w Calcu (Open Office) a potem w PHP. Wersja beta Fakturomatu do pobrania tutaj. Wymaga jeszcze solidnego przetestowania i dopracowania szczegółów, ale działa i sam z niego korzystam.

W każdym razie miesiąc intensywnej nauki, grzebania w sieci, oraz książkach rzuciło mi sporo światła na ten język. Pokusiłem się więc o pewne porównanie JavyC++ (C# pomijam, bo uważam to za niezbyt udaną odpowiedź M$ na Javę) jako wiodących języków do tworzenia aplikacji desktopowych.

Wydajność

Java jest kompilowana, ale tylko do tzw. byte-code, który jest wykonywany na maszynie wirtualnej
Zatweetuj

Nie ulega wątpliwości, że język kompilowany pod konkretny procesor czy system operacyjny zawsze będzie szybszy od interpretowanego (Java jest kompilowana, ale tylko do tzw. byte-code, który jest wykonywany na maszynie wirtualnej). Są różne głosy, że w niektórych sytuacjach Java jest wydajniejsza, ale wszystko zależy od jakości tego kodu. Można napisać bardzo niewydajną aplikację w ASM i wydajną w PHP. Ale gdyby do każdego języka usiadł dobry koder i zakodował dany test najlepiej jak się da w danym języku (znając jego zawiłości i niuanse) to dam sobie głowę uciąć, że C++ wygra za każdym razem.

Przenośność

Teoretycznie to miała być największa zaleta Javy. Program napisany raz powinien dać się uruchomić na każdym systemie. Owszem, uruchomić się da. Ale jeśli chodzi o wygląd aplikacji to już nie jest tak uniwersalnie. Fakturomat na Maku gubił niektóre elementy, przyciski się nie mieściły w okienkach, niektóre komponenty wyglądały inaczej. Dobrze że przynajmniej działały tak samo :) Nigdy też nie widziałem napisanego w Javie programu rezydentnego czy w ogóle takiego, który wykorzystywałby właściwości danego systemu operacyjnego. A już na pewno nie wyobrażam sobie hackera kodującego w Javie. Wirusów chyba też nie ma :)

Klasy do najprostszych rzeczy

Java wymaga używania klas do wszystkiego, przy małych programach trzeba napisać dużo więcej kodu
Zatweetuj

Klasy to wspaniały wynalazek i nie ma co do tego dwóch zdań. Ale Java wymaga używania klas do wszystkiego. Przy dużych projektach jest to zaleta, bo kod jest czytelniejszy, ale przy prostych aplikacjach to przerost formy nad treścią. Czasami jest jedna funkcja, której nie da się podpiąć pod żadną istniejącą klasę i trzeba specjalnie dla niej tworzyć osobną. Wiąże się z tym kolejna sprawa. Przy małych programach trzeba napisać nieporównywalnie więcej kodu. Więc gdzie ta oszczędność czasu podczas programowania o której tyle się mówi?

Brak preprocesora

Niby drobiazg, ale brakuje mi zwłaszcza dyrektywy #DEFINE.

Łatwość programowania

Tu należy się duży plus dla Javy. Wiele trudności związanych z wyświetlaniem i obsługą kontrolek przejmują biblioteki Javy. I robią to całkiem nieźle (chociaż nie rewelacyjnie). W każdym razie w C++ nie napisałbym tak szybko Fakturomatu. Java ma dużo gotowych i prostych w użyciu narzędzi. Pozostaje jednak kwestia wydajności. Ale przy większości aplikacji jest to sprawa do pominięcia.

Na chwilę obecną to tyle

Nie odrzucam Javy, bo uważam, że do wielu zadań jest wystarczająca. Czasami nawet lepsza (ze względu na w miarę szybkie stworzenie działającej aplikacji). Ale na pewno nie podzielam, zdania fascynatów, którzy uważają, że to najlepszy język na świecie.

Spodobał Ci się wpis? Udostępnij go w Social Media:
Jeśli podoba Ci się wpis,
koniecznie zalajkuj,
skomentuj i zapisz się na