C++, czyli skodź to sam

2008-02-21 20:45

Zwolennicy C++ często argumentują, że w języku tym można bardzo, bardzo wiele. Kluczowe jest tu właśnie słówko ‘można’. Powiedziałbym mianowicie, że swego rodzaju potencjalność jest jego istotną cechą…

O co dokładnie chodzi? Najlepiej chyba mówią o tym przykłady – takie jak te poniższe:

  • W C++ nie ma delegatów, znanych np. z Delphi lub C#. Istnieje jednak konstrukcja wskaźników na składowe, przy pomocy których można owych delegatów zaimplementować.
  • W C++ nie występuje też fraza finally w blokach try. W większości przypadków można jednak obejść się bez niej, stosując technikę znaną jako RAII (Resource Acquistion Is Initializon– pozyskanie zasobu inicjalizuje zmienną).
  • W C++ nie ma wbudowanego w język mechanizmu odśmiecania pamięci (garbage collecting). Jednak dzięki temu, że typy zdefiniowane przez użytkownika potrafią niemal doskonale imitować typy wbudowane, można napisać własne sprytne wskaźniki, które wspierają odśmiecanie.
  • W C++ nie istnieje też uniwersalna klasa bazowa, z której wywodziłyby się wszystkie inne. Niemniej można taką wprowadzić, jeśli miałoby to nam ułatwić posługiwanie się obiektami.

Można więc to i tamto; powyższa lista z pewnością nie jest kompletna. Dawniej takie możliwości doskonale świadczyły o C++ jako o języku niebywale elastycznym. Robiły też dobrze dla jego efektywności oraz wstecznej kompatybilności z C. Krótko mówiąc, były niewątpliwymi zaletami.

Teraz jednak wydają się być listą braków, a w najlepszym przypadku niepodjętych, a koniecznych decyzji projektowych. Niezbędnych głównie dlatego, że twórcy nowszych języków nie wahali się ich podjąć. Dzięki temu w wielu przypadkach oszczędzili pracy i trudnych wyborów programistom, którzy z tych języków korzystają.
A programistom C++ wciąż pozostają możliwości… Niestety, aplikacji nie buduje się z kodu, który można by napisać, lecz z kodu już napisanego. Dlatego korzystanie z owych możliwości zamienia się często w uzupełnianie braków. I realizujemy wtedy stare powiedzenie: Jeśli programista chce mieć coś napisane, powinien napisać to sobie sam :P

Be Sociable, Share!
Be Sociable, Share!
Tags:
Author: Xion, posted under Programming »


10 comments for post “C++, czyli skodź to sam”.
  1. Paz:
    February 21st, 2008 o 21:06

    No bo co tu dużo nie mówić, ‘++’ jest dużym krokiem naprzód w stosunku do C, lecz krok ten można zawsze ‘odświeżyć’ i tego właśnie brakuje. Tak więc duże nadzieje w nadejściu tego powiewu leżą w ~0x i mam nadzieję, że nie przeminie on za szybko z wiatrem =P

  2. moriturius:
    February 21st, 2008 o 23:05

    Przydaloby sie kilka nowych i ciekawych rzeczy, bo za kilka lub kilkanascie lat programisci beda uwazac C++ za jezyk dla ascetów :)

    @Xion: Trafna uwaga z tymi możliwościami ^^

  3. krajek:
    February 21st, 2008 o 23:31

    Autor języka, sam mówił, że dokładnie tak był zaprojektowany język jak mówisz : nic nie narzucać, za to ułatwić tworzenie samemu. Na razie, jedynym rozsądnym następcą wydaje mi się D, ale jego biedulka nikt nie wspiera, więc standardem się nie stanie zapewne. A szkoda.

    PS. Skoro te nowe języki są takie fajne i crazy to czemu dalej standardem jest C++? :)

    Aha i jeszcze pytanko : mógłbyś doprecyzować jakie języki wg Ciebie to te ‘nowe języki’?

  4. Xion:
    February 22nd, 2008 o 7:30

    C#, Java, w pewnym stopniu Delphi – to te najpopularniejsze, nie licząc np. skryptowych pokroju Pythona, bo jakby inna kategoria wagowa.

    “PS. Skoro te nowe języki są takie fajne i crazy to czemu dalej standardem jest C++? :)”
    Na pewno? ;-)

  5. Paweł Dziepak:
    February 22nd, 2008 o 10:44

    Heh, widzę, że nie jestem sam w moim narzekaniu na C++ ;)
    Nie można jednak zapominać, że są sytuacje w których użycie maszyny wirtualnej nie wchodzi w grę, i wtedy o C# i Java można tylko pomarzyć. Cóż, cała nadzieja w D.

  6. lmmilewski:
    February 22nd, 2008 o 13:08

    @Xion: Nie napisałeś jednego. W necie JUŻ są biblioteki obchodzące te niedogodności, więc nikt nie musi ich pisać. C++ miał z założenia być językiem rozszerzalnym przez biblioteki. STL+BOOST+wxWidgets+GMP załatwia większość problemów. Jak ktoś ma sensowny system operacyjny to dowolną zainstaluje 2 poleceniami, więc nie jest to uciążliwe.

  7. Paweł Dziepak:
    February 22nd, 2008 o 16:16

    @lmmilewski: Problem jest w tym, że nie ma żadnego standardu w wypadku bibliotek (z wyjątkiem tych wchodzących w skład C++). Chcę dajmy na to mieć delegaty, to oczywiście interfejs każdej biblioteki się różni. Pomijam sytuacje, w których, z różnych przyczyn nie ma możliwości skorzystania z bibliotek.
    Poza tym biblioteka = dodatkowy kod i/lub zmniejszenie wydajności (poprzez chociażby dynamiczne linkowanie).
    Oczywiście dla twórców standardu tak jest łatwiej “my tu damy im tylko podstawowe mechanizmy, jak będą chcieli więcej to sobie napiszą biblioteki”, ale język programowania ma ułatwiać życie. C++ uchodzi za język przenośny, zmuszanie do używania biblioteki temu przeczy.

  8. spaxio:
    February 23rd, 2008 o 13:25

    Xion: Czy z GoogleTrends nie jest tak ze te statystyki sa tworzone na podstawie slowek wpisywanych w google? Mysle ze Java ma tam pierwsze miejsce tylko dlatego ze… sprawia wiele klopotow i ludzie co kroczek musza zagladac do dokumentacji, wlasnie przez google. :)

  9. Crane:
    February 23rd, 2008 o 19:28

    Java i problemy… hahaha Od kiedy zostawiłem C++ i poznałem Javę moje życie stało się piękniejsze i częściej się wysypiam ;P

  10. Zombiak:
    February 24th, 2008 o 18:49

    Ja myślę, że po prostu ludzie wpisują Java chcąc wyszukać GRY JAVA na komórkę ;P

Comments are disabled.
 


© 2023 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.