C# vai Java?

Kertokaas nyt palstan visionäärit mielipiteenne, kannattaako tulevaisuuden työnsaannin kannalta opetella C# vai Java-ohjelmointia?

Microsofthan on ilmoittanut, että tulevan Windows Vistan ohjelmat perustuvat hyvin pitkälti .NET-arkkitehtuuriin, eli toisin sanoen pääasiassa C#-ohjelmiin. Jossain oli jopa arveltu, että natiivikoodiohjelmat poistuisivat lähes kokonaan.

Itse en periaatteesta pidä Microsoft-vetoisista tuotteista, ja siksi opettelisin mieluummin Javaa. Pitäisikö tulevaisuuden kannalta kuitenkin luopua periaatteista ja alkaa nöyrästi opiskelemaan C#-ohjelmointia?
303581
Äänestä

Muut lukivat myös

Vastaukset 30

Vanhimmat

ainakin net arkkitehtuuri osata, kielellä tuskin niin väliä kun c# ei ole ainut vaihtoehto, mutta veikkaisin että se tulee syrjäyttämään c :an ainakin windows-sektorilla.

java on kuoleva kieli koska ainut joka sitä pitää pystyssä on sun ja ibm joten sen jälkeen kun sen osaa, voi sen unohtaa koska vaikka moni työpaikka arvostaa sen osaamista, oikeat sovellukset tehdään joko c :lla tai visual basicilla.

Äänestä
  • Millä kompetenssilla mahdat mielipiteesi kertoa? Ihan vaan sen vuoksi, jotta osaa arvioida mielipidettä paremmin.

    Äänestä

  • ****** kirjoitti:

    Millä kompetenssilla mahdat mielipiteesi kertoa? Ihan vaan sen vuoksi, jotta osaa arvioida mielipidettä paremmin.

    Sivusta seuraajana.. edellisen kirjoittajan tasosta taitaa oleellisen kertoa tämä;

    "oikeat sovellukset tehdään joko c :lla tai visual basicilla"


    Mutta kuten täällä on monta kertaa sanottu, kielen valinta on aika pieni osa ohjelmoinnin opettelua. C# on ihan ok kieli, jos ei välitä sen alustariippuvuudesta. Java edelleen yleisin kieli, eikä taida olla kovin nopeasti tuo muuttuakaan (esim. Linux- tai Symbianpohjaiset mobiilipäätelaitteet).

    http://www.tiobe.com/tpci.htm

    Mutta riippuu mitä haluaa, minä suosittelen kuitenkin Javaa.

    Äänestä

  • > oikeat sovellukset tehdään joko c :lla tai visual
    > basicilla.

    miten voi saada samaan lauseeseen mahtumaan käsitteet "oikeat sovellukset" ja "visual basic"? ;)

    vakavasti, ei java ole mihinkään kuolemassa, sitä käytetään serveripäässä hyvin paljon, luultavasti paljon enemmän kuin .net-frameworkkia. Etuina on kuitenkin useita toimivia sovelluspalvelinvaihtoehtoja (weblogic, jboss, tomcat..), paljon tarkasti standardoituja ja hyvin toteutettuja tekniikoita (J2EE yms.), paljon toimivia, kattavia ja halpoja/ilmaisia kirjastoja, hyviä halpoja/ilmaisia sovelluskehittimiä (eclipse, nerbeans yms.), alustariippumattomuus, hyvin dokumentoitu ja "mature" kieli.. näitähän riittää.

    Ja asiakaspäässä sovellukset ovat pikku hiljaa siirtymässä selainpohjaisiksi, jolloin nekin pitkälti koodataan palvelinpään tekniikoilla. Joten en nyt huutelisi mitään javan kuolemasta ja voin sanoa, että sitä kieltä on hyvä osata jatkossakin.

    Äänestä

  • fidel1 kirjoitti:

    > oikeat sovellukset tehdään joko c :lla tai visual
    > basicilla.

    miten voi saada samaan lauseeseen mahtumaan käsitteet "oikeat sovellukset" ja "visual basic"? ;)

    vakavasti, ei java ole mihinkään kuolemassa, sitä käytetään serveripäässä hyvin paljon, luultavasti paljon enemmän kuin .net-frameworkkia. Etuina on kuitenkin useita toimivia sovelluspalvelinvaihtoehtoja (weblogic, jboss, tomcat..), paljon tarkasti standardoituja ja hyvin toteutettuja tekniikoita (J2EE yms.), paljon toimivia, kattavia ja halpoja/ilmaisia kirjastoja, hyviä halpoja/ilmaisia sovelluskehittimiä (eclipse, nerbeans yms.), alustariippumattomuus, hyvin dokumentoitu ja "mature" kieli.. näitähän riittää.

    Ja asiakaspäässä sovellukset ovat pikku hiljaa siirtymässä selainpohjaisiksi, jolloin nekin pitkälti koodataan palvelinpään tekniikoilla. Joten en nyt huutelisi mitään javan kuolemasta ja voin sanoa, että sitä kieltä on hyvä osata jatkossakin.

    Kyllä minusta Java on kelvollinen ja nykyisin tunkemassa mukaan myös ammattitason peliohjelmointiin. Koska täytyy kysyä, oletan että rahalla on kysyjän mielestä jotain tekemistä. Koululaiset kun ohjelmoivat niillä kielillä, millä opettajat käskevät. Alalla työskentelevät puolestaan tietävät mitä kieltä tahtovat käyttää.

    Itse en laisinkaan ymmärrä moppauskampanjoita. C# saattaa tosin olla jonkin asteinenriski, koska on kovin uusi.

    Äänestä

  • fidel1 kirjoitti:

    > oikeat sovellukset tehdään joko c :lla tai visual
    > basicilla.

    miten voi saada samaan lauseeseen mahtumaan käsitteet "oikeat sovellukset" ja "visual basic"? ;)

    vakavasti, ei java ole mihinkään kuolemassa, sitä käytetään serveripäässä hyvin paljon, luultavasti paljon enemmän kuin .net-frameworkkia. Etuina on kuitenkin useita toimivia sovelluspalvelinvaihtoehtoja (weblogic, jboss, tomcat..), paljon tarkasti standardoituja ja hyvin toteutettuja tekniikoita (J2EE yms.), paljon toimivia, kattavia ja halpoja/ilmaisia kirjastoja, hyviä halpoja/ilmaisia sovelluskehittimiä (eclipse, nerbeans yms.), alustariippumattomuus, hyvin dokumentoitu ja "mature" kieli.. näitähän riittää.

    Ja asiakaspäässä sovellukset ovat pikku hiljaa siirtymässä selainpohjaisiksi, jolloin nekin pitkälti koodataan palvelinpään tekniikoilla. Joten en nyt huutelisi mitään javan kuolemasta ja voin sanoa, että sitä kieltä on hyvä osata jatkossakin.

    >Etuina on kuitenkin useita toimivia
    >sovelluspalvelinvaihtoehtoja (weblogic, jboss,
    >tomcat..)

    Millä kompetenssilla laitoit sanat 'toimiva' ja jboss samaan lauseeseen? Jbossista kun ei ole kuin pelkkää haittaa. Keskeneräinen tekele.

    Äänestä

  • Herra K kirjoitti:

    >Etuina on kuitenkin useita toimivia
    >sovelluspalvelinvaihtoehtoja (weblogic, jboss,
    >tomcat..)

    Millä kompetenssilla laitoit sanat 'toimiva' ja jboss samaan lauseeseen? Jbossista kun ei ole kuin pelkkää haittaa. Keskeneräinen tekele.

    Java ja C# etc ovat samanlaisia kieliä. Kun osaa ohjelmoida, osaa ohjelmoida. Syntaksit ja pikkukikat asettuvat kohdalleen kun koodaa jotain sen 1000-10 000 riviä. Scripti-kielillä kannattaa protoilla ja Visual Basic:ä kannattaa opetella jos joutuu nöyristelemään ja tekemään Excel-apinan hommia kuten makroja.

    Oikeesti esim. web-työssä pitää olla tuttu XML, CSS , HTML yms kanssa. Useimmat ohjelmointivälineet kuten Ecliple, IBM Rational..., Visual Studio 2005 antavat aloittevalle hienon lupauksen että homma on helppa eikä sinun tarvitse ymmärtää esim. webistä ja protokollista, mutta hyvin pian huomaa että tässähän pitää ymmärtää enemmän...

    Jboss on tekele, mutta niin on ASPit ja kaikki. Kaikki ne ovat tekeleitä, jotka on dokumentoitu joskus hyvinkin, mutta aina sieltä löytyy vähintään ne dokumentoimattomat alueet kuten virheet ja muut kummallisuudet.

    Työtä tekemällä oppii ja jos ohjelmoinnilla haluaa elättää itsensä niin pitää muistaa että intiasta ja kiinasta meitä saa murto-osan hinnalla eli tuottavuuden ja laadukkaiden tulosten pitää olla ykkössijalla ja kohta huomaat että ohjelmoinnin sijasta oletkin jo määrittelypelle ulkomaan ohjelmointipelleille :-)

    Äänestä

  • fidel1 kirjoitti:

    > oikeat sovellukset tehdään joko c :lla tai visual
    > basicilla.

    miten voi saada samaan lauseeseen mahtumaan käsitteet "oikeat sovellukset" ja "visual basic"? ;)

    vakavasti, ei java ole mihinkään kuolemassa, sitä käytetään serveripäässä hyvin paljon, luultavasti paljon enemmän kuin .net-frameworkkia. Etuina on kuitenkin useita toimivia sovelluspalvelinvaihtoehtoja (weblogic, jboss, tomcat..), paljon tarkasti standardoituja ja hyvin toteutettuja tekniikoita (J2EE yms.), paljon toimivia, kattavia ja halpoja/ilmaisia kirjastoja, hyviä halpoja/ilmaisia sovelluskehittimiä (eclipse, nerbeans yms.), alustariippumattomuus, hyvin dokumentoitu ja "mature" kieli.. näitähän riittää.

    Ja asiakaspäässä sovellukset ovat pikku hiljaa siirtymässä selainpohjaisiksi, jolloin nekin pitkälti koodataan palvelinpään tekniikoilla. Joten en nyt huutelisi mitään javan kuolemasta ja voin sanoa, että sitä kieltä on hyvä osata jatkossakin.

    Aika turhaa lähteä mollaamaan visual pasikkia sen perusteella, että on joskus saanut allergian VB3:sta tai ehkä jopa kutosesta. Toi .NET on kuitenkin niin erilainen härpäke.

    Kantsii miettiä sitäkin, kummalle koulutetaan enemmän tekijöitä, .NET:lle vai Javalle ja paljonko hommia niilä on. .NET on se reippaasti vähemmän koulutettu ja vaikka kielestä siirtyy toiseen aika kivasti, niin ei se ole ollenkaan kaikki mitä tollasessa siirtymässä on. Pitää vielä tuntea se ympäristökin. Ei se alustariippumattomuus ole suuremmissa hommissa kuin kaunis sana. Niin, poislukien noi selaimet ja kourallinen suuria siirrettäviä ohjelmia joista niistäkin vain aniharva tehään Javalla.

    Mutta, kyllä Javahommissakin töitä on.

    Äänestä

  • epsilon64 kirjoitti:

    Java ja C# etc ovat samanlaisia kieliä. Kun osaa ohjelmoida, osaa ohjelmoida. Syntaksit ja pikkukikat asettuvat kohdalleen kun koodaa jotain sen 1000-10 000 riviä. Scripti-kielillä kannattaa protoilla ja Visual Basic:ä kannattaa opetella jos joutuu nöyristelemään ja tekemään Excel-apinan hommia kuten makroja.

    Oikeesti esim. web-työssä pitää olla tuttu XML, CSS , HTML yms kanssa. Useimmat ohjelmointivälineet kuten Ecliple, IBM Rational..., Visual Studio 2005 antavat aloittevalle hienon lupauksen että homma on helppa eikä sinun tarvitse ymmärtää esim. webistä ja protokollista, mutta hyvin pian huomaa että tässähän pitää ymmärtää enemmän...

    Jboss on tekele, mutta niin on ASPit ja kaikki. Kaikki ne ovat tekeleitä, jotka on dokumentoitu joskus hyvinkin, mutta aina sieltä löytyy vähintään ne dokumentoimattomat alueet kuten virheet ja muut kummallisuudet.

    Työtä tekemällä oppii ja jos ohjelmoinnilla haluaa elättää itsensä niin pitää muistaa että intiasta ja kiinasta meitä saa murto-osan hinnalla eli tuottavuuden ja laadukkaiden tulosten pitää olla ykkössijalla ja kohta huomaat että ohjelmoinnin sijasta oletkin jo määrittelypelle ulkomaan ohjelmointipelleille :-)

    "Kun osaa ohjelmoida, osaa ohjelmoida. Syntaksit ja pikkukikat asettuvat kohdalleen kun koodaa jotain sen 1000-10 000 riviä."

    Ei se nyt ihan noin mene. Ensinnäkin koulusta tullessaan useimmat eivät osaa kunnolla ohjelmoida - ihan sama mikä Suomen koulu on kyseessä. Toiseksi jokaisessa kielessä on nykyään niin valtavat kirjastot ja kaikenlaista muuta (Javassa mm. aspectit ja J2EE jutut.) joka pitäisi osata, että olisi oikeasti hyvä, että opeteltavaa riittää.

    Toisaalta on kyllä niinkin, että kun on vuosia suunnitellut ja kirjoittanut koodia, niin kyllähän sitä paljon nopeammin siirtyy kielestä toiseen.

    Alkuperäiselle kysyjälle vastaisin, että valitse Java, koska mielestäni sille löytyy enemmän hyvää ohjelmointikulttuuria. Eli löytyy ihmisiä, jotka ovat kirjoittaneet kirjoja hyvästä ohjelmoinnista Javalla. .NET leiri on mielestäni enemmän kunnostautunut äkkiä-valmista-nyt ajattelussa, eikä siinä ole mitään pahaa, mutta siitä ei opi kauheasti uutta. Mutta toisaalta olisi varmaan hyvä oppia koulussa hiukan molempia ja vapaa-ajalla lisää ja sitten töissä tulee se todellinen ammattitaito siihen, mitä siellä tarvitaan.

    Äänestä

Millä perusteella natiiviohjelmat katoavat? Siksikö että ne ovat niin nopeita?
Mihin väitteesi perustuu (tietämättömyyteen vaiko markkinahuhupuheisiin)?

Aina on ollut muotisuuntauksia. Näitä välikieleen perustuvia ohjelmia on ollut jo ennen java ja C¤-aikakautta. Väitteet olivat aikanaan samantapaisia kuin nytkin. Tosin sekin muotisuuntaus tuli ja meni (ja tuli uudestaan ).

Äänestä
  • "Millä perusteella natiiviohjelmat katoavat?"

    Ne eivät ole kustannustehokkaita heterogeenisessä ympäristössä.

    On huomattavasti helpompaa ja nopeampaa (== halvempaa) käyttä Javaa jos halutaan tukea yleisimpiä serveripuolen alustoja sekä tehdä clientistä mahdollisimman alustariippumaton (tarkoittaa käytännössä selaimella käytettävää sovellusta). Raudassa riittää kyllä potkua tänäpäivänä kumoamaan Javan (ja muiden "välikielten") tuoman overheadin lähes kaikissa tapauksissa, ja etenkin jos kyseessä on verkon yli toimiva sovellus.

    Natiiviohjelmat jäänee enemmänkin "kiinteiksi" sovelluksiksi, kuten käyttikset, sekä niihin tarkoituksiin joissa raudasta pitää puristaa kaikki teho irti. Tällöinkin riittää tosin usein vain kriittisten kohtien toteutus alemman tason kielillä. Myös kotikäyttäjille suunnatut Windows-ohjelmat voidaan tehdä käytännössä millä kielellä huvittaa, koska alustariippumattomuus ei tässä tapauksessa tuo mitään etua.

    Summa summarum: Tuskin ne natiiviohjelmat mihinkään ovat katoamassa, mutta ainakin "Enterprise"-tason sovelluksissa tullaan todennäköisesti näkemään natiivikoodia yhä vähemmissä määrin.

    Äänestä

java ja c# kuolee pois.. ellei ylihuomenna niin ylihuomisen huomenna iltahämärän aikoihin!!!

Äänestä
  • Taitaapa mennä C siinä ohessa. Katoppa vaikka, mitä siihen C 0x-uudistukseen on tulossa. ROFL.

    Äänestä

Jos et halua C#:tä, Javaa tai mitään muuta turhaketta ohjelmoida,
kannattaa opetella Assembly.
Sillä voi tehä vaikka mitä jos on skilliä.

Äänestä
  • Siis vaan konekieltä suoltavaa koodigeneraattoria vääntämään. Toiselta nimeltään kääntäjä.

    Äänestä

  • Korkean tason lausekielten kääntäjät ovat nykyisin aika pahuksen taitavia optimoimaan. Keskiverto assemblerin käyttäjä yleensä tuskin pääsee samaan. Työn tuottavuus on myös ihan eri luokkaa korkean tason kielten kanssa.

    Äänestä

  • paljon hikeä, vähän villoja kirjoitti:

    Korkean tason lausekielten kääntäjät ovat nykyisin aika pahuksen taitavia optimoimaan. Keskiverto assemblerin käyttäjä yleensä tuskin pääsee samaan. Työn tuottavuus on myös ihan eri luokkaa korkean tason kielten kanssa.

    Eli kun pitää vektoroitu (SIMD) algoritmi toteuttaa (sisin looppi siitä siis), käsin koodattu assembler on yhä kuningas. Myös jos pitää koodin kokonaismäärä pitää pienenä, jotta mahtuu enemmän cacheen, ihminen voittaa. Käyttöjärjestelmien tietyissä osissa ja koneen "alustuksessa" (CPU:n oikeaan moodiin asetus, yms.) bootin jälkeen konekielen osittainen käyttö on välttämätöntä.

    Muutoin kannattaa suosiolla käyttää korkeamman tason kieltä.

    Äänestä

Eiköhän toi C# ole hyvä valinta jos meinaat tehdä softaa muualle kuin serveripäähän. Tosin kyllä silläkin veivataan nykyisin ihan kivasti serverikoodia. Ei vaan ole yleisin siellä. Jos työasemiin meinaat tehdä softaa, niin Java voi olla aika köpönen valinta. Onhan noita sillä tehtyjä juttuja, mutta vähän on vähissä ne tavallisissa Windowsia pyörittävissä koneissa.

Oikeastaan mieti ensin, että meinaatko tehdä töitö Microsoftin ympäristössä vai et. Meinaatko koodata joskus koodia Linuxille työasemiin? Vai missä meinaat tehdä jotain? Webbisivujuttujahan on paljon, mutta eivät ne ole koko maailma vaikka jotkut niin uskottelevat.

Tosin Javaa osaamallahan voit noin vähän löyhästi vääntäen koodata vaikka Androidille jotain jos semmonen kiinnostaa.

Äänestä
  • on se, että se on yhden miehen show. Ja tämä kaveri pitää huolen siitä, että siirtyminen muiden asiakkaaksi on niin hankalaa kuin mahdollista. Microsoftin kehittelemiä tuotteita vastaan minulla ei ole mitään. Asiakkaiden jatkuva selkäänpuukotus kyllä ärsyttää. Ja tämän ovat maksavat asiakkaatkin huomanneet. Jos teit/ostit aikoinaan IE4-IE6 aikoina intranet-sovelluksen Microsoftin alustalle sinuakin mietityttäisi kannattaisikohan vaihtaa alustan toimittajaa. Nämä viritykset kun eivät enää toimi IE7-IE8:lla. Microsoft tuppaa aloittamaan monta "hienoa" tekniikkaa ja jättää ne sitten oman onnensa nojaan, koska resurssit suunnataan seuraavaan hienoon tekniikkaan. Javalla taas on toistakymmentä toimittajaa (IBM, Oracle ja paljon pieniä) ja tätä kautta paljon pysyvyysarvoa; voit olla varma että kieltä tuetaan myös 20 vuoden päästä.

    Kyllä C# tosiaankin kelpaa työpöytäohjelmistoihin, joita ajetaan vain Windowsilla. Kannattaakin valita kieli käyttötarkoituksen mukaan, kukaan ei kiellä käyttämästä montaa erilaista.

    Äänestä

  • koodari. kirjoitti:

    on se, että se on yhden miehen show. Ja tämä kaveri pitää huolen siitä, että siirtyminen muiden asiakkaaksi on niin hankalaa kuin mahdollista. Microsoftin kehittelemiä tuotteita vastaan minulla ei ole mitään. Asiakkaiden jatkuva selkäänpuukotus kyllä ärsyttää. Ja tämän ovat maksavat asiakkaatkin huomanneet. Jos teit/ostit aikoinaan IE4-IE6 aikoina intranet-sovelluksen Microsoftin alustalle sinuakin mietityttäisi kannattaisikohan vaihtaa alustan toimittajaa. Nämä viritykset kun eivät enää toimi IE7-IE8:lla. Microsoft tuppaa aloittamaan monta "hienoa" tekniikkaa ja jättää ne sitten oman onnensa nojaan, koska resurssit suunnataan seuraavaan hienoon tekniikkaan. Javalla taas on toistakymmentä toimittajaa (IBM, Oracle ja paljon pieniä) ja tätä kautta paljon pysyvyysarvoa; voit olla varma että kieltä tuetaan myös 20 vuoden päästä.

    Kyllä C# tosiaankin kelpaa työpöytäohjelmistoihin, joita ajetaan vain Windowsilla. Kannattaakin valita kieli käyttötarkoituksen mukaan, kukaan ei kiellä käyttämästä montaa erilaista.

    Javassa kun veivaat ratkasus jonkun alustan päälle niin hoplaa, siinä ollaan solmussa sen kanssa. Tietty homman voi toteuttaa jollain muullakin tavalla, mutta yleensä se vaan maksaa aika rutosti ilman noita pohjahommia ja uudelleen koodaaminen toiseen pohjaan maksaa taas saman mitä hoko homman tekeminen uusiksi muutenkaan.

    Aika ikäväksi menee jos haluat siirtyä Strutsista ihan toiseen ratkasuun. Tai muuta vastaavaa.

    Kovia syitä muuten pitää olla, jos alustaa tai sen toimittajaa vaihdetaan yleensäkin.

    Äänestä

  • Jepulis Jeep kirjoitti:

    Javassa kun veivaat ratkasus jonkun alustan päälle niin hoplaa, siinä ollaan solmussa sen kanssa. Tietty homman voi toteuttaa jollain muullakin tavalla, mutta yleensä se vaan maksaa aika rutosti ilman noita pohjahommia ja uudelleen koodaaminen toiseen pohjaan maksaa taas saman mitä hoko homman tekeminen uusiksi muutenkaan.

    Aika ikäväksi menee jos haluat siirtyä Strutsista ihan toiseen ratkasuun. Tai muuta vastaavaa.

    Kovia syitä muuten pitää olla, jos alustaa tai sen toimittajaa vaihdetaan yleensäkin.

    Tässä päästäänkin siitä jännään pointtiin, että C -ohjelmat on itse asiassa aika helppo tehdä porttautuviksi. Siis kunhan vaan muistaa pysyä standardifunktioissa perustoiminnallisuudessa, käyttää vain porttautuvia kirjastoja tietokanta-, verkko ynnä muihin toimintoihin ja tehdä käyttöliittyä jollain porttautuvalla systeemillä kuten wxwidgets tai QT. Jotkut ajurien käsittelyt saattaa joutua tekemään eri tavalla windowsiin, mäkkiin ja linuxeihin, mutta muutoin koodista tulee täysin porttautuvaa.

    Jos minun pitää tehdä cross-platform sovellus työpöytäympäristöön, on ainakin oma valintani edelleen C . Kaupan päälle saa helpomman porttautuvuuden sulautettuihin ja muihin erikoisempiin ympäristöihin. Javan ja C#:n hyvyyttä en ole koskaan tajunnut, vaikka niilläkin olen joutunut ohjelmoimaan. Jos ei-käännettävää kieltä kaipaan, niin sitten käytän pythonia.

    Äänestä

  • dxdy kirjoitti:

    Tässä päästäänkin siitä jännään pointtiin, että C -ohjelmat on itse asiassa aika helppo tehdä porttautuviksi. Siis kunhan vaan muistaa pysyä standardifunktioissa perustoiminnallisuudessa, käyttää vain porttautuvia kirjastoja tietokanta-, verkko ynnä muihin toimintoihin ja tehdä käyttöliittyä jollain porttautuvalla systeemillä kuten wxwidgets tai QT. Jotkut ajurien käsittelyt saattaa joutua tekemään eri tavalla windowsiin, mäkkiin ja linuxeihin, mutta muutoin koodista tulee täysin porttautuvaa.

    Jos minun pitää tehdä cross-platform sovellus työpöytäympäristöön, on ainakin oma valintani edelleen C . Kaupan päälle saa helpomman porttautuvuuden sulautettuihin ja muihin erikoisempiin ympäristöihin. Javan ja C#:n hyvyyttä en ole koskaan tajunnut, vaikka niilläkin olen joutunut ohjelmoimaan. Jos ei-käännettävää kieltä kaipaan, niin sitten käytän pythonia.

    Portattavuus on aika lailla ylimainostettua huttua. Suurinta osaa softista ei koskaan portata yhtään minnekään. Koskee myös näitä Javalla tehtyjä kikkareita joissa on aika usein kuitenkin koodattu jotain silleen kivasti, että toimii vain tietyssä ympäristössä.

    Sama menee c :n kastissa. Ainahan voi käyttää vain standardeja kirjastoja yms. mutta melko usein homma menee siihen, että käytetään niitä aitekohtaisia ja ollaan ihmeissään. Ei kaikki vaan tee kuten olisi oikein tehdä. Se olisi aika pitkälle ympäristön tai kielen homma pitää huolta siitä, että porttaus onnistuu. Aika vanhanaikasta jättää homma koodaajan muistin vastuulle. Ei siitä tule useinkaan yhtään mitään.

    Kait noita projekteja on jossa pitää tehä vaikka Mäkkiin ja sulautettuihin samaa koodia. Harvassa vaan ovat ja melkosia erikoistapauksia. Onhan niitä olemassa tietty. Ei vaan paljon.

    C#:ssa on se hyvä, että homma toimii tosi kivasti kun tehään Winukalle. Ihan loistavaa huttua saa aikaan.

    Äänestä

  • Jepulis Jeep kirjoitti:

    Portattavuus on aika lailla ylimainostettua huttua. Suurinta osaa softista ei koskaan portata yhtään minnekään. Koskee myös näitä Javalla tehtyjä kikkareita joissa on aika usein kuitenkin koodattu jotain silleen kivasti, että toimii vain tietyssä ympäristössä.

    Sama menee c :n kastissa. Ainahan voi käyttää vain standardeja kirjastoja yms. mutta melko usein homma menee siihen, että käytetään niitä aitekohtaisia ja ollaan ihmeissään. Ei kaikki vaan tee kuten olisi oikein tehdä. Se olisi aika pitkälle ympäristön tai kielen homma pitää huolta siitä, että porttaus onnistuu. Aika vanhanaikasta jättää homma koodaajan muistin vastuulle. Ei siitä tule useinkaan yhtään mitään.

    Kait noita projekteja on jossa pitää tehä vaikka Mäkkiin ja sulautettuihin samaa koodia. Harvassa vaan ovat ja melkosia erikoistapauksia. Onhan niitä olemassa tietty. Ei vaan paljon.

    C#:ssa on se hyvä, että homma toimii tosi kivasti kun tehään Winukalle. Ihan loistavaa huttua saa aikaan.

    Portattavuus on hyvä juttu työpöytäsoftissa. On erittäin hyvä juttu, jos sama softa on saatavilla windowsille, mäkille ja linuxille sen sijaan että se olisi saatavilla vain yhdelle näistä. Ja tämä kannattaa käytännössä tehdä niin, että samasta lähdekoodista voidaan kääntää versiot kaikille järjestelmille ja sen jälkeen paketoida järjestelmäspesifisen asennussysteemin vaatimaan muotoon. Huomaa, että vaikka softa olisi tehty javalla, pitää kuitenkin tehdä järjestelmäspesifinen asennussysteemi, joten ihan sama on sitten käyttää C :aa ja kääntää softa samalla uudelleen.

    C :sta saa tehtyä porttautuvaa kunhan käyttää porttautuvia frameworkkeja. Porttautuvan koodin tekeminen on osa ammattitaitoa ja tietenkään kaikki eivät osaa tehdä kaikkea. Javassakin pitää olla tarkkana, että koodista tulee oikeasti porttautuvaa. Ja taas esimerkiksi C# ei porttaudu yhtään mihinkään, mikä tekee siitä aika turhan kielen omasta mielestäni.

    Jos tehdään softaa mäkille, on todennäköisesti kysymys äänen tai kuvan käsittelystä. Ja tällöin hyvin usein sama koodi on hyödyllistä olla jotenkin portattavissa DSP:hen tai muuhun sulautettuun systeemiin. Portattavuudessa on myös se hyvä puoli, että softan voi kehittää vaikkapa linuxissa tai mäkissä vaikka se olisi tarkoitettu lopulta windowsiin. Windows on vaan niin avuton ohjelmistokehitysympäristö, että itse olen ihan oikeasti käyttänyt tätä lähestymistapaa. Tuleepahan porttautuvuus kaupan päälle ilmaiseksi.

    Yksi yllättävän suosittu kieli on muuten objective C. Se on kuitenkin mäkin natiivi kieli, jolla käyttöjärjestelmä ja moni sovelluksista on kirjoitettu.

    Äänestä

  • dxdy kirjoitti:

    Portattavuus on hyvä juttu työpöytäsoftissa. On erittäin hyvä juttu, jos sama softa on saatavilla windowsille, mäkille ja linuxille sen sijaan että se olisi saatavilla vain yhdelle näistä. Ja tämä kannattaa käytännössä tehdä niin, että samasta lähdekoodista voidaan kääntää versiot kaikille järjestelmille ja sen jälkeen paketoida järjestelmäspesifisen asennussysteemin vaatimaan muotoon. Huomaa, että vaikka softa olisi tehty javalla, pitää kuitenkin tehdä järjestelmäspesifinen asennussysteemi, joten ihan sama on sitten käyttää C :aa ja kääntää softa samalla uudelleen.

    C :sta saa tehtyä porttautuvaa kunhan käyttää porttautuvia frameworkkeja. Porttautuvan koodin tekeminen on osa ammattitaitoa ja tietenkään kaikki eivät osaa tehdä kaikkea. Javassakin pitää olla tarkkana, että koodista tulee oikeasti porttautuvaa. Ja taas esimerkiksi C# ei porttaudu yhtään mihinkään, mikä tekee siitä aika turhan kielen omasta mielestäni.

    Jos tehdään softaa mäkille, on todennäköisesti kysymys äänen tai kuvan käsittelystä. Ja tällöin hyvin usein sama koodi on hyödyllistä olla jotenkin portattavissa DSP:hen tai muuhun sulautettuun systeemiin. Portattavuudessa on myös se hyvä puoli, että softan voi kehittää vaikkapa linuxissa tai mäkissä vaikka se olisi tarkoitettu lopulta windowsiin. Windows on vaan niin avuton ohjelmistokehitysympäristö, että itse olen ihan oikeasti käyttänyt tätä lähestymistapaa. Tuleepahan porttautuvuus kaupan päälle ilmaiseksi.

    Yksi yllättävän suosittu kieli on muuten objective C. Se on kuitenkin mäkin natiivi kieli, jolla käyttöjärjestelmä ja moni sovelluksista on kirjoitettu.

    Aika kaukaa haettua jos softaa pitää portata noille kaikille. Varsinkin kun asiakas tilaa softan yleensä yhteen systeemiin. Kuluttajille myytävistä softista tienaa yleensä vain Windowsilla. Ehkä joskus mäkillä kun koneita alkaa olla. Linuxilla on totuttu siihen ettei mistään makseta mitään.

    Äänestä

  • Loppa kirjoitti:

    Aika kaukaa haettua jos softaa pitää portata noille kaikille. Varsinkin kun asiakas tilaa softan yleensä yhteen systeemiin. Kuluttajille myytävistä softista tienaa yleensä vain Windowsilla. Ehkä joskus mäkillä kun koneita alkaa olla. Linuxilla on totuttu siihen ettei mistään makseta mitään.

    Voi olla, että olen tilastopoikkeama, mutta mäkilläni on softia noin 2000 euron arvosta, ja linuxissani noin 3000 euron arvosta. Sen sijaan windowsissani on ei ole mitään muuta kuin halpis-office, mikä maksoi ehkä 100 euroa.

    Äänestä

  • dxdy kirjoitti:

    Voi olla, että olen tilastopoikkeama, mutta mäkilläni on softia noin 2000 euron arvosta, ja linuxissani noin 3000 euron arvosta. Sen sijaan windowsissani on ei ole mitään muuta kuin halpis-office, mikä maksoi ehkä 100 euroa.

    Kuulostaa jossain määrin poikkeamalta. Tosin tarkoitin sitä, että mäkkejä on ollut vähän ja niiden softat ovat olleet pääosin noita suurten valmistajien tuotteita jotka kannattaa vääntää alustalle kuin alustalle vaikka mikä olisi. Linuxilla toi suhde on melkoinen. Sanoisin, että todellinen poikkeama varsinkin jos tossa on paljon eri softia. Tosin eiköhän tollasiakin löydy täältäkin ainakin muutama lisää jos etsisi.

    Äänestä

Aikoinaan joskus 60-luvulla oli sanonta, "Hyvä Fortran-ohjelmoija kooda Fortrania millä kielellä tahansa".
Lauseella on selkeästi kaksi merkitystä. Positiivisessa mielessä se tarkoittaa, että kun osaa ohjelmoida, niin pystyy tekemään sen millä kielellä tahansa. Negatiivisessa mielessä se tarkoittaa, ettei osaa muuta kuin koodata sillä yhdellä tavalla. Itse huomasin sen, kun useiden C -vuosien jälkeen sain/jouduin/pääsin koodaamaan Javaa. Väkisinkin C puski päälle.

Mitä tulee taas työhön ottoon, niin paremmat mahdollisuudet sinulla työnsaantiin on kun hallitset välttävästi molempia, koska silloin olet monikäyttöisempi työnantajalle kuin yhden kielen guru. Tietysti on parempi jos osaat molempia hyvin. Yleensä työnantajilla on velvollisuus kouluttaa työntekijänsä työtehtävien tasalle. Itse olen ollut jonkun vuoden yrityksen sisäänheittotilanteessa yhtenä sisäänheittäjänä ja kyllä siellä katsottiin myös muitakin taitoja kuin vaan sitä, että osaako Javaa tai C#:a.

Se minkä kielen näistä tässä keskustelussa valitsetkin, niin varmasti on töitä tulevaisuudessa. Microsoft tuskin häviää maailmankartalta muutamaan vuoteen ja jos merkit pitää paikkansa, niin Javasta on tulossa uusi Cobol isojen yritysten konesaleihin (ellei jo ole sitä). Jos taas pidät web ohjelmoinnista, niin silloin AJAX php voisi olla hyvä vaihtoehto. Tosin C# ja Java toimivat silläkin puolella. Elikä valinta vähän riippuu siitä mille IT-sektorin alueelle haluat mennä töihin ja millainen härveli istuu tällä hetkellä pöydälläsi.

Tässä keskustelussa ilmenneet mittarit ovat vain suuntaa antavia ja jos katsoo myös muita mittareita kuin mainittua, niin siellä on selvästi C, Java, C , C#, Python, Ruby, Perl ja VB joukon kärjessä. Vähän riippuu sovellusalueesta. Sulautetulla puolella C on vahva ykkönen, mobiilipuolella C , C# ja vissiin Java ovat kovia juttuja, Wintoosan sovelluspuolella C# ja kernelissä C/C , Linukan puolella C/C ja Java, webbipuolella Java, PHP, Javascript ja muut skriptikielet ovat kovia juttuja. Python nostaa kovasti rumaa sihisevää päätänsä moneen paikkaan.

Mitä tulee Microsoft-vetoisuuteen, niin kyse on aina tietenkin rahasta. Riippumatta siitä oletko kallellaan MS-leiriin vai et. Ei ne IBM ja Sun turhaan jakele juttujaan ilmaiseksi vaan siinäkin on kyse rahasta. Kun ohjelmoijat saadaan Java:n koukkuun, niin siitä on pieni askel IBM tai Sunin sovellupalvelimille, jotka pyörivät monesti parhaiten heidän omilla raudoillaan. Ne on vain tajunnut hyödyntää ilmaista työvoimaa, jota OS-yhteisö tarjoaa. Linux on ilmainen, mutta ei sen ylläpito ja käyttö loppujen lopuksi aivan ilmaista ole yrityksille. Muun muassa vaikkapa SuSE ja Redhat tarjoavat ylläpitoa ihan kiitettävään hintaan. Minun mielestäni pitäisi unohtaa tämä turha ne-tai-me-ajattelu ja keskittyä olennaiseen. C# ja Java ovat perimmäisesti sama kieli (ainakin niiden juuret ovat jossain JSE 1.1:n nurkilla). C#:ssa on muutamia juttuja enemmän kuin Javassa, mutta molempien opettelussa on omat haasteensa. Molemmissa on laajat API:t ja molemmille on saatavissa ihan toimivia lisäkilkkeitä helpottamaan (tai vaikeuttamaan) elämää.

Eikä se ole Microsoftin vika jos se on maailman "suosituin" softan toimittaja. Olihan VHS-videokin suosittu juttu vaikka se oli teknisesti täysin ala-arvoinen. Toisaalta Linux ja Java ovat olleet tilassa "coming soon on your desk" jo ainakin kymmenen vuotta. Vieläkin ne joutuvat selittelemään paremmuuttaan ja olemassa oloaan ja mielestäni aivan turhaan.

Äänestä

Kun puhutaan softista jotka pyörivät 64 CPU:lla tai muuten isommissa systeemeissä, Java taitaa olla ainoa vaihtoehto. Esim. C :lla muistinhallinta muuttuu haastavaksi/mahdottomaksi, kun muutama sata säiettä voi viitata samaan objektiin. Tietysti lukkoja voi käyttää, mutta lukot ovat hyvin hitaita suuremmissa järjestelmissä, joten C -vaihtoehto jää suoritustehossa kauaksi taakse. Java ei tätä ongelmaa tunne garbage collectionin vuoksi.

Vain Java taitaa olla vaihtoehtona, kun tarvitaan yksi mylly laskentaan 768 GB:llä muistia ja 864 prosessorilla, kuten (http://www.azulsystems.com/). Tai vaikkapa massiivisilla (massiivinen = 1000-50000 serveriä) klustereilla, kuten Java-pohjaisella Hadoop:illa.

Tietääkseni C#:lla tällainen skaalautuvuus ei ole mahdollista lainkaan.

Äänestä
  • Ja kaikkihan me toki tarvitsemme 50000 serverin klusterin ohjaamaan kahvinkeitintämme saadaksemme päivän kivasti alkamaan niin että pääsemme käsiksi oikeisiin töihimme joiden koodia riittää pyörittämään murto-osa yhden tavallisen tietokoneen tehosta.

    Äänestä

  • samalla kun Braun-parranajakone kasvattaa partanne kirjoitti:

    Ja kaikkihan me toki tarvitsemme 50000 serverin klusterin ohjaamaan kahvinkeitintämme saadaksemme päivän kivasti alkamaan niin että pääsemme käsiksi oikeisiin töihimme joiden koodia riittää pyörittämään murto-osa yhden tavallisen tietokoneen tehosta.

    Mutta Hadoop-klusterit ovat yleisempiä kuin arvaatkaan, varsinkin kokoluokassa 8-64 konetta. Halpa tapa käsitellä teratavuluokan tietomääriä. Ja voit olla kohtuullisen varma siitä, että homma skaalautuu kun heitetään lisää rautaa.

    Hommia on muuten Hadoopin saralla niin paljon kun ehtii tehdä ja tekijöitä löytyy.

    Äänestä

Kommentoi aloitusta


Pähkäilijä kirjoitti:

Kertokaas nyt palstan visionäärit mielipiteenne, kannattaako tulevaisuuden työnsaannin kannalta opetella C# vai Java-ohjelmointia?

Microsofthan on ilmoittanut, että tulevan Windows Vistan ohjelmat perustuvat hyvin pitkälti .NET-arkkitehtuuriin, eli toisin sanoen pääasiassa C#-ohjelmiin. Jossain oli jopa arveltu, että natiivikoodiohjelmat poistuisivat lähes kokonaan.

Itse en periaatteesta pidä Microsoft-vetoisista tuotteista, ja siksi opettelisin mieluummin Javaa. Pitäisikö tulevaisuuden kannalta kuitenkin luopua periaatteista ja alkaa nöyrästi opiskelemaan C#-ohjelmointia?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu