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

Jest to moje trzecie podejście do programowania. Za każdym razem coś wypadało i traciłem zapał. Teraz mam lepszą motywację… Ale do rzeczy.

Znam podstawy podstaw (zaawansowane operacje na zmiennych itd.) C++ oraz Python 3 i tu nasuwa się pytanie który język jest lepszym wyborem i czy jest sens uczyć się Python’a pod windowsem? 

Chciałbym też zapytać o jakieś ogólne rady. Jak się zabrać do nauki tak żeby nie obrzydzić sobie programowania po kilku dniach jakie poradniki i kursy wybrać (youtube odpada) itp. Czy brak drugiego monitora będzie bardzo utrudniać zabawę z programowaniem?

Ilość monitorów ma najmniejsze znaczenie, fakt wygodnie pracować na dwóch monitorach w tym jeden ustawiony w pionie, ale nie jest to czymś niezbędnym.

Język zależy od tego co chcesz programować, nie ma jakiegoś najlepszego języka do nauki. Jeśli miałbym coś już wskazać to proponowałbym uczyć się języka z rodziny C. Wiele języków ma składnię taką jaka jest w C przez co łatwiej jest się przerzucić na coś innego. Gdy nauczysz się jakiejś egzotycznej składni potem możesz mieć problem z przejściem na inny język.

Ja swoją naukę zacząłem od przeczytania książki Symfonia c++ Jerzego Grębosza. Moim zdaniem świetna książka świetnie wprowadzająca w świat programowania w przemyślany i spójny sposób. Dodatkowo pisana przez polaka, a co za tym idzie nie ma błędów tłumaczeń. W książkach tłumaczonych na polski często tłumacz popełnia błąd przez co trzeba się domyślić o co chodziło. Z tego powodu nawet najlepsza książka angielska czy inna po przetłumaczeniu traci na wartości.

Jeśli chodzi o to co umiesz to operacje na zmiennych nie są czymś zaawansowanym i nie jest to nawet 1/4 wiedzy którą trzeba mieć opanowaną by umieć programować. Poza tym uważam że umiejętność programowania nie jest tym samym co umiejętność pisania aplikacji, do drugiego trzeba umieć programować, ale pisać aplikacje trzeba uczyć się osobno (proszę tego nie rozumieć dosłownie, zwłaszcza osoby zaznajomione w temacie).

Najważniejszym językiem zawsze jest angielski. A jeżeli szukasz ciekawej metod nauki programowania, całkowicie abstrahując od “wartości” języka, polecałbym JavaScrip. W internecie znajdziesz masę darmowych  interaktywnych  kursów, np. www.codecademy.com/learn/javascript albo nodeschool.io

A z mojej strony dodam od siebie poniższy artykuł, który mnie osobiście bardzo pozytywnie przekonał do programowania :slight_smile:

http://gynvael.coldwind.pl/?id=238 (Poradnik początkującego programisty)

Zapomniałem dodać jak chcę później wykorzystać tą wiedzę. Mój błąd.

Głównie chodzi o możliwe jak najszybsze znalezienie pracy. Tj. na który język jest większe zapotrzebowanie na rynku.

@Frankfurterium Wolę standardowy sposób nauki. Teoria a następnie zadanie do wykonania które ma sprawdzić jak przyswoiliśmy dany dział. A nie prowadzenie za rękę i zero własnego kreatywnego myślenia.

@GBM Ciekawa lektura. Dzięki :wink:

Też podchodziłem do programowania kilka razy, bo coś mi wypadało, traciłem zapał i takie tam, ale sądzę, że to jest moje ostatnie podejście. Z tym tak już jest, jak już zaczniesz, to nie przestaniesz.

Drugi monitor jest wygodny, ale nie niezbędny. Na początek lepiej zainwestować w porządną klawiaturę.

Język zależy od tego, co chcesz robić. Ogólnie, tak jak we wcześniejszym poście, polecam na początek coś z rodziny C. Jednak samego C bym nie wybierał, zamiast tego C++. Jak któryś z nich dobrze poznasz, to nauka kolejnych przyjdzie ci łatwo,  a podstawy będą wręcz formalnością. Jedyny język, jakiego musisz się nauczyć to angielski.

Co do źródeł, mogę ci podpowiedzieć tylko w kwestii C++. Uczyłem się głównie z Cpp0x.pl i “Megatutoriala”, co prawda jest on z 2004 ale standard języka się nie zmienił, doszły tylko nowe elementy. Nie chciałeś nic z Youtube, ale gdybyś się jednak zdecydował, to odwiedź kanał Mirosława Zelenta, bardzo dobrze i sensownie tłumaczy. 

Jak chcesz szybko znaleźć pracę, to Java będzie odpowiednia. Na C# i .Net też jest duże wzięcie, ale mają one pewne ograniczenia - platformę, a do niej lepiej się nie przywiązywać.

Zadania najlepiej wymyślaj samemu. Ja uczyłem się w ten sposób, że przeczytałem kurs (mając już opanowane podstawy), postawiłem sobie cel - program i pisałem go ucząc się tyle, aby wystarczyło do napisania kolejnego kawałka, czytając tutorial od nowa. To chyba najlepszy sposób, żeby nauczyć się praktycznego wykorzystania elementów języka.

Na C i C++ też jest zapotrzebowanie, a kasa większa i często nie osiągalna dla Javowców i C#owców. Tyle że w C/C++ najczęściej piszę się dla emmbeded.

Zależy czy chcesz realizować ciekawe projekty i ładne dla oka oraz przydatne, czy trochę nudnawe (zależy też dla kogo) ale za większą kasę.

Ogólnie najlepiej obecnie wybrać jakiś język ze składnią pochodną C, jak C++, C# czy Java. W C# jest popularny do pisania aplikacji na Windows, a Java to Android. Ogólnie ja bym polecał C++. Jest to język uniwersalny, w przeciwieństwie do C# na wiele platform(no dobra, jest Mono, ale Mono a .Net to jednak jest jeszcze różnica) i natywnie kompilowany(chociaż Java też może być na upartego). Opanowując dobrze C++ przesiadka na C# czy Jave w razie potrzeby będzie mocno uproszczona(podobna składnia itd.). A i z C++ da się dobrze wyżyć.

Nie liczę na zarobienie fortuny z programowania. Byle wyżyć do końca miesiąca i mieć co do garnka wsadzić. Więc tutaj nie mam jakiś szczególnych wymagań.

Z tego co piszecie wynika że brakuje mi podstawowej wiedzy o programowaniu bo ciężko jest mi zrozumieć to o czym mówicie. Nie wiem do czego później mógłbym wykorzystać dany język. Zawsze byłem przekonany że C/C++ jest pod windowsa, Python to głównie linux a Java jest tak ciężka że nie warto się za to zabierać. Nie mam też pojęcia jak tworzy się aplikacje z GUI i czy wystarczy do tego poznanie danego języka czy potrzebne jest coś więcej.

Nie wiem czy to wszystko wynika z braku znajomości któregokolwiek języka czy nie znam podstaw?

Nie liczę na zarobienie fortuny z programowania. Byle wyżyć do końca miesiąca i mieć co do garnka wsadzić. Więc tutaj nie mam jakiś szczególnych wymagań.

Z tego co piszecie wynika że brakuje mi podstawowej wiedzy o programowaniu bo ciężko jest mi zrozumieć to o czym mówicie. Nie wiem do czego później mógłbym wykorzystać dany język. Zawsze byłem przekonany że C/C++ jest pod windowsa, Python to głównie linux a Java jest tak ciężka że nie warto się za to zabierać. Nie mam też pojęcia jak tworzy się aplikacje z GUI i czy wystarczy do tego poznanie danego języka czy potrzebne jest coś więcej.

Nie wiem czy to wszystko wynika z braku znajomości któregokolwiek języka czy nie znam podstaw?

@Fizyda Kasa większa, ale proporcjonalna do wymagań, a on chce zacząć pracować jak najszybciej. 

Tak czy inaczej preferuję C++, ponieważ nie jest uzależniony od platformy, przemyślany, szybki, uniwersalny, jest napisanych dla niego, jak i dla C masa bibliotek.

@dragon321 Dla serwisów o małej popularności PHP jest dobre, ale dla tych popularniejszych już nie. Zastosowanie w tym celu języka kompilowanego i FastCGI albo czegoś w tym rodzaju znacznie wypływa na wydajność, a tak na prawdę roboty nie jest dużo więcej.

W co jak w co, ale w dobrą klawiaturę należy się zaopatrzyć od razu. Dobre klawiatury ergonomiczne zaczynają się już od 90 zł, Koszt nie duży, a klawiatura ergonomiczna ma bardzo duży wpływ na wygodę, produktywność i jest zdrowa dla nadgarstków.

Wygoda - ok. Ale produktywność? Podparłbym się cytatem z Wujka Boba, ale nie pamiętam dokładnych procentów. Tak czy siak, wszelkie statystyki mówią, że ogromna większość czasu schodzi programiście na czytaniu, nie pisaniu kodu. 

Gdybym miał wybierać monitor vs klawiatura ergonomiczna wybrałbym monitor. Dla mnie każda klawiatura jest wygodna, nawet te laptopowe. Owszem na początku po zmianie dziwnie jest ale to nieuniknione.

Nie ważne, czy więcej czyta, czy pisze, ważne że pisze dużo. Nawet jeżeli przyrost szybkości pisania będzie niewielki (a przeważnie mały nie jest, ja np. 2-3 tygodniach od zmiany zwykłej na stosunkowo tanią ergonomiczną zwiększyłem szybkość pisania o 20 - 25 % i delikatnie zmniejszyłem ilość błędów), to i tak przy tej ilości pisania zrobi sporą różnicę. Klawiaturę powinno się po prostu czuć, wtedy łatwiej się skoncentrować, w innym wypadku podświadomie się rozprasza. 

Też bym wybrał monitor, gdyby koszta nie miały znaczenia. Zobacz, jaka jest różnica w cenie.

ja bym wybrał fotel

Gratuluję wam wszystkim, drodzy “programiści”. Kłótnie o wyższość klawiatury nad monitorem.

@ktoś tam C++ przemyślany? https://www.quora.com/Why-is-C+±considered-a-bad-language

Natomiast, ja polecam JavaScript, podobnie jak Frankfurterium. Dlaczego? Bo jest zapotrzebowanie na FrontEnd developerów, bo jakby nie patrzeć, mimo wielu słabych punktów, JS uwalnia od takich obrzydliwych aspektów, jak niewiafomo jak długie boilerplate code. No, i jest na każdej platformie. Może wyłączając mikrokontrolery (chyba, że ktoś wskaże implementację Nodejs na AVR).

 

I niezależnie od wybranego stosu oprogramowania, lepiej już teraz zainstalować jakiegoś uniksa. Wyłączając C# (oczywiście, CoreCRL, https://dotnet.github.io/ , są obrazy Dockera, jednakże gdzie dobre IDE?). W każdym razie, każdy Unix pozwoli Tobie programować chyba w każdym jeszcze używanym języku.

 

Ostatecznie, łap JS, ew. Python. Jeśli nie jesteś głupim butem, to dasz radę się wkręcić, i jeszcze brać z tego niezłą kasę.

Według mnie to raczej trzeba wybrać język który się polubi, o jako takiej popularności i posiadający bogate biblioteki. Jak będziesz w nim potrafił budować coś sensownego to pracę znajdziesz.

@enedil Te wady C++ są wymyślane na siłe. W istocie nie ma chyba innego takiego języka jak C++, który:

Dzięki za wszystkie opinie na temat “wyższości” danych języków programowania. Jednak chciałbym się dowiedzieć co byłbym w stanie robić (stanowisko w pracy) po nauczeniu się C++ lub Python?

Jeśli chodzi o Python słyszałem opinie że nadaje się tylko do web-dewelopingu. To prawda? Oraz, czy jest jakikolwiek sens uczenia się go spod windowsa czy do programowania ogólnie lepszy jest jakiś unix?

Python nie jest językiem tylko do web’a. Jednak w Polsce praca z Pythona to głównie web. Po za tym Python jest narzędziem - przyda Ci się w wielu sytuacjach, ale wtedy nie traktuj go jako twój ‘główny’ język programowania.

Na Windowsie Python jest trochę tworem obcym, ale mówmy szczerze - wszelaki narzędzia programistyczne na Windowsie działają słabo, taka jest specyfika systemu. Do tej pory nie wiem jak poprawnie przełączać się pomiędzy wersją 2.X i 3.X na Windowsie…

Mówię tu nawet o C# - chcesz coś skompilować bez użycia VS i nie wiesz gdzie jest Msbuild czy csc. Musisz sobie ręcznie dodać ścieżki do PATH’a. Oczywiście VS Ci wszystko da, ale potem próbujesz skonfigurować serwer do automatycznych builda na Windows i się okazuje że wszystko Cie wkurza. System ten chyba tak skonstruowany że aby w miarę przyjemnie programować musisz używać .Net’a lub C++ wraz z Visual Studio.

Z IDE do Javy niby powinno być podobnie, ale nie zawsze jest, przykład żeby uruchomić Eclipse czy IDEA musisz mieć ustawione JAVA_HOME czego domyślnie instalator JDK nie robi. Na linuxie jakoś potrafi to zrobić.

 

Więc… jak chcesz programować na systemie Windows to używaj sprawdzonych dobrych IDE , niestety po za VS nie masz dużego wyboru; Na Linuxie czy na Macu znacznie łatwiej skonfigurujesz sobie wszystkie narzędzia, ale trudniej może być Ci zacząć pracę z powodu specyficznego środowiska.

 

@dragon321: C++ jest wielopradygmatowy? Niby gdzie, to język obiektowy i to wszystko. nie jest nawet obiektowo zorganizowany.