Przewaga C/C++ nad innymi językami.

0

Powiem szczerze, że ze wszystkich języków jakie poznałem do tej pory najbardziej mi się podoba C/C++, wg mnie jest najbardziej logiczny. Wiem też że gry są tworzone w C++, systemy wbudowane w C/C++. Jako że programowanie gier niezbyt mnie nie interesuje, chyba że tylko 2d, ale 2d to sobie mogę i w Javie napisać, i będzie ok. Systemy wbudowane by mnie interesowały. Zupełnie jednak nie rozumiem dlaczego niektóre firmy aplikacje biznesowe tworzą w C++, jak mogli by to zrobić, szybciej w Javie i C#? Chyba, że się mylę? Co jest jeszcze tworzone w C++?

4

ze wszystkich języków jakie poznałem do tej pory najbardziej mi się podoba C/C++

Okej, tyle ze nie ma takiego jezyka jak C/C++.

Co jest jeszcze tworzone w C++?

Prace na zaliczenie.

1

jest najbardziej logiczny

To już wiemy którego przedmiotu na studiach nie zdasz. Będzie to logika :D Bo różne rzeczy o C++ można powiedzieć, ale z tą logicznością...

Nikt nie tworzy systemów biznesowych w C++.

0

Dżizys krajst, nie da się łatwo zrozumieć tego pytania.

Szukałem pozytywnych cech C++ nad np. Javą - poza lekko już przeterminowanym argumentem dotyczącym szybkości Javy wymyśliłem tylko możliwość bezpośredniego operowania na Windows API bez korzystania z zewnętrznych bibliotek.

A teraz odwrotnie, czyli pozytywne cechy Javy ponad C++: OOP (Boże drogi, nie potrafię do tej pory załapać, dlaczego w C++ ludzie oddzielają plik nagłówkowy klasy... od samej klasy), brak wskaźników (WTF? Sorry, ale zmiennej wskazującej na położenie innej zmiennej nie potrafię pojąć.), kibel z automatyczną spłuczką (nie musisz martwić się o destruktory obiektów), "compile once run everywhere" (kompilujesz program, a uruchomisz go wszędzie, gdzie znajdziesz zainstalowane JVM). Mógłbym wymieniać i wymieniać.

0
Shalom napisał(a):

jest najbardziej logiczny

To już wiemy którego przedmiotu na studiach nie zdasz. Będzie to logika :D Bo różne rzeczy o C++ można powiedzieć, ale z tą logicznością...

Nikt nie tworzy systemów biznesowych w C++.

Logikę i teorie mnogości zaliczyłem na 5.0 w poprzednim semestrze.:P
Z tym ze jest logiczny może trochę przesadziłem, po prostu łatwiej było mi się nauczyć C++ niż Jave.

1

Podejrzewam, że łatwiej było Ci się nauczyć C++ ze względu na to, że jest bardziej strukturalny, a obiektowość jest tam uboga, więc nie trzeba się zbytnio zgłębiać w relacje między klasami.
Natomiast podejrzewam, że w przypadku poważniejszych projektów, niż program na studia, wycieki pamięci i operacje na wskaźnikach mogą być dość denerwujące. Teoretycznie mamy większą kontrolę, ale też więcej roboty i brak prawdziwej obiektowości.
Jeśli chodzi o zastosowania C++, to myślę, że najczęściej wykorzystuje się go w grach i systemach wbudowanych, o których wspomniałeś ze względu na większe możliwości optymalizacji i zwiększenia wydajności (jak ktoś się uprze, to może nawet wstawki w asemblerze pisać). W innych projektach raczej wykorzystuje się bardziej wysokopoziomowe języki.

0

Jak już o javie i c++
Według mnie na + dla c++

  • pointery - w przeciwieństwie do tego co kolega @ShookTea napisał wyżej, to że się czegoś nie pojmuje nie znaczy od razu, że jest to złe. Pointery to świetna rzecz.
  • dużo bardziej rozwinięty metaprogramming
  • przeładowywanie operatorów (nie dam rady żyć bez tego)
  • domyślne parametry funkcji
  • w javie gc jest niedeterministyczny i nie da się go od tak wyłączyć, w c++ są smart pointery jakby ktoś potrzebował (deteministyczne) (chyba można to podpiąć po zalążek kontrolowalnego gc)
  • w c++ chyba jest więcej możliwości do zachowania const-corectness
  • macie tam coś w stylu 'auto' w tej javie?
    - enumy
  • unie
  • możliwość definiowania literałów - zawsze może się przydać
    tyle na tą chwilę
    O javie można powiedzieć chyba tyle, że ma bardziej rozbudowaną bibliotekę standardową
3

..ahh te pytania z serii "wybrałem sobie język", "komputer do programowania" , "system do programowania" , "najlepsza książka do programowania" , "język a vs język b". aż mnie dziwi, że niektórym starszym stażem chce się w ogóle na te pytania odpisywać i tak "gawędzić" ;p

0
Shalom napisał(a):

Nikt nie tworzy systemów biznesowych w C++.

Pamiętam jak w ubiegłym semestrze jeden z dr mówił, że przez 10 lat pracował w firmie co właśnie tworzyła i dalej tworzy systemy biznesowe w C++. Pytanie dlaczego właśnie w c++?
Są jeszcze jakieś inne dziedziny gdzie króluje C++, oprócz gier, systemów wbudowanych?

0

C++ nie kroluje w grach ogolem, tylko w specyficznej kategorii gier. W systemach wbudowanych tymbardziej.

0

No tak systemy wbudowane to chyba częściej C, czasami z dodatkiem ASM.

1

Z przedstawionych tu informacji wynika, że C++ mimo kilku wad ma też wiele zalet w porównaniu do innych "lepsiejszych" języków... ;-)
Poza tym nie rozumiem narzekania np. na wskaźniki lub wielodziedziczenie - w końcu nie trzeba korzystać z tych dobrodziejstw i charakterystycznych narzędzi tego języka...

0

dlaczego niektóre firmy aplikacje biznesowe tworzą w C++

Jakieś przykłady?

0
Wibowit napisał(a):

dlaczego niektóre firmy aplikacje biznesowe tworzą w C++

Jakieś przykłady?

Czy CDN Optima (program księgowy) nie jest w C++?

5

Kolejny temat typu "czemu brukselka jest najlepsza, bo ja lubię brukselkę", a zaraz potem odpowiedź, że "brokuły są lepsze".
W ten sposób próbuje was zachęcić do zakończenie bezsensownego wątku.

3

Każdy programuje w tym, w czym mu najwygodniej, zarówno jeśli chodzi o język, jak i środowisko.
Ponadto w tym temacie nie powinny wypowiadać się osoby, które nie mają dobrego pojęcia o kilku językach, a to z tego powodu, że nie mają żadnego punktu odniesienia. Bo co z tego, że C jest wygodne, jak C++ może być wygodniejsze (broń Boże nie twierdzę tego, to tylko przykład), tylko nie wie o tym, bo gościu w C zaczynał i dłubał przez dwa lata, a o C++ tylko przeczytał kilka niepochlebnych opinii. Potem czytam, że język "jest najbardziej logiczny". WTF? Człowieku, co to znaczy, że język programowania jest "najbardziej logiczny"? Masz pojęcie o js, php, pascalu/delphi, c#, vb, javie, pythonie, ruby, as, coldfusion, sql albo jakiejkolwiek technologii innej od c++, żeby mieć porównanie?

Nikt mi nie wmówi, że język zarządzany jest mniej wygodny od niezarządzanego. Zdarzają się oczywiście wyjątki (np. wspomniane systemy wbudowane), ale pozostają wyjątkami.
Napisałem sporo kodu w wielu językach i środowiskach programistycznych, więc mam kilka punków odniesienia. Twierdzę, że C++ jest najbardziej skomplikowanym i niewygodnym językiem, w jakim programowałem, a po skrajnie drugiej stronie znajduje się C# (na drugim miejscu jest u mnie java). Jest takie powiedzenie - programiści C++ bohatersko przezwyciężają problemy nieznane w innych językach programowania - które podsumowuje moje zdanie na temat tego języka.
Mamy w firmie duży projekt w C++, współpracuję blisko z programistami tego projektu i wiem, jak narzekają na ten projekt oraz sam język. Chociaż, żeby być w miarę obiektywnym, muszę powiedzieć, że dziś dowiedziałem się, że narzekają też na projekt w C#, który im ostatnio wpadł, więc może tak mają, że narzekają na wszystko ;-)

Podsumowując: każdy programuje w tym, w czym mu wygodnie (albo w tym, w czym każe mu robić pracodawca), dla mnie jest to C#, a de gustibus non est disputandum. A że każdy z języków na pewnym obszarze będzie najlepszy, więc dyskusja na ten temat jest i będzie jałowa.

0

Wedlug mnie nie ma czegos takiego jak lepszy/gorszy jezyk programowania. Kazdy jezyk moze byc stosowany do pewnych zagadnien i moze lepiej sie w nich sprawdzic od innego. Ta sama aplikacje mozemy napisac w javie/c#/c++ a nawet asmie i to od programisty, jego wiedzy, umiejetnosci i pewnych priorytetow(szybkosc dzialania, czas pisania, etc.) zalezy wybor sposobu(czyt. jezyka) dojscia do celu.

Rowniez nie istnieje cos takiego jak jezyk bardziej logiczny od innego. (WTF?!) Kazdy jezyk programowania jest i musi byc "logiczny". To programista wydaje instrukcje komputerowi odnosnie tego co ma zrobic w danej chwili. Te instrukcje musza skladac sie w jakas logiczna calosc inaczej wszystko sie wywali.

Niech kazdy pisze na co dzien w tym co lubi, a w pracy w tym, w czym musi. Temat odnosnie wyzszosci jednego jezyka nad drugim jest bezcelowy, bo kazdy jezyk bedzie z powodzeniem stosowany do pewnych rozwiazan.

PS. Ehh... Ci poczatkujacy :) Popisza troche w czyms i potem zaczynaja sie takie bezcelowe dyskusje.

0
Wibowit napisał(a):

dlaczego niektóre firmy aplikacje biznesowe tworzą w C++

Jakieś przykłady?

Może wytwory comarchu?
Tu coś jest http://www.pip.com.pl
I ta firma o której dr nam opowiadał, ale nie mogę sobie przypomnieć jej nazwy.
I pewnie jeszcze dużo innych.

0

A czy te wszystkie komunikaty na których widzimy wyniki meczów, nazwiska w formule1, ramkna menu z zawodnikami diamentowej ligi, czy inne wyświetlane ramki i komunikaty w tv są napisane w języku C++ czy innym? Nie chodzi mi o te informacje w tv, gdy podłączy się do nich sieć, tylko te standardowe z informacjami tabelki.

4

Wedlug mnie nie ma czegos takiego jak lepszy/gorszy jezyk programowania.

Akurat z tym można się nie zgodzić. Języki można porównywać pod różnymi względami.
Np:

  • Ekspresywność - jak dobrze (naturalnie) konstrukcje językowe potrafią wyrazić to, co chcemy uzyskać. Zwykle im większa ekspresywność, tym krótszy i czytelniejszy będzie kod. Języki wysokiego poziom są bardziej ekspresywne niż języki niskiego poziomu. C++ jest zbliżone pod tym względem do Javy, ale już bardzo daleko mu do Scali, Clojure, F# czy Pythona.

  • Wielkość i rodzaj gramatyki. Języki z rozbudowaną gramatyką kontekstową (np. C++) są trudniejsze w analizie niż języki z gramatyką LL(k) (Java), co przekłada się później na jakość komunikatów o błędach (C++: 100 errorów bo zapomniałeś dać średnika) oraz jakość narzędzi IDE.

  • Siła systemu typów, tzn. ile systuacji błędnych jest w stanie wyłapać system typów, jak często wchodzi w drogę oraz jak bardzo daje się na ten proces sprawdzania typów wpływać. Tu C++ wypada słabiej niż Java (np. brak ograniczeń na genericsy), a do Scali/F#/Haskella w ogóle nie ma startu, ale za to bije na głowę języki dynamiczne.

  • Możliwość optymalizacji i kontroli aspektów niskopoziomowych - w C++ można np. lepiej kontrolować layout pamięci niż w Javie, a w asmie można kontrolować znacznie więcej niż w C++.

  • Ochrona pamięci - np. C++ i D takowej nie dają, a Java i Rust - owszem.

Według mnie na + dla c++

  • pointery - w przeciwieństwie do tego co kolega @ShookTea napisał wyżej, to że się czegoś nie pojmuje nie znaczy od razu, że jest to złe. Pointery to świetna rzecz.

Przecież Java ma pointery zwane referencjami. Nie ma arytmetyki pointerów, ale po co komu arytmetyka pointerów? Kiedyś używało się tego do optymalizacji, ale przy dzisiejszych kompilatorach nie ma to już większego sensu - dostęp po indeksach jest równie szybki.

  • dużo bardziej rozwinięty metaprogramming

Raczysz żartować. Gdzie niby C++ ma w ogóle jakiś metaprogramming? Jedyne co się da pod metaprogramming dopasować to makra z C, ale one są przeżytkiem. C++ nie ma refleksji, introspekcji, porządnego systemu makr, eval itp. Java ma przynajmniej refleksję / introspekcję i można definiować i ładować klasy w locie.

  • przeładowywanie operatorów (nie dam rady żyć bez tego)

Cukier składniowy. Ale to nie problem, masz kilka języków na JVM które to mają.

  • domyślne parametry funkcji

...które nie działają tak jak powinny przy dziedziczeniu. Jeżeli zrobisz override parametru domyślnego w klasie pochodnej, użytego w funkcji wirtualnej, to nie zachowuje się w sposób wirtualny, tylko statyczny (f. wywołuje z klasy pochodnej, ale wartość parametru bierze z bazowej). Scala ma to zrobione lepiej.

  • w c++ chyba jest więcej możliwości do zachowania const-corectness

Tylko, że w C++ słowo const nie gwarantuje, że obiekt się nie zmieni... Jesteś w stanie w C++ zaimplementować wydajnie persystentne struktury danych? Jeśli się nie da, to raczej jest mniej możliwości zachowania const-correctness.

  • unie

Udogodnienie o znaczeniu trzeciorzędnym. Tzn. w jakiś super ograniczonych pamięciowo systemach wbudowanych może przydatne. Poza tym nie widzę zastosowania.

  • możliwość definiowania literałów - zawsze może się przydać

Wszystko zawsze się może przydać - języki tworzone z takim motto nazywają się "kitchen sink language".

1

Tutaj ciekawa strona mowiaca ze C++ wcale taki super nie jest:

http://yosefk.com/c++fqa/

Z mojego doswiadczenia najwiekszy minus C++ przy duzych projektach, to ze aby kazda zmiane sprawdzic trzeba kompilacje robic i to potrafi trwac. Do tego sama konfiguracja projektu jest skomplikowana: makefile, headery, liby itp.

Do tego realnie zaczyna brakowac ludzi ktorzy potrafia ogarnac wiekszy projekt w C++ juz nie mowiac o polaczeniu: serwer w C++ i jakas biblioteka typu Corba, Ace Tao itp + GUI w Javie. Ale to dla niektorych moze tez byc plusem:)

0

C++ jest "domyślnym" językiem programowania pod Windows. wszystko inne wymaga jakichś wrapperów, importowania funkcji, co w przypadku mniej popularnych zakamarków WinAPI i przy braku gotowców może być bardziej pracochłonne niż napisanie programu po prostu w C++ (który z szybkości kodzenia niby nie słynie).

1 użytkowników online, w tym zalogowanych: 0, gości: 1