Jakiego języka programowania warto się nauczyć i który zapewni mi dobrą podstawę do nauki innych?
Chyba z C++ jest łatwiej przejść na inny język, niż z innego języka na C++.
Ogarniesz rekurencje itp.
Nie wiem, czy jest jakikolwiek sens uczyć się czegoś innego od C++ C# itp.
A już zwłaszcza wynalazków typu delphi, pascal
Nie wiem, czy jest jakikolwiek sens uczyć się czegoś innego od C++ C# itp.
Java - najczęściej używany język do programowania webowego w backendzie (a większość ofert pracy w programowaniu to właśnie na web development), + Android
Javascript (jw. potrzebny prawie wszędzie)
Wspomniany Python
PHP (nadal od cholery projektów w tym się robi)
Objective-C
I mniej powszechne, ale nadal dość często spotykane Ruby, Scala, Swift
Javascript nie jest najlepszym językiem na początek. tzn i tak i nie - bo z jednej strony jest mało wymagający od użytkownika i wiele wybacza, ale dzięki temu nie nabierasz wielu istotnych nawyków i potem jest problem.
Wiem coś o tym :)
Java - najczęściej używany język do programowania webowego w backendzie
Możesz to rozwinąć?
Fett: podobno? To jak Ty zaczynałeś?
Czy czader-master ma rację i najlepiej od C++ zacząć?
Możesz to rozwinąć?
Pracuj.pl, wpisujesz:
Java: 1203 oferty pracy
C#: 566 ofert pracy
PHP: 325 ofert pracy
Python: 240 ofert pracy
Ruby: 148 ofert pracy
Może statystycznie na świecie jest więcej aplikacji webowych w PHP (choć bym się nie zakładał), ale jeśli chodzi o rynek pracy Java > reszta.
Tworzymy Gre -> Można i od C++, ale jest trochę bardziej skomplikowany od np. Javy czy Pythona no i nie ma kilku mechanizmów, które teraz stają się coraz bardziej powszechne (lamba expressions). Jeśli Twój nick ma coś wspólnego z Twoimi planami zawodowymi, to jest to nawet dobry pomysł, bo gry tworzy się nadal głównie właśnie w C++.
Python. Albo C# / Java. Nauka programowania to przede wszystkim nauka koncepcji a nie technologii, kiedy nauczysz się tych pierwszych dobierasz resztę do tego co chcesz robić.
C++ to masa zagadnień i problemów które nie są Ci w tej chwili do niczego potrzebne.
Dobrą podstawą będzie C++, nie jest trudny i tutoriali dużo jest (no w sumie do każdego z języków wymienionych w tym wątku jest dużo).
@Katane No w C++ nie ma Lambda exressions ale w C# już są, a po ogarnięciu C++ nie powinno być żadnego problemu w przeskoczeniu na C#
Tak, ale w C++ jest ręczne zarządzanie pamięcią, wskaźniki/referencje (a nie tylko jedno z nich) i uboga podstawowa biblioteka (przynajmniej tak było jak ja na studiach miałem C++).
Strasznie sprzeczne opinie mi dajecie, ale wtedy zdecyduję się na to C++.
Chyba, że ktoś napisze teraz coś bardzo zniechęcającego do tego języka... a jak nie teraz, to niech zamilknie na wieki :P
Jeśli ktoś chce widzieć rezultaty swojej pracy, czyli coś co najbardziej napędza do dalszej nauki i nie walić głową w ścianę przy każdej najmniejszej pierdole (typu dodanie GUI do aplikacji i nauka nowego frameworka kiedy nie wiesz co to słowo znaczy, Qt, WxWidgets, MFC, jak to zlinkować, jak skonfigurować środowisko, co wybrać omójboże?!) powinien od C++ trzymać się z daleka.
W C# i Javie wszystko masz razem ze środowiskiem i nic więcej ciebie nie interesuje.
@jozef911
No oprócz tego że C# to język MS i wsparcie poza Windowsem leży. Ale nie powiem C# jest łatwiejszy i przyjemniejszy od C++, no i ma masę gotowych rozwiązań, nie trzeba się męczyć.
Co do Pythona to się nie wypowiem, jakoś dziwnie coś mnie odrzuca od tego języka, może jakbym nauczył się go wcześniej to byłoby inaczej, ale wziąłem się za to po C/C++,C# i PHP i teraz cały czas jak widzę kod w Pythonie coś mi się w nim nie podoba :D
podobno? To jak Ty zaczynałeś?
Jedyne co w życiu zaprogramowałem to sześcian w AC Logo i kalkulator w Turbo Pascalu :)
Ostatnio rozmawialem o tym z kumplem, który jest programistą i wskazywał własnie na Pythona, który jest łatwy w przyswojeniu i obrazuje schematy działania innych języków programowania
Polecam Ci Java Script, ponieważ ma naprawdę całkiem sporą bibliotekę. Potem jak opanujesz podstawy pobaw się w C++. Ale taka mała uwaga - jak zabierzesz się za Java Script to pobierz sobie darmowy Notepad++, bo w notatniku kiepsko się pracuje.
Legion
Jeśli przeszkadza Ci MS wybierasz Jave, która jest de facto tym samym co C# i problem z głowy. Ale tracisz Visual Studio czyli jedno z najlepszych IDE w kategori "brak miliona wtyczek i godzin konfiguracji".
Z drugiej strony ściągnąłem ostatnio źródła gry z '95 pisane w gołym C i ona nadal działa, bez żadnych frameworków i zajmuje 1mb :)
Podstawowe pytanie, które powinieneś sobie zadać, to "po co chcę się uczyć".
Ostatnio mam troche czasu i tez stalem przed wyborem jezyka, bo w koncu postanowilem sie podszkolic w programowaniu, zeby pisac wlasne narzedzia.
Moi bioinformatycy z pracy maja obecnie ogromna faze na Lisp i to w nim pisza narzedzia. Wieszcza rychly wzrost popularnosci tego jezyka. Troche sie nim bawie, ale tak, to glownie Python. Dla przyjemnosci. Jak Boga kocham, ale Python to pierwszy jezyk, gdzie wydaje mi sie, ze kod pisze sie na autopilocie. Wczesniej prawie nic nie programowalem. W Pythonie podoba mi sie prostota skladni i dostepnosc do dobrej dokumentacji (choc to raczej nie jest wyjatek). I to, ze mam znajomych, ktorych moge molestowac o wytlumaczenie mi, dlaczego sie ryplo.
Hax0rem raczej juz nie zostane, ale do tego co robie, pytong jest w sam raz. Z perspektywy leszcza - latwo bylo zakumac podstawy na tyle, aby zaimplementowac je w swojej pracy.
Maviozo: Chciałem hobbystycznie w wolnych chwilach tworzyć gry przygodowe point&click, ale jeśli już bym się nauczył języka to nie widziałbym przeciwwskazań żeby iść w kierunku programisty.
Do twoich planów Unity i C# lub ichniejszy Python (Boo).
Javascript odradziłbym jako przeciwstawny do C++ - wymaga za mało.
maviozo - moja zona zatrudnia informatykow
przez 7 lat w Belgii miala 2 oferty dla ludzi ze znajomoscia c#, reszta, czyli dziesiatki czy nawet setki to java
nawet tester dobrze jakby znal jave (selenium), ja np nie znam i troche przez to cierpie
ona zatrudnia do instytucji europejskich, firm energetycznych z Belgii, Szwajcarii, Norwegii, Szwecji, Anglii i Niemiec, ja teraz pracuje w banku, kumpel w firmie telekomunikacyjnej i tez w javie
statystycznie w ofertach pracy rzadzi java, przynajmniej w tych ktore ona dostaje
Dziwi mnie to nieco, bo jako standardowego zjadacza chleba java jest prawie nieistniejąca, a każdy program, który stoi na javie jest dziwnie niestabilny, dziwny, jakiś toporny i brzydki.
Natomiast mogę zrozumieć, że jako oprogramowanie pod konkretny cel, pod zlecenie, może mieć sens. Pytanie na ile to wynik "możliwości języka" a ile wygody programistów :)
Nie mam porównania z innymi środowiskami "growymi" ale unity wydaje się dość fajne, coś tam sobie w nim dłubię od czasu do czasu, jako relaks i właśnie nawyki z javascriptu czasem tam się dają we znaki, bo niektóre rzeczy prościej zrobić w ichnim C# :) Zresztą i tak jest to zmodyfikowany język, a niektóre banalne rzeczy z JS tam nie działają jak powinny.
I tak to jest.
PHP też się przydaje.
VS też ugryzłem i też wydaje się spoko.
De facto składnia podobna, jak się jedno ogarnie, to reszta jakoś idzie - kwestia poznania wbudowanych klas, metod itd.
W Javie nie robi się aplikacji desktopowych (niby jest jakaś FXJava teraz, ale to są jakieś zastosowania szczątkowe), tylko oprogramowanie dla firm i bardziej skomplikowane aplikacje webowe.
Ciekawe jak będzie z popularnością Javy w segmencie aplikacji korzystających z przeglądarek, po tym jak ją wycięto choćby w Chrome.
Jeśli myślisz o robieniu gier i programowaniu ogólnie, ale jeszcze nie masz w tym żadnego doświadczenia, zainteresuj się http://www.codecademy.com/
Ja zacząłem od kursu podstaw JavaScript na tej stronie, potem przesiadłem się na Unity i zrobiłem prostą grę mobilną: https://play.google.com/store/apps/details?id=com.MadCatGames.TapThemAll
Przygodówkę point&click też spokojnie w Unity zrobisz.
Na Codecademy masz też m. in. podstawy PHP i Pythona, bardzo przystępnie wytłumaczone.
Kolega z pracy zrobił też kurs Pythona na Coursera.com i bardzo zachwalał.
@Runnersan
Nic się nie zmieni - backend dalej będzie w javie, a front w js.
@Tworzymy Gre
Ja zdecydowanie będę odradzać C++ na samym początku. Jeżeli chcesz poznać podstawy programowania zacznij albo od javy albo c#. Nie musisz od samego początku zajmować się chociażby zarządzaniem pamięcią. Jak dopiero zaczynasz w tych 2 językach będzie Ci łatwiej nauczyć się jak się posługiwać wszystkimi, ważnymi (istniejącymi we wszystkich językach) konstrukcjami. A te istniejące tylko w danym języku poznasz gdy będziesz musiał z niego skorzystać.
Dużo zależy od tego, co właściwie o informatyce i programowaniu wiesz. Ja będąc w gimnazjum nauczyłem się VBA, czyli języka do tworzenia makr w Excelu. Język jest bardzo prosty i wszystkie rzecz, nad którymi trzeba się trudnić (tworzenie GUI, pobieranie danych oraz zapisywanie ich) są w nim uproszczone jak tylko się da, bo wszystko albo się rysuje (GUI) albo zapisuje i pobiera z arkusza kalkulacyjnego.
Język jest bardzo prosty i w porównaniu do innych chyba najszybciej można w nim zrobić coś co działa. Jeżeli chcesz zobaczyć o co w programowaniu chodzi to polecałbym ten. Szybko się nauczysz i będzie łatwiej przejść w coś innego. Ponadto w pracy biurowej bardzo się przydaje.
Z innych:
C++ jest trudny, zanim dojdzie się do poziomu, przy którym można cokolwiek zrobić to czeka Cię przebijanie się przez gąszcz koncepcji. Jednak jak znasz C++ oraz wzorce projektowe to bez problemu zrozumiesz każdy inny język proceduralny.
Python jest stosunkowo prosty, choć nieco odmienny od innych w sposobie organizacji kodu (wcięcia zamiast nawiasów).
Java jest trudniejsza od Pythona, tworzenie GUI w niej jest wg mnie denerwujące, ale w w Java 8 ze Scene Builderem bardzo się to zmieniło według mnie na o wiele wygodniejsze. Java w dodatku wymusza obiektowość, co z kolei jest chyba zaletą, ale trzeb najpierw tę koncepcję zrozumieć.
Minas Morgul
Troche sie nim bawie, ale tak, to glownie Python. Dla przyjemnosci. Jak Boga kocham, ale Python to pierwszy jezyk, gdzie wydaje mi sie, ze kod pisze sie na autopilocie. Wczesniej prawie nic nie programowalem. W Pythonie podoba mi sie prostota skladni i dostepnosc do dobrej dokumentacji (choc to raczej nie jest wyjatek).
Ja się za programowanie zabrałem też żeby zacząć tworzyć własne narzędzia. Akurat Pythona wybrałem, bo polecił mi go jeden profesor, który sam w nim ostro działa (a informatykiem nie jest). Zachwalał przede wszystkim dużą dostępność darmowych modułów np. do tworzenia wykresów, itp. Sam jeszcze z takich rzeczy nie korzystałem, ale byłoby to o wiele lepsze niż zabawa z Excelem.
Sandro
Kolega z pracy zrobił też kurs Pythona na Coursera.com i bardzo zachwalał.
Też mogę polecić, tylko jest to straszny zżeracz czasu (kilka godzin tygodniowo). Muszę jednak przyznać, że jak dla mnie kurs (a jest ich tam sporo nawet odnośnie samego Pythona) się sprawdził, bo taki sposób nauki bardziej do mnie przemawia niż czytanie suchej dokumentacji w necie.
Jeśli chodzi o Coursera'e, to poza kursami podstaw programowania (również w innych językach), mają też sporo kursów np. dotyczących algorytmów, data miningu itp., które w wielu przypadkach opierają się np. na Pythonie. Ja powoli próbuję przez nie przebrnąć i np. motywuje mnie to, że w jednym z kursów widziałem wykład o zastosowaniu Pythona do prowadzenia analiz Monte Carlo. :)
Btw jeszcze nie ogarnąłem GUI w Pythonie, może ktoś mi doradzić w czym najłatwiej go stworzyć i oskryptować? Najlepiej z dobrym manualem. Kolega polecił mi SharpDevelop który choć jest tworzony głównie z myślą o C#, pozwala na pisanie softu w Pythonie, ale może ktoś zna lepsze narzędzie?
Tak trochę offtopic. Wiecie, że C++ ewoluuje (C++11, C++14, niebawem C++17)? Np. lambda functions weszły w C++11, są też 'ulepszone' smart pointery i dużo innych zmian. Tak tylko mówię ;)
Ale na przykład taką podstawę jak łażenie po drzewie katalogów przerzucą z Boosta do biblioteki standardowej dopiero w C++17, to jedna z tych rzeczy które początkujący chcą mieć łatwo dostępne.
Faktycznie C++ idzie w dobrym kierunku (o smart pointers coś tam słyszałem, że C++ ma lambdy przyznam, że już nie, no ale moja przygoda z C++ skończyła się na 2gim roku studiów). Nadal jest jednak językiem dużo bardziej skomplikowanym niż Java czy Python.
jesli tak jak pisales chcesz czysto hobbystycznie zajmowac sie robieniem gry, to smialo moge polecic clickteam fusion. super narzedzie do tworzenia gier 2d, rowniez calkiem zlozonych. powstalo na tym silniku m. in. 'five nights at freddy's'. Umiejetnosc programowania niepotrzebna.
dobrym rozwiazaniem jest rowniez unity z dodatkiem 'playmaker', wygoogluj sobie
Mimo ze C++ jest u mnie w planach, zdecydowanie polecam Pythona, glownie z powodu uniwersalnosci, i do webu (django, pyramid, flask) i do aplikacji, gry tez da sie robic i sa gotowe frameworki do tego (kivy, cocos2d). Oprocz tego sporo aplikacji ma porty pythona (w gfx to wrecz obowiazkowy feature - z wyjatkiem crapu od adobe oczywiscie)
Chyba najlepszym edytorem jest PyCharm, jest w wersji community za free.
Nawet dwoch moich znajomych php'owcow sie przestawia na python/django.
Tez uzywam PyCharm. Naprawde przyjemny edytorek.
Lutz - tak z ciekawosci... chce sobie napisac taki bardziej skomplikowany kalkulator, ktory importuje wielkoskalowe dane, wygenerowane przez robota, na podstawie okreslonych kryteriow odrzuca bledne wyniki, a nastepnie liczy kilka parametrow oraz statystyk i rysuje wykresy. Taki troche generator raportow. W graficzna reprezentacje danych w Pythonie nie bawilem sie jeszcze nigdy, stad tez dolaczam sie do frera z pytaniem - lepiej to zrobic w czyms pokroju kivy, czy we flask - apka webowa? Pytanie z serii "czy lepiej smazyc nalesniki na patelni, czy zapiec w piekarniku", ale wole je zadac, zanim zapedze sie w cos, czego nie chcialem :D.
Na razie moj soft potrafi dobrac sie do pliku zrodlowego, cos tam zrobic z tymi liczbami, ale chcialbym poskladac to w jakas calosc.
Nie zrobiłem nic w kivy, parę rzeczy pod pyside(qt) jedynie, natomiast flaska polecam.
Webowy interfejs jest wygodniejszy, mozesz podpiac angularjs, sprobowac komunikacji na websocketach, zobacz sobie to video, to pyramid o ile pamietam ale pokazuje idee. https://m.youtube.com/watch?v=xi4PNVk0RIc Postawilem sobie w domu mini serwerek na raspberry pi, pradu nie zre, mozna otworzyc dostep z zewnatrz.
Ja już zgłupiałam. Szukam kierunku w jakim iść w programowaniu. Na uczelni strasznie nas cisną w kierunku Javy a na forach czytam, że lepiej język oparty na C. Znalazłam na takim forum [link] informację o strefakursow.pl i widzę, że są kursy Javy. Nie chce jednak pakować się w coś bez przyszłości.
Python jest dobry na start, więcej języków
link:
jeżyki których warto się uczyć
[link]
Myślę, że na początek najlepszy będzie Python - ma dość szerokie zastosowanie, a przy tym jest łatwy do opanowania, także będzie w sam raz. Dość łatwy jest też C++ i równie popularny jak Python. W sieci jest sporo kursów online, jak Kodologia, które pozwalają dość szybko opanować podstawy - zawierają zarówno teorię, jak i praktyczne zadania.
Dość łatwy jest też C++ i równie popularny jak Python
To jest jeden z najcięższych języków które są popularne.
Wiem bo prowadzę szkolenia z C++ w swojej firmie - język jest przeogromny. Ciężko znaleźć eksperta który miałby dobre pojęcie o każdej dziedzinie tego języka. Jest mnóstwo "kruczków" na które da się nabić.
Dlatego mówi się "z C++ łatwo przejść do każdego języka, ale z każdego języka do C++ nie jest łatwo".
Z popularnych języków Python jest wg. mnie najłatwiejszy. Następnie Java i C#.
Twórca wątku pyta o naukę czegoś co da mu PODSTAWY do nauki innych języków, a większość odpowiedzi to dyskusja o ludziach, którzy pracują jako programiści.
Pytający musi zdobyć podstawy - nauczyć się co to typy danych, jak się dane organizuje, co to procedura, co to funkcja. Zarządzanie pamięcią to następny poziom. W tym sensie jakikolwiek Basic odpada, bo jedyne czego uczy, to złe nawyki. Jeśli pierwszym językiem będzie c++ to uczący się wpadnie na głęboką wodę w której utonie po około 3 miesiącach z powodu braku zrozumienia systemów na które będzie pisać programy.
PHP - a przepraszam co niby w tym PHP uczący się napisze bez znajomości baz danych i specyfiki aplikacji sieciowych - może Hello world!
Najlepszym poligonem dla początkującego NIE jest szukanie języka, który jest poszukiwany na jakimś portalu pracy, bo gdy się człowiek czegoś nauczy języki z dzisiejszej czołówki mogą zostać zapomniane, a może jest język na który jest jedno ogłoszenie, a zarobki są takie jak suma tych kilkudziesięciu innych ;)
Najlepszym wyborem jest:
1. wariant 1 - czy ktoś z Twojego otoczenia programuje? jeśli tak - wybierz ten sam języm - będziesz miał z kim porozmawiać - Twój największy problem na początku to będzie - "trafiłem na ścianę i nie rozumiem dokumentacji, nie ma kto mi pomóc"
2. wariant 2 - wymyśl prosty program, który chciałbyś napisać i napisz go - najszybciej nauczysz się widząc efekty (lub ich brak) - czytając tutoriale i samouczki będziesz sie uczył jakichś tablic i za diabła nie będziesz wiedział PO CO? Jeśli będziesz pisał coś pożytecznego i cos czego potrzebujesz (to znaczy wiesz co to ma robić) te "tablice wymyślisz sam" i zdziwisz się gdy odkryjesz, że już są i można z nimi zrobić więcej niż sobie wyobrażasz (tablice użyte jako przykład)
3. NIE namawiam Cię do pascala, ale pascal NIE jest złym pomysłem - jeśli weźmiesz darmowego i otwartego Lazarusa, to napiszesz z jego pomoca prosty program, który zadziała pod Windows, Linuxem na Androidzie, IOsie i starej nawigacji Twojego starego. Jeśli się trochę nauczysz napiszesz KAŻDY program, który sobie wymyślisz - może da się napisać lepszy w innym języku, ale to WIEDZA głównie wpływa na jakość programu, a nie użyty język.
4. Wybierając język - wybierz dowolny, w którym da się pisać programy na różne systemy, na różne platformy sprzętowe - taki język korzysta ze standardów, a nie technologii jednego producenta, wybierz taki, który ma otwarte narzędzia - zakładając firme nie będziesz musiał inwestować w narzędzie, za które będziesz musiał płacić haracz i każda następna wersja będzie niekompatybilna z poprzednią
Naucz się Javy, rób aplikacje na androida, pchaj to do sklepu play i zarabiaj. ;)
Clickteam fusion to świetny program jak na początek. Nie wymaga umiejętności programowania + od dawna można tworzyć w 3d.