Języki programowania - co aktualnie polecacie ze stabilnych rozwiązań?

0

Cześć.
Od jakiegoś czasu programuję w Pythonie. Są to głównie nieskomplikowane skrypty automatyzujące.
Czuję że podoba mi się programowanie i chciałbym iść w tym kierunku dalej.
Problem w tym, że siedząc w Pythonie czuję, że jestem** poza "głównym nurtem programowania"**. Dużych systemów nie robi się w Pythonie, ten język jest raczej używany do oskryptowania czegoś, jako taki dodatek, ewentualnie jakaś prosta stronka w Django lub pisanie testów do "prawdziwego" kodu. Chciałbym jednak rozwinąć się i teraz jest czas, w którym muszę zdecydować, w jaką technologię zainwestować.

Moje przemyślenia odnośnie różnych języków:

  • Myślałem o Javie, ale jak widzę applety Javy (któych nadal się niestety używa), to mam dosyć po pierwszym kliknięciu. Pewnie czasy się zmieniły, ale nie wiem, jak teraz wyglądają nowe aplikacje w Javie.
  • Myślałem o C#, ale nie jestem dużym fanem M$. Bardziej kibicuję otwartym rozwiązaniom.
  • Widzę, że fajne rzeczy można teraz zrobić w JS i frameworkach około-JS'owych, ale kiedyś bawiłem się we Frontend i miałem dość, ciągle dostosowując CSSa do różnych przeglądarek/rozdzielczości.
  • Nowinki takie jak Rust, Go, itp. raczej odpadają. Zależy mi na stabilnym rozwoju, tzn. priorytetem jest łatwość w znalezieniu pracy w przeciągu kilku lat (wiem, oczywiście, że wszystko się może dynamicznie zmienić, jednak wydaje mi się, że np. zapotrzebowanie na Java dev nagle nie zniknie za 3 lata).

Jeśli chodzi o moje preferencje - chciałbym robić coś, na co będę miał realny wpływ i będę widział efekty działania. Wcześniej zajmowałem się elektroniką, więc podoba mi się, gdy ze strony kody mogę coś zmienić po stronie hardware'u.

  • **IoT **brzmi bardzo fajnie.
  • Procesem przenoszenia wszystkiego do Clouda też mógłbym się zainteresować.
  • Automotive też mi się podoba, a jeśliby połączyć to z security (co mnie bardzo interesuje), np. developowanie systemu bezpieczeństwa w autach, to już w ogóle byłoby fajnie. Tylko że w automotive znowu płaca nie jest najwyższa, a i zapotrzebowanie na ludzi mniejsze.

Ostatnio rozmawiałem ze znajomym, u którego w pracy robi się IoT. Ma zatrudnionych programistów, który już piszą kod pod IoT w chmurze, chociaż konkretny hardware nie jest jeszcze znany. Bardzo mnie to zainteresowało i zauważyłem, jak bardzo do tyłu jestem. Jakie języki i frameworki wykorzystuje się do takich rozwiązań?

To jest moje zapatrzenie na ten temat, zapewnie bardzo ograniczone, dlatego chciałbym zasięgnąć waszych opinii.
Ciekawy jestem, co moglibyście mi polecić.
Czujecie, że język, w którym programujecie, będzie parł jeszcze bardziej na pozycję lidera w kolejnych latach?
Gdybyście mieli w obecnej chwili możliwość zmiany, to w stronę którego języka/technologii poszlibyście, jako priorytet wybierając stabilność zatrudnienia w przyszłych latach?
Bardzo proszę o kulturalne odpowiedzi. Nie chciałbym wywołać burzy "tylko Java/C#/...".
Dzięki :)

3
jareq000 napisał(a):
  • Myślałem o C#, ale nie jestem dużym fanem M$. Bardziej kibicuję otwartym rozwiązaniom.

.NET od dawna jest open-source.

Jeśli chodzi o moje preferencje - chciałbym robić coś, na co będę miał realny wpływ i będę widział efekty działania. Wcześniej zajmowałem się elektroniką, więc podoba mi się, gdy ze strony kody mogę coś zmienić po stronie hardware'u.

  • **IoT **brzmi bardzo fajnie.

Skoro nie ograniczasz się do web developerki, to pytanie o język jest budowaniem domu od komina. Najpierw trzeba by ustalić, jaka domena cię interesuje. Przecież to jest kwestia wyjściowa, a wybór języka - dopiero pochodna.

1

Wcześniej zajmowałem się elektroniką, więc podoba mi się, gdy ze strony kody mogę coś zmienić po stronie hardware'u. IoT brzmi bardzo fajnie.
Ostatnio rozmawiałem ze znajomym, u którego w pracy robi się IoT. Ma zatrudnionych programistów, który już piszą kod pod IoT w chmurze, chociaż konkretny hardware nie jest jeszcze znany. Bardzo mnie to zainteresowało i zauważyłem, jak bardzo do tyłu jestem. Jakie języki i frameworki wykorzystuje się do takich rozwiązań?

IoT to na tyle szerokie pojęcie, że wykorzystuje się prawie wszystko - ja na przykład używam w jednym projekcie C++ (po stronie urządzenia) i C# (po stronie urządzenia i chmury), a w innym C# (po stronie urządzenia) i Pythona (po stronie chmury).

Masz takie rozwiązania jak Arduino albo inny mbed, które właśnie potrafią działać na różnych platformach sprzętowych. Ale IoT to również mikrokomputery w stylu Raspberry Pi, gdzie bez problemu uruchomisz Javę, C#, Pythona czy też inny JavaScript (który tutaj też zaczyna się pojawiać). Co do "chmury", to masz różnego rodzaju mikroserwisy, pisane czy to w Go, czy w Javie, czy czymkolwiek innym, ale i masz też jakieś Azure Functions czy AWS Lambda (rozwiązania "serverless"), gdzie kod można pisać w wielu językach. Nie wspominając o tym, że chmura to również wręcz IaaS, gdzie w zasadzie da się uruchomić wszystko.

Czujecie, że język, w którym programujecie, będzie parł jeszcze bardziej na pozycję lidera w kolejnych latach?
Gdybyście mieli w obecnej chwili możliwość zmiany, to w stronę którego języka/technologii poszlibyście, jako priorytet wybierając stabilność zatrudnienia w przyszłych latach?

Stabilność zapewni ci na pewno Java. Będzie dużo pracy w niej w przyszłości, bo obecnie jest w niej dużo oprogramowania, które trzeba będzie rozwijać/naprawiać/przepisywać :)

3

Problem w tym, że siedząc w Pythonie czuję, że jestem poza "głównym nurtem programowania". Dużych systemów nie robi się w Pythonie, ten język jest raczej używany do oskryptowania czegoś, jako taki dodatek, ewentualnie jakaś prosta stronka w Django lub pisanie testów do "prawdziwego" kodu. Chciałbym jednak rozwinąć się i teraz jest czas, w którym muszę zdecydować, w jaką technologię zainwestować.

Twój problem to nie język, lecz brak ciekawych projektów na horyzoncie. Zmień firmę na ciekawszą, a zobaczysz, że i w Pythonie da się robić ciekawe rzeczy.

Gdybyście mieli w obecnej chwili możliwość zmiany, to w stronę którego języka/technologii poszlibyście, jako priorytet wybierając stabilność zatrudnienia w przyszłych latach?

Pod pracę to nie ma sensu żadnego języka się uczyć, chyba że pasuje Ci rola wyrobnika i trzaskanie nudnych zadań. Lepiej jest robić coś co Cię ciekawi. Jeśli będziesz w tym co robisz skuteczny to przetrwasz lata.

2
  1. Java to nie tylko aplety, to przecież zamierzchła przeszłość, nie wiem gdzie ty je jeszcze wygrzebujesz. Z kolei przeciw temu językowi przemawia to, że jest pełen kiepskich rozwiązań i mamy lepsze języki, jak choćby scala - moim zdaniem najlepszy obecnie wysokopoziomowy język ogólnego przeznaczenia (oczywiście trzeba wziąć na poprawkę że nie znam wszystkich). Jest to również język który ma stosunkowo duże wzięcie w projektach komercyjnych.
  2. Jak wspomniano wyżej .NET i C# są otwarte od paru lat, choć wątpliwości może budzić to że Visual Studio już nie, a tu jak sądzę wiele się nie zmieniło - programowanie na tej platformie bez VS to mało wygodne. Jednak na tam z dala się od tego trzymam, więc nie wiem.
  3. Frontend dużo się zmienił ostatnio. Zgodność ze standardem w przeglądarkach jest co raz lepsza, a poza tym jest wiele frameworków i one przeważnie celują w przenośność. Na dodatek co raz więcej języków kompiluje się do JS. No ale jeśli celujesz w wysoką specjalizację, Frontend rraczej jest mało ciekawy, za to przydaje się uzupełniająco, zwłaszcza w IoT/embedded często wystawiamy interfejs webowy.
  4. Dla IoT chyba przyda się C. Podobno używa się nawet Javy czy Pythona, do wyższych warstw abstrakcji. Choć jak można użyć Javy, to ja już bym wolał scalę, ale nie wiem jak popularne jest takie połączenie.
  5. Zastanowiłbym się nad podejściem - nie będę się uczył bo nie będzie zatrudnienia. Język programowania to szczegół techniczny jeśli umiesz programować. Poza tym dzięki takiemu podejściu utrwala się pozycja słabszych rozwiązań. Na początek pewnie warto nauczyć się tego na co jest popyt - jeśli czas goni. Jeśli jesteś jeszcze w liceum, nie przejmowanym się tym zbytnio. Pod względem zatrudnienia chyba jeszcze dłuższy czas przeważać będzie Java...
    Ja ostatnio przeszedłem bezposrednio z Javy na firmware developera. Można? Można. :) Oczywiście zawsze interesowały mnie niskopoziomowe rozwiązania, ale wciąż..
4

Jak wspomniano wyżej .NET i C# są otwarte od paru lat, choć wątpliwości może budzić to że Visual Studio już nie, a tu jak sądzę wiele się nie zmieniło - programowanie na tej platformie bez VS to mało wygodne. Jednak na tam z dala się od tego trzymam, więc nie wiem.

Nigdy do końca nie rozumiałem tego argumentu. Może ludzie mylą open source z darmowym? Owszem, VS nie jest open source, ale po pierwsze ma darmową wersję (również do komercyjnego użytku) a po drugie są dziś inne alternatywy. VS Core które niektórzy preferują od VS (chociaż do pisania aplikacji C# ja nadal preferuję VS, VS Code używam do pisania frontu) oraz młodą alternatywę od Jetbrains czyli Rider IDE.

Sam ekosystem .Net Core jest naprawdę świetny, jeden z najlepszych do aplikacji webowych (back end) moim zdaniem. Nie twierdzę że najlepszy, bo coś takiego jak najlepszy język/technologia moim zdaniem nie istnieje.

1
Aventus napisał(a):

Nigdy do końca nie rozumiałem tego argumentu. Może ludzie mylą open source z darmowym? Owszem, VS nie jest open source, ale po pierwsze ma darmową wersję (również do komercyjnego użytku) a po drugie są dziś inne alternatywy. VS Core które niektórzy preferują od VS (chociaż do pisania aplikacji C# ja nadal preferuję VS, VS Code używam do pisania frontu) oraz młodą alternatywę od Jetbrains czyli Rider IDE.

Wiem że jest darmowy VS dla studentów i open source, ale jednak wciąż tylko dla Windows. Nie wiem jak z tymi pozostałymi. Możliwe że i to się zmieni, w końcu MS musi odpowiadać na potrzeby rynku. Jednak jak ktoś dłużej siedzi w wolnym oprogramowaniu, raczej nie przejmuje się tym, bo na dosyć rozwiązań które już zna. :)

1

@elwis Nie jest darmowy tylko dla studentów, tak samo jak i nie jest open source. Darmowa wersja VS to Visual Studio Community i jest dla każdego. Jest również wersja na Mac'a.

2

Aplety w Javie to rzeczywiscie duzy problem, zwlaszcza jesli pracujesz przy projektach powstalych 20 lat temu.
Wtedy powstawaly tez nowoczesne aplikacje w COBOLu i krolowalo Delphi.

1

Myślałem o Javie, ale jak widzę applety Javy (któych nadal się niestety używa), to mam dosyć po pierwszym kliknięciu. Pewnie czasy się zmieniły, ale nie wiem, jak teraz wyglądają nowe aplikacje w Javie.
(...)
Zależy mi na stabilnym rozwoju, tzn. priorytetem jest łatwość w znalezieniu pracy w przeciągu kilku lat (wiem, oczywiście, że wszystko się może dynamicznie zmienić, jednak wydaje mi się, że np. zapotrzebowanie na Java dev nagle nie zniknie za 3 lata).

Jasne. Z jednej strony wygrzebujesz aplety, które de facto zdechły z 10 lat temu i nigdy nie były popularne (Adobe Flash był co najmniej kilkadziesiąt razy popularniejszy na stronach internetowych), a z drugiej nie jesteś pewien czy Java nie zniknie za 3 lata. Java się systematycznie rozwija. Oracle przepisuje Javę do Javy (bo teraźniejszy lekko przestarzały JIT jest napisany w C++) w GraalVMie i możesz już w nim np za darmo kompilować kod Javowy do kodu natywnego i aplikacje startują dużo szybciej (chociaż szczytowa wydajność na razie kuleje przy kompilacji AOT): https://www.graalvm.org/docs/reference-manual/aot-compilation/ Śmierć Javy wieszczyło już tysiące jeśli nie miliony osób, było równie dużo artykułów o tym, a Java jest nadal bardzo silna. Wyprzedzać ją pod względem popularności wśród programistów może jedynie Python, ale ten zdobył szeroką popularność wśród nie-programistów, czyli np analityków danych czy innych ludzi, dla których programowanie jest dodatkiem.

Czy Java się nadaje do IoT i Automotive to nie wiem, ale na 100% nadaje się do wszelkiego rodzaju chmur.

0

@elwis

Do .Net Core najlepszy jest NVim

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