C# vs C++ czyli święta wojna

0

Witam.
:)
Wiem, że takich tematów jest tutaj od groma ale większość po pierwszej odpowiedzi przerabia temat z C# vs C++ na Windows vs Linux.
Nie o to mi chodzi. Ja chcę uzyskać odpowiedź, który język jest bardziej na rynku pracy pożądany i dlaczego własnie ten i jak wygląda praca takiego programisty C#/C++?

Z tego co już czytałem na tym forum i kilku innych stronach internetowych to za C# przemawia:
[+]Szybkość tworzenia aplikacji,
[+]Dużo przydatnych bibliotek,
[+]Wsparcie potężnej korporacji (Microsoft),
[-]Rynek pracy jest przepełniony programistami C# (?)
[-]Jest językiem zbyt wysokiego poziomu

Za C++
[+]Większa kontrola pisanego kodu,
[+]Mniej programistów przez co zarabiają więcej i NIE MA takiego parcia na rynku pracy,
[+]Można pisać wydajne gry (:P),
[+]Wieloplatformowość,
[-]Znacznie wolniej pisze sie kod,
[-]Ogólnie trudniejszy do ogarnięcia

To wszystko wyczytałem na innych stronach internetowych i wywnioskowałem po opinii kilku ludzi na tym forum tutaj.
Ja natomiast chciałbym się dowiedzieć od Was takich rzeczy...
-Czy jeżeli na studiach będzie wałkowany C++ to np. pracę inżynierską można pisać w C#?
-Jakie znacie większe projekty w C#?
-Jak na rynku pracy są postrzegani programiści C# (czy to prawda, że jest już bardzo okupowany?) ?
-Czy w innych krajach również technologie .NET są tak bardzo potrzebne na rynku pracy?

Aplikacje, które ja bym chciał pisać to czysto użytkowe - jakiś system do obsługi plików, odtwarzać multimedialny, prostą przeglądarke, jakąś proste gierki typu pong, komunikator jakiś itp. Do tego się bardziej nadaje C# czy C++?
**Proszę Was nie kłóćcie się czy Windows czy Linux tylko udzielcie mi odpowiedzi na pytania, które tu zadałem.... ja wiem, że C# na Linuxie nie odpale i wiem, że jest Mono które to niby obsługuje ale mnie w tej chwili interesuje to o co zapytałem w tym temacie czyli C# czy C++ a nie Windows czy Linux.....**foofoo

0

Aplikacje, które ja bym chciał pisać to czysto użytkowe - jakiś system do obsługi plików, odtwarzać multimedialny, prostą przeglądarke, jakąś proste gierki typu pong, komunikator jakiś itp. Do tego się bardziej nadaje C# czy C++?

Zarówno C++ jak i C# się do tego nadaje, z tą różnicą że w C# zrobisz to łatwiej szybciej i przyjemniej.

0
sev napisał(a)

Aplikacje, które ja bym chciał pisać to czysto użytkowe - jakiś system do obsługi plików, odtwarzać multimedialny, prostą przeglądarke, jakąś proste gierki typu pong, komunikator jakiś itp. Do tego się bardziej nadaje C# czy C++?

No ogólnie wszystko to znacznie łatwiej zrobić w C#, ale przy niektórych niższych poziomowo rzeczach trzeba bawić się w import funkcji z Win32 co już nie jest takie fajne, a C++ to lepiej obsłuży.
Tak czy siak C# jest na rynku już długi czas i ma potężne biblioteki i potężne wsparcie.
Tyle ode mnie, więcej nie wiem :P

0
sev napisał(a)

C++(...) [-]ogólnie trudnieszy do ogarnięcia

Nie powiedziałbym.
Możesz tworzyć obiekty na stosie tak jak to jest z typami wbudowanymi.
W C++ jasno i wyraźnie w definicji widać,co jest referencją,co wskaźnikiem a co po prostu obiektem.
Nie ma jajec powstających przy przesyłaniu obiektów jako parametrów funkcji-C# struktury kopiuje,do klas robi referencje,w C++ wyraziście to definiujesz sam.
Nie potrzeba się pierdzielić jakimiś wynalazkami w postaci IDisposable,bo destruktor działa tak jak należy,i ma się wpływ na to,kiedy zostanie wywołany.
C++ posiada bardzo użyteczne słowo kluczowe friend,odpowiednik C# jest po prostu żałosny.
Nie pamiętam niestety szczegółów,ale C# zdaje się miał też jakieś problemy przy przeciążaniu operatorów.

0
sev napisał(a)

[-]Jest językiem zbyt wysokiego poziomu

Nie ma czegoś takiego jak "język zbyt wysokiego poziomu".

[+]Mniej programistów przez co zarabiają więcej i NIE MA takiego parcia na rynku pracy,

Skąd te informacje, że jest ich mniej, i że rynek pracy jest przepełniony programistami C#?
A różnice w zarobkach zależą od tego co i jak się robi, a nie od tego, w jakim języku się pisze.

-Czy jeżeli na studiach będzie wałkowany C++ to np. pracę inżynierską można pisać w C#?

Tak.
A poza tym na studiach nie wałkuje się jednego języka.

-Jakie znacie większe projekty w C#?

ZGW, ADNE, HOH i jeszcze kilka innych z pracy. Tylko co Ci po tej wiedzy, skoro nigdy w życiu ich nie zobaczysz? :)

3

za C# przemawia:
[-]Jest językiem zbyt wysokiego poziomu

Huh?

Za C++:
[+]Mniej programistów przez co zarabiają więcej i [błąd ortograficzny] takiego parcia na rynku pracy,

To cię zdziwię, praktycznie nie ma programisty który się nie otarł o C++ (w szkolę, na uczelni). Co najwyżej większość woli jednak pisać w czymś innym. Ale gdybyś opanował C++ na poziomie naprawdę zaawansowanym to pieniądze mogłyby być faktycznie z tego niezłe.

[+]Można pisać wydajne gry (:P),

Zdziwię Cię, w C# też można. W interpretowanym Pythonie też można. Trzeba po prostu, jeśli się to okaże konieczne (a prawdopodobnie nie), wykonywać faktycznie czasochłonne obliczenia w sposób do tego przeznaczony.

Zawsze możesz się zająć na przykład Pythonem. Będzie jeszcze szybsze tworzenie, jeszcze wyższy poziom i jeszcze wolniejszy kod.
Albo Haskellem. Będzie praktycznie zerowa konkurencja na rynku pracy i praktycznie zerowe wsparcie bo mało kto ten język zna.
Albo Asemblerem. Nie jest zdecydowanie "językiem zbyt wysokiego poziomu" no i jeszcze wolniej pisze się kod.
Albo COBOLEM. Może gdzieś tam znajdzie się jakiś 50 letni system który trzeba utrzymywać (w końcu dinozaury w tym piszące przecież wymrą), a wtedy zatrudnienie na kolejne 50 lat zapewnione :>

5

Ale gdybyś opanował C++ na poziomie naprawdę zaawansowanym to pieniądze mogłyby być faktycznie z tego niezłe.

Jeszcze nie słyszałem, żeby ktoś zarabiał niezłe pieniądze za samo opanowanie języka programowania. Natomiast za opanowanie niszowej dziedziny jak najbardziej (algorytmy, reverse engineering, programowanie rozproszone, etc.).

0

to zależy co chcesz pisać :)
Jeśli lubisz aplikacje okienkowe pod Windowsa to zdecydowanie pomocne będzie środowisko .NET i C#, jeśli chcesz napisać wspaniałą grę to pewnie bardziej C++, ale to tylko język, do tego mnóstwo bibliotek i innych rzeczy.
Pisząc, że C++ jest ogólnie trudniejszy piszesz głupoty :P

0

Najłatwiejszy (z języków kompletnych w sensie Turinga) jest zdecydowanie BrainFuck, ledwo osiem instrukcji, ale niestety jakoś wygodnie się w nim nie pisze. A może jednak we wszystkich językach pisze się jednakowo wygodnie i są jednakowo skomplikowane?

0

Dzięki wszystkim za wypowiedzi;)
Przekonałem się do C# teraz będę szukał jakiejś ciekawej publikacji... w sumie znalazłem jednak funduszy chwilowo brak.
@madmike co myślisz o przypięciu tego tematu? Moim zdaniem jest ciekawie napisany i mogą sie ludzie tutaj dłużej wypowiadać... :)

P.S Z C++ też nie zrezygnuje ale nie będę z nim tak bardzo wiązał przyszłości ;)

0

Co wam powiem to wam powiem ale wam nic nie powiem ale to wam powiem:

Jeśli chodzi o sam język i biblioteki to C# jest lepszy.... ale jeśli chodzi o to co wytwarza kompilator(plik exe) to C++ jest zdecydowanie lepszy.

Fajne porównanie:
http://www.thinkingparallel.com/2007/03/06/c-vs-c-a-checklist-from-a-c-programmers-point-of-view/

0

czyli święta wojna
jaka znowu wojna? na codzień używam obu, i jakoś nie odczuwam potrzeby do samoflejma ;-)

ja wiem, że C# na Linuxie nie odpale i wiem, że jest Mono które to niby obsługuje
zaprzeczasz sobie.

4

Jeżeli chodzi o poziom skomplikowania to C++ jako język jest znacznie bardziej skomplikowany niż C#. Sęk w tym, że większość programistów używa tylko podzbioru C++, żeby niepotrzebnie nie komplikować sytuacji (często różni programiści używają różnych pdzbiorów w jednym projekcie przez co robi się niezły chlew). A czasem zdarza się C++ fanboy, który najchętniej wszystko by metaprogramował co skutkuje tym, że nikt takiego kodu nie rozumie oprócz samego fanboya (a czasem on sam też go nie rozumie).
Welcome in Wonderful World of C++.

C++ posiada bardzo użyteczne słowo kluczowe friend,odpowiednik C# jest po prostu żałosny.

Bardzo użyteczne? Chyba jak lubisz łamać zasady OOP.

2
MasterBLB napisał(a)

Możesz tworzyć obiekty na stosie tak jak to jest z typami wbudowanymi.

W C# też można, wystarczy zdefiniować typ jako struct, a nie class.
Tylko po co to robić?

W C++ jasno i wyraźnie w definicji widać,co jest referencją,co wskaźnikiem a co po prostu obiektem.

A w C# trzeba po prostu zapamiętać, że wszystkie struct (w tym wbudowane typy liczbowe i logiczny) oraz enumy są wartościowe, reszta jest referencyjna, a wskaźniki mają gwiazdki.

Nie ma jajec powstających przy przesyłaniu obiektów jako parametrów funkcji-C# struktury kopiuje,do klas robi referencje,

Żadnych jajec nie ma, po prostu typy wartościowe nie zostaną przez funkcję zmodyfikowane, a referencyjne wprost przeciwnie. Jeśli w metodzie chcesz operować na kopii obiektu referencyjnego, to musisz go po prostu sam sklonować.

Nie potrzeba się pierdzielić jakimiś wynalazkami w postaci IDisposable,

W C# również nie trzeba. 8 lat piszę, i jeszcze ani razu nie zaimplementowałem tego interfejsu we własnej klasie. :)
Jedyne co trzeba, to pamiętać o wywoływaniu Dispose na obiektach korzystających z zewnętrznych zasobów: plików, połączeń sieciowych, połączeń do bazy danych lub obiektach związanych z grafiką i rysowaniem.

bo destruktor działa tak jak należy,i ma się wpływ na to,kiedy zostanie wywołany.

Właśnie, a w C++ zawsze trzeba pamiętać o destruktorze, a zapominanie o nim jest przyczyną 70% błędów programistów tego języka.

C++ posiada bardzo użyteczne słowo kluczowe friend,odpowiednik C# jest po prostu żałosny.

internal to nie jest odpowiednik friend, to ma zupełnie inny cel. W C# nie ma friend, bo nie ma sensu zaprzyjaźniania klas, to jest złamanie hermetyzacji i nic poza tym.

Nie pamiętam niestety szczegółów,ale C# zdaje się miał też jakieś problemy przy przeciążaniu operatorów

Jak do tej pory udało mi się przeciążyć wszystkie, które chciałem.

0

Sory gregory, ale pomiędzy tymi dwoma językami nie było żadnej wojny i nigdy nie będzie.. Co najwyżej można się pozastanawiać w którym kierunku chcesz pójść, ale to zależy od twoich upodobań..

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