Pitkän googlettelun jälkeen en löytänyt mitään kovin hyödyllistä aiheesta, muuten kuin funktionaalisia kieliä pidettään usein elegantteina. Joten ajattelin kysyä teiltä.
Millainen on elegantti kieli? Tiedätkö jotain esimerkkiä, mikä on sinusta elegantti?
Nähdäkseni eleganttius on kielen sovelluskohtainen ominaisuus, ei yleinen. Vielä tarkemmin rajattuna: osaava tekijä pystyy luomaan elegantteja ratkaisuja tarkoitukseen sopivalla kielellä.
Yleensä elegantti ratkaisu tarkoittaa lyhyttä ja selvää ratkaisua. Kuten Chiman totesi, kaikkia asioita ei välttämättä pysty tekemään elegantisti kaikilla kielillä. Ehkä elegantti kieli tarkoittaa kieltä, jolla voi tehdä monia asioita elegantisti.
Ei sen varsinaisesti tarvitse olla lyhyt ollakseen tyylikäs eli elegantti. Toki tyylikkyyden ja lyhyyden tilastollinen korrelaatio on minunkin uskoakseni positiivinen.
Ohjelmoinnissa lyhyt tapa tietenkään ei usein ole se selkein vaihtoehto, jos ylläpidettävyysaspekti otetaan huomioon. Tästä nyt esimerkkinä vaikka regex, jolla voi hyvinkin lyhyesti toteuttaa vaativan tarkistuksen, selkeyden kustannuksella.
Tyylikästä on toteuttaa tilanteeseen loogisin ratkaisu, sen hetken standardeja ja Best practise -malleja käyttäen.
Ja mitä tulee funktionaalisiin kieliin, voi niillä tehokkaasti toteuttaa Core - ja enginetason koodeja, mutta taasen lähestyttäessä uloimpia layereitä, hyödyt pienenevät suhteessa käutännöllisimpiin tapoihin.
Eleganttius on usein subjektiivista ja riippuu mielipiteenantajan omista taipumuksista ja mieltymyksistä. Siksi Internetistä löytyviä todisteluja kielten elegantteudesta ei voi aina pitää kovin luotettavina tietolähteinä.
On totta, että joitain asioita voi tehdä funktionaalisilla kielillä paljon selkeämmin kuin imperatiivisilla. Vastaavasti joitain asioita ei voi tehdä. Siksi moniin ei-funktionaalisiin kieliin onkin lisätty funktionaalisia ominaisuuksia, kuten vaikkapa nimettömiä ja/tai sivuvaikutuksettomia funktioita. Nykyään tämä on muodissa ja esimerkkejä löytyy Javasta, C++:sta, Pythonista, PHP:stä, JavaScriptistä, Rubysta sekä monista muista. Yksikään näistä kielistä ei kuitenkaan määritelmän mukaan ole funktionaalinen.
Okei eli eleganttius on toteutuksessa ei kielessä, vaikka muualla taas tuli esiin että esim "turha" syntaxi tai sen määrä syö eleganttiutta.
Btw. eikö sulla fergusq ollu joku mahd. elegantti kieli sivuilasi?
Ei kielen eleganttius ole toteutuksessa. Kielellä ja toteutuksella on omat eleganttiutensa. Olinko minä jotenkin epäselvä?
Kuten sanoin, eleganttius tarkoittaa eri ihmisille eri asioita. Usein elegantiksi koodiksi sanotaan selkeää ja yksinkertaista ohjelmaa. Elegantiksi kieleksi sanotaan kieltä, jolla on helppo tehdä eleganttia (hyvää) koodia. Toisinaan taas kauniita kieliä sanotaan eleganteiksi. Koska matematiikka on kaunista, joskus sitä muistuttavia funktionaalisia kieliä sanotaan eleganteiksi. Esoteerisia kieliä sanotaan joskus eleganteiksi, sillä niissä monesti korostuu jokin yksinkertainen, kaunis idea (ei niin, että niillä olisi hyvä ohjelmoida). Tein jokin aika sitten kielen, jonka oli tarkoitus olla ruma. Siitä tuli kaunis. Eleganttia.
Juu kaikki minun tavallisetkin kieleni ovat elegantteja, mikä tarkoittaa sitä, että niillä voi kirjoittaa elegantteja ratkaisuja ongelmiin (joskus). Usein käytännöllisyys ajaa kuitenkin eleganttiuden ohi, kuten vaikkapa Svessä, jonka syntaksi on tarkoitettu helpoksi kirjoittaa. Kirjoitan tällä hetkellä muuten uutta versiota toisesta kielestäni PHL:stä, joten jos on vinkkejä eleganttiuden parantamiseen niin kertokaa toki.
Netistä löytyvä sanakirjamääritelmä on aika hyvä:
lainaus:
elegant
ˈɛlɪɡ(ə)nt/
adjective2. (of a scientific theory or solution to a problem) pleasingly ingenious and simple
Stackoverflow'sta löytyy myös juttua aiheesta, jos eri ihmisten näkemykset jaksavat kiinnostaa.
Ohjelmointikieliäkin voi ajatella ratkaisuina erilaisiin ongelmiin, kuten "miten shelliskriptauksesta voisi tehdä helpompaa", "miten kielestä saisi samaan aikaan sekä alustariippumattoman että mahdollisimman tehokkaan", "miten puhtaasti funktionaalisesta kielestä voisi tehdä käytännöllisen" tai "miten surkeita ohjelmoijia voisi auttaa koodaamaan vähemmän bugista softaa". Veikkaan että moni pitää esimerkiksi C:tä elegantimpana kielenä kuin PHP:tä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.