A programozás jövője

8 (és fél) programnyelv a jövőből

2017. október 08. - Indie Crawford
a jovo programnyelvei

Csak a jövő maradt: programozási nyelvekről szóló sorozatom lassan kiteljesedik... Az ezoterikus programnyelvekről két posztra is futotta, írtam továbbá azokról, melyeket tanuláshoz ajánlhatok jó szívvel kezdők számára. Most néhány olyan nyelvet szedtem csokorba, melyekben a programozás jövőjét, de nem egy esetben a jelenét illetően is komoly potenciált látok, illetve amelyekről úgy gondolom, érdemes ismerkedni velük. 8 programnyelvet számláló jelenlegi listám koránt sem teljes, és merőben szubjektív is, de talán mégis nyújt némi rálátást a jelent és a közeljövőt illető trendekre.

Go

Rendszerprogramozás Konkurens Google
Go, a Google programnyelve

A Google által 2009-ben kidobott nyelv némi, a programnyelvek népszerűségi listáján való hullámvasutazás után az utóbbi években végül megkapaszkodni látszik az első húsz között. Ez nem is meglepő, hiszen olyan rendszerszintű feladatokhoz fejlesztették ki, melyek megoldására hagyományosan a C-hez vagy a C++-hoz nyúltunk előtte. Ez egy széles és jelentős alkalmazási terület, melyre a C++-nál egyszerűbb, kompaktabb és sok szempontból modernebb nyelvként jött a Go a képbe. A Go gyors, a Go konkurens, a Go biztonságos, a Go kényelmes, mondják a rajongók. Szerverek, felhő-infrastruktúrák, rendszer-alkalmazások írására jó választás lehet.


R

Statisztika Tudomány Adatelemzés
R statisztikai programnyelv

Egy olyan, 24 éves, tehát „nem mai csirke” nyelvről beszélünk, mely az utóbbi években nagy erőkkel kapaszkodott fölfele a programozók HOT 20-ének számító népszerűségi listán, azaz a TIOBE-indexen. Ma már az előkelő 11. helyet foglalja el, de minden jel arra mutat, hogy csillaga még mindig emelkedőben van. Alkalmazási területe az akadémiai szféra, első sorban statisztikai elemzésekhez szolgáltat tűzerőt. Mára egyedüli jelentősebb versenytársa e területen a szélesebb alkalmazással bíró Python maradt. A specializáltabb, fókuszáltabb R talán a legkézenfekvőbb választás, ha adatelemzésről, kutatásról, tudományos munka támogatásáról van szó.

Star Trek: Mr. Data, Piccard és La Forge

Elixir (Erlang)

Elosztott Konkurens Szolgáltatás
Elixir programozás

Ez a nyelv mindjárt kettő is. Az Elixir ugyanis az Erlang nevű, sokat látott funkcionális nyelvre, illetve az Erlangban írt programokat futtató környezetre épül. Az Erlangot eredetileg az Ericssonnál fejlesztették ki nem kevesebb, mint 31 évvel ezelőtt. Nem meglepő módon telekommunikációs rendszerek megvalósítása lebegett az alkotók szeme előtt, ennek eredményeként pedig egy elosztott, konkurens, hibatűrő, megbízható rendszer jött létre, amely több százezer, vagy akár több millió egyidejű folyamat kiszolgálást teszi lehetővé, miközben nem csak, hogy magától képes fölállni rendszerhiba esetén, de még a kód frissítését is lehetővé teszi anélkül, hogy megszakítaná a folyamatban lévő kapcsolatokat. A világ telekommunikációjának jelentős része ma is Erlang alapokon zajlik, nyilvánvaló alkalmasságának, valamint a funkcionális paradigma nyújtotta előnyöknek köszönhetően pedig ma már a különböző internetes szolgáltatások világában is babérokra tör. Jelenkori sikere pedig nem utolsó sorban az Elixirnek köszönhető, amely Erlang alapokon kínál, egy modern, az webfejlesztők számára kedves Ruby-hoz hasonlatos nyelvi megvalósítást. Letisztultsággal, kiterjesztett funkcionalitással, kicsi, de növekvő közösségével, saját webes keretrendszerével és persze az Erlang/OTP nyújtotta magabiztossággal a motorháztető alatt (funkcionális programozás, egyszerű konkurencia modell, elosztottság, stb...) ideális választás mind a tanulás, mind a komolyabb igényű online rendszerek számára.

Programozós vicc, képregény
Erlang? Ezt mi úgysem érthetjük meg... | forrás: turnoff_us, twitter

Swift

iOS macOS Apple
Az Apple Swift programnyelve

A Swift nem esik túl messze a fájától (sic!), vagyis az Apple amúgy is meglehetősen zárt ökoszisztémájától. A nyelvet az ő termékeik programozására dobták piacra 2014-ben. Az előtte használatos Objective-C-vel szorosan együttműködve, de sok új koncepciót is megvalósítva került a fejlesztők karmai közé, és nincsen rá panasz, no nem mintha lenne más választása annak, aki iPhone-ra iOS-re, stb. fejleszt. Bevallom, nem tartozom az Apple termékeinek és üzletpolitikájának a legnagyobb rajongói közé, de meg kell hagyni, hogy mind e termékek, mind az üzletpolitika működnek, és amíg ez így van, a Swift kötelező tananyag annak, aki ezen eszközökre való fejlesztésre adja a fejét.

Apple / Borg: az ellenállás hasztalan
Az ellenállás hasztalan?

Scala

Funkcionális Java Platform-független
Scala: funkcionális Java

A Java robosztus ökoszisztémája, funkcionális alapokon. Ezt ígéri a Scala, illetve ez már nem is csak egy ígéret, a nyelv 2004 óta fejlődik és terjed. A funkcionális programozás reneszánszának és a Java platformfüggetlenségének illetve elterjedtségének köszönhetően a Scala telitalálatnak bizonyult. Az objektumok nehézkes rendszere után vélhetően felüdülést jelent a funkcionális hozzáállás célorientáltsága és stabilitása. Meglévő, Java alapú rendszerek újraírása, de újak létrehozása esetén is érdemes utánamennünk a Scalának, ki tudja, lehet, hogy hamarosan letaszítja a Javát kiterjedt birodalmának trónjáról.


Rust

Rendszerprogramozás Konkurens Mozilla
Rust progamozás
Rust vs Go: Logóban nálam a Rust vezet...

A Rust, a Go-hoz hasonlóan, a rendszerprogramozás, korábban a C nyelv által dominált terepére próbál betörni. A Mozilla támogatásával fejlesztett projekt 2010-ben vált a publikum által elérhetővé, és csak úgy, mint a Go, villámgyors gépi kódra fordul. Célkitűzései közt a biztonságos, megbízható rendszerek és a konkurens, tehát párhuzamos műveleteket végző programok támogatása szerepel. Hogy a Rust vagy a Go lesz-e majd az új C vagy C++, az még koránt sem lefutott meccs, már ha egyáltalán. Láttunk már ilyen ígéreteket többek közt, a D vagy F# nyelvek kapcsán is, mindenesetre a Mozilla (vagy a Google) támogatása elég komoly fegyvertényt jelent, és az igény is egyre nagyobb egy, a programozó dolgát / megbízhatóbb rendszerek fejlesztését segítő alternatíva megtalálására. Mindenképp érdemes tehát odafigyelni, hogy mi történik a Rust háza táján.


Elm

Web Kliens oldal Funkcionális
Elm programnyelv webfejlesztéshez

A listám végére hagyott két kakukktojás közül az Elm egy olyan domain-specifikus nyelv, amely kifejezetten webes interfészek létrehozására hozott létre Evan Czaplicki. Számunkra talán érdekes lehet, hogy a nyelv a Prezinél nyerte el mai formáját. Egy izgalmasan új, deklaratív, funkcionális nyelvről beszélünk, amely JavaScript / HTML / CSS kódra fordul, így a webes alkalmazások front-endjét egy olyan környezetben hozhatjuk létre, melyre pl. a klasszikus Haskell, vagy az OCaml nyelvek voltak hatással. Abszolút lehetséges, hogy a kliens-oldali webfejlesztés iránya kedvezni fog az Elmnek. Mi sem bizonyítja ezt jobban, mint azoknak a modern Javascript keretrendszereknek a népszerűsége, mint amilyen a Redux vagy a Vue.js, amelyeket pedig részben éppen az Elm féle megközelítés ihletett. Egyszóval lehet, hogy érdemes bemenni az utcájába, ha Webre dolgozunk...

Freddy Krueger az Elm-utcából

Scratch

Oktatás Tanulás Játék
Programozni tanulni Scratch-csel

Tegye fel a kezét, aki emlékszik még a Comenius Logo nevű remek kis tanuló-környezetre! Igen, arról a bizonyos kis teknősről beszélek... A programozási ismeretek elsajátításának és a programozás népszerűsítésének, gyerekekkel való megismertetésének ezt, a 90-es években Európa-szerte elterjedt eszközét a Pozsonyi Comenius Egyetemen hozták létre többek közt magyar informatikusok. Nos, a kis teknős hamar kiment a divatból, manapság az MIT-nál kifejlesztett, egyre népszerűbb Scratch-el próbálják meg elültetni a szoftverfejlesztés csíráit a fogékony nebulókban a mindenre elszánt infótanárok. Persze a Scratch nem csak gyerekek, de bárki más számára is könnyed, játékos bevezetőt kínálhat a kódolás misztériumába!

Teknős a Comenius Logo programozást tanító környezetből


Mint mindig, most is várom kommentben, hogy szerintetek mi maradt le a listáról, illetve mindenféle építő kritikát jó néven veszek! Ja, és ha nem akarod, hogy a Doki bedurvuljon, lájkold be a Facebook-oldalam... Köszi!

Voyageres Doki pofákat vág

A bejegyzés trackback címe:

http://indiecrawford.blog.hu/api/trackback/id/tr9712934991

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben.

A Vén HurkaTöltő 2017.10.10. 10:32:20

Jó cikk. Kotlin-t hiányolom.

.Petya. 2017.10.10. 13:31:42

Nagyon jók ezek a cikkek a prog. nyelvekről, én nem vagyok (ill. csak kezdő) programozó, úgyhogy kicsit kívülállóként gondolkodom. És az a kissé primitív kérdésem van, hogy mi a fenének ennyi nyelv? Persze érteni vélem, ahogyan ezek kialakulnak, de ez a perverz mennyiségű programozói nyelv nekem teljesen feleslegesnek, irreálisnak tűnik. Nyilván mindegyiknek kicsit mások az erősségei, mindegyik létjogosultságát meg lehet valahogy indokolni, de van egy olyan halvány benyomásom, hogy sok csak a kifejlesztőik egóját hizlalja.
Szóval egy ideális világban vajon kb. hány nagyon fejlett (évtizedek alatt fejlesztett), kifinomult nyelv lehetne elég (és hatékony) minden létező programozási feladatra? 5-6? nem hiszem h több kellene.
Lehet, hogy laikusként kicsit provokatív a kérdésem, de szívesen olvasnék erről véleményt.

Indie Crawford · http://indiecrawford.blog.hu 2017.10.10. 19:21:12

@.Petya.: Köszi a hozzászólást!

Igen, ez gyakori kérdés, szerintem rossz megközelítés azt gondolni, hogy a programnyelvekre, vagy általában a technológiákra való igény pusztán az alkalmazási területből következik. Sokszor ez az igény magából az alkalmazóból fakad, illetve e kettő összessége szüli meg az igényt akár több hasonló, de mégis eltérő megoldásra is, attól függően pl., hogy maguk az alkalmazók, a programozók igényei mennyire sokrétűk. Az absztrakció formáinak a halmaza meglehetősen nyitott. Az alkotók egoját sem tudná hizlalni a dolog, ha nem lennének emberek (tehát igény) az új nyelvek használatára.

És még egy nagyon fontos dolog tartozik ide véleményem szerint: a fejlődés, az evolúció. Új és új technológiák és nyelvek születésével rajzolódik ki a fejlődés iránya és mozdul előre az egész iparág, vagy akár az egész emberiség, és ez az előremozdulás aztán újabb kérdéseket, igényeket és válaszokat, technológiákat hoz létre. Ez tehát egy dinamikus, oda-vissza ható fejlődési folyamat, aminek következtében a technológiák és a tudás fa szerűen ágaznak szerte, akár csak a beszélt nyelvek esetén.

A programnyelvek nagy részének meg van vagy meg volt a maga helye és szerepe, mind a gyakorlati felhasználásban, mind pedig az elméleti fejlődés irányának az alakításában.

Az emberi kommunikációra elég lenne egy nyelv is, de nem jobb-e, hogy létezik angol humor, amerikai hip-hop, kínai bölcselet vagy magyar költészet, francia sanzon vagy német filozófia? Az űrbe fel lehet juttatni dolgokat egyféle rakéta segítségével is, mégis a fejlődésnek sokkal inkább kedvez a kísérletezés és a verseny. A művészeteknek, vagy a kultúrának pedig semmi gyakorlati haszna nincs sokak szerint, nem is beszélve a biodiverzitásról, mégis minden jel arra mutat, hogy egy rendszer annál gazdagabb, annál életképesebb, annál fejlődőképesebb, minél sokszínűbb. Az élet egyik definíciója valahogy úgy szól, hogy azt a folyamatot tekinthetjük élőnek, amely bővíteni igyekszik saját jövőbeni lehetőségeinek a körét. A technológia eszerint tehát él! :)