Wybór języka pod Linuksem

Witam. Który język warto się nauczyć pod Linuksem. Do pisania aplikacji desktopowych, okienkowych hobbystycznie? Zastanawiam się nad Ruby, mono C#. Może polecicie jakiś inny łatwy język pod Linuksa?

Python - zasada jak Java, piszesz raz, działa wszędzie :slight_smile: Python relatywnie prosty, ale jak każdy język - sam nie wchodzi magicznie do głowy. Mamy jednak w Polsce dobry support społeczności. Coraz częściej programy pod Linuksa pisane są właśnie w Pythonie, gdyż bez wielkich ceregieli można appsa przenieść na Windows, Maca, BSD, Solarisa…Dodatkowo idzie go zbindować z GTK, Qt czy co tam jeszcze znajdzie się do okienek :slight_smile: Jedyne co trzeba, to naprawdę dobry materiał do nauki, w sieci jest wiele tutoriali, ale rozstrzelonych wiedzą i poziomem.

No tak tylko ta jego składnia, wcięcia jakaś dziwna. Bardziej już mi C podchodziło. W Rubym jakoś to jest sensowniej zrobione. Z kolei co do Pythona to jeszcze trzeba wiedzieć której wersji się uczyć 2.6 czy 3.2 itp. A z książek to ta stara “Zanurkuj w Pythonie” jest dobra? Szybciej się pisze aplikacje okienkowe niż w Ruby?

C/C++ pod linuxa jest odpowiedni. Trzeba tylko wyjść z “windowsowych” nawyków typu :

system("cls");

system("pause");

Czyli nie ma co sobie zawracać głowy skryptowymi językami typu Ruby?

Nie brałem pod uwagę C++ ponieważ programowanie gierek w ogóle mnie nie interesuje, a to jest dość rozrosnięty język z masą bibliotek co mnie przeraża.

Czy lepiej zaczynać od C ,a potem dopiero C++?

Pewnie książke polecacie do tego Symfonię J.Grębosz? Nie planuję jakiejś kariery z programowaniem. Chciałbym po prostu znać jeden język programowania siedząc na Linuksie.

Jeśli tak, to może faktycznie lepiej poznać jakiś skryptowy, jak proponowany powyżej Python.

Wiesz tyle osób się uczy C/C++ a może garstka z nich potem zostaje programistami. A reszta nawet nie dojdzie do pisania okienkowych programów tylko konsolowych. Porządne studia informatyczne o kierunku programowanie są chyba nie bez powodu 5 letnie. Jakiś prosty kalkulator konsolowy w C/C++ lub Javie to napisze, przerabiałem trochę kursów online. Ale to nie dla mnie te języki za dużo czasu wymagają i trzeba sporo lat , żeby dobrze w nich pisac programy. Dlatego szukam jakiegoś prostego języka w miarę łatwego skierowanego na pisanie aplikacji desktopowych pod Linuksem.

Każdy język programowania wymaga swego rodzaju nakładu. Moim zdaniem nie ma łatwych języków programowania, są języki w których składnia jest prostsza albo i trudniejsza, zawsze przy wyborze języka programowania warto zwrócić na to uwagę.

Pewnie każdy będzie polecał swój ulubiony język, więc zrobię to samo;) Proponuję Pythona (którego i tak prawdopodobnie masz już zainstalowanego). Sam programowanie traktuję hobbystycznie, bo z wykształcenia jestem inżynierem. Na początku wykorzystywałem Pythona do pisania skryptów obliczeniowych, traktując go (z kilkoma dodatkowymi bibliotekami) jako alternatywę Matlaba przy pisaniu pracy magisterskiej. Później zacząłem eksperymentować z innymi bibliotekami m.in. GUI, bardziej rozbudowanymi IDE (PyDev) itd. W sumie interesuję się tym językiem jakieś 1,5 roku, a od kilku miesięcy rozwijam aplikację, która została ciepło przyjęta w firmie, w której pracuję i jest już wykorzystywana przez kilka osób. Rozwiązanie to zaowocowało premią, która dodatkowo motywuje do rozwoju i nauki tego języka.

W Pythonie fajne jest to, że można zacząć robić użyteczne rzeczy niemal od zaraz. Wystarczy standardowe IDLE lub jakiś lepszy notatnik programistyczny. Reszta przychodzi z czasem. Jeśli zajdzie potrzeba/chęć podzielenia się własną twórczością z innymi użytkownikami, można wygenerować “zamrożone pliki binarne” i utworzyć instalator w postaci pojedynczego pliku (np. exe). Utworzone w ten sposób programy typu “Hello World” nie są małe w porównaniu z podobnymi programami napisanymi np. w C++, ale jeśli zrobi się coś większego to te różnice nie są już tak widoczne. Np. instalator do napisanego przeze mnie programu waży 7,5 MB. Jest to wielowątkowy program z interfejsem graficznym (PyQt), zestawem ikon Tango, korzystający z kilku innych bibliotek. Innych niż standardowe, bo Python zawiera zestaw bibliotek standardowych, których w innych językach trzeba szukać (np. email, csv, tkinter).

C, C++ do aplikacji, polecam framework Qt do okienek

Python do skryptów, szybkich programów obliczeniowych i jeśli bardziej poznasz, do aplikacji

Bash do “oskryptowania” systemu

D, Vala jako ciekawostka

Java jako narzędzie uniwersalne

To chyba zanurkuję w tym Pythonie skoro każdy go tak chwali. Przy okazji spróbuję dalej kontynuować przygodę z językiem C. Dla hobbysty strukturalny C może wystarczy. Zwłaszcza że mam do niego kilka książek i ebooków. Może ktoś z was będzie wiedział czy można jeszcze gdzieś zdobyć tą książkę “Język C w przykładach Grega Perry” ?

Co do Javy to samo wolne działanie programów napisanych w niej, zniechęca do nauki tego języka. Ruby widocznie mało kto używa i chyba dlatego nikt się nie wypowiedział na jego temat.

Z tym “każdy chwali Pythona” nie ma co przesadzać, bo zaraz przyjdą przeciwnicy i wymienią wady;) Ktoś się przyczepi, że nie lubi wcięć, ktoś inny ponarzeka na GIL lub na brak kompatybilności między wersją 2, a 3. Python jest językiem, który się ciągle rozwija (co skutkuje często brakiem kompatybilności z poprzednimi wydaniami). M.in. to go odróżnia od np. Javy. Ma to dwie strony medalu. Jedna jest taka, że powstaje w nim mniej dużych projektów (z wyżej wymienionego powodu), a druga jest taka, że jako język staje się coraz lepszy.

Np. w Pythonie 2.6 wprowadzono nowy sposób formatowania łańcuchów znaków przy pomocy metody format (bardziej Pythonistyczne rozwiązanie). Można korzystać nadal z formatowania przy pomocy operatora %, ale format daje nieco większe możliwości (chociaż wymaga więcej kodu). Może się zdarzyć, że w przyszłości metoda formatowania przy pomocy % zostanie usunięta z języka, co spowoduje, że istniejący kod przestanie działać i będzie wymagał uwzględnienia poprawek.

W każdym razie wersja 2.x zakończyła się na 2.7 i kolejne zmiany nie będą już w tej linii dokonywane. Aktualnie rozpoczęte projekty można spokojnie rozwijać przez kolejne lata (popularne biblioteki są nadal wydawane również dla wersji 2.5 udostępnionej w 2006 roku). Nowe projekty mimo wszystko zaleca się pisać w Pythonie 3, więc naukę języka też lepiej rozpocząć od tej wersji. Zmiany nie są aż tak duże, ale na tyle znaczące, że uniemożliwiają uruchomienie kodu napisanego w Pythonie 2.

Ps 1 Znajomość języka C przydaje się w Pythonie. Można pisać w C rozszerzenia. Przydaje się to w sytuacjach, gdy potrzeba bardzo dużej wydajności (czyli bardzo, bardzo rzadko w przypadku desktopowych, hobbystycznych programów).

Ps 2 Co do książek do nauki Pythona to polecam “Python. Wprowadzenie” (wydanie IV) Marka Lutza. Obszerna , ale wyczerpująca. Dotyczy wersji 2.6, ale podaje nowości wprowadzone w wersji 3. Inna pozycja to “Python 3. Kompletne wprowadzenie do programowania” (wydanie II) Marka Summerfielda. Połowę krótsza (i tańsza) i poza samym językiem opisuje też najważniejsze moduły biblioteki standardowej, ale jest napisana trudniejszym językiem. Do tego nienajlepsze tłumaczenie miejscami sprawia, że trzeba przeczytać zdanie jeszcze raz, żeby zrozumieć co autor miał na myśli.

@Razi

Ja jako ciekawostkę podałbym języki Scala i Go;)

Tak się składa że mam w systemie dwie wersje zainstalowane Pythona 2.6 i 3.2. Tyle że do tego drugiego nowszego nie ma jeszcze tutoriali, kursów zbyt wiele. Dziękuję wszystkim za odpowiedzi.