Różnice między C,C# a C++

Czytam aktualnie knigę Pana Stephena Prata pt. Szkoła programowania C++.
Gość pisze że C++ zawiera w sobie wszystko to co ma C bo z niego się wywodzi i pisze też że C++ uzupełnia C o pojęcia obiektowe, że zawiera programowanie generyczne i że C++ zachował wszystko co ma w sobie C.
Pytanie brzmi … od czego ma zacząć naukę laik? Od C czy od razu od C++?

Dlaczego większość ludzi sądzi że naukę zaczynamy od C a nie od C++ skoro C++ to tak jak by C po tuningu?

Cześć, traktuj naukę C jako wstęp do C++. Prawie każda książka o c++ (każda jaką znam czyli min. symfonia c++) jedzie po łebkach podstawy takie jak wskaźniki, alokacja pamięci itp. bo autor zakłada że znasz to już z C.

C# ma się do C tak jak Java do JavaScript. To i to jest językiem programowania i ma wspólny człon nazwy ;-).

Czyli mówi kolega że zaczynać od C i zaglądać do C++…
Tak myślałem ale wolałem się upewnić.
Mam pytanko:
Mając książkę Praty którą mam próbować zdobyć Symfonię (którą tak polecają) czy to co mam wystarczy?
Ostatnie pytanie: którą książkę do C# kolega poleci?
Przyznam że w antykwariatach i bibliotekach tu lokalnie to wywiało wszystko co z C# związane.

C - podstawowy język bez programowania obiektowego.C++ to C + programowanie obiektowe,klasy,obiekty,itd.C# język podobny do Javy,który już wszystko ma obiektowe,stworzony na biblioteki i platformy programistyczne DotNet,Net Framework.Charakteryzuje się tym,że wszystkie jego funkcje są pogrupowane w klasy podobnie jak Java.

O tak, klasy, obiekty … i początkujący zakręcony.
Mógł by ktoś wyjaśnić na jakimś dziwnym ale prostym przykładzie z życia wziętym o co chodzi z tym językiem obiektowym a nieobiektowym?

Drugie głupie pytanie - język wysokopoziomowy a nisko poziomowy …

Chodzi nie o sam język a o programowanie obiektowe,tworzy się specjalne struktury zwane klasami.Potem na podstawie tych struktur tworzy się obiekty,poczytaj co to jest programowanie obiektowe.np piszesz klasę samochód,nadajesz jej właściwości markę,kolor,typ silnika,prędkość.Potem możesz tworzyć obiekty w pamięci.To właśnie umożliwia C++.Na tym bazują nowsze języki programowania.Język niskopoziomowy-chodzi o to,że jest blisko sposobu w jaki działa komputer.W językach wysokiego poziomu wywołujesz funkcje biblioteczne,w języku niskiego poziomu musisz je często sam napisać.To tak jak w Basicu wywołujesz print.

1 polubienie

Na Wikipedii jest cała kategoria dotycząca różnic między językami programowania

Do C jest dobry kurs na Wikibooks
https://pl.wikibooks.org/wiki/C

Do C++ polecam tutoriale:
http://xion.org.pl/productions/texts/coding/megatutorial/
http://www.intercon.pl/~sektor/cbx/
Co prawda opisują standard C++03, ale jeśli ogarniesz to co wnich jest to nie powinieneś mieć problemu z ogranięciem rzeczy z C++11 i noszych na podstawie opisu na Wikipedii https://pl.wikipedia.org/wiki/C%2B%2B11

Dodatkowo warto pocztać:
http://gynvael.coldwind.pl/?id=238
http://gynvael.coldwind.pl/?id=374
http://gynvael.coldwind.pl/?id=408
http://www.uw-team.org/forum/viewtopic.php?f=7&t=9751&p=77955#p77955
http://asawicki.info/productions/artykuly/strukturyd_formatyp.php5
http://asawicki.info/productions/artykuly/Unicode%20w%20Visual%20CPP.html
http://xion.org.pl/2010/02/12/o-obiektowosci/
http://xion.org.pl/2011/09/22/class-fish-extends-animal/

Możesz też przejrzeć starsze tematy z forum:






2 polubienia

Serdeczne dzięki za zainteresowanie tematem i przede wszystkim za zaangażowanie w czyjejś sprawie.
Wszystko jest niby cacy lecz jest jedno ogromne ale.
Kupiłem książkę Stephena Praty do C++ (szkoła programowania).
Porównałem oryginalną książkę z książkami pobranymi w pdfach dawno temu z różnych stron (pebx, chomik i inne).
Tylko w jednej książce znalazłem kilkanaście błędów i dalej przestałem szukać.
Błędy są celowe. Tak wnioskuję.

Kod z książki:
{
int c;
while ((c= getc(ifp)) != EOF)
putc(c,ofp);
}

Kod z dokumentu pdf z chomika:
{
int c;
while ((c= get(ifp)) != EOF)
put(c,ofp);
}

Kod z dokumentu z pebx:
{
int c;
while ((c= getc(if)) != EOF)
putc c,ofp;
}

i takich przykładów jest w ciul!
Wspominam o tym tylko i wyłącznie dlatego że nie umiem przestawić się na większe zaufanie do materiałów znalezionych w necie.
Może z poradnikami bezpośrednio ONLINE nie jest jeszcze tak źle jak z książkami bo praktycznie w czasie rzeczywistym ludzie nad tym czuwają (posty, komentarze, fora) ale z książkami skanowanymi nie jest już tak wesoło. To samo jest z kopią książki WPROWADZENIE DO J. C. Bieleckiego z 1988r.

Raczej wynikają z przejechaniem po książce OCR-em.

Niektóre książki wyglądają tak jak by były napisane w Wordzie i zrobiony z nich pdf. Nie wygląda mi to na skan.

Język C jest podzbiorem języka C++. Pierwszy był C potem ktoś dodał do niego obiekty(klasy) i powstał C++.
C# to nowoczesna wersja języka C++ - działa trochę wolniej od C, C++ ale za to jest bezpieczniejsza no i do uruchamiania programu napisanego w C# potrzebujesz platformy .NET tzn. WIRTUALNEJ MASZYNY.

1 polubienie

Nie, C# nie ma nic wspólnego z C++. Trochę elementów składni ma podobnych, ale nie tak wiele.

Tak w ramach ciekawostki napiszę tylko że świat programowania to ciężki świat. Ciężki ale wspaniały. Gdy dodasz do programowania jeszcze elektronikę to słów brakuje. Wystarczy że człowiek liźnie trochę C#/C, Arduino, AVR i inne i chce więcej, więcej. Jakie to piękne samemu zrobić bardzo dobry alarm do samochodu za 40zł. Jakie to piękne zrobić cyfrowy sterownik klimatyzacji, alarmu, domofonu i wszystko ślicznie zintegrować w jednym fajnym urządzeniu za kwotę łączną 80zł :slight_smile:
Jakie to śliczne wszystko mieć włączniki światła sterowane głosem bądź z pilota. Jakie to piękne odebrać domofon przez telefon z androidem będąc na drugim końcu miasta. Piękny świat :slight_smile: ta elektronika.
Szkoda tylko że “biurko” elektronika jest tak drogie. Stacja lutownicza, multimetry, wytrawiarki, oscyloskop, mikroskop i masa, masa innych gadżetów jak mierniki freq., programatory, odpowiednie PC do pracy i cała reszta. Ale warto zwłaszcza gdy w przyszłości mamy zamiar na tym zarabiać.

Tak wspaniały bo możemy nakłonić komputer do tego by odwalił całą robotę za nas - trzeba tylko umieć go oprogramować.

C++ to nie tylko dodanie mechanizmów obiektowych do C, a wiele więcej. W samym C tez można pisać obiektowo, za pomocą odpowiednich konstrukcji albo frameworka (Vala). C# nie jest nowoczesnym C++… C# ma bliżej do Javy i Delphi niż do C++. Główny inżynier projektujący C# wzorował się troszkę na Javie, a ten sam gość wcześniej stworzył implementacje kompilatora TurboPascal oraz zaprojektował język ObjectPascal do pakietu Delphi.

Nauka C nie jest wstępem do C++. C jest prostym i ubogim w konstrukcje standardowe językiem. C++ ma zupełnie inna filozofie tworzenia, pełno UB oraz W.TF … C++ to możliwie najgorszy wybór jaki może podjąć początkujący, piszę to jako wieloletni programista C++, ale nie tylko.

Może i na początek to chore, ale daje do myślenia a to jednak pomaga, zadania masz na http://pl.spoj.com/problems/latwe/ także jest gdzie ćwiczyć. Bardziej chore jest to że code block i vs od ms trochę inaczej czytają kod, może to kwestia wersji c++, wiem tylko tyle że zabawka od ms lubi się buntować bo coś nie jest zgodnie z standardem i odsyła doi dokumentacji na sieci. PS. nie pytaj jaki język na początku, wybierz jeden i zacznij, zastanawianie się który lepszy nic nie da, gdyż każdy ma swoje wady jak i zalety w pewnych aspektach, dlatego ja osobiście jadę na c++, nie dlatego ze lubię, tak wyszło i tyle.
Powodzenia.