Różnice między C++, a Phython'em?


(xDarkness) #1

Witam.

Od niedawna rozpocząłem swoją przygodę z programowaniem.

Na swej drodze napotkałem wiele języków, w tym sławny C++, oraz Phython.

Chciałbym się dowiedzieć jakie są różnice między tymi dwoma językami, który trudniejszy, jaki jest lepszy i do czego, jakie dają możliwości.

Z góry dziękuję za odpowiedź.


(Marcinch7) #2

C++ jest językiem kompilowalnym, a Python interpretowanym.

Inne różnice to min. składnia.


(Johny) #3

Popularność

C,C++ to główne języki programistów,co za tym idzie,to do tych języków jest najwięcej dodatkowych bibliotek,itd.

Programy,które masz w komputerze powstały głównie w C,C++.

Specjalizacja

Python może być używany do pisania skryptów,wtyczek,itd. co wynika z faktu,że jest interpretowany ale wadą jest szybkość wykonywania programu.Język interpretowany musi być instrukcja po instrukcji tłumaczony na kod maszynowy.W C,C++ kod maszynowy uzyskujesz od razu,po wymaganej kompilacji masz od razu plik wynikowy,który jest wykonywalnym programem,nie musisz mieć środowiska uruchomieniowego w odróżnieniu od Pythona.

Programów w Pythonie nie uruchomisz samodzielnie,podobnie jak programów w Javie


(Darkvifon) #4

Bzdury, bzdury i jeszcze raz bzdury.

1) Python nie jest językiem interpretowanym. Jest kompilowany w całości w momencie uruchomienia. Od momentu uruchomienia, nic już nie jest interpretowane.

2) C i C++ nie są żadnymi głównymi językami. Nie ma czegoś takiego jak "język główny".

Wg obiegowej opinii łatwiej Ci się będzie nauczyć Pythona, ale wszystko jest kwestią chęci. C naprawdę warto znać. Jak już nauczysz się jednego języka imperatywnego, nauczenie się kolejnego jest proste, więc bierz cokolwiek zamiast się zastanawiać.


(Marcinch7) #5

To że skrypt jest kompilowany podczas uruchomienia to również znaczy że jest interpretowany.


(Krystian Rosinski) #6

Python jest językiem programowania ogólnego przeznaczenia, tak jak C++, ale często wykorzystywany jest do tworzenia skryptów, dlatego można spotkać się z określeniem zorientowany obiektowo skryptowy język programowania. Opis różnic sprowadza się pewnie do podania zalet i wad tych języków. Pozwolę sobie skrótowo opisać Pythona (CPythona). Na pierwszej stronie pierwszego rozdziału książki Python Wprowadzenie (Wydanie IV) Mark Lutz wymienia dlaczego programiści sięgają po Pythona:

-


(Frankfurterium) #7

Prawda, C++ zazwyczaj działa szybciej, ale gdyby to było jedyne albo chociaż najważniejsze kryterium, wszyscy ciągle pisaliby w asemblerze. Plusem Pythona i większości nowoczesnych języków jest szybkość, z jaką produkuje się wydajny kod. Mniej rozwlekła i mądrze rozplanowana składnia, do tego dużo mniej dziwna niż np. taka Scala. Pythona łatwiej się nauczyć, bo ma dużo mniej pułapek. Poza tym napiszesz w nim programik konsolowy, graficzny, stronę internetową i szybki skrypcik do czegoś małego.

C++ ciągle jest potrzebny i nadaje się do wielu zastosowań. Mimo to jest już kilka generacji za 'nowoczesnymi i przyszłościowymi' językami. Wielu wielkich stawia teraz na Scalę, Groovy'ego albo Clojure.


(Darkvifon) #8

Wiesz, program w C++ też jest interpretowany przez kompilator. Ten sam mechanizm. Ale czy C++ jest językiem interpretowanym? Np. w Bashu możesz w czasie działania skryptu zmodyfikować go i zmiany będą widoczne. W Pythonie wszystko jest już skompilowane i nic byśmy nie zauważyli. Bash jest językiem interpretowanym. Python nie do końca (z wyjątkiem trybu interaktywnego).


(Sawyer47) #9

Zasadnicza różnica jest taka, o czym na różne sposoby już wspominano powyżej, że kod C++ kompilujesz raz do kodu maszynowego danego procesora i dopiero po kompilacji uzyskujesz użyteczny program, natomiast programy Pythona przechowujesz w postaci tekstowej - źródło stanowi jednocześniej program, który można wykonać. Oczywiście nie jest to cecha języka, a jego implementacji, równie dobrze można by sobie wyobrazić interpreter C++ i komplator Pythona do kodu maszynowego danego procesora. Przykładowy kompilator C++ to g++, przykładowy interpreter Pythona to CPython (czyli ten 'oficjalny', który możesz pobrać z python.org).

Czym różni się C++ od Pythona? Tym czym wszystkie języki między sobą, a mianowicie składnią i semantyką :stuck_out_tongue_winking_eye: Z drugiej strony zaryzykuję stwierdzenie, że praktycznie wszsytkie imperatywne języki programowania są mniej lub bardziej podobne. Tu i tu masz zmienne, instrukcje warunkowe, pętle, klasy, dziedzidzenie ... (tutaj można umieścić dużo różnych terminów). Bardzo dużo informacji znajdziesz tutaj, pytanie tylko czy ile Ci powiedzą te terminy: http://en.wikipedia.org/wiki/Comparison ... _languages . Dość fundamentalną różnicą jest statyczne typowanie w C++ i dynamiczne w Pythonie.

Tak bardzo ogólnie bym powiedział: C++ to więcej pisania, szybszy kod, a Python w drugą stronę, mniej czasu spędzasz na napisaniu, ale za to może nie działać tak szybko (choć, raz jeszcze, szybkość to cecha implementacji, a nie języka).

Co do "który trudniejszy"... nie operowałbym w kategorii "trudniejszy/łatwiejszy", wg mnie są na podobnym poziomie. Natomiast C++ jest obszerniejszy, w tym sensie, że sensowna książka opisująca kompletnie C++ byłaby grubsza niż książka opisująca Pythona, przynajmniej tak mi się wydaje.


(Johny) #10

Pisząc główny język nie miałem na myśli głównego języka jako takiego,chodzi o to,że to w C,C++ głównie pisze się duże popularne programy np. Firefox,VLC Media Player,Gimp - to wszystko jest w C,C++ (tam gdzie max szybkość,tam asembler dochodzi).

Kompilator pozwala wstawiać wstawki asemblerowe,tam gdzie wymagana jest szybkość


(Marcinch7) #11

To popraw Wikipedie w takim razie.


(Krystian Rosinski) #12

Pamiętam jak kiedyś kolega (programujący w Javie) przyczepił się do drugiego słowa tej definicji -- interaktywny język programowania. Wg niego coś takiego nie istnieje. Nie czepiajmy się słówek;)


(system) #13

Mi mówią, że jeżeli rozpocząłbym naukę java, to na pewnio nie chciałbym wrócić do C/C++. Ciekawe, skąd takie stwierdzenie? :slight_smile:


(Frankfurterium) #14

Tworzeniu Javy (i innych języków wywodzących się z pnia C) przyświecał cel stworzenie czegoś nie tyle lepszego, tylko lepiej dostosowanego do wyzwań naszych czasów. Pozbyto się kilku mniej przydatnych i bardziej niebezpiecznych mechanizmów, inne obudowano w taki sposób, by zapisywać je zwięźlej. Dodano trochę nowości.

Z językami trochę jak z samochodami. Nie na każdej trasie potrzeba nam bolidu F1 (C++). Zazwyczaj dużo wygodniej jedzie się na zakupy solidnym samochodem rodzinnym (C#, Java, Python). Jeżeli ktoś nauczy się takim samochodem w rozsądnym czasie pokonywać odpowiednie odległości, to na diabła mu wtedy bolid?


(Masters87) #15

Trochę tutaj poleciałeś zrównując C# z pythonem i javą...


(Marcinch7) #16

C# i Java to praktycznie to samo. C# to prawie "klon Javy" od MS 8)

Co innego Python który do tych języków ma się nijak.


(Masters87) #17

Jeżeli już tak stawiasz sprawę to bardzo udanym klonem kilkukrotnie lepszym od Javy


(Airborn) #18

Aż z ciekawości zapytam, na jakiej metryce się opierałeś?


(Marcinch7) #19

Czy stwierdzenie "klon" jest negatywne?

Zwyczajnie Java była pierwsza. Później MS próbował zrobić jej implementacje ale średnio mu wyszło, więc zrobili .NET :wink:


(Airborn) #20

Pytam tylko, skąd wzięło się określenie 'kilkukrotnie lepszym". Bo to wygląda jak argument do dyskusji o wyższości Świąt Wielkanocnych bad Świętami Bożego Narodzenia.