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

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

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

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

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

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

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

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:

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.

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

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.

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ść

To popraw Wikipedie w takim razie.

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

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:

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?

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

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.

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

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

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:

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.