C++ a C#

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#

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#.

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ę.

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.

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.

0

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

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.

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 ;-)

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".

0

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

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.

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.

0

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

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...

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żą. ;]

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#.

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.

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.

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.

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++.

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.

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 :)

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.

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

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.

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.

0

Może dlatego na MIT zaczynają od Scheme.

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