Ennustan että Java tulee kuolemaan pois muutaman vuoden sisällä ja C# sekä .NET tekniikat tulevat syrjäyttämään suurimman osan jo käytössä olevista teknologioista.
C tulee kuolemaan monimutkaisuutensa takia ja Java huonon toteutuksen.
C tulee kuolemaan monimutkaisuutensa takia ja Java huonon toteutuksen.
Vastaukset 11
Vanhimmat
Ja ennustan että MS Net tulee kuolemaan pois, koska OpenSource ja ei-valmistajakohtaiset ja avoimet standardit jyrää Mickeysoftin.
Tulevaisuus on RIA-sovelluksien ja palveluiden, jotka tulee vaikka työpöydälle Wignetteinä (mm. Officen kaltaiset ohjelmistot).
Työpöytä voi olla tietokoneen lisäksi esim. puhelimissa ja digiboxissa (ei väliä, eikä laitteen ole pakko sisältää MS Exploreria, MS Messengeriä, MS Outlookia, MS Windowsia, MS Officea, MS "jotain" täyden hyödyn saamiseksi).
Itse uskon tulevaisuuden kallistuvaan mm. Eclipse-työkalujen hyödyntämiseen näiden sovellusten luonnissa. Luonnollisesti esim. Ajax ryydittää ulkoasua.
Java ei häviä mihinkään palveluiden rakentamisesta.
Ohjelmointikielimaailmaa 70-luvulta asti seuranneena sanoisin, että muutokset ovat paljon hitaampia ja trendejä ei käännetä helposti. Javalla on jo vahva asema ja sen käyttö on vielä ehkä mielummin loivassa nousussa kuin laskussa. C :n asema on todella vahva, sitä ei uhkaa mikään. Se voi olla väärinkäytettynä monimutkaista, mutta oikein käytettynä (firmojen ja muiden laitosten koodaustyylistandardien kehityksen tärkeys..) vain hieman monimutkaisempaa kuin Java. Sitä voi käyttää hyvin Javan tyylisesti. Itse teen niin (silloin, kun en toimi ammatillisesti Symbian-maailmassa). C# valtaa pikkuhiljaa omaa nurkkaansa, eteenkin kun siirtymä kielestä toiseen yksittäiselle kokeneelle ohjelmoijalle on pienempi kynnys kuin uuden sovellusalueen opettelu. C# on vain hieman paranneltu Java, ei mikään iso hyppäys. Siis kaikille kolmelle kielelle on tilaa seuraavan kymmenen vuoden ajan.
Ennemmin minua kiinnostaisi, mikä on seuraava iso paradigmahyppy ohjelmoinnissa? Se on varmaan jo joidenkin tiedossa, mutta ei laajemmalti julkisuudessa.
Tietysti vahva usko on periaatteessa ihan hyvä asia mutta sillä voi pilata tulevaisuutensa veikkaamalla "väärää hevosta". C#:n osuus noin 3% ja laskusuunnassa:
http://www.tiobe.com/tpci.htm
...visual basic tekee sijalla neljä...
Harrastajapiireissä kova sana ja miksei ammattilaisellekin tietyn tyyliseen softantekoon. Eikä nykyajan basicit ole ollenkaan niin onnettomia koodausympäristöjä kuin joku GWBASIC aikanaan.
Esimerkkinä vaikkapa Linuxin Gambas:
http://gambas.sourceforge.net/screenshots.html
Listassa mielenkiintoisin detalji on D:n nousujohteisuus, vaikka se on vielä alhaisella tasolla. Olen ymmärtänyt, että D:llä on isoja ongelmia kirjastojen ja työkalujen kanssa, mutta itse kieli on hyvin tyylikäs. Siksi sen suosion nous voi olla itseään ruokkivaa, sisältää positiivisen takaisinkytkennän. Ehkä kokeilen sitä uudelleen lähiaikoina. D voi mennä parin vuoden kuluttua C#:n ohi, jos ympäristöt tulevat kuntoon.
Mutta D on vain yritys ottaa oppia C :n ja Javan ongelmista ja yhdistää molempien parhaat piirteet omilla mausteilla terästettynä. Se ei ole mikään paradigmahyppäys.
Mikä olisi se seuraava paradigma iso paradigmahyppäys, vastaava kuin C:stä C :ssaan?
"Mikä olisi se seuraava - - iso paradigmahyppäys, vastaava kuin C:stä C :ssaan?"
Funktionaalinen ohjelmointi. C# 3.0 menee myös siihen suuntaan, vaikka ei tarpeeksi paljon.
OCaml, Haskell, F#, Clean, ML, jne. ovat tulevaisuuden kieliä, tai ainakin niiden esiasteita.
http://www.codeproject.com/useritems/csharp3-concepts.asp
Toisaalta erityisesti rinnakkaisohjelmointiin suunnitellut kielet (kuten Erlang) voivat nousta merkittävään asemaan, kun moniprosessorikoneet yleistyvät. Funktionaalisissa kielissä on vielä ongelmia rinnakkaisuuden kanssa, koska ne yleensä käyttävät (ja vaativat) roskienkeruuta. On hyvin hankala tehdä todellisia ensimmäisen luokan funktioita ilman roskienkeruuta, mutta toisaalta sen yhdistäminen rinnakkaisuuteen ei ole ihan helppoa.
Siitä on kirjallisuutta.
Eikös funktionalinen ohjelmointi ole vanha juttu: LISP. Miksi se nyt toisi jotakin uutta?
Rinnakkaisohjelmoinnin tarpeen ymmärrän. Olen koodannut VHDL:llä paljon. Siinä rinnakkaisuus on sisään rakennettu, mutta lähinnä RTL-kuvauksen syntetisointia tavoitellen. Joskus pohdiskelin, voisiko "behavioral-VHDL" tyylistä kehittää yleiskäyttöisen, käännettävää koodia tuottavan ohjelmointiympäristön. Ehkä hyppäys olisi liian suuri.
Minusta seuraavan paradigmahypyn täytyy sisältää joku tapa mallintaa tietämystä hyvin korkealla abstraktiotasolla, siten, että hyvin määritellyt, muodolliset, tarkat tavotteet (requirement specifications) sellaisenaan kelpaisivat lähdekoodista: "Declarative programming"
http://www.cs.chalmers.se/~oloft/Papers/wm96/wm96.html
Mutta koodin olisi oltava hyvin "intuitiivistä" helposti ymmärettävää, toisin kuin esim LISP, jopa graafista, visuaalista.
Lisp ei ole sama asia kuin nämä mainitsemani kielet. Lisp ei myöskään ole vanha juttu. Sitä käytetään yhä. Useat firmat pysyvät bisneksessä kiinni myymällä Lisp-ympäristöjä.
Tutustupa näiden kieliryhmien (ML ja Lisp) eroihin ja aloita vaikkapa tyyppisysteemien kuvauksilla (type systems). Ymmärrät sitten erot paremmin.
Miksipä se toisi uutta C#-kieleen, kuten linkkaamassani artikkelissa kerrottiin? Hyvillä ideoilla on tapana levitä.
>>Mutta koodin olisi oltava hyvin "intuitiivistä" helposti ymmärettävää, toisin kuin esim LISP, jopa graafista, visuaalista.>>
Ikävä kuulla, että Lisp on sinusta jotenkin vaikeasti ymmärrettävää. En voi kuvitella mistä muusta se johtuisi kuin kokemuksen puutteesta. Samalla tavalla muutkin kielet, joista sinulla ei ole kokemusta, ovat vaikeita.
"Mutta koodin olisi oltava hyvin "intuitiivistä" helposti ymmärettävää, toisin kuin esim LISP, jopa graafista, visuaalista."
Jonkinlainen "pattern-ajattelu" auttaisi. Tarkoitan Regular Expressions -tyyppistä lähestymistapaa. Piirteiden kuvaamista. Se on visuaalista.
Tekstimuotoisen koodin sisäistä rakennetta voisi täydentää graafisilla vihjeillä. Saman nimiset muuttujat yhdistettäisiin viivoilla.
"Minusta seuraavan paradigmahypyn täytyy sisältää joku tapa mallintaa tietämystä hyvin korkealla abstraktiotasolla..."
Taas tämä yleinen tekoälyongelma. Miten olisi esimerkistä opettaminen makronauhoituksen tapaan. Internetin palveluissa tapahtuu paljon "piilo-opettamista", kuten Pagerank.
Lisp nyt ilmeisesti kuitenkin luokitellaan funktionaaliseksi ohjelmointikieleksi. En ole sitä käyttänyt n. 15v takaista kokeilua lukuunottamatta. Myönnän sen tehon, mutta ilmeisesti se ei ole laajemmin yleistynyt, koska sen oppimiskynnys on suhteellisen korkea. Tiedän toki, että sitä käytetään yhä ja esim CLOS on ihan eri asia kuin 50-luvun alkuperäinen LISP. Tiedän myös, että on fanaatikkoja, joille se on "ainoa, oikea ohjelmointikieli". Eivät he kovin väärässä varmaan ole.
"Ikävä kuulla, että Lisp on sinusta jotenkin vaikeasti ymmärrettävää. En voi kuvitella mistä muusta se johtuisi kuin kokemuksen puutteesta."
Tietysti.
LISP:ssä varmaan enemmän kuin monissa muissa kielissä koodaustyyli vaikuttaa koodin ymmärrettävyyteen.
Olen edelleen sitä mieltä, että korkean abstraktiotason käännettävä "speksauskieli" tulisi erota luonnollisesta kielestä vain rajoitetusti, olla hyvin intuitiivistä, mutta tietysti kurinalaisempaa, yksiselitteisempää, kuin arkikieli. Lojban voisi olla lähtökohta.
ML ei terminä ollut tuttu, olen ollut niiltä osin pimenossa :(. Ahaa: Meta Language, se kertoo jo enemmän. SML/NJ tuntuu kiinnostavalta. Tutustun, vaikka minulla tuskin on aikaa oikeasti juuri nyt opiskella.
Muille kiinnostuneille:
http://www.smlnj.org/index.html