C++ a C#

Jaki język na początek ?
Inny
41%
41% [89]
C#
49%
49% [107]
C++
11%
11% [23]
OJ
  • Rejestracja:ponad 14 lat
  • Ostatnio:prawie 11 lat
0

Dopiero mam zamiar zacząć "zabawę" z programowaniem i mam kilka pytań:
Jakie są największe różnice między tymi językami ? Od jakiego lepiej zacząć ?
Który ma przyszłość i nie stanie się martwym językiem ?

0

Jesli zaczynasz, zacznij od c++. Nauczysz sie podstaw programowania w c++ to latwiej bedzie przejsc na inne. Jesli chodzi o przyszlosc to wydaje mi sie ze c# jest bardziej przyszlosciowy. Wiecej ofert pracy jest jako programista .NET c#

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:3 minuty
0

C++ nie jest dla początkujących. Tam naprawdę łatwo strzelić sobie w stopę na tysiąc różnych sposobów.
C# został stworzony na podstawie Java i C++ tak by być jak najbardziej idiotoodporny (w pełni nie jest idiotoodporny bo to niemożliwe).
C++ ciągnie za sobą bardzo długi ogon historyczny, co powoduje, że nie jest tak poręczny jak C#.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
sprzedamsanki
  • Rejestracja:prawie 18 lat
  • Ostatnio:około 8 lat
  • Postów:278
0

Właśnie dlatego, że łatwo strzelić sobie tam w stopę, jest dobry na początek. Daje zrozumienie tego, co tak naprawdę robisz i wiedzę jak omijać różne pułapki. Jeżeli zaczynasz od C#, to za dużo rzeczy jest robionych za takiego początkującego programistę.


The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' (I found it!) but 'That's funny'
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
0
MarekR22 napisał(a)

C# został stworzony na podstawie Java i C++ tak by być jak najbardziej idiotoodporny (w pełni nie jest idiotoodporny bo to niemożliwe).

Hm. Wydaje mi się, że C# ze względu na obsługę wskaźników jest gdzieś po środku między Javą a C++ (choć zdecydowanie bliżej Javy). Jak się chcesz postrzelić, to postrzelisz.

OJ
  • Rejestracja:ponad 14 lat
  • Ostatnio:prawie 11 lat
0

Z tego co widzę to chyba zacznę od C++, jest dużo polskich kursów pisanych dla osób które wcześniej nie miały styczności z programowaniem w przeciwieństwie do C#, Angielskiego dopiero się uczę tak więc na razie wole polskie kursy, których o C# jest mało.

several
  • Rejestracja:prawie 16 lat
  • Ostatnio:minuta
0

Ja zacząłem od C++ a teraz uczę się C#. Nie popełnił mojego błędu i odwróć kolejność.


KR
Moderator
  • Rejestracja:około 21 lat
  • Ostatnio:około 10 godzin
  • Postów:2964
0

Jeśli chcesz poznać jak to wszystko działa od spodu, to ucz się assemblera i C.
Jeśli chcesz pisać aplikacje (i mieć szybko efekty), pisz w C#.

0

Dokladnie się zgadzam z Królikiem :) C# to język przyjemniejszy ,więc na pewno cię nie zniechęci co C++ a tym bardziej C czy Assembler już może. Gdybym sam zaczynał nauke programowania to bym się brał za C# , a nie że pouczylem się C++, a potem kilka lat przerwy.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
0

Jakoś, cofając się w czasie o lat 10-15, ci co zaczęli od C czy assemblera się nie zniechęcili – a kto się zniechęcił znaczy nie miał powołania ;-)

P1
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 13 lat
  • Postów:1708
0

Jestem zaskoczony ze ktos proponuje na poczatek C#.

Ten jezyk jest rozwinieciem jakby c++ no i nie sadze by na poczatek sie nadawal. Zdecydowanie jestem za c++. Kiedys ludzie proponowali jeszcze c ( calkiem niedawno ) na sam poczatek a teraz juz slychac glosy o c#. Czy to postep cywilizacyjny czy moze lenistwo?

Ja jestem za c++ zdecydowanie na poczatek. C# jest idealne do baz danych ale na poczatek to nie bedzie potrzebne a z czasem mozna przeskoczyc. Wielkich roznic nie ma a jednak bedzie sie mialo solidne podstawy :)

Takie jest moje zdanie :)

0

C# jest bardzo dobre na początek, sam zaczynałem od c++ ale na szczęście w miarę szybko przestawiłem się na C#. Gdybym miał zacząć jeszcze raz, na pewno wybrałbym si szarpa, a gdy już bym w miare dobrze go opanował, zacząłbym sukcesywnie schodzić "niżej".

OT
  • Rejestracja:ponad 20 lat
  • Ostatnio:ponad 11 lat
0

Jak ktoś coś rzuci o Delphi i Pascalu to uduszę.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Wrocław
0
polaczek17 napisał(a)

Ten jezyk jest rozwinieciem jakby c++ no i nie sadze by na poczatek sie nadawal.

Przestań pitolić, C++ z C# nie ma nic wspólnego.

"C++ is a horrible language." Ja bym zaufał autorytetowi autora tych słów. ;]

A na początek trzymałbym się normalnych języków jak np. C.

P1
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 13 lat
  • Postów:1708
0

Przestań pitolić, C++ z C# nie ma nic wspólnego.

Ale c# z c++ jak najbardziej
C sharp jest dosc specyficzny i czerpie inspiracje z kilku jezykow jednoczenie miedzy innymi z c++.
Chociazby delegaty i zdarzenia. Mozna takze od biedy wymienic typy ogolne przypominajce szablony w c++.
Ogolnie skladnia jest calkiem podobna oczywiscie nie taka sama i sa dosc znaczne roznice ale jednak. Nie mozna powiedziec ze c# nie ma nic wspolnego z c++ bo to herezja. C sharp oparto na c/c++.
przykladem moga byc chociazby slowa kluczowe czyli cos smiesznego ale jednak :
http://msdn.microsoft.com/library/x53a06bb.aspx

dyrektywy preprocesora:
http://msdn.microsoft.com/library/ed8yd1ha.aspx

Jest to inny jezyk to oczywiste ale nie mozna powiedziec ze NIC wspolnego nie ma.

KR
Moderator
  • Rejestracja:około 21 lat
  • Ostatnio:około 10 godzin
  • Postów:2964
0

@up, tak bo składnia to jedna z bardziej istotnych rzeczy w projekcie języka. :>

P1
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 13 lat
  • Postów:1708
0

Nie ma znaczenia czy istotne czy nie. Wazne ze jest podobne. Rownie dobrze mozesz napisac ze slowa kluczowe wcale nie sa podobne do c++ a do delphi bo i tam wiekszosc jest taka sama. Nie zmienia to faktu ze jest to JAKIES podobienstwo. To oczywiste ze te jezyki sa rozne ale...

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Wrocław
0
polaczek17 napisał(a)

To oczywiste ze te jezyki sa rozne ale...

To jak w końcu? Bo wcześniej napisałeś, że C# jest rozwinięciem C++, a tak po prostu nie jest.
A co do Twoich argumentów, to połowa tych słów kluczowych w C# jest czymś innym niż w C++, zaś "dyrektywy preprocesora" są jeszcze czymś innym i do czego innego służą. ;]

P1
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 13 lat
  • Postów:1708
0

To jak w końcu? Bo wcześniej napisałeś, że C# jest rozwinięciem C++, a tak po prostu nie jest.

Mialem na mysli ze jezyk c# dziedziczy sporo z c++ ( oraz javy ). coz takiego on wiec dziedziczy?
Od banalnej rzeczy zacznijmy jak ... zmienne.
Roznice sa tylko w tym ze w c++ aby uzyc liczby bez znaku uzywamy "unsigned"i typ zmiennej a w c# piszemy zwykle "u" i po nim typ zmiennej.
Reszta jest taka sama.

dalej instrukcja warunkowa dziala identycznie jak w c++. Operatory sa rowniez takie same zero roznic.

Przechodzimy dalej i znow petle ... zero roznic w stosunku do c++.

Inkrementacja oraz dekrementacja rowniez nic zmienione w stosunku do c++
To samo tyczy sie funkcji goto.

uzywanie operatorow takze jest takie same.

Nawet rzutowanie jest takie same. ( z tymze ze przyznam sie ze nie wiem - bo nie programuje w C# - czy jest tam static_cast. na pewno jednak mozna rzutowac w stylu (int)zmienna )

Instrukcja switch identyczna jak w c++

overload identyczny jak w c++

I peeeeeeeeeeeeeelno innych rzeczy. Jak mozna wiec powiedziec ze on nie jest podobny do c++? Ma swoje roznice chociazby dodatkowa petla czy ogolnie cala zlozonosc jakby z klasy.

Bez sensu wedlug mnie zaczynac od C sharpa skoro dodaje on wiele nowych rzeczy i ma kilka roznic w stosunku do c++. A roznice te sa dosc istotne. Zaczniesz od C# a pozniej zdziwisz sie czemu w c++ jest tak a nie inaczej.
W druga strone tak nie jest.

Wedlug mnie lepiej zaczac od c++ a pozniej wejsc na C#.

rincewind
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0

W pracy posługuję się obydwoma językami (oraz C++/CLI jako pomost między kodem natywnym i zarządzalnym). Z całym moim doświadczeniem w obu tych językach stwierdzam, że C# i C++ to dwa zupełnie różne języki.

polaczek17 napisał(a)

Chociazby delegaty i zdarzenia.

Pokaż mi odpowiednik w C++. Tylko błagam, nie mów o funktorach czy wskaźnikach na funkcje, bo to nie jest to samo.

polaczek17 napisał(a)

Mozna takze od biedy wymienic typy ogolne przypominajce szablony w c++.

Genericsy w C# są tak różne od szablonów w C++, że takie stwierdzenie nie ma sensu. Podobne chyba tylko składniowo.

polaczek17 napisał(a)

C sharp oparto na c/c++.

Bzdura; może oparto składnię, podobnie jak większości współczesnych języków.

C# jest w pełni obiektowy -- w przeciwieństwie do C++, który pozwala również programować np. strukturalnie.

C# ma pamięć zarządzaną garbage collectorem -- C++ nie.

C# obsługuje lambda-wyrażenia -- C++ nie.

Klasy C# nie posiadają destruktora -- w C++ tak.

C# nie pozwala na dziedziczenie wielokrotne -- C++ tak.

... etc., etc.

Osobiście uważam, że naukę lepiej zacząć od C#. Nie dlatego, że jest łatwiejszy czy lepszy. Po prostu nikomu nie polecam nauki programowania z C++. ;) Ten język jest na tyle zawiły, że na początek zdecydowanie za trudny. Rzeczy takie, jak undefined behaviour pojawiają się na każdym kroku, co może skołować początkujących. C# jest językiem o wiele lepiej zdefiniowanym, co ułatwia początki programowania. To, co nie jest jednoznaczne, po prostu się nie skompiluje.

EDIT:

polaczek17 napisał(a)

Mialem na mysli ze jezyk c# dziedziczy sporo z c++ ( oraz javy ). coz takiego on wiec dziedziczy?
Od banalnej rzeczy zacznijmy jak ... zmienne.
Roznice sa tylko w tym ze w c++ aby uzyc liczby bez znaku uzywamy "unsigned"i typ zmiennej a w c# piszemy zwykle "u" i po nim typ zmiennej.
Reszta jest taka sama.

Wooow, nie wiedziałem, że idea zmiennej wywodzi się z C++!

polaczek17 napisał(a)

dalej instrukcja warunkowa dziala identycznie jak w c++.

"Jeśli prawda to zrób cośtam, w przeciwnym przypadku coś innego". Da się zrobić tak, żeby if działał inaczej?

polaczek17 napisał(a)

Operatory sa rowniez takie same zero roznic.

Zdziwiłbyś się. Chyba że mówisz o operatorach arytmetycznych czy logicznych, ale te trudno zmienić tak, żeby działały inaczej... Inne dodawanie? Bez sensu.

polaczek17 napisał(a)

Przechodzimy dalej i znow petle ... zero roznic w stosunku do c++.

Poza foreachem -- fakt, mało różnic. Ale identyczne pętle spotkasz w Pascalu na przykład. Różnicą jest jedynie składnia, ale działają identycznie.

polaczek17 napisał(a)

Inkrementacja oraz dekrementacja rowniez nic zmienione w stosunku do c++
To samo tyczy sie funkcji goto.

No sorry, inkrementacja i dekrementacja to zwiększenie bądź zmniejszenie wartości o 1. To też wymyślił Stroustrup? A Pascalowe inc(i), dec(i)? Toż to jest to samo, tylko (znów) inaczej zapisane.

polaczek17 napisał(a)

Nawet rzutowanie jest takie same. ( z tymze ze przyznam sie ze nie wiem - bo nie programuje w C# - czy jest tam static_cast. na pewno jednak mozna rzutowac w stylu (int)zmienna )

W większości języków masz rzutowanie. Sposób zapisu to znów kwestia jedynie składni. A znajdź mi w C++ rzutowanie słabe, za pomocą operatora as.

polaczek17 napisał(a)

Instrukcja switch identyczna jak w c++

Nieprawda. Jeśli po case jest jakiś kod, C# składniowo wymaga break, w przeciwieństwie do C++, który przy braku breaka przechodzi do kolejnego case'a.

polaczek17 napisał(a)

overload identyczny jak w c++

Nieprawda.

polaczek17 napisał(a)

I peeeeeeeeeeeeeelno innych rzeczy. Jak mozna wiec powiedziec ze on nie jest podobny do c++? Ma swoje roznice chociazby dodatkowa petla czy ogolnie cala zlozonosc jakby z klasy.

Jest podobny tylko składniowo. I to też tylko na pewnym podstawowym poziome, bo potem dochodzą lambdy, LINQ etc.


P1
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 13 lat
  • Postów:1708
0

Pokaż mi odpowiednik w C++. Tylko błagam, nie mów o funktorach czy wskaźnikach na funkcje
, bo to nie jest to samo.

To samo to nie jest ale jest pdoobne.

Genericsy w C# są tak różne od szablonów w C++, że takie stwierdzenie nie ma sensu. Podobne chyba tylko składniowo.

Znow to jest podobienstwo nigdzie nie napisalem ze to jest to samo.

Bzdura; może oparto składnię, podobnie jak większości współczesnych języków.

Skladnie przede wszystkim. Struktura i budowa juz sa inne. Ok to oczywiste. Nie zmienia to faktu ze gdy nauczysz sie c++ skok na C# bedzie latwy. Natomiast w druga strone bedzie gorzej. I do tego caly czas zmierzam.

Wooow, nie wiedziałem, że idea zmiennej wywodzi się z C++!

C# blizej jest do c++ pod wzgledem zmiennych niz np do pascala czy delphi. To mialem na mysli.

"Jeśli prawda to zrób cośtam, w przeciwnym przypadku coś innego". Da się zrobić tak, żeby if działał inaczej?

No sorry, inkrementacja i dekrementacja to zwiększenie bądź zmniejszenie wartości o 1. To też wymyślił Stroustrup? A Pascalowe inc(i), dec(i)? Toż to jest to samo, tylko (znów) inaczej zapisane.

Znow wystarczy spojrzec na delphi lub pascala

Nieprawda. Jeśli po case jest jakiś kod, C# składniowo wymaga break, w przeciwieństwie do C++, który przy braku breaka przechodzi do kolejnego case'a.

Fakt zapomnialem o tym :)

Jest podobny tylko składniowo. I to też tylko na pewnym podstawowym poziome, bo potem dochądzą lambdy, LINQ etc.

I to wlasnie mialem na mysli :) Chodzi o to ze skok z c++ na C# jest latwy i praktycznie bezbolesny wystarczy przyzwyczaic sie do paru "udziwnien". W druga strone bedzie juz gorzej.

rincewind
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0

@polaczek17: Początkowo mówiłeś, że C# jest wzorowany na C++ i w wielu rzeczach identyczny. Potem zgadzałeś się z somekindem, że są różne, tylko podobne. Teraz zgadzasz się ze mną, że są podobne tylko składniowo. Natomiast ja uważam, że po prostu nie znasz C# (sam z resztą napisałeś, że w nim nie kodujesz), ale próbujesz udawać mądrego. Mogę z całą mocą odpowiedzieć: podobieństwo składniowe też jest złudne.

Moim zdaniem lepiej nauczyć się C#, bo pozwala wyrobić sobie sporo dobrych nawyków, które znajdują zastosowanie w C++. Lepsze to, niż nauczyć się (najczęściej bez zrozumienia) kilku potworków składniowych w C++ i potem próbować przenieść to do bardziej normalnego języka.


P1
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 13 lat
  • Postów:1708
0

W C# nie kodze jako tak na codzien co jakis czas tylko co nieco gdy trzeba. To fakt.
Chodzi mi o to ze gdy przenosze sie z c++ na C# to jakos mnie to nie boli. Natomiast gdybym mial zaczynac i zaczalbym od C# a pozniej jeszcze chcial cofnac sie do c++ to juz byloby gorzej.

No chyba ze ktos nie chce sie cofac to co innego C# zapewne bedzie i juz jest rozchwytywany przez pracodawcow.

Co do tych podobienstw. Przede wszystkim chodzi o to ze blizej C# do c++ niz zalozmy pascala no ale to raczej oczywiste. Podobienstwa skladniowe sa uderzjace dopiero pozniej juz dochodza rozne "udziwnienia" jest inaczej. Niemniej jesli ktos zacznie od c++ podstawy bedzie mial. A reszty nauczy sie bardzo szybko.

Powiem tak:
C# pilnuje kodera bardziej niz c++. Wynika z tego ze w c++ mozna popelnic wiecej bledow i nauczyc sie gorzej pisac. Z drugiej strony taki "zimny prysznic" mysle ze lepiej kogos wyszkoli niz cos co trzyma za raczke.

Nie powiem C# jest swietne na przyszlosc wlasnie gdy ktos pracowac chce w firmie ale na poczatek JA OSOBISCIE polecalbym c++.

deus
  • Rejestracja:prawie 21 lat
  • Ostatnio:ponad 12 lat
0

C# bliżej do Lispu niż do C++ pod względem mechaniki.

Delegat to metoda ściśle powiązana z obiektem, w C++ nie istnieje odpowiednik. 'Podobne' szablony i generici - mówi Ci coś 'polimorfizm parametryczny'? Taki wynalazek z czasów, gdy o C++ nikt nie marzył.

Nie widzę podobieństw (może poza niektórymi elementami składni) poza rzeczami, które były już przed oboma językami. Polaczek, popisz najpierw w C#, poznaj podstawy .NET, potem porównuj.


I nie udawaj, że rozumiesz.
P1
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 13 lat
  • Postów:1708
0

No coz moze faktycznie za malo kodzilem jeszcze w C# ja tam przepadam za c++ :P Zapewne za jakis czas bedzie trzeba przeskoczyc ze wzgledu na prace itd :)

wasiu
  • Rejestracja:prawie 21 lat
  • Ostatnio:4 dni
  • Lokalizacja:Poznań
  • Postów:1552
0

Ale pieprzycie.

Zaczyna sie tylko i wylacznie od C, dalej C++... a potem w przyszlosci mozna myslec o C#. Ze trudniej? Sorry ale ktos kto zaczyna, to ma byc w przyszlosci programistą, a nie dupą wołową prowadzoną za rączke. Trzeba zacząć od C i C++ by wiedziec co sie dokladnie dzieje 'pod spodem'. Era programistów drag & drop jest przerażająca... nie mówie by pisać jakieś super aplikacje w tym C i C++ z wykorzystywaniem MFC czy innych starych rzeczy... ot zwykłe aplikacje konsolowe i przejście przez wszystkie podstawowe operacje, obiekty, wsaźniki, pisanie własnych algorytmów, itp... aby po C++ człowiek zaczął myśleć obiektowo!

Pozniej owszem, na codzien sie juz kodzi w C# i zgarnia na tym kase.... ale C# i caly .net to juz zupelnie inny wymiar i nie nauczy Cie logicznego myslenia tak jak C i C++.
Jak ktos zacznie od C#, bo C i C++ jest za trudne to niestety nie nadaje sie on na programiste z przyszloscia... co najwyzej na zwyklego klepacza kodu (do tego C# jest idealny). Z wieloma takimi programistami sie spotykam i niestety szlag mnie trafia, gdy niektorych rzeczy po prostu nie ogarniaja, a najlepiej to im wychodzi właśnie drag & drop z toolbara... masakra.


Full Stack Developer .NET & Angular, Blazor
P1
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 13 lat
  • Postów:1708
0

Otoz to takie samo mam myslenie jak wasiu :) Z ta roznica ze juz bym darowal ludziom to czyste c chyba ze beda chetni :P

rincewind
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0
wasiu napisał(a)

Ale pieprzycie.

Zaczyna sie tylko i wylacznie od C, dalej C++... a potem w przyszlosci mozna myslec o C#.

Ale pieprzysz. Zaczyna się tylko i wyłącznie od abakusa, potem przechodzi na karty perforowane, kod maszynowy i ewentualnie można przejść do assemblera. A potem już z górki.


wasiu
  • Rejestracja:prawie 21 lat
  • Ostatnio:4 dni
  • Lokalizacja:Poznań
  • Postów:1552
0

abakusa to chyba kazdy przechodzil w podstawowce ;)
kary perforowane i kod maszynowy... z checia zobaczylbym jako ciekawostke :)
assembler... tez warto musnac ;)

Różnica jest taka, ze powyzsze rzeczy sa juz niskopoziomowe... a C++ badz co badz jest jezykiem wysokopoziomowym, wiec porownywalny level z C# - z tym, ze .NET to glownie wykorzystywanie bibliotek, a nie programowanie (ktore jest mocno uproszczone w porownaniu z C++).
Zaczynając od .NET'a to jest tak jakbys zamiast prawka kupił sobie limuzyne z szoferem. Niby jedziesz... ale prowadzic dalej nie umiesz.


Full Stack Developer .NET & Angular, Blazor
deus
  • Rejestracja:prawie 21 lat
  • Ostatnio:ponad 12 lat
0

Może dlatego na MIT zaczynają od Scheme.


I nie udawaj, że rozumiesz.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.