[C/C++] C a C++

0

Mam pytanko czym rożni się C od C++???

1

Znajdz se kurs do c++ to sie dowiesz, a tak w ogÓle to c++ to jakby nastepna wersja c bo c++ znaczy to samo co np: c = c + 1. W c++ sa klasy, dziedziczenie i inne badziewia programowania obiektowego, a c to programowanie strukturalne ;-) .

0

[niewinnosc]
Mówiąc najkrócej - C++ jest językiem obiektowym {czyli posiada mechanizmy enkapsulacji, dziedziczenia i polimorfizmu}, a język C jest zwyczajnym językiem proceduralnym (pod tym względem jest podobny do np. Pascala). Co ciekawe, język C++ zachował składnię C (czasami było to bardzo "na siłę"), więc praktycznie programy napisane w C powinny się kompilować w C++.

Pozdrawiam.
[niewinnosc]

0

Tym czym Pascal od ObjectPascala :)

0

Pierwsza rzecz to:
C++ jest obiektowym jezykiem programowania, a C strukturalnym.
C++ jest takze o wiele bardziej usprawniony od C, posiada mozliwosc korzystania z polimorfizmu, wskaznikow, klas. C na to nie pozwala. Jezyki C i C++ mozna ze soba laczyc w jednym programie, poniewaz C++ to nowsza wersja C. Natomiast JAVA jest nowsza wersja C++.
!!!! :-) :-) :-) :-) :-) :-)

0

C++ jest obiektowym jezykiem programowania, a C strukturalnym.

A ja czytałem sobie książeczkę, w której opisane było programowanie obiektowe pod C!! (tylko jakim nakładem pracy...)

C++ jest takze o wiele bardziej usprawniony od C, posiada mozliwosc korzystania z polimorfizmu, wskaznikow, klas. C na to nie pozwala.

W C nie ma wskaźników? Niemożliwe. W Pascalu są tu nie ma? To byłoby zbyt proste.

Jezyki C i C++ mozna ze soba laczyc w jednym programie, poniewaz C++ to nowsza wersja C. Natomiast JAVA jest nowsza wersja C++.
!!!! :-) :-) :-) :-) :-) :-)

To spróbuj w Javie skompilować program z C++. Java opiera się na C++, ale pisać, że jest to rozszerzenie to chyba wydaje mi się przesadą.

P. S. Nie programuję w żadym z tych języków i wszystko co tu przytaczam opiera się na moich obserwacjach i tym, co przeczytałem.

0

Witam.
Wskaźniki w C są!
A poza tym C różni się tym od C++ że jest bardziej ukierunkowany na pisanie programów pod DOS-a (konsole dosową), jest dużo funkcji służacych do rysowania w oknie dosowym. Pewnie, pod C da się zrobić wiele RZeczy, takich jak w C++ ale będzi to bardziej pracochłonne.Co ważne jeszcze trzyma się standardu ANSI co gwarantuje że program napisany pod C skompiluje się prawie pod każdym kompilatorem C/C++ (a napisany pod C++ raczej nie (zwłaszcza te z Visuala)). poza tym C++ jest bardziej uproszczony w porównaniu do C np: zamiast pisać pod C printf ("%d",x); w C++ wystarczy napisać cout

0

A poza tym C różni się tym od C++ że jest bardziej ukierunkowany na pisanie programów pod DOS-a (konsole dosową), [b]jest dużo funkcji służacych do rysowania w oknie dosowym[/b].

Pomylił Ci się język C z bibliotekami do C!!

0

Wiem, że w bibliotekach do C jest dużo funkcji dla konsoli, ale napisanie programu okienkowego pod C jest bardziej pracochłonne niż w C++. A poza tym dóżo zależy od kompilatora.

0

Ale tu herezji!

  1. w c jest chyba najlepsza arytmetyka wskaznikowa (i toze w c++)
  2. c ukierunkowany pod DOS? bzdura tylko dlatego tak sie wydaje ze winapi jest na klasach, rownie dobrze mozna to zrobic bez(ale po co isc pieszo jak mozna samochodem?odp.:dla sportu hehe)
    3.cos tam bylo ze skladnia czy kod jest najb skomplikowany, chyba chodzi o szkielet aplikacji pod win , bo to sie zgodze ale to tylko dziekowac panom z MS,ale pomijajac asm, to wydajnoscia bije inne jezyki na leb .

i to chyba wszycho...

0

ale pomijajac asm, to wydajnoscia bije inne jezyki na leb .

Chcesz się posprzeczać?
Napisz program w C++ na najnowsze z obecnych procesorów (nie obrażę się, jak na Durona napiszesz, to i mi będzie najłatwiej). Ja napiszę to samo w Delphi. Ciekaw jestem, który program zostanie lepiej zoptymalizowany przez kompilator :)
Mowa o szybkości języka to jedna wielka bujda. Wszystko zależy od kompilatora. Mogę użyć jednego ze znanych prządnych kompilatorów, albo jakiegoś przedwojennego bez optymalizacji do C++ i różnica będzie kolosalna.

0

No to Świętą Inkwizycje tu przysłać.

Herezji ciąg dalszy.

A tak na temat, to zgadzam się z tobą algor, że język C jest jednym z najwydajniejszych. Z tego co wiem to pod względem obliczeniowym jest najszybszy (zależy to też w dóżej mieże od programisty), a w pozostałych dziedzinach to niemam porównania. Jedyne czym ostatnio się zajmowałem to MatLab, który pod względem obliczeniowym jest dosyć wolny, ale to jest "język" (jeżeli można to nazwać językiem)interpretowany a nie kompilowany.

0

A tak na temat, to zgadzam się z tobą algor, że język C jest jednym z najwydajniejszych.

Dajcie mi tu Kapustkę!!!!!! On ma wprawę w precyzowaniu pojęć, bo widzę, że bez tego tu się nie obejdzie.
Co to znaczy, że język jest "szybki" lub "wydajny"?? Jak dla mnie to można porównywać szybkość programu wygenerowanego przez kompilator. A kompilatory są różne (z oczywistych względów pomijam tu języki interpretowane, nawet, jeżeli istnieją dla nich kompilatory, gdyż z założenia mają konstrukcje przeznaczone do interpretacji, a nie kompilacji, więc są też trochę inaczej optymalizowane, ale i tak zależy tu wszystko od kompilatora oraz oczywiście programisty)

0

po co w ogóle się kłucicie który jezyk jest najlepszy, najwydajniejszy itp... każdy ma swoje zdanie i kazdy będzie programował w tym czym mu się podoba. koniec :-)

0

hehe, temat dyskusji "C a C++" a tym czasem ponownie widzę odwieczny wyścig miłośników C i Delphi.

Całkowicie zgadzam się z Dryo w jednej kwestii - jeżeli mówicie o "wydajności" (dotyczącej zasobów ogólnie) oraz o "szybkości", to absolutnie musicie te określenia kojarzyć z konkretnym kompilatorem, a nie z językiem programowania jako takim. Jeszcze do tego wrócimy na koniec.

Sięgnijmy odrobinę głębiej: co to jest język programowania?
Jest to zbiór reguł syntaktycznych i semantycznych, czyli mówiąc przystępniej - język programowania jest pewną abstrakcją służącą do wyrażania algorytmów, jest on opisem dozwolonych konstrukcji - opisem znaczenia tych konstrukcji (semantyki) i zbiorem reguł dotyczących ich pisowni (syntaktyki). (chyba zacznę pisać encyklopedię heh)

Całkiem niedawno mój przyjaciel Aleksander powiedział
"... języków programowania jest o wiele więcej niż kompilatorów.".
Nie znam faktycznych liczb, ale sądzę że to prawda gdyż-

Wbrew pozorom, nie jest trudno stworzyć nowy język programowania!
Myślicie że trochę przesadzam? powróćmy do definicji ...

język programowania jest pewną abstrakcją

do stworzenia języka programowania wcale nie potrzebujemy komputera. Definiujemy chociażby na kartce papieru zestaw instrukcji i wartości podstawowych, określamy zasady pisowni i koniec.

Prawdziwa "ciężka" praca zaczyna się dopiero przy rozpisywaniu kompilatora, czyli programu tłumaczącego tekst napisany zgodnie ze specyfikacją naszego języka na kod maszynowy (do tej pory zastanawiam się, jak to robią kompilatory języków programowania funkcyjnego).

Historycznie pierwszym dobrze opisanym przypadkiem tworzenia języka programowania był oczywiście FORTRAN. Backus pracował nad kompilatorem w sześcioosobowym składzie, który nieświadomie wyznaczył pewien standard trwający do dziś:
2 osoby analizator składniowy
1 osoba parser
2 osoby optymalizator kodu
1 osoba dokumentacja
(z radością myślę teraz o tych, którzy czytali dragon book'a = "kompilatory")

Zbliżamy się do końca: 2 osoby optymalizator kodu to nie przypadek. To właśnie ta część kompilatora bezpośrednio decyduje o tym, jak sprawnie (czyli jak wydajnie i szybko) będą chodziły zaimplementowane algorytmy (nawiasem mówiąc, nawet najlepiej napisany optymalizator kodu nie jest w stanie zmniejszyć złożoności obliczeniowej algorytmu, niemniej bardzo silnie wpływa na stałą - przemilczaną przez notację O)

Ponieważ C jest językiem bardzo prostym (tzn. nie udostępnia aparatu programowania obiektowego itd.) to napisanie dobrego optymalizatora kodu nie było kwestią najważniejszą, czasami pisząc w języku C odczuwa się nieodpartą wizję tego, jak będzie wyglądał nasz kod po kompilacji - C jest bardzo bliski asemblera.

Inaczej jest z Delphi, gdzie asembler nie jest już aż tak odczuwalny (no i wygoda programowania jest większa). Przez pewien (całkiem długi zresztą) czas programy skompilowane pod C faktycznie chodziły szybciej. Stąd utarł się pogląd, że C jest najszybszy itd. Teraz jest jednak odrobinę inaczej, najnowsze kompilatory Delphi są po prostu magikami optymalizacji - generowany przez nie kod nie tylko jest porównywalny z C, ale często jest szybszy (ale to przecież też zależy od konkretnego algorytmu).

W mojej prywatnej opinii, w tej chwili (biorąc pod uwagę ostatnie kompilatory) C i Delphi pod względem wydajności kodu są porównywalne. Dlatego decyzja który jest lepszy, w istocie sprowadza się do odpowiedzi na pytanie "który zbiór reguł syntaktycznych i semantycznych bardziej do mnie przemawia" ... czyli:

co wolisz?
"=" czy ":=",
"a%b" czy "a mod b",
...
programować strukturalnie czy obiektowo?

Kwestia gustu (a ja i tak najbardziej lubię painta)
pozdrawiam.

p.s. przy czym miłośnicy C naprawdę mogą czuć się zagrożeni - nie wiadomo jaki będzie następny optymalizator kodu delphi, być może będzie to knockout.

0

hehe, temat dyskusji "C a C++" a tym czasem ponownie widzę odwieczny wyścig miłośników C i Delphi.

Mnie też już zaczyna to denerwować. Nie chciałem wplatać tu Delphi tylko ogólnie przedstawić, ale niefortunnie wybrałem język programowania, który znam najlepiej (właśnie ugryzłem się w język).

Całkowicie zgadzam się z Dryo w jednej kwestii - jeżeli mówicie o "wydajności" (dotyczącej zasobów ogólnie) oraz o "szybkości", to absolutnie musicie te określenia kojarzyć z konkretnym kompilatorem, a nie z językiem programowania jako takim.

No. W końcu ktoś (i to nie byle kto, ani nie Ktoś :) ) przyznał mi rację.

Wbrew pozorom, nie jest trudno stworzyć nowy język programowania!
Myślicie że trochę przesadzam? powróćmy do definicji ...

język programowania jest pewną abstrakcją

do stworzenia języka programowania wcale nie potrzebujemy komputera. Definiujemy chociażby na kartce papieru zestaw instrukcji i wartości podstawowych, określamy zasady pisowni i koniec.

Zainteresowanych zapraszam do tematów "Idealny język programowania" oraz jego kontynuację: "IJP". Zaznaczam, że rozpoczynając teg temat nie miałem zielonego pojęcia o kompilatorach (no może niewielkie). Ale dzięki temu to co tam powstało ze złożenia pomysłów wielu ludzi, jest tym czego wymaga się od języka, a nie kompilatora. W przeciwieństwie do Pascala jest niezwiązany z kompilatorem i nie jest sztucznie ograniczany (Koniec reklamy)

Prawdziwa "ciężka" praca zaczyna się dopiero przy rozpisywaniu kompilatora, czyli programu tłumaczącego tekst napisany zgodnie ze specyfikacją naszego języka na kod maszynowy

Cały czas męczę się z rozpisaniem gramatyki tego języka...

(do tej pory zastanawiam się, jak to robią kompilatory języków programowania funkcyjnego).

A mi się wydaje, że to nie jest takie skomplikowane (przynajmniej ogólny zarys). Jak się tak patrzy na Haskell to kojarzy mi się od razu z przeciążeniem funkcji...

(z radością myślę teraz o tych, którzy czytali dragon book'a = "kompilatory")

Czytam już drugi raz, żeby dokładnie zrozumieć.

Ponieważ C jest językiem bardzo prostym (tzn. nie udostępnia aparatu programowania obiektowego itd.) to napisanie dobrego optymalizatora kodu nie było kwestią najważniejszą, czasami pisząc w języku C odczuwa się nieodpartą wizję tego, jak będzie wyglądał nasz kod po kompilacji - C jest bardzo bliski asemblera.

Nie piszę w C, ale jak czytam, to wcale nie odczuwam takiego czegoś :) (widać muszę zacząć się uczyć...)

Dlatego decyzja który jest lepszy, w istocie sprowadza się do odpowiedzi na pytanie "który zbiór reguł syntaktycznych i semantycznych bardziej do mnie przemawia" ... czyli:

co wolisz?
"==" czy ":=",
"a%b" czy "a mod b",
...
programować strukturalnie czy obiektowo?

W C++ można obiektowo :) (ach te plusy)
A co do sformułowania "lepszy" to podam tylko cytat:
"De gustibus non est disputantum" (albo coś takiego :P )

0

A tam teraz to nie jest najważniejsze, który język jest lepszy. Ważne żeby rozwijać, a co za tym idzie, uczyć się nowych języków programowania, ulepszać znajomość starych i nieprzestawać programować.

0

co wolisz?
"==" czy ":=",
"a%b" czy "a mod b"

"==" - operator porównania w języku C/C++
":=" - operator przypisania w języku Pascal

0

co wolisz?
"==" czy ":=",
"a%b" czy "a mod b"

"==" - operator porównania w języku C/C++
":=" - operator przypisania w języku Pascal

Że też nawet tego nie zauważyłem :)
= :=
== =
a%b a mod b
a/b a div b oraz a/b
a&b oraz a&&b a and b
a|b (tego to już nie rozumiem | to sybmol dysjunkcji!!) oraz a||b a or b
!a not a
oraz kila, których brakuje mi w pascalu
a++, ++a, a--, --a, +=, -=, *=, /= ...
O jakiś ciekawych zapomniałem?

0

poprawione (ludzie, przecież nie o to chodziło w tym tekście ... trochę zwątpiłem).
[niewinnosc]
Mam nadzieję, że nie zobaczę całego zestawienia ...

0

Tak o XOR a^b
ab tosamo tylko w prawo
w C a w Pascalu to niewiem jak to jest.

0

uff ale burze nozgow wywolalem,
Dryo - nie obrazam sie prawie nigdy(zreszta niby za co?),

nie bylo mnie troszke a szkoda bo nalezy sie malutkie sprostowanie do mojego posta : co rozumiecie przez wydajnosc danego jezyka?Bo jesli tylko szybkosc po kompilacji to wydaje mi sie , ze jest dalekie uproszczenie problemu, wg mnie kryteria sa nastepujace :

  • ilosc kodu;
  • latwosc analizy zrodel;
  • powszechnosc danego jezyka;
  • latwosc tworzenia nie tylko malych programow, ale i duzych projektow;
  • niezaleznosc od "firmowych" komponentow;
  • uniwersalnosc - mnogosc zastosowan(pomijajac jave kazdy inny
    jezyk mozna zastapic c++);
  • szybkosc programu wynikowego;

sprostowanie dodatkowe :

nie jestem wrogiem zadnego sposobu programowania wszystko jedno czy to delphi,clipper,pascal,c++ czy nawet access, jednak na wlasnym przykadzie wiem , ze , nie ma chyba programisty z 1.zdarzenia ktory by nie znal chocby skladni c++, poza tym zeczywiscie znam ludzi ktorzy zajmuja sie sterowaniem maszyn i czesto pisza jakis malutki tymczasowy programik do jakiegos tam zadania i robia to w delphi i tu im przyznaje racje bo szkoda czasu na interfejs uzytkownika i inne bajery

troche ten post chaotyczny ale mam niestety malo czasu

0

Brawo Algor [browar] [cya] !!!
Wkoncu któs poza kapustką powiedział cos mądrego :-D :-D :-D

0

Tak o XOR a^b
ab tosamo tylko w prawo
w C a w Pascalu to niewiem jak to jest.

a xor b
a shl b
a shr b

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