Autor niniejszego artykułu przedstawia 7 nowoczesnych języków programowania – Rust, Go, Kotlin, TypeScript, Swift, Dart, Julia – które nabierają „rozpędu” w świecie developerów, a dodatkowo mogą uatrakcyjnić Twoje CV i rozwinąć umiejętności programowania.

Jeśli porównamy współczesną cywilizację do samochodu, wówczas można powiedzieć że branża tworzenia oprogramowania jest jak silnik samochodu, a języki programowania jak jego paliwo. Jakiego języka programowania powinniśmy się uczyć, by silnik działał najlepiej?

Nauka nowego języka programowania z jednej strony jest dużą inwestycją w czas i energię, ale z drugiej może poprawić umiejętności i pomóc rozwinąć karierę.
Warto zawsze wybierać język programowania, który nada Twojej karierze większego tempa. Warto też uczyć się tych języków, których popularność rośnie. Żywię ogromny szacunek do tych języków, które są obecnie najbardziej popularne, jednak tutaj przedstawię listę tych może nie najlepiej znanych, za to nowych i ciekawych języków, które mogą poprawić produktywność, przyspieszyć karierę i uczynić cię lepszym programistą/tką. Omówię przy tym również aspekty wielu różnych dziedzin: programowania systemowego, tworzenia aplikacji, tworzenia stron internetowych czy informatykę naukową.

Termin „nowoczesny język programowania” jest niejednoznaczny. Wielu uważa takie języki, jak Python, JavaScript za nowoczesne języki programowania. Jednocześnie uważają Javę za stary język programowania. W rzeczywistości wszystkie pojawiły się mniej więcej w tym samym czasie, czyli około roku 1995.

Większość głównych języków programowania została opracowana w ostatnim stuleciu, głównie w latach 70. (np. C), 80. (np. C ++), 90. (np. Java, Python, JavaScript). Języki te nie zostały zaprojektowane z myślą o wykorzystaniu współczesnych ekosystemów programistycznych: procesora wielordzeniowego, procesora graficznego, szybkiej sieci, urządzeń mobilnych, kontenera czy chmury. Mimo, że wiele z nich oferuje cechy modernizacyjne, takie jak współbieżność (concurrency) i że dostosowało swoje cechy do współczesnych wymagań, nie da się uniknąć pewnych trudności w przystosowaniu do obecnej techniki.

Według badania ankietowego StackOverflow wiele języków, które są obecnie popularne, zajmuje jednak wysokie pozycje w kategorii języków „najbardziej przerażających”:

Źródło: Stackoverflow

Zaznaczyłbym wyraźną granicę między „starymi” i „nowymi” językami programowania, mianowicie datę 29 czerwca 2007 r., kiedy to ukazał się pierwszy iPhone. Po tej dacie świat IT zmienił się na zawsze. W niniejszym artykule opiszę wybrane języki programowania powstałe po 2007 roku.

Dlaczego uczyć się nowszych języków programowania? Po pierwsze, nowoczesne języki opracowano, aby w pełni wykorzystać zalety nowoczesnego sprzętu komputerowego (procesor wielordzeniowy, GPU, TPU), urządzeń mobilnych, dużego zestawu danych, szybkiej sieci i chmury. Ponadto większość współczesnych języków programowania oferuje znacznie wyższą ergonomię programistyczną, jak podano poniżej:

  • Zwięzły kod
  • Wbudowane mechanizmy obsługi współbieżności
  • Bezpieczeństwo wskaźnika zerowego (Null Pointer)
  • Interferencja typów
  • Znacznie prostszy zestaw funkcji
  • Niższe obciążenie poznawcze
  • Łączenie najlepszych cech wszystkich paradygmatów programowania

Po drugie, wiele języków programowania z tej listy na zawsze zmieni branżę. Niektóre z nich są już dziś mainstreamowe, podczas gdy inne mają potencjał by już niedługo zaznaczyć się jako „przełomowe”. Mądrym wyjściem wydaje się nauczenie się chociaż jednego z nowych języków, przynajmniej w formie znajomości jako drugiego języka obok pierwszego, wiodącego.

Rust

Źródło: Thoughtram

Świat języków programowania systemowego jest zdominowany przez języki Near Metal, takie jak C, C ++. Chociaż dają pełną kontrolę nad programami i sprzętem, brakuje im bezpieczeństwa w obszarze pamięci. Nawet jeśli obsługują współbieżność, pisanie programów współbieżnych przy użyciu C / C ++ jest trudne, ponieważ nie zapewniają bezpieczeństwa współbieżności. Inne popularne języki programowania to języki interpretowane, takie jak Java, Python, Haskell. Zapewniają bezpieczeństwo, ale potrzebują obszernego środowiska wykonawczego lub maszyny wirtualnej. Z powodu długiego czasu wykonania języki takie jak Java nie nadają się do programowania systemowego.

Było już wiele prób połączenia mocy C / C ++ i bezpieczeństwa Haskell, Javy. Wygląda na to, że Rust jest pierwszym językiem programowania klasy produkcyjnej, któremu się to udało.

Graydon Hoare po raz pierwszy opracował Rust jako projekt poboczny. Został zainspirowany naukowym językiem programowania Cyclone. Rust jest oprogramowaniem typu Open Source, a Mozilla jest liderem jego rozwoju wraz z wieloma innymi firmami i społecznościami. Rust został wydany po raz pierwszy w 2015 roku i wkrótce przyciągnął uwagę społeczności.

 

Najważniejsze cechy:

  • Oferuje bezpieczeństwo pamięci i bezpieczeństwo współbieżności w koncepcji Ownership i Borrowing.
  • Gwarantuje bezpieczeństwo pamięci i współbieżności w czasie kompilacji, tj. jeśli kod programu się kompiluje, to jest zarówno bezpieczny w pamięci, jak i wolny od ryzyka hazardu. Jest to najbardziej atrakcyjna funkcja Rust.
  • Oferuje również wyrazistość ML, Haskell. Dzięki niezmiennym strukturom danych i funkcjom programowania, Rust dostarcza funkcjonalną współbieżność i współbieżność danych.
  • Rust jest błyskawiczny. Idiomatic Rust daje lepszą wydajność niż Idiomatic C ++ zgodnie z Benchmark Game.
  • Rust oferuje pełną kontrolę nad nowoczesnym sprzętem (TPU, GPU, procesor wielordzeniowy).
  • Rust ma obsługę LLVM. W rezultacie Rust oferuje pierwszorzędną interoperacyjność z WebAssembly i umożliwia błyskawicznie szybki kod Web.

Popularność:

Od czasu debiutu w 2015 r. Rust jest dobrze akceptowany przez programistów i uznawany za najpopularniejszy język przez cztery kolejne lata (2016, 2017, 2018, 2019) w ankiecie programistów StackOverflow:

Źródło: Stackoverflow


Według GitHub Octoverse, Rust jest drugim najszybciej rozwijającym się językiem zaraz po Dart:

Źródło: Octoverse

Ponadto, platforma PyPl umieściła Rust na 18 pozycji z tendencją wzrostową:

Źródło: PyPl

Porównując taki zestaw funkcji, jakie ten język oferuje, nic dziwię się, że gigantyczne firmy technologiczne, takie jak Microsoft, Amazon, Google, w końcu ogłosiły swoje inwestycje w Rust.

Źródło: Google Trends

Główne obszary wykorzystania:

  • Programowanie systemowe
  • Przetwarzanie bezserwerowe
  • Oprogramowanie biznesowe

Konkurencyjne języki:

  • C
  • C ++
  • Go
  • Swift

Go

Źródło: Wikimedia

Google jest jedną z największych firm z zakresu Web Scale. Na początku tego wieku Google napotkał dwa problemy ze skalowaniem: skalowanie rozwoju i skalowanie aplikacji. Skalowanie rozwoju oznacza, że ​​nie dało się dodać więcej funkcji, angażując więcej programistów. Skalowanie aplikacji oznacza, że ​​nie dało się łatwo stworzyć aplikacji, którą można skalować do klastra maszynowego w skali „Google”. Około 2007 roku Google zaczął tworzyć nowy „pragmatyczny” język programowania, który mógł rozwiązać te dwa problemy ze skalowaniem. Zaangażowali dwóch najbardziej utalentowanych inżynierów oprogramowania na świecie Roba Pike’a (UTF-8) i Kena Thompson’a (UNIX OS, którzy stworzyli nowy język.

W 2012 r. Google wydało pierwszą oficjalną wersję języka programowania Go. Go jest językiem programowania systemowego, ale różni się od Rust. Ma tak samo środowisko wykonawcze i opcję odśmiecania pamięci (kilka megabajtów), ale w przeciwieństwie do Java lub Pythona, jego środowisko wykonawcze jest upakowane wygenerowanym kodem. Go generuje pojedynczy natywny kod binarny, który można uruchomić na komputerze bez dodatkowej zależności ani pomocy środowiska wykonawczego.

Najważniejsze cechy:

  • Go ma najwyższej klasy obsługę współbieżności. Nie oferuje współbieżności „pamięci współdzielonej” poprzez Thread and Lock, ponieważ jej programowanie jest znacznie trudniejsze. Zamiast tego oferuje współbieżność przekazywania wiadomości w oparciu o CSP. Go używa opcji „Goroutine” i „Channel” do przekazywania wiadomości.
  • Najbardziej zabójczą cechą Go jest jego prostota. Jest to najprostszy język programowania systemowego. Młody programista może napisać produktywny kod w ciągu kilku dni, tak jak w Pythonie. Niektóre z największych projektów Cloud Native (Kubernetes, Docker) są napisane w Go.
  • Go ma również wbudowany system oczyszczania pamięci Garbage Collector, co oznacza, że ​​programiści nie muszą się martwić o zarządzanie pamięcią, takie jak w C / C ++.
  • Google dużo zainwestował w Go, czego rezultatem jest szeroka oferta narzędzi Go, przydatnym szczególnie dla jego nowych użytkowników.
  • Zwykle programiści spędzają 20% czasu na pisaniu nowego kodu i 80% na utrzymywaniu istniejącego kodu. Ze względu na swoją prostotę Go przoduje w dziedzinie konserwacji kodu. Obecnie Go jest szeroko stosowane w aplikacjach biznesowych.

Popularność:

Od pierwszego momentu pojawienia się Go, został on zaakceptowany przez społeczność programistów. W 2009 r. (zaraz po swoim debiucie) i 2018 r. Go wszedł do listy Programming Language Hall of Fame według indeksu TIOBE. Nic dziwnego, że sukces Go utorował drogę nowej generacji języków programowania, takich jak Rust.

Go już jest w gronie języków mainstreamowych. Niedawno zespół Go ogłosił prace nad „Go 2”, aby go jeszcze bardziej usprawnić.

Na prawie wszystkich stronach tworzących rankingi popularności języków programowania Go plasuje się wysoko i prześcignął wiele istniejących języków. Oto ocena indeksu TIOBE z grudnia 2019 r., Gdzie Go zajmuje 15 miejsce:

Źródło: TIOBE

Według badania Stackoverflow Go jest jednym z 10 najbardziej lubianych języków programowania:

Źródło: Stackoverflow

Według GitHub Octoverse Go jest także jednym z 10 najszybciej rozwijających się języków:

Source: Octoverse


Trendy Google pokazują również trend rosnący dla tego zainteresowania tym językiem w ciągu ostatnich pięciu lat:

Źródło: Google Trends

Główne obszary wykorzystania:

  • Programowanie systemowe
  • Przetwarzanie bezserwerowe 
  • Oprogramowanie biznesowe
  • Natywne przetwarzanie w chmurze

Konkurencyjne języki:

  • C
  • C ++
  • Rust
  • Python
  • Java

Źródło: https://towardsdatascience.com/top-7-modern-programming-language-to-learn-now-156863bd1eec

Md Kamaruzzaman, posiada licencjat z inżynierii elektronicznej z Bangladesh University of Engineering and Technology oraz stopień magistra na kierunku Komunikacja w Technical University of Munich. Ma ponad 15 lat doświadczenia w ramach inżynierii i architektury oprogramowania w branżach takich jak telekomunikacja, nauki przyrodnicze, cyfrowy marketing i bankowość. Obecnie interesuje się obszarem Cloud Computing i architekturą Microservice. Obecnie mieszka z rodziną we Frankfurcie w Niemczech.