java

Dlaczego nienawidzę javy?

Na wstępie chciałbym cię ostrzec, że artykuł prawdopodobnie będzie miał posmak mojej opinii (co nie jest jakimś zaskoczeniem sądząc po tytule), ale nie będzie do końca o tym co sugeruje tytuł. Chciałbym też zaznaczyć, że nie jestem całkowitym anty-fanem javy jestem w stanie zrozumieć dlaczego niektórzy lubią ten język co mam nadzieję będzie widać, słowo „nienawiść” jest zbyt mocne i w sumie tytuł tego wpisu powinien brzmieć „dlaczego czuję niechęć do javy”.

Skąd pomysł na artykuł? Wbrew opinii 90% studentów u mnie na studiach nie uważam javy za lepszą i przyjemniejszą od c++, a od jakiegoś czasu jestem zmuszony w niej pisać i tak powstał ten artykuł gdzie musiałem porzuć pierwotne plany na dzisiejszy dzień gdzie zamiast pisać lekcję gry RPG, to musiałem siedzieć z javą.

Bez zbędnego przedłużania: Dlaczego nienawidzę Javy?

 

1. Garbage collector


Wall-E and the Vacuum Cleaner

Zdaniem niektórych cudowna rzecz bo nie trzeba się martwić o dość łatwe w przypadku c/c++ wycieki pamięci gdy pracuje się z operatorami new i delete. Moim zdaniem fajna rzecz, ale jako ciekawostka. Naprawdę nie miałbym nic przeciwko temu, gdyby można było w łatwy sposób wyłączyć automatyczne usuwanie danych z pamięci i pozwolić programiście zrobić to w jego zdaniem najbardziej odpowiednim momencie (bo najpewniej zrobiłby to lepiej).

 

2. Wydajność


Java miała być dzieckiem tego co najlepsze w ówczesnych językach programowania, wyszło… cóż. Idea zakładała uniwersalność pisanych programów na dowolnej platformie, a jak się okazało kod javy nie jest zawsze tak samo wydajny na różnych urządzeniach i tak np. jak działa na Windowsie każdy widzi, wystarczy spojrzeć na Minecrafta, gdzie nie ma zbyt widowiskowych efektów i ogólnie grafiki, a ci co grali wiedzą, że odpalenie na maksymalnych detalach (na sprzęcie, który radził sobie z Battlefieldem 3 na wysokich) groziło wykrzaczeniem gry z powodu braku pamięci.

Java jak się okazało, wymaga specjalnie pod nią zaprojektowanego systemu jak np. Android, gdzie pisanie w niej aplikacji jest dość wskazane.

 

3. Składnia


Gdy zapytasz kogoś co jest prostsze dla niego: c++ czy java z pewnością wybierze jave, bo tak istotnie jest, przynajmniej do pewnego stopnia. Bardzo dużo funkcji jest zaszytych wewnątrz tego języka co znacznie ułatwia wiele rzeczy. Jednakże gdy chcemy zrobić bardziej niestandardowe operacje okazuje się że musimy dość mocno nakombinować aby dostać się do rzeczy, które w c++ mamy na wyciągnięcie ręki.

 

4. Rozleniwianie


Poniekąd odnoszę się do poprzedniego punktu. Programowanie tutaj nieco rozleniwia nasz umysł, a mechanizm działania niektórych rzeczy pozostaje dla nas zamknięty przez co nie rozumiemy jak coś działa i gdy przychodzi nam napisać podobny program, ale w innym języku to nie rozumiemy jak napisać określone funkcje, nie rozumiemy sposobu działania niektórych rzeczy, a przynajmniej moim zdaniem zawsze jest lepiej wiedzieć i rozumieć jak coś działa niż nie wiedzieć.

 

Java, samo zło?


37955-yes_no_maybe_wallpaper

Cóż, niestety nie. Java posiada kilka elementów, które mi się podobają. M.in. podoba mi się fakt, że zmienne zajmują na każdej maszynie tyle samo miejsca, a ten fakt jest czasami dość przydatny; niektóre wbudowane funkcje jak np konwersja liczb na string i odwrotnie; łatwiejsze w obsłudze dynamiczne tablice (m.in. znające swoją długość) i pewnie coś jeszcze by się znalazło.

 

A więc, C++ czy Java?


C++. Poleciłbym ten język każdemu, zwłaszcza początkującym niemającym doświadczenia z programowaniem, java jest prostsza jasne, ale opanowanie c++ sprawi że opanowanie innego języka (np. javy) będzie bajecznie proste. Co ważne kursy c++ wprowadzają programowanie obiektowe w bardziej naturalny sposób i młody programista jest w stanie lepiej zrozumieć (a zatem wykorzystać) programowanie obiektowe (a pamiętajmy, że java jest w pełni językiem obiektowym).

Żeby nie było: c++ nie był językiem, którego nauczyłem się jako pierwszego stąd by wychodziła moja „miłość” do niego, pierwsza była właśnie java, lecz c++ był językiem, od którego zacząłem programowanie tak na poważniej.

 

Zakończenie


Mam nadzieję, że ten wpis chociaż jakąś swoją częścią w rzetelny sposób przedstawia wady, czy zalety Javy, częściowo mogą pojawić się jakieś błędy, ponieważ nie jestem specjalistą w tym języku, pewnie nie jestem nawet średnio-zaawansowanym.

A jakie jest Wasze zdanie na temat? C++ czy Java? Może nie zgadzacie z moją opinią? Albo macie jakieś dodatkowe uwagi na ten temat? W tym czy innych przypadkach zapraszam do systemu komentarzy.

Code ON!


  • Wollier

    Próbowałem kiedyś swoich sił w JAVIE i jakoś mi nie podeszła. Wolę C++ i C#

  • Dawid

    niektóe wbudowane funkcje jak np konwersja liczb na string i odwrotnie. Znalazłem literówkę 🙂

    • Dość powszechny dla mnie błąd, a takie coś mogło się zdarzyć zważając na porę o której to pisałem, nie mniej dzięki 😉