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 ?
- 1
- 2

- Rejestracja:ponad 17 lat
- Ostatnio:3 minuty
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#.

- Rejestracja:prawie 18 lat
- Ostatnio:około 8 lat
- Postów:278
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ę.

- Rejestracja:ponad 21 lat
- Ostatnio:2 minuty
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.
- Rejestracja:ponad 14 lat
- Ostatnio:prawie 11 lat
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.
- Rejestracja:ponad 16 lat
- Ostatnio:ponad 13 lat
- Postów:1708
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 :)

- Rejestracja:około 17 lat
- Ostatnio:około 3 godziny
- Lokalizacja:Wrocław
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.
- Rejestracja:ponad 16 lat
- Ostatnio:ponad 13 lat
- Postów:1708
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.
- Rejestracja:ponad 16 lat
- Ostatnio:ponad 13 lat
- Postów:1708
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...

- Rejestracja:około 17 lat
- Ostatnio:około 3 godziny
- Lokalizacja:Wrocław
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żą. ;]
- Rejestracja:ponad 16 lat
- Ostatnio:ponad 13 lat
- Postów:1708
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#.

- Rejestracja:ponad 16 lat
- Ostatnio:ponad 8 lat
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.
- Rejestracja:ponad 16 lat
- Ostatnio:ponad 13 lat
- Postów:1708
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.

- Rejestracja:ponad 16 lat
- Ostatnio:ponad 8 lat
@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.
- Rejestracja:ponad 16 lat
- Ostatnio:ponad 13 lat
- Postów:1708
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++.

- Rejestracja:prawie 21 lat
- Ostatnio:ponad 12 lat
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.
- Rejestracja:ponad 16 lat
- Ostatnio:ponad 13 lat
- Postów:1708
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 :)

- Rejestracja:prawie 21 lat
- Ostatnio:4 dni
- Lokalizacja:Poznań
- Postów:1552
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.
- Rejestracja:ponad 16 lat
- Ostatnio:ponad 13 lat
- Postów:1708
Otoz to takie samo mam myslenie jak wasiu :) Z ta roznica ze juz bym darowal ludziom to czyste c chyba ze beda chetni :P

- Rejestracja:ponad 16 lat
- Ostatnio:ponad 8 lat
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.

- Rejestracja:prawie 21 lat
- Ostatnio:4 dni
- Lokalizacja:Poznań
- Postów:1552
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.
- 1
- 2
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.