Pomoc w wyborze języka programowania i kilka ogólnych rad

Linux to żaden kłopot. Przez kilka lub nawet kilkanaście lat był to mój główny system. Po prostu chciałem wiedzieć co lepiej nadaje się do programowania.

Jeśli dobrze interpretuję to co napisałeś to nie polecasz Pythona jeśli nie interesuje mnie webmastering? 

Przypuśćmy że zdecydowałem się na C++. Czy po przyswojeniu wiedzy np. z proponowanej książki “Symfonia C++” będę w stanie coś sensownego tworzyć lub nawet pracować czy jest to po prostu baza pod dalszą naukę? Jestem zielony jeśli chodzi o pisanie czegoś poza prostymi skryptami ułatwiającymi zarządzenie komputerem.

A proceduralny i generyczny to nie jest wspierany przez C++? Jest, więc masz 3 paradygmaty programowania w C++. Masz również funkcję lambda więc jest już jakaś baza dla funkcyjnego.

Książka ta jest stara i nie ma w niej nowych rzeczy dodanych w nowych na pewno w standardach C++ 11 i C++ 14. Czego trzeba, a na pewno warto się nauczyć. Dodatkowo słabo przedstawione w niej są biblioteki standardowe które należy znać i używać jeśli chcesz szybko trwożyć kod, bez pisania koła na nowo.

Książka ta traktuje głównie o samym języku, składni i dostępnych mechanizmach. Poza tą wiedzą ważna jest też znajomość bibliotek no i standardów wyżej wymienionych. Te drugie w zasadzie wprowadzają głównie nowe rzeczy w bibliotekach, no i może coś takiego jak funkcje lambda. Szczerze mówiąc nawet dokładnie nie wiem jakie są dokładnie różnice.

Więc czy będziesz umiał coś stworzyć po przeczytaniu tej książki. Myślę że tak, ja po jej przeczytaniu zacząłem od edycji pluginów pod serwer gry którym się bawiłem bo mi coś w nich np nie pasowało, ale szybko mi się znudziło i zacząłem pisać własne pluginy. Fakt faktem nie były one pisane w C++, lecz w języku który składnię miał z C, czyli prawie to samo. Rożnica była w cyklu życia pluginu względem cyklu życia aplikacji oraz dostępnych bibliotekach oraz był on bardzo ograniczony względem C++. Będziesz w stanie już coś napisać, ale nie ukrywajmy przed tobą po tej książce i taka długa nauka jeszcze. Ta książka to powiedzmy wprost podstawy.

Czy dostaniesz pracę? Ciężko powiedzieć, zależy w jakiej firmie i na kogo trafisz, jeśli jesteś zdolny masz duże szanse. Ale książka ta jest bazą do dalszej nauki, a dalsza nauka zależy od tego w którą stronę będziesz chciał iść. Na pewno w każdym przypadku będziesz musiał zaznajomić się z bibliotekami w C++. Bez tego ani rusz w żadnym kierunku. Oczywiście nie musisz znać ich na pamięć, ale wiedzieć która do czego służy i jakie ma możliwości (funkcje). Tak gdy będziesz czegoś potrzebował szybko znalazł szczegóły w dokumentacji języka. A na pamięć nauczysz się ich już podczas pracy i wykorzystywania konkretnych bibliotek. Jedne potrzebne są częściej inne prawie wcale, ale wiedzieć jakie są i jakie mają możliwość trzeba zawsze.

Jest Rust, choć jeszcze to młody język.

@MacGregor Mimo wszystko jeśli faktycznie chcesz patrzeć na ilość ofert pracy to: Java, JavaScript lub C#, Dwa pierwsze najlepiej na Linuksie, a ostatni na Windows. A i tak JS warto poznać nawet jeśli podstawowy język w którym piszesz jest inny.

@enedil Nikt się tu nie spiera o wyższość klawiatury nad monitorem, tylko o to, czy warto zainwestować w ergonomiczną.

Wspomniane wady C++ naprawdę są wymyślane na siłę. Dla mnie ten język jest przemyślany i logicznie poukładany

@slepcu C++ nie jest wieloparadygmatowy? Że co? Podaj więc, jaki konkretny paradygmat jest narzucony. C++ nie jest obiektowy, umożliwia programowanie obiektowe, ale nie jest językiem obiektowym.

Wybacz, ale piękno logiki wyraża się w jej obiektywności. Jeśli coś jest tylko dla Ciebie logiczne, zatem subiektywne, co pociąga możliwy brak logiki.

@enedil Alternatywy są, ale mimo wszystko C++ jest z nich najbardziej dojrzały, takie przynajmniej odnoszę wrażenie. Istnieje już długi czas i zdążył już odpowiednio dojrzeć. No i C++ jest jednak dalej bardzo popularnym językiem.

może nie mam w tej materii wielkich podstaw teoretycznych ale c++ jest dla mnie językiem obiektowym i to na dzisiejsze standardy pod tym i tak zacofanym (chyba że ostatnio się coś zmieniło). Uważam że paradygmat programowania proceduralnego i strukturalnego zawiera się w paradygmacie obiektowym. 

Co do programowania funkcyjnego to sorry ale C++ nim nie jest, obecność takich konstrukcji jak lambda nie stanowi o funkcyjności języka, to tylko cukier.

Nie napisałem wspiera ten paradygmat tylko jest to jakiś wstęp lub ukłon w tą stronę, a to różnica.

C++ jest spoko tylko na początku lub gdy nie zagłębiamy się w jego ciemną stronę gdzie pojawiają się rzeczy dziwne. Najwięcej problemów jest z tym że zdarza się iż mamy 2 różne akceptowane składnie jakiejś struktury, spowodowane jest to tym że wprowadzono nową składnię - bardziej nowoczesną i wygodną, ale dla wstecznej kompatybilności zostawiono starą. Tym oto sposobem w jednym programie możemy mieć tą samą rzecz zrealizowaną na 2 sposoby. Jeśli się nie mylę sytuacja taka jest przy klasach generycznych, można je zadeklarować na 2 różne od siebie sposoby a zarazem poprawne, i tak w jednym programie mamy 2 różne klasy generyczne każda w inny sposób zadeklarowana.

Są w nim jeszcze rzeczy których się nie używa, co też jest swego rodzaju śmietniskiem.

Spotkać można 2 takie same funkcje realizujące dokładnie to samo zadanie, ale o różnych nazwach. Różnica między nimi jest taka że realizują one zadanie w inny sposób, i teraz trzeba to wiedzieć bo może to mieć znaczenie. Nie chce mi się szukać przykładu, kto będzie zainteresowany szybko znajdzie. Nie wiem czy z vektorami takiego czegoś nie ma.

Gdy nie używasz zaawansowanych rzeczy z tego jeżyka to jest ok, ale gdy wchodzisz w zaawansowane zagadnienia, język staje się upierdliwy.

W sumie nawet w podstawach są “kruczki”. Kto z osób twierdzących że jeżyk jest logiczny i przyjemny wie jaka jest różnica pomiędzy definicją funkcji lub metody w pliku nagłówkowym, a  pliku cpp?

Osobiście, wiem mniej więcej o co chodziło, ale po szczegóły musiałbym zajrzeć do książki albo internetu.

@enedil Z tą “jedyną zaletą” to już przesadzasz. Wspominałem o jego zaletach(niezależny od platformy, wielopradygmatowy itd.), ty przedstawiłeś alternatywy, na co ja stwierdziłem, że z tych alternatyw jest najbardziej dojrzały. Dojrzałość to jedna z zalet, a nie jedyna zaleta.

A jakże można odbierać świat i myśleć inaczej niż subiektywnie? 

@slepcu Skoro można programować tylko obiektowo, to jakim cudem poprawny jest kod C, skoro nie ma w nim obiektów?

@dragon321

Firma w Bielsku-Białej postanowiła kiedyś napisać portal z muzyką w C++ z użyciem Wt (witty), gość który w tym siedział stwierdził, .że  na początku wyglądało to fajnie, ale przy przyroście kodu zaczęła się masakra. Nie bez powodu znacznie częściej po stronie serwera używa się języków skryptowych lub kompilowanych do byte kodu. Łatwiej w nich utrzymać kod, a że natywnie kompilowane języki są szybsze stąd pojawiają się takie wynalazki jak Go i  Rust.

Brainfuck też jest przemyślany i logiczny, ale nie nadaje się do pisania programów. ;)  C++ ma swoje zalety, ale większość programistów używających większej ilości języków zawsze stara się unikać pisania w C++ jeśli to jest możliwe.

@Fizyda Wiesz coś na temat tego “nowego” wydania symfonii c++ ? Jest sens się za to zabierać czy poszukać jakiś nowszych publikacji?

Nic nowszego niż ostatnie Symfonia C++ Standard nie ma i chyba nie będzie, a szkoda dla nowych pokoleń. Ja mam w domu wydanie III, jest jeszcze jakieś IIIB ale to chyba tylko korekty były zrobione. Zresztą na stronie autora korekty konkretnych stron są dostępne do pobrania.

http://www.ifj.edu.pl/~grebosz/symfonia_c++_std_p.html

W podstawach języka się nic nie zmieniło, więc książka jest aktualna. Ważne byś kupił wersję standard, a nie poprzednią bo standard jest napisany po wprowadzeniu dość istotnego standardu w C++ który trochę pozmieniał rzeczy. Nowsze “aktualizacje” C++ jedynie go rozszerzają, więc znając podstawy będziesz mógł sam je ogarnąć na własną rękę.

EDIT:

Nie zauważyłem że podlinkowałeś to samo. To nowe wydanie jest stare bo z 2008 roku chyba, a w informatyce to bardzo dużo czasu. Ale jak pisałem jest pomimo że stare zawiera aktualne rzeczy.

Ogólnie wybierając książkę z dziedziny informatyki trzeba zwracać uwagę na datę wydania, nie wszystkie tematy są ponadczasowe i często po 2 latach są nieaktualne. Owszem są pozycje które pomimo iż były pisane 6 czy więcej lat temu nadal są warte przeczytania, ale takich książek jest mało.

Znajdziesz książki informatyczne wciąż aktualne wydane ponad 25 lat temu. Ale Symfonia taką zdecydowanie nie jest.

1wszy i ostatni raz dodam od siebie parę groszy:

  • jestem zwolennikiem unixów, ale z wyłączeniem technologii M$, a więc wykluczamy: .NET, C#, MS SQL (w każdym innym przypadku unixy)

Może nie umieli sobie tego kodu poukładać. Najprościej jest robić to na zasadzie 1 formularz - 1 funkcja, 1 plik. Wtedy są zalety języka kompilowanego i skryptowego.

A jednak ww. firma zdecydowała się użyć tak nietypowego rozwiązania.

Raczej firma nie należała do nowicjuszy. Można skakać na jednej nodze i robić to nawet dobrze, tylko po co jak i tak będzie chodzić wygodniej na obu? :slight_smile:

A produkt nie wylądował na rynku :wink: Mieli wolnych programistów C++ i wydawało im się, że będzie wygodniej niż kazać im się uczyć nowego języka, frameworków i bibliotek.

Jedynie do czego C++ się nadaje w świecie WWW to super wydajne serwisy REST z użyciem takiej technologii jak cpp_pool

Widocznie w tworzeniu serwisu opartego o C++ i Wt należała.

Albo do serwisów o niskich kosztach utrzymania.