Język Java a C++. Czy możliwa jest szybka „przesiadka”?

Każdy, kto miał kontakt z C++ oraz Javą wie, jak często podobny jest kod pisany w tych dwu językach. Wydaje się zatem, że przesiadka z jednego na drugi jest dla programisty łatwa i bezproblemowa. Czy tak jest w rzeczywistości?

Jako programista mam doświadczenie w obu tych technologiach. W obu pracowałem (bądź pracuję). I mogę stwierdzić, że o ile są podobieństwa, to jednak sposób myślenia programisty Javy i C++ jest inny. Bo każdy język, to nie tylko składnia, semantyka itd. To przede wszystkim sposób myślenia. Odnosi się to i do języków naturalnych, i do języków programowania.

Podstawową różnicą pomiędzy tymi dwoma sposobami myślenia jest zarządzanie pamięcią. Programista Javy nie zaprząta sobie głowy takimi szczegółami, ponieważ polega na automatycznym zarządzaniu pamięcią (garbage collector). Ów odśmiecacz daje niemałą swobodę. W C++ jest inaczej – trzeba wciąż mieć na względzie niszczenie utworzonych obiektów, ponieważ odśmiecacz nie istnieje. Z perspektywy C++ jest to też pewna swoboda – dla tych, którzy lubią nad wszystkim mieć pieczę.

Pisanie stylem Javy w C++ zaowocuje nieoptymalnym kodem. Tak pod względem wydajności, jak i łatwości utrzymania.

W C++ nie ma klasy bazowej Object, po której dziedziczą wszystkie inne klasy. Twórca C++ prof. B. Stroustrup twierdzi, że w większości przypdaków można sobie bez tego poradzić.

Dobrą praktyką w C++ jest ograniczanie używania zmiennych wskaźnikowych oraz referencyjnych. Zamiast nich można użyć zmiennych lokalnych i składowych.

Wskaźniki w C++ są odpowiednikiem referencji w Javie (W C++ referencje są bardziej ograniczone – nie można ich przenosić).

W przeciwieństwie do Javy fuunckcje w C++ nie są domyślnie wirtualne. Każda klasa jest tworzona dla dziedzieczenia.

Kiedy się da, powinno się w C++ stosować zakresowe zarządzanie zasobami (RAII).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *