physis#41
Én még ilyen szemléletesen és érzékletesen sohasem fogalmaztam meg,
ahogy előbb összefoglaltad,
de lehet, hogy én is éppen ilyesmit kerestem mindig is a programozásban.
Először az általános iskolában ZX Spectrum és Primo BASIC,
aztán a középiskolában Pascal,
aztán az egyetemen az objektumorientált paradigma szépségeit próbáltam kibányászni.
Időközben valahogy érdekelni kezdett az is,
hiogy milyen ,,természetes'' programnyelvek vannak,
ahol a programozás a maga ,,platóni szépségében'' jelenik meg.
Például a funkcionális programozásban nincsenek változók (abban az értelemben, ahogy az imperativ nyelvekben).
Nincsenek ugró utasitások sem
(még abban a strukturált formában sem, hogy ciklus stb.)
Az egész program nem más, mint egy óriási nagy matematikai képlet.
Beleteszünk valamit, eredményül kijön valami.
Hogy mi pótolja azt,
amit a szokásos programnyelvek változókkal értékadéssal, ugrással fejeznek ki?
Hát az, hogy e ,,képletek'' nemcsak számokat, stringeket tudnak ,,átereszteni magukon'',
hanem más képleteket is (sőt akár saját magukat is)!
Mindez pedig a metaprogramozáshoz, scripteléshez hasonló erőt ad a funkcionális programnyelveknek.
No, akkor ezt csináltam évekig (LISP, Haskell),
a főnöknek meg mindegy volt,
hogy én milyen nyelven oldom meg a célkitűzéseit.
Aztán egy idő múlva úgy kezdtem érezni,
hogy bármilyen modern prgramozási paradigmát tanulok is meg
(legyen az funkcionális, logikai, algebrai, kategóriaelméleti stb.),
néhány szempontból a programozás mindig is a matematika mögött fog kullogni.
Egyrészt a legfejlettebb programozási paradigmában is csak olyan fogalmakkal foglalkozunk,
amelyeket ténylegesen meg is tudunk konstruálni.
És csak olyan algoritmusokról beszélünk, amelyeket, legalábbis legalább elvileg, le is lehet futtatni.
A matematika néhány ágában voszont szégyenkezés nélkül épitenek fel olyan elméleteketet,
amelyeknek a puszta alapfogalmai is megkonstrálhatatlanok.
Bár be lehet bizonyitani róluk, hogy léteznek,
(amolyan ,,kizárásos alapon'', szóval számossági megfontolásopk alapján),
de nem lehet példát mondani rájuk.
Picit olyan, mint az ismert viccben:
--- Hogyan fogunk oroszlánt a sivatagban?
--- Leszitáljuk a sivatagot, ami fennmarad, azaz oroszlán.
De valószinű, hogy valamilyen értelemben tévedek,
mert valójában már maga a programozás is rengeteg újat tartogat még,
ahogy az egyes természettudományok közvetlenül is kezdik a hatásukat éreztetni benne:
* a biológia felől a neurális hálók, AI kutatás,
* a fizika felől a kvantumszámitógép
(gép még nincs, de kvantum programnyelvek már vannak),
* a matematika felől tételbizonyitó rendszerek stb.
Mivel maguk az egyes természettudományok végtelenek
(vagy legalábbis emberi mértékkel nézve elképzelhetetlenül óriásiak
és irdatlan kifutás áll előttük még),
ezért az IT előtt is állhat még jó sok forradalmi újdonság,
ha mindezeknek már csak egy részét is képes lesz magába foglalni.