Mikä ohjelmointikieli on tällä hetkellä modernein ja kehittynein?
C : vanha fossiili, ei olioita
C : sekava ja turvaton
Java : hidas tulkkipaska
PHP : jälkeenjäänyt turvaton vanha pieru
Visual Basic : en viitsi edes sanoa..
Perl : just jo...
Python: yhteensopivuus rikottu ja uus versio hidas, jne
C# : ??? MS ennakkoluulot eivät salli
Ruby ?? Aika moderni..
Jotenkin tuntuu, että tällä hetkellä ei ole yhtään kunnon kieltä.
C : vanha fossiili, ei olioita
C : sekava ja turvaton
Java : hidas tulkkipaska
PHP : jälkeenjäänyt turvaton vanha pieru
Visual Basic : en viitsi edes sanoa..
Perl : just jo...
Python: yhteensopivuus rikottu ja uus versio hidas, jne
C# : ??? MS ennakkoluulot eivät salli
Ruby ?? Aika moderni..
Jotenkin tuntuu, että tällä hetkellä ei ole yhtään kunnon kieltä.
Vastaukset 65
Vanhimmat
"Mikä ohjelmointikieli on tällä hetkellä modernein ja kehittynein?"
Oikea työkalu oikeaan hommaan.
C : Paras kieli kirjastojen tekoon ja systeemiohjelmointiin.
C : Paras kieli natiivikoodi rich client sovelluksiin.
Java : Paras virtuaalikoneympäristö, sopii erinomaisesti palvelinpuolelle ja tarvittaessa myös selaimen yli ajettaviin sovelluksiin, koska Javan varmistaa toimivuuden nyt ja tulevaisuudessa.
C# : Kehittynein yleiskieli mutta standardointi ja implementaatiot ovat vielä vajaita. Tulevaisuuden ratkaisu.
Python : Varmaankin paras "skriptikieli".
PHP : Toimii varmaan jokaisessa palvelimessa. Erinomainen siis kevyempiin juttuihin eikä ole Javan heikkouksia.
"Jotenkin tuntuu, että tällä hetkellä ei ole yhtään kunnon kieltä."
Onhan niitä, monta. Oikea työkalu vaan oikeaan hommaan.
"Oikea työkalu oikeaan hommaan."
Sittenhän tuon hakurakenteen voisi esittää toisinpäin (tehtävä : kieli):
http://lambda-the-ultimate.org/node/3101
Delphi (Pascal) on paras kieli graafisten työpöytäsovellusten tekoon.
Adaa käytetään lähinnä luotettavuus ja rinnakkaisuussovelluksissa.
"Java : Paras virtuaalikoneympäristö, sopii erinomaisesti palvelinpuolelle ja tarvittaessa myös selaimen yli ajettaviin sovelluksiin, koska Javan varmistaa toimivuuden nyt ja tulevaisuudessa."
JVM:llä voi ajaa myös myös muita kieliä, joten ei vain Javan ominaisuus.
En ole oikein ymmärtänyt, mikä tässä virtuaalikoneympäristössä on niin hyvää, mitä etua siitä saa?
"...implementaatiot ovat vielä vajaita. Tulevaisuuden ratkaisu."
Microsoftin yritys kampittaa Javan hallitsevaa asemaa sen kopiolla eli CSharpilla ei ole reilun kymmenen vuoden tahkoamisesta huolimatta saanut mitään merkittävää menestystä. Pahin este lienee keskittyminen yhden ainoan yrityksen tarpeisiin.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Delphi ei ole kieli, vaan sovelluskehitin. Jos sovelluskehittimiin lähdetään, niin minä väitän parhaaksi Power Builderia. Jostain kymppiversiosta asti se jopa pysyy pääsääntöisesti pystyssä, enkä vielä ole nähnyt tietokannan käsittelyä toteutettuna yhtä selkeästi ja helposti missään.
Tietysti se on RAD-väline, joten ohjaa tekemistä tiettyyn ei-välttämättä-toivottavaan-suuntaan... :)
Aika provo, miksi listatuista kolmannes nopein kieli on 'hidas tulkkipaska'? Eikä C ole mitenkään sekava ja turvaton... Ainoita tarpeettomia noista on Visual Basic ja C#.
En kyllä keksi mitään järkevää käyttöjä Javalle. Joku toinen kieli on aina parempi kuin Java. Ja tuskin monessa paikassa on käytössä Java suoritimmiä, ja vaikka olisi, niin miksi sellaisin edes valitsisin, kun i386 suorittimella toimii kaikki.
Työasemasovelluksissa Java on hidas paska, jopa Hello Worldin käynnistäminen kestää kauemmin kuin vain MS Wordin.
Ja palvelinpuolellakaan en näe mitään etuja Javan käytöstä. Websovelluksissakin, tomcat jne.. Java täyttä kuuraa, ja PHP hakkaa sen 100/0. Jos taas laitetaan jotain Strutsii, tai vastaavaa, niin taas Ruby on Rails hakkaa tuon Java-purkan menneen tulleen.
Java on SYÖPÄ!
"Työasemasovelluksissa Java on hidas paska, jopa Hello Worldin käynnistäminen kestää kauemmin kuin vain MS Wordin."
Itseasiassa Java taitaa olla vain jotain 2x hitaampi kuin C .
"Ja palvelinpuolellakaan en näe mitään etuja Javan käytöstä."
Javassa taitaa olla kaikkea sellaista hauskaa, että jos on useita palvelimia niin saa jaettua kuormaa eri palvelimille että sopii sitten järeisiin juttuihin. Minulle ne on kuitenkin salatiedettä niin kauan kunnes opettelen homman paremmin. PHP on paljon hitaampi Javaa.
Jos haluaa selvitä yhdellä ohjelmointikielellä melkein kaikesta niin silloin Java olisi paras valinta.
Johan oli vakuuttava läjä sontaa taas yhdessä viestissä :D
" Työasemasovelluksissa Java on hidas paska, jopa Hello Worldin käynnistäminen kestää kauemmin kuin vain MS Wordin. "
Melkeinhän sitä voisi kuvitella että joku osaisi erottaa virtuaalikoneen ja ohjelman käynnistämiseen menevän ajan... Vaikka sinä et ole keksinyt mitään järkevää käyttöä Javalle, niin aika moni muu on sen tehnyt ->
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
No jos on lusikalla annettu, ei voi ämpärillä ottaa.
"Itseasiassa Java taitaa olla vain jotain 2x hitaampi kuin C ."
Pätee vain näissä simppeleissä numeron (int, float peruslaskutoimitukset) pyörityksissä, jotka eivät ole olioita/metodeja ja siten helppo optimoida tehokkaasti. Käytännössä eli isoissa sovelluksissa Javan muistin ja prosessorin tuhlaus tulee esiin.
"Javassa taitaa olla kaikkea sellaista hauskaa, että jos on useita palvelimia niin saa jaettua kuormaa eri palvelimille että sopii sitten järeisiin juttuihin."
Ymmärtääkseni hajautus eri palvelimille on sovelluspalvelimen ominaisuus, ei Javan.
"Jos haluaa selvitä yhdellä ohjelmointikielellä melkein kaikesta niin silloin Java olisi paras valinta."
Tai sitten selviää pelkästään C/C :lla tai Pythonilla tai ... Joka tapauksessa on karmea virhe osata vain yksi kieli ja yksi paradigma (olio), kuten Java-only tyypeille väistämättä käy.
Jos osaa vain yhden kielen/paradigman niin osaaminen on auttamatta liian kapea-alaista eikä semmoista hemmosta voi koskaan tulla gurua tai Ammattilaista (isolla A:lla).
"Itse asiassa on parasta opetella kaikki viisi kieltä (Python, Java, C/C , Perl ja LISP). Sen lisäksi että ne ovat tärkeimmät hakkerikielet, ne edustavat erittäin erilaisia lähestymistapoja ohjelmointii ja kukin niistä opettaa arvokkaalla tavalla." - Eric S. Raymond
http://hack.fi/hacker-howto-fi.php#skills1
ot:mikä on C#?
Aika asiantuntavaa tekstiä mutta huomaa että tuolla tekstin alkuperäisellä kirjoittajalla on joitakin aukkoja tiedoissa. Hän unohtaa Pascal:n täysin. Hän ei esim. tunne sen historiaa (tässä tapauksessa) nimenomaan hakkerikielenä!
Mutta tärkeintä tuossa tekstissä oli se maininta että on hyvä osata käyttää useita kieliä.
Pascal hakkerikieli? Oletko tosissasi? Ainakin yliopistoissa ja korkeakouluissa pascalia pidetään kirosanana ja vitsinä. Jo ainoastaan se että pascal tarkistaa kaikki ehdot ehtolauseessa eikä lopeta ensimmäiseen ei täyttyneeseen ehtooseen, niin kuin nykyaikaiset kielet, kertoo jo paljon sen vammaisuudesta ja testauksen hankaluudesta. Kaiken lisäksi kieli on jo käytännössä kuollut ja on ainoastaan muisto (oikeastaan painajainen) menneistä..
Ja turhaa on puhua Delphistakaan, joka on samanlainen paska kuin VisualBasickin. Sama koske Kylixiakin joka sekin on jo kuollut.
Linkissäsi lukee:
"Observe that the TIOBE index is not about the best programming language or the language in which *most lines of code* have been written."
Eli ei tiedetä onko Javalle keksitty järkevää käyttöä, vain onko sitä vain opiskeltu ja hypetetty.
Tioben käppyröistä näkee muuten Javan trendin - joka on LASKEVA.
http://www.tiobe.com/index.php/paperinfo/tpci/Java.html
Työasemasovelluksissa oikeasti käytetyistä ohjelmista Javan osuus on naurettava (jotain alle 1%) ja suurin osa eli yli 90% c/c++-tekeleitä.
On hyvin huolestuttavaan Javan (tai oikeastaan java-koodarien) kannalta että Tioben mukaan Java on suosituin mutta sillä tehtyjä juttuja ei käytetä läheskään samassa määrin kuin sen suosion prosenttiosuus edellyttäisi.
"Eli ei tiedetä onko Javalle keksitty järkevää käyttöä, vain onko sitä vain opiskeltu ja hypetetty."
Onhan se käytetty kieli palvelinpuolella.
"Työasemasovelluksissa oikeasti käytetyistä ohjelmista Javan osuus on naurettava (jotain alle 1%) ja suurin osa eli yli 90% c/c++-tekeleitä."
Suurin osa kehitetystä softasta ei ole mitään massajakelusoftaa.
"Onhan se käytetty kieli palvelinpuolella."
Joo, EJB ja J2ME taitaa olla Javan parhaat alueet (tosin J2ME on aika PAKKO mobiileissa, ei vaihtoehtoja).
"Suurin osa kehitetystä softasta ei ole mitään massajakelusoftaa."
Ehkäpä niin, mutta ei-massajakelusoftan määrästä ja laadusta meillä ei ole juuri mitään tietoa.
Hmm.. haku Ubuntusta :
apt-cache search Java | wc -l
1012
apt-cache search Python | wc -l
1195
Eli paketteja joissa mainittu about sama määrä vaikka suosio Javalla tioben mukaan 4 kertaa suurempi kuin Pythonilla!
Eli tulos tukee väitettä Javan huonosta 'suosio/tehty softa'-suhteesta. No yksi mittaus vaan ja ehkä Java ei ole Ubuntun/Debianin suosiossa ... (toisaalta miksi ei ole?)
No ainakin kai voidaan päätellä että Java ei ole 'massajakelusoftan'-tekijöiden suosiossa.
"No ainakin kai voidaan päätellä että Java ei ole 'massajakelusoftan'-tekijöiden suosiossa."
No ei tietenkään ole. Se kun on yleensä väärä työkalu tähän hommaan.
Nyt taitaa taas tulla tavaraa täydellisen tietämättömyyden tuomalla syvällä rintaäänellä...
"Eli ei tiedetä onko Javalle keksitty järkevää käyttöä, vain onko sitä vain opiskeltu ja hypetetty."
Kas, opiskelujen jälkeen porukka lähtee usein ihan oikeisiin töihin, joskus käy jopa niin että opiskelujen jälkeen käytetään töissä samoja työkaluja mitä on opiskeltu. Aina silloin tällöin käy niinkin, että hypen taustalla on jotain konkreettista.
"Työasemasovelluksissa oikeasti käytetyistä ohjelmista Javan osuus on naurettava (jotain alle 1%) ja suurin osa eli yli 90% c/c++-tekeleitä. "
Tähän sulla on varmaan jotain muutakin kuin mutu-tilastoa?
"sillä tehtyjä juttuja ei käytetä läheskään samassa määrin kuin sen suosion prosenttiosuus edellyttäisi"
Jos sinä et näe palvelimilla pyörivien sovellusten toteutusta, ei tarkoita sitä ettei niitä olisi. GUI:n rakentaminen ei ole Javan vahvuus, se on jossain ihan muualla, eikä välttämättä edes J2ME.
""Työasemasovelluksissa oikeasti käytetyistä ohjelmista Javan osuus on naurettava (jotain alle 1%) ja suurin osa eli yli 90% c/c++-tekeleitä. "
Tähän sulla on varmaan jotain muutakin kuin mutu-tilastoa?"
Ei ole (tai onhan tossa yllä haku Ubuntusta), onko sulla?
"Jos sinä et näe palvelimilla pyörivien sovellusten toteutusta, ei tarkoita sitä ettei niitä olisi."
Et näe sinäkään, joten pelkäksi mutuksi menee...
"GUI:n rakentaminen ei ole Javan vahvuus, se on jossain ihan muualla, eikä välttämättä edes J2ME."
Kerro reippaasti vaan, tästä "se on jossain ihan muualla"-jutusta.
"Ei ole (tai onhan tossa yllä haku Ubuntusta), onko sulla? "
Virallisia tilastoja en usko että on kellään, mutta se en ollut minä joka väitti että Javalla tehtyjen työasemasovellusten osuus on "jotain alle 1%". Itselläni on kuitenkin yli 10 vuoden työkokemus suht koht laajoista it-järjestelmistä, myös niiden kehityksestä, joten ihan pelkkää mutua en naputa.
"Kerro reippaasti vaan, tästä "se on jossain ihan muualla"-jutusta. "
Esimerkiksi heterogeeniset (palvelin)ympäristöt, joissa ohjelmien "pitää vain toimia".
Tästä voit vertailla kuitenkin esimerkiksi Javalla ja PHP:llä tehtyjen sovellusten suoritusarvoja.
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=java&lang2=php
Tuollaisten suoritusarvotestien tulosten hyöty sitten on tietenkin aika kyseenalainen, oikea työkalu oikeassa tilanteessa tuo aina parhaan tuloksen. Millä tahansa ohjelmointikielellä saa aikaan pelkkää sontaa jos oikein yrittää.
Olet väittänyt jotain niin
anna esimerkki (jotta me muut voidaan todeta väitteesi) ja kerroppa millä Pascal-kääntäjällä testasit väitteesi.
Asiahan voi olla toisin kuin kuvittelet!
Linux tuli vasta 90-luvulla. Esim. PC:tä oli jo 80-luvulla.
Mietippä mitä kääntäjää hakkerit käyttivät 80-luvulla! (Vinkki: Turbo Pascal)
Delphissä on valittavissa "complete boolean eval", jolloin ohjelmassa ehtolause lasketaan kokonaan.
Viitsitkö laittaa esimerkin siis molemmista tavoista
"Itselläni on kuitenkin yli 10 vuoden työkokemus suht koht laajoista it-järjestelmistä, myös niiden kehityksestä, joten ihan pelkkää mutua en naputa."
Vaikka olisi 1000 vuoden kokemus niin silti se mutua, jos faktaa eli puolueetonta tutkimusta ei ole.
'Esimerkiksi heterogeeniset (palvelin)ympäristöt, joissa ohjelmien "pitää vain toimia".'
Vihjaatko että "pitää vain toimia" on vain Javalla saavutettavissa. Esim. Google käyttää useaa kieltä palvelinympäristössään, C , Python ja Java ns. virallisesti muita:
http://panela.blog-city.com/python_at_google_greg_stein__sdforum.htm
"Vaikka olisi 1000 vuoden kokemus niin silti se mutua, jos faktaa eli puolueetonta tutkimusta ei ole. "
Muistellaanko nyt kuka se oli joka väitti että Javan osuus työpöytäohjelmista on "jotain alle 1%" ja kuka kertoi Javan olevan syöpä? Jos vielä lisätään että tuo Tioben tilasto on lähimpänä sitä "puolueetonta tutkimusta". Mietitäänkö sitten kenellä on jonkinlaiset lasit silmillä? Kerro toki millaiset kannukset sinulla on julistaa totuuksiasi.
"Vihjaatko että "pitää vain toimia" on vain Javalla saavutettavissa"
http://i252.photobucket.com/albums/hh15/supporter555/picard-facepalm.jpg
No en, kysyit missä Java on hyvä ja minä vastasin. Oliko muuta?
'Muistellaanko nyt kuka se oli joka väitti että Javan osuus työpöytäohjelmista on "jotain alle 1%" ja kuka kertoi Javan olevan syöpä?'
Myönnän että 1% on mutua, mutta samoin sinun väitteesi. Enkä ole sanonut Javan olevan syöpä, vaan joku muu.
'Jos vielä lisätään että tuo Tioben tilasto on lähimpänä sitä "puolueetonta tutkimusta".'
Mitäs vikaa mun Ubuntu 'tutkimuksessa' on? Siinä sentään mitataan OIKEASTI TEHDYN SOFTAN määrää, kun tiobe mittaa nettihaulla jotain tyliin "Java programming".
Mitähän tarkoitat tuolla minun väitteellä...? Että Javaa käytetään johonkin ihan oikeaankin? Oletko kuullut joskus esimerkiksi softista nimeltään Eclipse tai Open Office? OO ei ole toki kokonaan kirjoitettu Javalla, mutta osa kuitenkin.
Ubuntu tutkimuksessa on vikaa sen verran, että sinun haku listaa kaikki softat joissa paketin tiedoissa on mainittu nuo ohjelmointikielet. Lisäksi Python-haulla tulee esimerkiksi mukaan kaikki gdeskletit muut skriptit ja ohjelmien asennuspalikat. No iso osahan on oikeasti Pythonilla tehtyjä ja ihan hyvä kielihän sekin.
"Siinä sentään mitataan OIKEASTI TEHDYN SOFTAN määrää"
Oikeasti tehtyjen softien määrää vai oikeasti tehdyn softan määrää? Esimerkiksi yhdessä gdeskletissä on muutama rivi (ja toiminto) vähemmän kuin ant:ssa, NetBeansissa tai Eclipsessä.
Täältä voit lukea tarkemmin tuosta "mittaa nettihaulla tyyliin";
http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm
"Oletko kuullut joskus esimerkiksi softista nimeltään Eclipse tai Open Office? OO ei ole toki kokonaan kirjoitettu Javalla, mutta osa kuitenkin."
Oon kokeillu ja poistanut Eclipset ja netbeansit ja OO.org:stä näppäisin Javan-tuki täpin pois.
No joo, asiaan - tioben mittaus on parhaimmillaankin VAIN suosiomittaus, joka ei kerro paljon mitään todellista tehdyn softan osuudesta. Paremmuudestakaan se ei kerro koska, suosiossa on aina mukana lumipallo-efekti, mitä enemmän koulutetaan Javaa => enemmän Java-koodareita => tehdään Javalla, koska Java-koodareita on niin paljon jne... ja pallo pyörii.
Jos Java-lasit aiheuttaa putkinäköä, niin suosio/tehty softa-suhdetta voi pohtia vaikka visual basicin 10 prosentin tiobe-osuutta.
No minä en kyllä rehellisesti sanottuna enää ymmärrä mitä sinä yrität selittää. Mikähän oli se minun väite josta aiemmin mökötit?
"Oon kokeillu ja poistanut Eclipset ja netbeansit ja OO.org:stä näppäisin Javan-tuki täpin pois. "
Eli sinäkin tiedät Javalla tehtyjä työpöytäsovelluksia, nokkelaa. Se, että sinä et käytä (etkä/tai osaa) Javaa, ei tarkoita etteikö muut käyttäisi (tai osaisi). Jos Googlesta löytyy 377 miljoonaa sivua "java"-hakusanalla, tarkoittaa se sitä, että java on (saaren lisäksi) suosittu ohjelmointikieli. Meinasitko että nämä java-koodarit, vaikka niitä on paljon, ei tee mitään Javalla? Vähän sekavaa minusta.
Ja vaikken minäkään ymmärrä miksi, niin (Visual) Basicia käytetään paljon ja monissa firmoissa.
Taitaa tämä VB.NET ja sen edeltäjät olla suosittuja aika paljon jo siksi, että kielen saa asetettua hyväksymään arveluttavammatkin tyyppimuunnokset jos haluaa. Tai sitten olemaan yhtä tiukkana kuin joku C#.
Helppoa tehdä ja suurin osa työasemista ja melkoinen osa palvelimista tukee tätä. Ei kai sen suosioon sen kummempa tarvita. Riittää kun saa homman tehtyä eikä hifistellä sen kummemmin.
Helppo ja nopea aloittaa ja tehdä simppeleitä ohjelmia ja suuri osa työasemista tukee... eipä kai se sen kummempaa syytä tarvikaan. Basicilla sitten onkin suuremmissa projekteissa turhan hankala olla ampumatta jossain välissä itseään jalkaan.
Mutta edelleen, on kieli mikä tahansa, sontaa saa kyllä aikaan jos evo.
Se taas on ajatusmaailmaltaan hyvin samanlainen Javan kanssa. Kyllä silläkin saa tehtyä ihan hyvin suurempiakin projekteja, kunhan vain jätetään käyttämättä sitä yhtä oikotietä eli globaajeja joita saa laitettua omaan lohkoonsa. Tosin saahan muillakin kielillä tehtyä saman sijoittelemalla publicit sovipasti yhteen paikkaan.
Katso keskustelua:
http://keskustelu.suomi24.fi/show.fcgi?category=108&conference=4500000000000646&posting=22000000040103844
Et taida oikein tietää mistä puhut, jos tarkoitat Visual Basicilla sitä nykyistä toteutusta eli VB.NET:n päällä olevaa. Se on nimittäin lähestulkoon sama asia kuin C#.
Nämä .NET-kielet ovat nykyään melko tehokkaita ja tarjoavat alustan melkein mihin tahansa toteutukseen. Nettisivut, web servicet, työasemasovellukset, mobiilisoftat ja alusta toimii niin Windowsissa kuin Linuxissakin.
Kielenä C# tai VB.NET on n. 30% C++:lla tehtyä softaa hitaampi, mutta tarjoaa hyvin Javan kaltaisen roskankeräyksen eikä ohjelmoijan tarvitse välittää resurssien vapauttamisesta vaikka sen voikin tehdä itse. Samoin kielen rakenne on paljolti Javan kaltainen. On fiksua kopioida muilta ne hyvät puolet.
Ei kannata olla ennakkoluuloinen vain siksi, että ratkaisun takana on Microsoft.
Oletko miettinyt kuinka kauan version 1.0 dot.net sovellukset toimivat?
Tosin sama ongelma on Python:n kanssa !
Javassa on vielä tuki versiolla 1.0 mutta kuinka kauan?
Eli mikä on näiden varteenotettavuus kun katsotaan asiaa 10-20 vuoden jaksolla!
Mietippä vaikkapa miten vanhaa autoa (tmv) käytät (joku käyttää)!
....
>...siksi, että ratkaisun takana on Microsoft.
Se nimenomaan kannattaa ottaa huomioon.
Ohjelmistokehittäjien joukkopako Microsoftin ympyröistä ei tiedä jatkossa hyvää jo nyt tukalassa tilanteessa olevalle .net konseptille.
....NET:n välttelylle niin aika vähän noita perusteita on. Jos et tiennyt, niin samaa .NET softaa voi kehittää Linuxilla ja myös ajaakin sillä. Myös käyttöliittymien tekeminen on helppoa ja joustavaa eikä useammalla alustalla toimivan koodin kirjoittaminen ole ollenkaan hankalaa.
Aika kaukana ollaan tukalasta tilanteesta.
Javan ja .NET:n tavat tukea vanhempia versioita ovat hyvin erilaisia. Vanhat .NET:n versiot toimivat ainakin yhtä pitkään kuin Vistan seuraajissa tulee olemaan tuki niille softille jotka toimivat Vistassa. Luultavasti paljon pidempäänkin, sillä vanhemmat versiot eivät aiheuta frameworkin uusiin versioihin menneisyyden painolastia ollenkaan samalla tavalla kuten vaikkapa Javassa sitä syntyy vanhojen versioiden vuoksi.
10-20 vuotta taitaa olla ihan ok aika. Varsinkin kun tuon kyseisen .NET:n alustan saa open sourcena joka tullaan varmastikin kääntämään tulevaisuudenkin käyttiksiin.
"Varsinkin kun tuon kyseisen .NET:n alustan saa open sourcena joka tullaan varmastikin kääntämään tulevaisuudenkin käyttiksiin."
Ei saa. Monon saa open sourcena. .NET:iä ei saa.
Ainoa peruste .NET:n välttämiseen on se, että sitä ei ole standardoitu vielä kovinkaan pitkälle joten Microsoft kontrolloi sitä kun se pyörii käytännössä vain Windowseissa. Mono ei ole sama kuin .NET.
Ne osat mitkä .NET:stä on standardoitu ja implementoitu Monoon on kyllä ihan toimivia ratkaisuja mutta tämä on oikeasti kovin rajoittunutta.
On aikamoinen vitsi väittää että MS antaa tukea yli 10 vuotta tehdyille tuotteillensa!
kun ne toivat sen Suomeen: hyvät demot ja maittavat alacarte sapuskat. Ton jälkeen ne on alkaneet melkein kaikki puhuun ceesarpista.
Aika epätodennäköistä olisi, etteivät .NET:n päälle tehdyt ohjelmat toimisi enää kymmenen vuoden kuluttua.
Eiköhän tässäkin ole ongelmana lähinnä se, että jotkut eivät vain voi käyttää sellaista minkä on tehnyt Microsoft koska he eivät voi sitä käyttää.
Monohan pyörittää samoja softia kuin .NET joten missä tässä on ongelma?
Toisaalta tässä ryhdyttiin nyt puhumaat alustoista enemmän kuin kielistä. Ihan samalla tavalla c :lla voi koodata .NET:n päälle. Jatkossahan koodia on siirtymässä Windowsmaaimassa enemmän ja enemmän tuolle puolelle. Tietenkin tätä voi vältellä ideologisista syistä samoin kuin Javaa aikanaan kun se oli Sunin omalla tavallaan kontrolloima.
Sama se kai on minkä nimisellä alustalla ne pyörivät kunhan pyörivät?
"Monohan pyörittää samoja softia kuin .NET joten missä tässä on ongelma?"
Ei pyöritä. Mono toteuttaa pääasiassa ne osat .NET:stä mitkä on standardoitu. C#:a kääntää ja tekee sitä standardoitua tavukoodia, toteuttaa myös standardoidut osat kuten base -luokan mutta turha kuvitella, että koko Microsoftin .NET toteutus olisi täysin yhteensopiva Monon kanssa. Selvimmin tämä näkyy siinä, että GUI-softaa ei onnistu tekemään.
Microsoft siis kontrolloi .NET:iä ja AINOASTAAN ne standardoidut osat .NET:stä on sellaisia joiden toimintaan voi luottaa että toimivat kunnolla. Käytännössä on hyvin rajoittunut.
"Tietenkin tätä voi vältellä ideologisista syistä samoin kuin Javaa aikanaan kun se oli Sunin omalla tavallaan kontrolloima."
Sun kontrolloi edelleen Javaa. Nykyään se on hyvin löyhää, se Sun Microsystems omistaa Java -tuotemerkin ja Javaksi kutsuttavia tekniikoita kehitetään yhteistyössä ja mm. Sun Microsystemsin toteutus on avoin ja työkalut on ilmaiset. Sun Microsystems pitää edelleen viimekädessä veto-oikeuden Javan kehityksessä vaikka yhteistyössä kehitetään kaikkien halukkaiden toimessa.
Eli lyhyesti tilanne on se, että .NET:stä toimii standardoidut osat moitteetta ja Microsoft ei niitä kontrolloi, mutta standardoimattomat osat on Microsoftin kontrollissa ja ne ei käytännössä toimi. Java taas on löyhästi Sun Microsystemsin kontrolloima mutta toimii melkoisella varmuudella nyt ja tulevaisuudessa joka paikassa.
Jossain komentorivisoftissa ja yksinkertaisissa jutuissa .NET on parempi ratkaisu koska toimii ja riippumaton mistään kontrollista, ja tulevaisuudessa on varmaasti parempi ratkaisu. Javan politiikka taas on sellainen, että se on parempi ratkaisu jos .NET:n standardoidut osat ei riitä koska se TOIMII ja jos haluaa selvitä yhdellä kielellä joka tilanteessa niin Java on oikea kieli hommaan.
---
Tietysti jos nyt haluat ihan väistämättä sitä .NET:iä käyttää ja tehdä toimivaa softaa niin tee niinkuin muutkin fiksut ohjelmoijat. Eli devvaa *nixeilla ja aja koodi joka paikassa. .NET:llä tämä olisi kehitystyötä Monolla.
Onko .NET:ä parempaa alustaa tehdä työasemasoftaa Windowskoneille? Aika yleinen tämä Windowsi nykyään.
Eikös Framework 2.0 ole jo toteutettu Monoonkin?
"Onko .NET:ä parempaa alustaa tehdä työasemasoftaa Windowskoneille? Aika yleinen tämä Windowsi nykyään."
No softathan on herran vuonna 2008 tietysti alustariippumattomia. Kuluttajapuolella vaikuttaisi siltä, että voi olla jopa joka viides kone jotain muuta kuin Windowsia nykyään.
"Eikös Framework 2.0 ole jo toteutettu Monoonkin?"
Et nyt vaan ymmärrä. .NET != Mono. Molemmat ovat erillisiä frameworkeja jotka rakentuvat Microsoftin kehittämien standardien päälle. .NET:n versionumeroilla ei ole merkitystä kuin itsensä kanssa eikä niitä verrata millään tavalla Monoon. Mono _ei ole_ mikään .NET
Ne osat mitkä on standardoitu on C#, CLI, BCL ja nämä löytyy Monosta. Monoa laajennetaan sitä mukaan Microsoft standardoi .NET:stä osia. Loput osat .NET:stä on epästandardia Microsoft tavaraa mikä elää kokoajan eri .NET versioissa ja jotka ei ole minkään kanssa yhteensopivaa. C#:lla koodaaminen on Javaa fiksumpaa niin kauan kun ei tarvitse mennä siihen Microsoft tavaraan. .NET:stä ei siis voi käyttää edes GUI:ta. Sanomattakin selvää, että C menee rich clientissä ohitse suorituskyvyn ja vahvemman ekosysteemin ansiosta ja Java taas on tavukoodiratkaisuissa hurjasti monipuolisempi kuin se suppea C# BCL. Java kun toimii lähes jokapaikassa sellaisenaan.
Jos kerran .NET:n softat eivät toimi Monon päällä, niin kai se Mono pitää unohtaa ainakin toistaiseksi.
Mikäs itseisarvo se alustariippumattomuus on varsinkin jos seuraavassa lauseessa puolletaan C :n tehokäyttöä?
Mikäs tuosta Javasta ja sen tavukoodista tekee niin paljon .NETtiä tehokkaamman kun tarkoituksena on tehdä Windowsissa toimivia softia? Yleensä kun vaatimuksena tuntuu olevan se, että softa pyörii siinä.
Kyllä se on ne MS-edustajat jotka hehkuttaa .NET:iä ilman perusteita. Ohjelmoinnista jotain tietävät (jotka usein käyttää Linux-pohjaisia) ymmärtää .NET:n olevan pääasiassa Windows-riippuvaista muuten kuin standardoitujen osien osalta. Mono ei edelleenkään ole mikään .NET. Se toteuttaa .NET:stä löytyviä standardeja ensisijaisesti, eli jos .NET:llä tekee epästandardia paskaa niin ei ne vaan välttämättä toimi. Näköjään kyllä Mono ilmoittaa olevansa yhteensopiva myös .NET 2.0:n kanssa, mutta ota huomioon, että .NET ei lupaa mitään taaksepäin yhteensopivuuden säilymistä!
"Mikäs itseisarvo se alustariippumattomuus on varsinkin jos seuraavassa lauseessa puolletaan C :n tehokäyttöä?"
C tekee natiivikoodia ja on olemassa alustariippumattomia kirjastoja ja myös ihan standardeja rajapintoja mitkä toimii joka paikassa. Laadukkaat softat nyt on olleet alustariippumattomia pitkän aikaa, ei tässä nyt enää eletä missään 90- tai 80-luvulla.
"Mikäs tuosta Javasta ja sen tavukoodista tekee niin paljon .NETtiä tehokkaamman kun tarkoituksena on tehdä Windowsissa toimivia softia?"
Mikä hemmetin oletus se Windows on? Laadukas softa ei ole mitenkään oudosti rajoittunut Windowseihin. Nykypäivänä softalta odotetaan jotain KÄYTETTÄVYYTTÄ että se TOIMII ongelmitta. Eli jos .NET:llä teet softan niin otetaan sitten tietokone jossa on vaikka omenan kuva kyljessä. Jos se ei toimi niin silloin se softa on paska.
Javan paremmuus tulee siitä, että se TOIMII. .NET softa ei toimi juuri missään. Ota myös huomioon, että ohjelmistot ovat arvokkaita joten niitä käytetään pitkään. Mitenköhän toimii se .NET softa 15v kuluttua? Java on huomattavasti varmemmalla pohjalla koska sen lähdekoodi on avattu. .NET:ssä varmalla pohjalla on vain ne standardoidut osat jotka Monostakin löytyy ja mitään takeita .NET:n yhteensopivuuden säilymiselle aikaisempiin versioihin ei ole. Standardoidut osat ovat turvallisia.
Aika hyvinhän .NET:n ideaan sopii se taaksepäinyhteensopivuuden ajatus. Uudet versiot kun julkaistaan omina alustoinaan eikä vanhaan tehdä lisäyksiä. Koneessa voi olla tyypillisesti 1.1 ja 2.0 samaan aikaan ja kummankin softia ajetaan omissa ympäristöissään.
Mitä ovat ne standardit rajapinnat jotka toimivat joka paikassa ja jotka eivät vaadi uudelleenkääntämistä silloin kun alusta ei enää tuekaan jotain C koodin käyttämää rajapintaa? Nykyään tehdään paljon laadukasta softaa joka toimii vain yhdellä alustalla. Tottakai softaa pyritään tekemään siten, että se voidaan kääntää monelle alustalle ja hyvät rajapinnat auttavat tässä prosessissa. On silti aika turhaa ajatella, että nämä laadukkaat monen alustan softat olisivat ollenkaan immuuneja ympäristön muuttumisille. Eivät ne toimi yhtään enempää 10v kuluttua kuin mikään muukaan jos alusta muuttuu alta. Pitää kääntää uudelleen ja vieläpä erikseen usealle alustalle. Toisaalta itse binääri on harvoin alustariippumatonta. Ainakin C :n osalta.
Windowsi on aika suuri oletus kun noilla asiakkailla tuntuu olevan käytössä lähes pelkkiä Windosilla pyöriviä koneita. Joskus noita muitakin ympäristöjä tulee vastaan, mutta ne ovat aikamoinen vähemmistö. Palvelinten lisäksi jos softan haluaa toimimaan yhdellä käännöksellä mahdollisimman suuressa määrässä koneita, Java ei ole käyttöliittymäsuunnittelun hankaluuden vuoksi kovin hyvä vaihtoehto. Windowseja kun on noistakin suurin osa. Siitä se Windowsin merkityksellisyys tulee.
Javan kanssa taas on nähty sitäkin, ettei vanhemmalla versiolla aikanaan tehty softa toimikaan moitteetta. Avattu lähdekoodi taas ei juurikaan auta asiaa koska sitä ei voi käytännössä mennä itse sörkkimään.
Eivätkä alustavaatimukset ole mikään ihmeellinen este käytettävyydelle. Ympäristö pitää kuitenkin määritellä jotenkin eikä jonkun rajauksen tekeminen ole useimmiten mikään ongelma.
"Mitä ovat ne standardit rajapinnat jotka toimivat joka paikassa ja jotka eivät vaadi uudelleenkääntämistä silloin kun alusta ei enää tuekaan jotain C koodin käyttämää rajapintaa?"
C :lla tarvitsee kääntää softa uudestaan joka kohteelle. Standardeja rajapintoja on POSIX, LSB:ssä esim. GTK, zlib ja jne. ja LSB on ISO:n standardointiprosessissa joten voi olla aika varma, että LSB:n rajapinnat säilyy.
LSB kuitenkin on hyvin nuori standardi, mutta tietysti jos jotkut standardit sisältävät jonkun referenssikirjaston avoimena tai standardit käyttävät tekniikkaa joka on otettu jonkun kirjaston kautta käyttöön niin voi olla varma näiden säilyvyydestä. Myös kirjastot jotka kehitetään yhteisesti ja avoimesti ovat luotettavia.
Noin esimerkiksi, POSIX, zlib, GTK, Pango, X11, jpeglib, pnglib, OpenGL, OpenAL ovat sellaisia jotka ovat turvallisia.
"On silti aika turhaa ajatella, että nämä laadukkaat monen alustan softat olisivat ollenkaan immuuneja ympäristön muuttumisille. Eivät ne toimi yhtään enempää 10v kuluttua kuin mikään muukaan jos alusta muuttuu alta."
Sillä alustan muuttumisella ei ole merkitystä kun ne rajapinnat kuitenkin saa joka paikkaan. POSIX, X11 ja C vakioitiin 85-89, OpenGL ja jpeglib on josain -92, pnglib ja zlib on vuodelta -96, C on vakioitu -98, LSB alkoi muotoutumaan 2001 ja 2004 alkoi olla vakioitunut, GTK:n voi sanoa olevan tällöin jo niin mature että se ei enää elä.
Eli tosiaankin, kaikkia rajapintoja on kehitetty vuosikymmeniä ja vakioitu, ne nimenomaan _EI_ lähde alta pois. Se on .NET:n ongelma, että alusta voi lähteä alta pois. Laadukas softa tehdään vakioiduille standardiratkaisuille jotka ei mainittavasti elä. Toisin sanoen, toimivat käytännössä kun sanoo "make" ja se tarvii tehdä käyttöjärjestelmäkohtaisesti. Softa sitten elää vuosikymmeniä. Noin esimerkiksi, jos on koodannut
K&R C:tä (joka on vuodelta -78), toimisi tämä 30v vanha C-koodi vielä nykypäivänä. Vuosikymmenien aikana on alustoihin tullut lisää rajapintoja jotka mahdollistaa enemmän asioita kuin se perus C-kieli, ja C-kielen virkakin on jäänyt lähes täysin kirjastoihin koska se on siellä kaiken pohjalla jota voidaan kutsua kaikista ohjelmointikielistä. Näille se softa kannattaa tehdä, ei lähde alusta pois alta ainakaan vielä toiseen 30v.
"Windowsi on aika suuri oletus kun noilla asiakkailla tuntuu olevan käytössä lähes pelkkiä Windosilla pyöriviä koneita."
Windowseilla voi käyttää käytännössä kaikkia vakiokirjastoja, joten jos haluaa tehdä laadukasta softaa, Windowsit ei ole este.
"Nykyään tehdään paljon laadukasta softaa joka toimii vain yhdellä alustalla."
No eihän se sitten toimi jos ei saa mitenkään _toimimaan_ siinä missä haluaa.
"Javan kanssa taas on nähty sitäkin, ettei vanhemmalla versiolla aikanaan tehty softa toimikaan moitteetta."
Joo-o. Javan kehitys aloitettiin 90-luvun alussa, eka versio joskus -96 mutta kypsyminen alkoi vasta -98. Kypsäksi sitä voi sanoa olevan oikeastaan vasta 2007 kun se koodi avattiin.
"Avattu lähdekoodi taas ei juurikaan auta asiaa koska sitä ei voi käytännössä mennä itse sörkkimään."
Itseasiassa vaikuttaa. Jos Javasta ilmenee joku fataali yhteensopimattomuus tai se rikotaan, siitä tarvittaessa voidaan ottaa edellinen versio ja ylläpitää sitä jos joku muu ei sitä tee. Sorsa kun on esillä niin kyllähän sen kääntää mihin haluaa. Käytännössä käyttisvalmistajat ylläpitää edellisiä versioita Javasta niin pitkään kuin tukevat käyttistä. Solariksella tuki olisi 10v, Susella, Red Hatilla ja CentOS:lla 7v. Vuosi tai pari menee joustoaikaan, joten vaikka särkyisi niin harvoin tarvitsee mitään käännellä tai itse vaivautua muokkaamaan koodia.
Sitä koodin kääntämisen uudelleen tarvetta on turha pelätä. Se kuuluu softan ylläpitoon, koska aina sitä vuosikymmenien aikana pieniä muutoksia tapahtuu. Kyse onkin siitä, että kuinka pienellä työllä sitä softaa ylläpidetään ne vuosikymmenet ilman mitään idioottimaisuuksia kuten virtualisoituna ajamista.
"Ympäristö pitää kuitenkin määritellä jotenkin eikä jonkun rajauksen tekeminen ole useimmiten mikään ongelma."
Vaikka 300MHz/64Mt...3GHz/16core/64Gt, _kaikki_ käyttöjärjestelmät johon saa C/C kääntäjän tai C#/Java/Python -ympäristön.
Käytännössä ei tarvitse mitään rajata pois. Kyse on siitä minkä kielen valitsee, ja näistä C# ja Python ovat hieman häviöitä tällä hetkellä. C#:a toki voi käyttää, senkun käyttelee niitä vakioituja kirjastoja ja BCL:ää mutta .NET:n epästandardeista ratkaisuista kannattaa pysyä kaukana jos haluaa tehdä laatua ilman mitään kummallisia rajaamisia johonkin Windowseihin, koska paremmilla ratkaisuilla näin ei tarvitse tehdä.
Tähän kohtaan on minunkin pakko pistää lusikka soppaan, pahoittelut sivuhuutelusta.
"Windowsi on aika suuri oletus kun noilla asiakkailla tuntuu olevan käytössä lähes pelkkiä Windosilla pyöriviä koneita."
Mun päivätyössä on muutamia Windows-työasemia, kaikki palvelimet on joko Solarista tai Linuxia. Oman yrityksen asiakkailla sama asia, Windowsia käytetään ainoastaan joissain vähemmän tärkeissä työasemissa, jotka on asennettu ainoastaan sen takia kun jotain ohjelmaa ei ole saatu kohtalaisella vaivalla toimimaan muulla alustalla.
Toki edelleen työasemissa Windowsilla on hallitseva osuus, mutta minä en ainakaan jaksa alkaa tekemään useammalle käyttöjärjestelmälle omia versioita ohjelmista. Pääsen vähemmällä kun käytän alustaa, joka toimii "kaikkialla", nyt ja tulevaisuudessa.
"Ympäristö pitää kuitenkin määritellä jotenkin eikä jonkun rajauksen tekeminen ole useimmiten mikään ongelma."
Meinaat että sinä softatoimittajana määrität asiakkaan vaihtamaan Solaris-palvelimet Windowsiin? Voihan sitä yrittää, mutta veikkaan että siinä meni se kauppa.
No suuri osa niistä softista joita tehdään, toimivat työasemilla ja palvelimilla. Työasemilla ne halutaan pyörimään Windowsilla yleensä ihan jo asiakkaiden pyynnöstä ja palvelimella taas... No, sanotaan niin, että noissa softissa joku C :lla tehty hinnoitellaan todellakin niin paljon kalliimmaksi, että asiakas ostaa käytännössä sen .NET:n päälle tehdyn ratkaisun.
Javalla tilanne on aika lailla sama sikäli, että sen päälle on aika ikävää ja kallista tehdä käyttöliittymää. Ainakin Visual Studiolla tehtyyn ratkaisuun verrattuna, ettei tätä tarvitse kovin kauan miettiä.
Niin, ja ne kalliimmat ratkaisut ovat ihan oikeasti hinnaltaan kilpailukykyisiä. Tuo toinen puoli vain on niin paljon tuottavampaa, että ne voidaan hinnoitella halvemmiksi ja silti paremmille katteille.
Että ei softatoimittaja määrää mitään, mutta hinnoittelulla asioita voi johdatella aika kivasti.
Jos haetaan mahdollisimman hyvää kieltä mahdollisimman laajalla kattavuudella...
JavaEE varmasti palvelinpuolelle, SymppariC kännyköihin, .NET ja C# työasemille tehtäviin hommiin. Riippuu ihan siitä mitä tekee.
Varmaan se Rubykin sopii johonkin oikein hyvin, mutta tuskin vaikka kännyköihin.
"JavaEE varmasti palvelinpuolelle, SymppariC kännyköihin, .NET ja C# työasemille tehtäviin hommiin."
Java kyllä palvelimessa on kova, mutta kännyköissä Symbian on kuoleva-alusta. C :aa käytetään mutta Qt:n varmaan menee kun Nokia meni sen Trolltechin ostamaan.
C# työasemissa on häviö. C :lla on vahvempi ekosysteemi ja C# tarjoaa kuitenkin aika vähän etuja. Garbage collection jonka saa C :nkin ei paljoa hyödytä kun hitaampi suorituskyky ja riippuvaisuus jostain virtuaalikoneesta on miinusta.
...niin vaikka Symbian olisi kuinka kuoleva järjestelmä kännyköissä, ei se ole nyt kuollut vaan yleisin mitä löytyy ja siksi paras alusta yleisyytensä vuoksi on juuri tämä C ja symppari.
Ainahan voi koittaa veikata seuraavaa voittajaa, mutta siinä on riskinsä ja kuitenkin alussa kohdeyleisöä on vähemmän kuin muilla. Ehkä tuo iPhonen puoli voisi olla parempi sinänsä, että porukka lataileekin softia aika rajusti, mutta joku QT kännyköissä on nykyisellään aika yhtä tyhjän kanssa.
C# häviö? Meinaatko, ettei sillä C :lla tehdä nykyisin uusia aloitettavia projekteja ollenkaan sen saman Frameworkin päälle? Riippuvaisuus virtualikoneesta taas on suunnilleen sama asia kuin riippuvaisuus mistä tahansa apista.
"C# häviö?"
Selvästi hitaampi kuin C ja tarvitsee jonkun virtuaalikoneen säätämistä koneeseen. Riippuvaisuus API:sta on vähän eri juttu kun joka laitteessa on jo joku API ja se mitä ei ole standardeissa voidaan paketoida mukaan. Kas kun C :lla voi käyttää rajapintaa joka wrapperoituu joka paikkaan. GTK esimerkiksi olisi hieno, se on jo ISO standardointiprosessissa ja löytyy LSB-standardista, on suunniteltu wrapperoitumaan mille tahansa pinnalle, natiiviulkoasun saa widgetteihin tai halutessaan vaikka täysin softakohtaisen skinin.
Haittapuoli on se, että joka käyttikselle ja oikeastaan arkkitehtuurillekin tarvii oma asennuspaketti kun Javalla voisi selvitä yhdellä. Kas kun siinä virtuaalikoneessa on kaikki mukana
C#:lla taas tarvii joka käyttikselle edelleen sen asennuspaketin, on hidas ja tarvii sen virtuaalikoneen asennusta. Eli mikä on sen C#:n hyöty? Kyllä, siinä garbage collector ja sellaisenkin saa halutessaan C :n.
..ja paljonko tämä selvästi hitaampi on? Kantojen kanssa nopeus riippuu paljon kannan nopeudesta ja ajuripuolella noissa toimitaan muutenkin aika paljon. Raakaa laskentaa tehdään tietenkin joissain softissa, mutta kuinka monissa loppujen lopuksi kuitenkaan?
Toisaalta taas joku GTK on varmasti rajapintana ihan kiva, mutta löytyykö se Visual Studioon tai sitä tasoltaan vastaavaan IDEen pluginina tai vastaavana jota olisi yhtä helppoa käyttää kuin Visual Studiota .NET:n kanssa? Toisaalta taas sen kanssa pitää luottaa siihen, että GTK:n toteutus tulee toimimaan uusissa Windowseissa ja vastaavissa ympäristöissä. Ilman sitä yhteensopivuutta softa lakkaa toimimasta ja taas ollaan riippuvaisia jostain kolmannen tahon välikappaleesta.
Javan virtuaalikone taas on juuri samaa asiaa mistä puhut ensimmäisessä kappaleessasi. Tarvitsee jonkun virtuaalikoneen säätämistä koneeseen ja yhteensoivuuskin vanhojen versioiden kanssa on aika paljon niin ja näin verrattuna .NET:n malliin. Näin käytännössä koska eri Frameworkit ajetaan omissa ympäristöissään eikä uusin yritäkään, koska se ei ole tarkoituksenmukaista, olla yhteensopiva vanhojen binäärien kanssa.
Garbage collectionin saa varmasti myös C :n puolelle, mutta mitä rajapintaa tai frameworkkiä se käyttää siinä tapauksessa?
Lisäksi se .NET:n frameworkki tai frameworkit tulevat oletuksena mukana uusissa Windowseissa. Ei tarvitse säätää mitään.
"..ja paljonko tämä selvästi hitaampi on?"
Vähintään 2X hitaampi. Voi olla reippaasti enemmänkin tapauksesta riippuen.
"Raakaa laskentaa tehdään tietenkin joissain softissa, mutta kuinka monissa loppujen lopuksi kuitenkaan?"
Tuota miniläppäriä kun käytin ja pistin virransäästön päälle niin lähes kaikki suorituskyky tuntui olevan CPU:sta jos jostain kiinni. Tai vaihtoehtoisesti huonossa koodissa.. Se vaan tuntuu käyttöliittymän tahmeutena tai muuta vastaavaa.
"Toisaalta taas joku GTK on varmasti rajapintana ihan kiva, mutta löytyykö se Visual Studioon tai sitä tasoltaan vastaavaan IDEen pluginina tai vastaavana jota olisi yhtä helppoa käyttää kuin Visual Studiota .NET:n kanssa?"
Ehkä kannattaisi kysyä Microsoftilta sitä. Ei softaa IDE:jen mukaan tehdä vaan koodin sisäisen eheyden mukaan. Se koodi kuitenkin laatukamalla kestää vuosikymmeniä kun IDE:jä ja käyttöjärjestelmiä tulee ja menee. GTK:n käyttöliittymiä kyllä pystyy piirtämään vaikka Gladella.
"Toisaalta taas sen kanssa pitää luottaa siihen, että GTK:n toteutus tulee toimimaan uusissa Windowseissa ja vastaavissa ympäristöissä."
GTK on jo liki standardikamaa, ei se mihinkään kuole. On jo ISO:n standardointiprosessissa osana LSB:tä. Lisäksi se ei ole mitenkään riippuvainen alla olevasta tekniikasta vaan sen voi wrapata mille tahansa pinnalle. Siksi se toimiikin nykyään joka paikassa. Windowseissa se toimii niin Win32:n kuin unix -alijärjestelmän päällä. Ehdottomasti varmin GUI-rajapinta tulevaisuudessa.
Windowseilla ei ole mitään merkitystä, sillä jos Microsoft särkee Windowsit (huomauttaisin että Microsoft on jo ilmoittanut Windowsien seuraajan olevan työnalla) niin eipä ole mitään merkitystä sillä GTK toimii taatusti jossain toisessa työasemakäyttiksessä. GTK on lähes jokaisessa X:ää käyttävässä käyttiksessä natiiviratkaisu ja usein jopa oletuksena työpöytäsoftassa. .NET on kovin epävarma. Milläs sitä emuloidaan tulevaisuudessa ja millä ihmeen välikappaleella? Samanlaista nysvää kuin 15v takaisten Visual Basic softien ajo joita suunnilleen ajetaan virtuaalisoituna..
"Ilman sitä yhteensopivuutta softa lakkaa toimimasta ja taas ollaan riippuvaisia jostain kolmannen tahon välikappaleesta."
Kuten sanoin niin tämä on .NET:n ongelma.
"Javan virtuaalikone taas on juuri samaa asiaa mistä puhut ensimmäisessä kappaleessasi. Tarvitsee jonkun virtuaalikoneen säätämistä koneeseen ja yhteensoivuuskin vanhojen versioiden kanssa on aika paljon niin ja näin verrattuna .NET:n malliin."
Niin tarvitsee .NET myös virtuaalikoneen säätämistä koneeseen. Jotain perkeleen frameworkkia tai Monoa joutuu nysväämään koneeseen. Ja tiedoksi vaan, mulla oli tässä käyttiksessä Java ja Mono ihan valmiina. En minä tarvitse mitään lisäpalikoita Javaohjelmistoihin.
"Garbage collectionin saa varmasti myös C :n puolelle, mutta mitä rajapintaa tai frameworkkiä se käyttää siinä tapauksessa?"
No mitä haluaa. POSIX on standardi ja kattaa kaiken matalalta tasolta. Toimii varmaan IHAN joka paikassa paitsi suunnilleen jossain Symbianeissa (joka on kuoleva alusta). SDL on kiva multimediaan. GTK kattaa GUI:n.. Valinnanvaraa siis riittää.
"Lisäksi se .NET:n frameworkki tai frameworkit tulevat oletuksena mukana uusissa Windowseissa. Ei tarvitse säätää mitään."
Ihmeen Windowskeskeistä touhua. Et ymmärrä sitä kuinka softasi täysin riippuvaista siitä Microsoftin ailahteluista. softasi voi hajota seuraavalla Windows versiolla tai seuraavalla .NET versiolla, Microsoft voi julkaista jonkun Vista -pökäleen jota kukaan ei halua käyttää, Windowsien kulut saataa kasvaa hetkessä moninkertaisesti. Periaatteessa konkurssikin on mahdollinen. GTK:lla ei tarvitse miettiä mistään perkeleen Windowseista tai muustakaan yhtään mitään. Laadukaassa softassa edelleenkin se KOODIN eheys on kaiken A ja O. Käyttöjärjestelmähän yleensä valitaan käyttötarkoituksen mukaan joten pitäisi pyrkiä siihen, että ITSE tekee laatua ja softa toimii pomminvarmasti, olkoot kyse vuosia tai vuosikymmeniä.
Toimit täysin takaperoisesti. Maailmasi kaatuu siihen jos softaa ei pysty tekemään jollain tietyllä kehittimellä tai ei toimi jollain tietyllä käyttöjärjestelmällä etkä huomioi sitä, että maailma muuttuu kokoajan. Laadukas softa kestää pitkään. Pitempään kuin nykyisin käytettävät ratkaisut joten siksi jotain paskasoftia ajetaan virtualisoituina koska ne ovat HAJONNEET. Eivät enää toimi nykymaailmassa ja uudelleenkirjoittaminen maksaisi hunajaa.
Mitä softaa ajoit miniläppärissä kun kaikki alkoi tahmaamaan? Toisaalta noissahan pistetään virransäästössä kaikki suorituskyky niin alas kuin mahdollista lopettamatta hommia ihan kokonaan.
IDE:llä se softa yleensä tehdään. Ei sen mukaan vaan sillä. Microsoftin infojen mukaan ei saisi GTK:ta Visual Studioon. Kunnon työkalut softien tekemiseen ovat kyllä ihan perusvaatimus jos tekee vähänkin monimutkaisempaa.
Ei se GTK varmaan kuole mihinkään. Pointti oli vain siinä, että semmoisenkin palikan kanssa softa on aina kuitenkin riippuvainen jostain rajapinnasta ja siitä miten se on toteutettu jollekin tietylle alustalle. Varmaan tuokin toimii Vistassa ihan ok, mutta mitäs jos ei toimisi? Ajatus siitä, että käyttistä voisi vaihtaa noin vain, ei vain yleensä toimi koska kaikkea vanhaa softaa ei vain saa siirrettyä noin vain.
Usein noita maksullisiakin softia ostetaan tietylle käyttikselle eikä lisenssiin kuulu oikeutta ladata tai käyttää toiselle käyttikselle käännettyä toteutusta. Kun yrittää vaihtaa käyttiksestä toiseen, tämä on heti vastassa. Tähän ei paljoa auta rajapinta jolla softan saa käännettyä toiselle käyttikselle. Tai softan kääntäminen uudelleen uutta rajapintaversiota tukevaksi. Jos vanha softa ei toimi niin ei se toimi jatkossakaan ellei sitä käännetä uudelleen.
Rajapinnan toimivuus ei siis ole ollenkaan vain .NET:n ongelma.
Ihan samalla tavalla kuin sinulla oli Javat ja Monot käyttiksessäsi valmiina, minulla oli tässä valmiina .NET Framework eikä mitään säätämistä mihinkään suuntaan tarvittu. Eikä tuon asennus muutenkaan mitään ihmeellistä säätämistä vaadi. Oletko joskus kokeillut ja mikä siinä meni säädöksi?
Näkemys .NET:n tuesta tulevaisuudessa on meillä kovin erilainen.
Vähän kyllä kuulostaa melkoiselta vähättelyltä jos sanot, ettei Windowseilla ole mitään merkitystä. Kuitenkin ylivoimaisesti käytetyin käyttis.
Ei se maailmani kaadu mihinkään jos softaa ei voi tehdä yhdellä tietyllä kehittimellä. Eclipsellä on ihan mukava tehdä Javaa ja Visual Studiolla softia joissa on vaikka käyttöliittymäpuoltakin. Kännypuolelta valitsisin kuitenkin sen Symbianin ja C :n jos tarkoitus olisi tehdä kännykkäsoftaa. J2ME sopii myös tuonne aika moneen paikkaan vaikka ei olekaan lähellekään alustariippumatonta. Erikoistapauksessa sitä voisi ajatella tekevänsä
kännysoftaa myös .NET:n puhelinversioilla koska onhan noita laitteita sentään jonkun verran. Tulevaisuudessa sitten mennään jollain muilla, mutta olemassaolevan laitekannan mukaan nämä kannattaa laitella mobiilipuolella.
Jos Visual Studiota parempia, tai käytettävyydeltään yhtä hyviä IDE:jä löytyy, niin totta kai niihin voisi ajatella vaihtavansa. Nyt tuo vain on aika ylivoimainen. Tuottavuus on vain niin paljon suurempi.
"Mitä softaa ajoit miniläppärissä kun kaikki alkoi tahmaamaan?"
Ei siinä kaikki tahmannut, mutta lähinnä näytti siltä, että selain ja pari peliä olisi tykännyt nopeammasta prossusta.
"Microsoftin infojen mukaan ei saisi GTK:ta Visual Studioon. Kunnon työkalut softien tekemiseen ovat kyllä ihan perusvaatimus jos tekee vähänkin monimutkaisempaa."
No onhan niitä työkaluja, ei tarvitse välttämättä Microsoftin työkalulla tehdä jos se ei tue kestäviä ratkaisuja.
"Pointti oli vain siinä, että semmoisenkin palikan kanssa softa on aina kuitenkin riippuvainen jostain rajapinnasta ja siitä miten se on toteutettu jollekin tietylle alustalle."
Niin, sama pätee .NET:n mutta se vaan on epävarmempi ratkaisu kuin GTK:n. Sen lisäksi, että GTK toimii nykyäänkin paremmin kun .NET on oudosti rajoittunut Microsoftin käyttöjärjestelmiin.
"Varmaan tuokin toimii Vistassa ihan ok, mutta mitäs jos ei toimisi?"
GTK toimii varmemmin Vistassa kuin .NET Solariksessa. Microsoft nykyään tarjoaa paremmin standardia POSIX-ympäristöä kuin aikaisemmin, että varmempi se on joka tapauksessa pyörittelee asiaan miten päin tahansa.
"Jos vanha softa ei toimi niin ei se toimi jatkossakaan ellei sitä käännetä uudelleen."
Kääntäminen on pieni vaiva. .NET:llä on edessä softan uudelleen kirjoitusta enemmän ja vähemmän tulevaisuudessa kun se .NET on kovin epävarma. Kannattaa myös huomioida se, että Microsoft ei ole mitenkään kovin varma alustatoimittaja. Käytännössä kaikki tekee aina parempia käyttiksiä mutta Microsoftilta tulee välillä jotain ihme pommeja kuten Dos 4, Widows Me tai Windows Vista.
"Eikä tuon asennus muutenkaan mitään ihmeellistä säätämistä vaadi. Oletko joskus kokeillut ja mikä siinä meni säädöksi?"
Jotain framewörkkiä piti Windows Updatesta laittaa.
"Näkemys .NET:n tuesta tulevaisuudessa on meillä kovin erilainen."
No minä pysyn faktoissa. .NET on epästandardi ja epästandardit jutut, etenkin sellaiset joita ei kehitetä yhteistyössä hajoavat. Onhan näitä esimerkkejä vaikka jostain D:stä tai Visual Basicista..
"Vähän kyllä kuulostaa melkoiselta vähättelyltä jos sanot, ettei Windowseilla ole mitään merkitystä."
Maailmassa on satoja käyttöjärjestelmiä. Windowsit on näistä vain muutamia. Lisäksi Windowsit on käytetyimpiä ainoastaan työasemassa.
Selaimesi taitaa olla joku joka on käännetty noiden geneerisempien rajapintojen kautta. Optimointia on hankalaa tehdä mahdollisimman tehokkaasti silloin kun kohdealustaa ei ole tiedossa.
Onhan noita muita työkaluja, ettei tarvitse käyttää Visual Studiota, mutta mitä ne ovat? Pitäisi löytää softankehitykseen yhtä hyvää tai parempaa jotta vaihto kannattaisi.
GTK:n toimiminen Vistassa joten kuten ei riitä. Sen pitäisi toimia moitteettomasti jotta sitä voisi edes harkita käyttävänsä tilanteessa jossa vaihtoehtoinen .NET toimii loistavasti niissä koneissa joille softaa halutaan tehtäväksi. Asiakkaillekaan kun en tunnu olevan useimmiten mikään ongelma vaikka hankkia uutta Windowsilla pyörivää konetta jos ja kun softalle pitäisi olla kuitenkin oma palvelimensa. Raudan ja käyttiksen ylläpito kun on kuitenkin ollut vain murto-osa itse järjestelmän arvosta.
Frameworkkia Windows Updatesta? Eikös näitä Linuxeja päivitetä sitten koskaan? Vähän samanlaiselta vaikuttaa. Tosin vähän vaikuttaa siltä, että .NET ohjelma osasi sanoa sinulle, että tarttisi antaa nyt lupa Frameworkin asentamiseen melkein automaattisena latauksena kun koneessa ei sitä ollut. Aika helppoa. Paljon helpompaa kuin laittaa vaikka Java semmoiseen koneeseen jossa sitä ei ollut aiemmin.
VB:n hajoaminen nyt on vähän niin ja näin. Vanhat softat toimivat XP:ssäkin ihan ok kunhan asennat ne sinne oikein. Vistassa en ole noita pahemmin kokeillut joten en sano mitään. Toisaalta ihan samalla tavalla jotkut vanhat binäärit joita ei käännetä uusiksi, eivät toimi uudemmissa koneissa joissa on uusi Winni vaikka olisi kuinka avointa rajapintaa välissä. Ja uusien binäärien hankkiminen taas on monasti melko hankalaa.
Windowsit ovat käytetyimpiä työasemissa ja kohtuullisessa määrin käytettyjä palvelimissakin. Useimmissa PK-yrityksissä on muuten lähes poikkeuksetta palvelimena Winni ihan siksi, että sama henkilö osaa ylläpitää myös työasemia mahdollisimman pienellä vaivalla.