Jaki nowy język programowania wybrać?

0

Witam zastanawiam się nad wyborem kolejnego języka programowania do nauki jak i aby potem w nim pisać aplikacje.Do tej pory miałem styczność z c/c++ , objective-c,swiftem.Myśle teraz nad wyborem jednego z tych języków programowania: Rust,Go,Kotlin jak i ewentualnie D. Zamierzam głównie pisać aplikację a może w przyszłości pokuszę się nawet o napisanie jakiś prostych gier w jednym z języków które podałem.Jaki język programowania będzie najlepszy wybór biorąc pod uwagę aby aplikacje mogły być pisane pob mac osx,linuxa i windowsa. Który z tych języków programowania ma największą przyszłość.

1

imo kotlin, spelnia wszystkie kryteria, dziala pod jvm i jest bardzo przyjemny

1

tylko HTML

2

Zacznij pisać programy i zobacz czego Tobie brakuje w obecnych językach, wtedy wybierz kolejny. Inaczej to bez sensu, bo bedziesz znac kilkanascie języków, a w żadnym nie będziesz umiał napisać programu.

0

Aktualnie jak przeglądam najbardziej jestem za rust i go.Co do kotlina to nie jestem zbytnio przekonany ze względu na to ze niezbędne jest do wykonania programu Java Virtual Machine a do niej kompletnie nie jestem przekonany jak zresztą do samej javy.

0

Java i JavaScript.

0

Java i javascript odpadają próbowałem w nich pisać i mi nie podchodzą totalnie. Jesli miałbym wybierac jave to juz wolał bym dalej zostać przy c++

0

GO lang, Dart, Rust, Haskell - może coś z tych?

0
Krzywy pomidor napisał(a):

Java i JavaScript.

Można nie przepadać ale warto poznać. Z JVM masz jeszcze np. Scalę.
Python jest również przyjemny.

Czy znasz jakąś technologię dobrze? Bo jeśli nie to skupiłbym się najpierw na jednym.

Nie widzę za bardzo u Ciebie nic ze stacka webowego i warto byłoby to nadrobić.
do tego własnie Java/C# oraz JS byłby dobry .W web akurat od JSa nikt nie ucieknie.

0

A jaki drugi język do nauki obok Pythona? Myślałem o C, używam Linux i C# nie za bardzo by pasował, a Java jakoś mi nie przypasowała. Jakiś w miarę prosty jak Python bym wolał z tych nowoczesnych, C++ to za trudne.

1

A co cię tak od JVMa odrzuca? Ja polecam Scalę - ma trochę duży próg wejścia (dla programistów popularnych języków), ale za jest zwięzła (a więc szybko się prototypuje i ogólnie pisze) i ma rozbudowany statyczny system typowania (co jest niezbędne przy dużych projektach).

0

Ludzie mysla pewnie starymi kategoriami typu applety w javie itp.

Czyli tak naprawde nic o tym nie wiedza, ale nasluchali sie kogos jaki to zly jezyk. Mowia, ze powolny a pozniej ucza sie jeszcze wolniejszych jezykow.

Javy mozna nie lubic, ale warto znac. JVM chyba najbardziej dojrzaly ekosystem. Ale fakt jest to kobyla.

Dla mnie jest to jezyk ok. Nie ma tez czym sie podniecac, dobre narzedzie i tyle.

A kto chce moze obadac ksiazke - 7 jezykow w 7 tygodni. Ale mi srednio podeszla.

Z ostatnich ciekawostek to chyba elixir i rust.

0

Mam 3 kandytatów do wybrania i wśród nich tylko rozpatruje. Elixir,Rust jak i Go. Który z tych trzech warto się uczyć ? Który z tych trzech ma najlepszą przed sobą przyszłość??

0

Rówież szukam jakiegoś dodatkowego języka do nauki. Aktualnie znam podstawowy stack .NET, tj C#, JavaScript, SQL. Ostatnio zacząłem dostrzegać zalety programowania funkcyjnego nad imperatywnym, dlatego poszukuję czegoś w tym kierunku. Gdyby tylko F# był powszechnie wykorzystywany to bym się nie wahał ani chwili, niestety znalezienie w nim pracy graniczy z cudem, a mimo że uczę się dla przyjemności, chciałbym również w wybranym języku pracować. Z tego co zauważyłem najczęściej wykorzystywanym językiem funkcyjnym jest Scala, jednak nie po to uciekłem z JVM, żeby teraz do niego wracać. Prawdopodobnie padnie na NodeJS (znam JS jedynie z frontendu), w końcu JavaScript również jest językiem funkcyjnym, a o pracę nie trzeba się martwić.

1

Jeśli chodzi o programowanie fukncyjne to elixir bym wybrał na pewno.Nawet już wiele ofert pracy pojawia się dla niego i to nawet w Polsce.

0

COBOL

0

Polecam Elixir. Składnia jest dosyć przystępna, a możliwości ogromne. Piszesz jak w Rubim zamiast w Erlangu.

0

JavaScript jest funkcyjny... pod warunkiem jak się to definiuje...

"If you define functional language as the language that supports first class functions and lambdas, then yes, JavaScript is a functional language.
If you also consider the factors like support for immutability, algebraic data types, pattern matching, partial application etc then no, JavaScript is not a functional language."

kornelgora napisał(a):

Mam 3 kandytatów do wybrania i wśród nich tylko rozpatruje. Elixir,Rust jak i Go. Który z tych trzech warto się uczyć ? Który z tych trzech ma najlepszą przed sobą przyszłość??

Jeli nie masz doświadczenia to wybrałbym coś bardziej standardowego, później dobrał jakiś egzotyczny język.
Z podanych powyżej powiedziałbym, że Go, ponieważ ma wsparcie Google.

0
Umbalumba napisał(a):

Gdyby tylko F# był powszechnie wykorzystywany to bym się nie wahał ani chwili, niestety znalezienie w nim pracy graniczy z cudem, a mimo że uczę się dla przyjemności, chciałbym również w wybranym języku pracować. Z tego co zauważyłem najczęściej wykorzystywanym językiem funkcyjnym jest Scala, jednak nie po to uciekłem z JVM, żeby teraz do niego wracać.
z niewiadomych powodow odrzucasz najpopularniejsze platformy a jednoczesnie chcesz zeby bylo duzo ofert pracy... fuck logic ;) jesli dobrze poznasz dowolny jezyk funkcyjny, bedziesz mial w nim pare powazniejszych rzeczy na koncie to znalezienie pracy naprawde nie jest wyzwaniem.

Umbalumba napisał(a):

w końcu JavaScript również jest językiem funkcyjnym, a o pracę nie trzeba się martwić.
no strasznie funkcyjny bo jedyne wsparcie dla funkcyjnosci to first class functions ;)

0

Pewnie od Pana Mirosława usłyszeli jaka Java niedobra jest.

3

Z tego co zauważyłem najczęściej wykorzystywanym językiem funkcyjnym jest Scala, jednak nie po to uciekłem z JVM, żeby teraz do niego wracać.

A jest jakiś rozsądny powód ucieczki?

Ludzie piszą, że Java to kobyła, ale zapominają, że:

  • Python, PHP, JavaScript itd są powolnymi językami, bo oficjalne implementacje to interpretery. Z tego powodu ich szybkość jest o rzędy wielkości niższa niż szybkość C, C++, Javy, etc
  • Java jest szybka - ma JIT i wydajnościowo wypada bardzo dobrze, zwykle jest mniej niż 2x wolniejsza od C/ C++. Z drugiej strony, czysty Python czy podobne interpretowane standardowymi interpreterami są dziesiątki albo setki razy wolniejsze od C/ C++/ Javy (polecam sprawdzić mój benchmark: https://github.com/tarsa/TarsaLZP ),
  • Java to nie jedyna platforma z VMką - oprócz Javy jest np .NET/ CLR czy Erlang VM,
  • Garbage Collector jest prawie wszędzie - łatwiej wypisać gdzie go nie ma w popularnych językach niż gdzie jest. Jest w każdym języku skryptowym (w tym JavaScript), w Javie, .NET/ CLR, Erlangu, Haskellu, itd
  • JavaScript ma być niby lekką platformą, ale dzisiaj typowa kolorowa strona w Chrome potrafi zjadać setki MiB RAMu,
  • aplikacje biznesowe są na tyle duże, że sam narzut startowy JVMa jest pomijalny,
  • analogicznie do powyższego - szybkość odpalenia HelloWorlda nijak się ma do szybkości odpalenia wielkiej kompletnej aplikacji,
  • nawet superhiperszybki C++ nie sprawia magicznie, że czasy oczekiwania się zerują - nawet w gierkach pisanych w C++ trzeba czekać na załadowanie poziomu, a to przecież tylko ładowanie zasobów z dysku. JVM przy startowaniu aplikacji oprócz ładowania sterty plików odpala jeszcze kompilację JIT,
  • w przypadku aplikacji biznesowych początkowy narzut na ładowanie aplikacji jest amortyzowany bo aplikacje chodzą bez restartu co najmniej wiele dni, a czasem nawet miesięcy,

w końcu JavaScript również jest językiem funkcyjnym, a o pracę nie trzeba się martwić.

Jeśli, jak zauważyli poprzednicy, jedyną własnością JS, która sprawia, że jest funkcyjny są 'first class functions' to Java 8 też jest językiem funkcyjnym. Ale to bardzo słaba definicja funkcyjności.

0

@Wibowit
Według mnie największa zaleta Javy to jej ekosystem. JVM gdzie mogą latać inne języki itp.
A także miliard narzędzi do wszystkiego, do testów, do continious integration, do wirtualizacji, cokolwiek by ktoś nie wymyślił.
No i chyba każda nowość trafia bardzo szybko do Javy. Gdzie jedni się jarają co tam mają dostępne w technologii X, czasem w Javie mielismy już dawno.

Trzeba też zauważyć, że Java jest general purpose lang. Np. pewnie sporo psuje taki Oracle.
A taki Go czy Rust takim językiem nie jest. Mają swoje zastosowanie i tam mają przewagę.

Oczywiście wady są, jak we wszystkim.
A jak ktoś bardzo nie lubi Javy to niech chociaż wybierze c#...

0

Trzeba też zauważyć, że Java jest general purpose lang. Np. pewnie sporo psuje taki Oracle.
A taki Go czy Rust takim językiem nie jest. Mają swoje zastosowanie i tam mają przewagę.

Wydaje mi się, że nie ma jakiegoś podziału na nisze względem języka. Dużo zależy od zastosowanych bibliotek - te mogą sprawić, że dany język "nagle nadaje się do innych zastosowań". Ja bym wymienił trzy kategorie platform/ języków:

  • niezarządzane, a więc praktycznie zawsze kompilowane - tutaj mamy bezpośredni dostęp do pamięci, ręcznie ją sobie alokujemy i sprzątamy. To jest niezbędne albo pożądane w szeregu zastosowań. Niezbędne jest np przy programowaniu jądra systemu operacyjnego. Pożądane jest przy tworzeniu silnika gier, gdyż alokując ręcznie pozbywamy się mocno nieprzewidywalnych przestojów na odśmiecanie pamięci.
  • zarządzane skryptowe - te są nastawione na szybki start interpretera i jego niski narzut startowy. Źle się skalują, więc im większa aplikacja tym bardziej są upierdliwe ich wady typu duży narzut pamięciowy na konstrukcje językowe czy bardzo niska prędkość wykonania.
  • zarządzane kompilowane, gdzie zwykle jest VMka, a kompilacja jest zwykle w locie - te są nastawione na wysoką wydajność po okresie rozgrzania VMki, ale mają względnie duży narzut startowy. Możliwe jest jednak przycięcie VMki do śmiesznych rozmiarów i np taka Java ma wersję, która chodzi na starych komórkach (Java ME mieści się w kilkudziesięciu kilobajtach RAMu ZTCP) czy nawet na czipach z kart płatniczych (Java Card),

Rust wygląda jak język wysokiego poziomu, ale zalicza się do kategorii języków niezarządzanych kompilowanych, więc spokojnie nadaje się na pisanie jądra systemu operacyjnego. Przykład: http://www.redox-os.org/

0

Na plus rusta przemawia z powyższych języków dla mnie jego wydajność porównywalna do c/c++ i coraz bardziej myśle aby iść w niego z drugiej strony elixir to również bardzo ciekawy język programowania.Który najlepiej się nada aby pisac aplikacje na mac osx , linuxa i windowsa??Rust czy Elixir??

0

ale jakie aplikacje? dektopowe?

0

Gdzie jedni się jarają co tam mają dostępne w technologii X, czasem w Javie mielismy już dawno. w większości przypadków, jeśli chodzi np. o feature'y języka to jest dokładnie na odwrót. :d -
@n0name_l

Featury samego języka nie są tak ważne jak to co daje ekosystem, który jest dosć otwarty, więc i niezależny.
Tak, wiemy, że w c# pewne rzeczy były dość dawno dostępne, czego nie było w javie.
Ale nie powiedziałbym, że jest to jakiś deal breaker.

0

Dokładnie desktopowe. Od zawsze mnie fascynowały takie rzeczy. Jakoś do webu nie jestem przekonany a pisanie na platformy mobilne również mnie nie pociąga.

0
kornelgora napisał(a):

Dokładnie desktopowe. Od zawsze mnie fascynowały takie rzeczy. Jakoś do webu nie jestem przekonany a pisanie na platformy mobilne również mnie nie pociąga.

Bo pewnie weba wyobrażasz sobie jako pisanie prostych stronek w html/css abobo na wordpressie?

Musisz wiedzieć, że Desktop jest w odwrocie. I wszystko co się da robi się webowo. Aplikacje mobilne to akurat trochę taki desktop.

Z Rustem i Golangiem chyba nie powalczysz w tej dziedzinie.
Nie wiem co ma największą przenośność. C++ i Qt?

Stawiałbym na objective c/swift (Mac) i c# (Windows).

Nie dziwie się, że java Ci się nie podoba, bo Java i Desktop średnio w parze idą.

0
kornelgora napisał(a):

Dokładnie desktopowe. Od zawsze mnie fascynowały takie rzeczy. Jakoś do webu nie jestem przekonany a pisanie na platformy mobilne również mnie nie pociąga.

Mnie też dawno temu, ale tam jest bardzo mało roboty. Aplikacje desktopowe istnieją, ale to raczej starocie, które mają być docelowo przeniesione w weba. W Sabre pracowałem w Javie nad aplikacją desktopową, która była napisana w Swingu. Były plany by ją przenieść w weba, ale ostatecznie przeniesiono ją na NetBeans Platform (Eclipse Platform odpadło, bo używa SWT). Być może po moim odejściu plany przeniesienia na weba wróciły.

Z aplikacjami biznesowymi jest tak, że UI nie jest tam jakoś mocno podniecający. UI ma głównie pokazywać tabelki i formularze. Po krótkim czasie traci to jakąkolwiek atrakcyjność. To już webówka byłaby bardziej atrakcyjna, bo strony webowe są znacznie bardziej zbajerowane niż desktopowe programy. Mimo wszystko JavaScript odstrasza. Ja pokładam nadzieję w projektach takich jak https://www.scala-js.org/ - jeśli to się rozwinie i zbuduje się ekosystem wokół tego to będzie można tworzyć aplikacje przeglądarkowe bez wyrywania sobie włosów. Projekt wygląda coraz lepiej i już pojawia się szereg bibliotek wokół niego.

Mięcho aplikacji biznesowej to backend i tam jest najwięcej roboty. Warto więc wybrać taką technologię, gdzie robienie backendu jest fajne. Moim zdaniem jest to właśnie Scala. Język jest wypasiony, biblioteki Scalowe również (np Akka - klasa sama w sobie). Sama Scala doskonale współpracuje z Javowymi bibliotekami i serwerami, czyli ogólnie platformą Java, a łatwiej jest przekonać biznes do wykorzystania Scali niż do platformy dużo mniej rozbudowanej niż Java. Silne powiązanie Scali z Javą sprawia, że doświadczenie z Javą zaprocentuje przy przejściu na Scalę, a więc Scala jest językiem atrakcyjnym dla Javowców i dlatego można się spodziewać systematycznego wzrostu popularności Scali.

0

do klepania mikroserisów w Scali według mnie bardzo dobra jest akka-http.

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