Jaki język programowania 2017 na Linux?

0

Witam, jaki język programowania wybrać do nauki pod systemem Linux? Ma być nowoczesny i przyszłościowy, przypasował mi C#, ale pod Linuksem średnio działa ten Monodevelop, co myślicie Vala? Składniowo podobny do C# i do tego młodszy. https://wiki.gnome.org/Projects/Vala
http://www.chip.pl/blogi/linuxblog/2012/03/dlaczego-programowac-na-linuksa

1

Uwaga wymieniam jakie języki pod Linuxa:

BASH - albo coś podobnego do skryptów powłoki
Python - do naszych skryptów, prostych appek lub większych skryptów
ANSI C - klasyka i czasem się przydaje - oprócz tego Linux jest napisany w C i C to jest podstawa w informatyce.
W C jest dużo bibliotek fajnych.
Java - do aplikacji biznesowych, korporacyjnych, serwerow naszych jakiś  czy nawet apek użytkowych (patrz JavaFX).

Pod Linuxem zacznij od BASHa.

0

Basha to ja znam jako powłokę systemową, a nie język produkcyjny. Wolał bym coś nowszego niż starą Javę i łasy na bugi C.

0

C nie jest łasy na bugi. A Java - no jest stara, ale dobra. Nie ma obecnie niestety lepszej alternatywy. Pytanie czy chcesz być produktywny na tej produkcji czy modny, powolony i hipsterski.

3

Statystyczny komentarz o tym że JS-a można używać wszędzie i do wszystkiego.

3

A co chcesz konkretnego programować? Twoje pytanie brzmi "jaki samochód do jeżdżenia?". Owszem, parę osób powie ci, że jakiś mercedes lub tesla, ale czy będzie to odpowiadało twoim potrzebom lub możliwościom intelektualnym - nie wiadomo.

Na Linuksie możesz programować niemal w każdym języku, podobnie jak po drogach możesz jeździć niemal każdym samochodem.

0

Programy okienkowe i backend.

1

No to Qt albo JavaFX

0

W twoim przypadku to nie język jest problemem, a algorytmy i ich nieumiejętność implementacji.

Dobrze można w c na javie pisać znając tylko bajtkod jvm, albo korzystając z NDK.

Sprytny programista zbuduje sobie takie narzędzia w swoim języku, że ogarnie każde zadanie.

W linuxie wszystko jest plikiem, a każdy język implementuje tą właściwość to bezproblemów można robić co się chce.

1

Java nie wygląda tak staro :)

0

LISP jest stary, a ciągle nic lepszego nie wymyślili.

0
datdata napisał(a):

LISP jest stary, a ciągle nic lepszego nie wymyślili.

jest Lisp na JVM, czyli Clojure
jest też a la Lispowy Racket (Czyli dobre stare Scheme)

0

Rust, Go, D i Vala to nowoczesne języki programowania w których można już pisać systemy informatyczne, jak alternatywa dla C++17. Linus Torvalds powiedział kiedyś, że jak by miał przepisywać Linux od nowa musiał by do tej roboty nająść murzynów. HaikuOS napisany jest już w C++ i kilka innych nowych systemów też. Ciekawi mnie to który kompilowany język programowania, zastąpi wysłużone C/C++. Niektórzy autorzy książek o C, jak Zed A. Saw twierdzą że C jest złym językiem programowania, trudno się w nim piszę i łatwo popełnić w nim błędy. Do tego trudno w nim utrzymać dobry jakościowo kod, ale jak na razie nikt nie będzie nic przepisywał. Linux, BSD, Solaris, Minix pisane są w C. Windows w C i C++, Apple od OS X korzysta z kodu, jąder FreeBSD, NetBSD i raczej też po części z C/C++ lub Objective-C?

2

HaikuOS napisany jest już w C++ i kilka innych nowych systemów też.

przecież *BSD i Linux też mógł zostać napisany w C++, bo już wtedy istniał. Tylko oni znali się na rzeczy i zauważyli, że ten język, którego nawet sam autor do końca nie ogarnia a komunikaty o błędach kompilacji są niezrozumiałe się do tego nie nadaje. zresztą czy kompilator C++ jest tak przenośny jak kompilator języka C? -chyba nie. Tutaj masz co Linus Torvalds sądzi o C++ : http://harmful.cat-v.org/software/c++/linus

Ciekawi mnie to który kompilowany język programowania, zastąpi wysłużone C/C++.

żaden nie zastąpi, bo za dużo softu w tym powstało. te języki to jak mnożenie i dzielenie w matematyce. Można wymyślać logarytmy i nowe stwory, ale sprawdzone dobre podstawy zostawiamy te same. Chociaż co do C++ to trudno powiedzieć, bo ten język z coraz to nowymi standardami ewoluuje w coraz straszniejszego stwora - czyt. jest skomplikowany i na za dużo rzeczy pozwala - dodają mnóstwo nowości a podwaliny stanowi C z lat 80 i ma nadal zwykłe wskaźniki, to nie może wyglądać dobrze :/

trudno w nim utrzymać dobry jakościowo kod

pierwszy lepszy kawałek kodu jądra Linux: https://github.com/torvalds/linux/blob/master/kernel/kthread.c
czy to wygląda twoim zdaniem na słaby jakościowo kod?

0

Faktycznie C++ popsuła całą ta obiektowość, ciężko go już ogarnąć. Ale nie jesteś pewna czy nie powstanie jakiś super fajny język programowania do pisania systemów. Nie twierdzę że Go, D czy Rust ale zupełnie inny który będzie się do tego nadawał. Po tym co robi Linux ostatnio z systemd i dołączanie do niego Microsoftu, nie podoba mi się to zbytnio. Na szczęście mam alternatywy z FreeBSD, Open Indiana, czy HaikuOS. Ale są jeszcze systemy pisane w ASM czy inne w Rust:
www.redox-os.org/
https://websetnet.com/pl/redox-os-operating-system-written-rust/
http://toaruos.org/
http://sortix.org/

0

Sądzę, że obecne systemy operacyjne mają już tyle kodu napisanego, że nie opłaca się przepisywać tego do innego języka, czy pisać od zera. I nie chodzi mi tylko o czas potrzebny na to, ale też o pracowników, którzy mieliby to robić. To jest spore przedsięwzięcie.

Jak długo się rozwijał i wciąż rozwija Android? Jak długo Windows, Linux, czy Mac OS. Bardziej opłaca się wspierać i udoskonalać istniejący system, niż zaczynać wszystko od początku.

0

QBasic v4.5. Fajnie działa pod DOSboxem.

0

Z nowinek to może warto zainteresować się .NET Core. Microsoft ma wystarczajaca ilosc kasy, zeby doprowadzic ta technologie do uzywalnosci.

1

16 letni C# to nie taka nowinka, potrzeba kilka GB aby to zainstalować uruchomić. No i jest uzależniony od jednego Microsoftu. Programiści Delphi, Pascala też nie myśleli że Microsoft to porzuci. Dlatego jak dla mnie .Net odpada. Przegrał na polu mobilnym i teraz w czasach gdzie wszystko idzie w chmurę, siec lub mobile - też przegra na desktopie.

0

Python albo Elixir.
Python, bo już go masz na linuxie. Jest uniwersalny, ma masę rozszerzeń, ma wygodną składnię, jest mega czytelny (może przypominać C++, w tym że ma tradycyjne pętle czy instrukcje sterujące).
Elixir, bo ma składnię podobną do Rubiego, a możliwości Erlanga.

0

na pewno pętle z goto, (+ https://github.com/torvalds/linux/blob/master/kernel/audit.c)

@spartanPAGE tylko trochę widać, że nie są to bezmyślne skoki a wydzielono możliwe wspólne (dla wielu różnych warunków)
zakończenia,wyjścia z funkcji na koniec i skacze się do nich przez goto. Czy to jest takie straszne?
Jak Ty byś wydzielił te bloki? Do osobnych funkcji albo plików? - to byłoby tego strasznie dużo :/
Przykładowo taka jak poniższa funkcja - czy to aż tak tragicznie wygląda? - chyba nie. Zwłaszcza patrząc na koniec funkcji gdzie mamy możliwe jej zakończenia a w środku, jak coś - tylko się do nich skacze przez goto. goto - rzecz normalna, naturalna i szczera

static struct audit_buffer * audit_buffer_alloc(struct audit_context *ctx,
						gfp_t gfp_mask, int type)
{
	unsigned long flags;
	struct audit_buffer *ab = NULL;
	struct nlmsghdr *nlh;

	spin_lock_irqsave(&audit_freelist_lock, flags);
	if (!list_empty(&audit_freelist)) {
		ab = list_entry(audit_freelist.next,
				struct audit_buffer, list);
		list_del(&ab->list);
		--audit_freelist_count;
	}
	spin_unlock_irqrestore(&audit_freelist_lock, flags);

	if (!ab) {
		ab = kmalloc(sizeof(*ab), gfp_mask);
		if (!ab)
			goto err;
	}

	ab->ctx = ctx;
	ab->gfp_mask = gfp_mask;

	ab->skb = nlmsg_new(AUDIT_BUFSIZ, gfp_mask);
	if (!ab->skb)
		goto err;

	nlh = nlmsg_put(ab->skb, 0, 0, type, 0, 0);
	if (!nlh)
		goto out_kfree_skb;

	return ab;

out_kfree_skb:
	kfree_skb(ab->skb);
	ab->skb = NULL;
err:
	audit_buffer_free(ab);
	return NULL;
}
 

definiowanie makr wewnątrz funkcji jak i same funkcje > 100 linii kodu to przykład pięknej jakości.

może po to żeby nie trzeba było skakać do góry, żeby zobaczyć definicję makra. Tylko od razu widać.
100 linii kodu - jakby stosowali się do rad wujka Boba to pewnie do teraz ten system byłby dalej od ukończenia niż GNU Hurd

Wiadomo też, że pattern-matching ze switchami w C bardzo pozytywnie wpływa na ilość kodu

https://github.com/torvalds/linux/blob/master/kernel/audit.c#L803-L819.
no a jak to lepiej zrobić?

Wiadomo też, że im mniej dzielimy funkcje, tym łatwiej się je czyta https://github.com/torvalds/linux/blob/master/kernel/audit.c#L960-L1237

no dobra, ale nie zawsze tak łatwo wydzielić z dużej funkcji mniejsze funkcje i nie zawsze większa ziarnistość kodu zwiększa czytelność.
scrolla używa się łatwo a tak to trzeba byłoby skakać po plikach i pamiętać abstrakcje z poszczególnych plików

o magic numbers nie wspominając, bo czemu slen + 2 to chyba wszyscy wiemy

dobra bez przesady dodali komentarze

 new_len = slen + 3;	/* enclosing quotes + null terminator */

albo

 skb_put(skb, slen + 2);	/* don't include null terminator */

moim zdaniem tak łatwo jest komentować, krytykować i coś oceniać. a może zrób pull requesta i pokaż, że da się lepiej?
ciekawe jak wygląda kod Windowsa - oni nawet tego nie pokażą. aa co to za kod, który jest ładny piękny ale nikomu się nie przydaje?
A tutaj kod jest znośny i w dodatku przydaje się światu.

0
  • Go: czyżby następca C z dużo większą biblioteką standardową? przenośny i ładny składniowo? programowanie sieciowe included? mikroserwisy?
  • Rust: ponoć bezpieczny, czas pokaże
  • Julia: do obliczeń naukowych - chociaż to indeksowanie od 1 to jakiś WTF, efekty kompilacji i praca rozproszona bardzo obiecujące
  • Scala: eee, hmmm, programowanie reaktywne? Sam nie wiem do czego
  • Elixir: programy sieciowe, mikroserwisy

Stare które warto znać:

  • Java - programowanie aplikacji biznesowych
  • Groovy - do testów i małych narzędzi około-JVM
  • Python - taki bash do obliczeń naukowych
  • bash - pseudo-język do automatyzacji narzędzi
  • C++11 - obliczenia naukowe w wersji produkcyjnej
  • PHP - postawienie forum czy sklepu w sieci (do bloga nie potrzebny)
  • JavaScript - żeby nie psioczyć gdy kalendarzyk nie chce się pokazać w enterprise-grade Java

Mam poważne wątpliwości czy warto:

  • C++17: miejscami trudno rozpoznać C++
  • R: niby popularne, ale skoro są Julia, Python i C++ to po co jeszcze jeden?
0

R: niby popularne, ale skoro są Julia, Python i C++ to po co jeszcze jeden?
Kwestia preferencji, R jest innym językiem niż Julia/Python/C++, ma świetne IDE (R Studio), jeżeli są libsy w dziedzinie której potrzebujesz nie widzę sensu stawiać go poniżej innych.
Java jest świetna, Dart powinien działać. Z takich "żeby być lepszym programistą" Haskell/Ocaml/Scheme, ale ogólnie to większość języków działa na linuxsie, właśnie często na Windowsie są problemy (wykluczając wynalazki ms - one są "specjalne"). Tak samo jest z grami komputerowymi - starsze gry często prędzej odpalisz na WINE niż na nowszych windowsach (już widywałem rozwiązania w FAQ - zainstaluj linuxa i odpal na WINE).

0

Scala: eee, hmmm, programowanie reaktywne? Sam nie wiem do czego

Do wszystkich aplikacji typu klient-serwer, zwłaszcza jeśli klientów jest dużo i/ lub serwer składa się z wielu mikroserwisów w chmurze.

Poza tym podejście funkcyjne (Scala jest językiem łączącym OOP i FP) nawet w tworzeniu GUI się sprawdza - przykładem jest React i jego ekosystem.

0

Golang

Sporo ciekawego softu w tym powstaje a nie jakies CRUDy. Niekoniecznie w Polsce ale czesto open source.

1

@karolinaa czyli na obronę stwierdzenia, że w C trudno w nim utrzymać dobry jakościowo kod masz dobra bez przesady dodali komentarze? ;)

0

No więc tak Vala i Ceylon mimo że są od Red Hata warto zobaczyć. Obecnie na Linux słuszny wybór to Python i ładnie się prezentuje Golang. Kto wie, być może kiedyś Google zastąpi nim Javę. W między czasie można się uczyć C najnowszy standard i Rust, jak chcesz coś szybkiego napisać, chociaż znając Go obejdzie się bez tych dwóch. To tylko kwestia która składnia Ci przypasuje. Powstał też kompilowany język programowania ze składnią podobną do Pythona i Ruby - kto odgadnie jego nazwę?

2

Tu programiści dyskutują na temat tych języków programowania i twierdzą, że najlepszym językiem programowania do pisania kerneli systemowych jest Rust.
https://www.quora.com/Of-the-emerging-systems-languages-Rust-D-Go-and-Nim-which-is-the-strongest-language-and-why
Ulubionym językiem programowania programistów również był Rust
http://stackoverflow.com/research/developer-survey-2016#technology-most-loved-dreaded-and-wanted
Go też przyjaźnie
https://d3ansictanv2wj.cloudfront.net/29-future-lang-adb360de1cdbce64a546e34141ca7bbb.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1