Terve,
Taustatietona, että olen koodaillut PHP:lla noin viitisen vuotta, viimisen reilun vuoden ajan olen tehnyt bisnestä nettisivuilla ja pienillä ja vähän suuremmillakin järjestelmillä.
Olen pitkään jo miettinyt uuden ohjelmointikielen opettelemista. Olen vähän kokeillut eri ohjelmointikieliä, mutta mitään suosikkia ei niistä ole löytynyt. Luultavasti ohjelmoijana tulen tulevaisuudessa työskentelemään ja olisi nyt tarkoitus opetella alkuun kieli, jonka koodaajille on kysyntää yrityksissä. Olisi tietenkin hyvä, että kyseisen kielen osaaminen pitää palkankin suht korkealla.
Tähän kysymykseen olen paljon yrittäyt etsiä vastauksia googlettamalla, mutta aina kaikista löytyy niin paljon huonoa, ettei missään nimessä kannata opetella. Javasta olisin kiinnostunut, mutta siitäkin on niin huonot ennisteet tulevaisuutta ajatellen, että se oltaisiin kuoppaamassa tulevaisuudessa.. Toinen on C#. Tästä en ole löytänyt paljon työpaikkailmoituksia eikä sitä moni ole suositellutkaan.
Ei ole väliä oikeastaan kielen haastavuudella, koska oikeastaan mitä haastavempi sitä parempi. Pitäisi kuitenkin olla joku sellainen, jolla pääsee tekemään ainakin windowsille sovelluksia.
Kiitoksia jo etukäteen vastauksista.
Itse olen todennut Visual Basic .NET:in ihan hyväksi, vaikkei kovin monimuotoisia sovelluksia sillä pystyyn saakaan. C:tä pitäisi joskus minunkin kokeilla sen kehumisen vuoksi.
Kun nyt aloittaja mainitsi C#:n ja petja VB.Netin, niin näistä kahdesta suosittelen C#:a. Huomattavasti vähemmän v*ttumaista syntaksia kirjoittaa. Ja sinänsä jos osaa toisen niin osaa toisenkin (niitähän voi vaikkaa koneellisesti kääntää ristiin). Ja tämä henkilöltä joka koodaa molemmilla kielillä ja on koodannut VB.Netillä ennen C#:a.
C#:n (ja VB.Netin) huono (ja toisaalta myös hyvä) puoli on Microsoft-sidonnaisuus. Eli sillä pystyy ensisijaisesti tekemään ohjelmia Windowsille. (Tiedän kyllä Monon, mutta ennemmin muihin ympäristöihin käyttäisin jotain kieltä, jossa oikeasti kaikki toimii)
Muuten en kyllä osaa sanoa mitä kannattaisi opetella. Hyvä ohjelmoijahan tosin vaihtaa sujuvasti kielestä toiselle. Ehkä yksi mielenkiintoinen vaihtoehto olisi opetella myös jotain muuta kuin proseduraalista kieltä. Jonkun netistä löytyneen taulukon mukaan paras keskipalkka Yhdysvalloissa olisi Haskell -ohjelmoijilla.
Petja kirjoitti:
Itse olen todennut Visual Basic .NET:in ihan hyväksi, vaikkei kovin monimuotoisia sovelluksia sillä pystyyn saakaan.
Tarkoititko sanoa "vaikken" tuon "vaikkei" asemesta? Muussa tapauksessa en ymmärrä yhtään tuota väitettäsi.
Itse sellaista olen huhua joskus kuullut, että vaikka firmassa ei koodattaiskaan C++:aa niin sitä silti kannattaa osata. Lisäksi C#:n ja C++:n syntaksit ovat melko lähellä toisiaan niin kummankin opettelu ei pitäisi olla kovin monimutkaista, mitä nyt enemmän pointtereiden kanssa pelleilyä jälkimmäisessä. Työllistymisen kannalta ajatellen C++:aa käytetään silti vielä paljon, että kyllä senkin osaamisesta hyötyä on.
Edits: Grez: hömm, joo noinhan se onkin. Itse kuitenkin C++:n pohjalta opin C#:n perusteet suht lyhyessä ajassa :P
C#:n syntaksi on huomattavasti lähempänä Javan kuin C++:n syntaksia.
Jos haluaa oppia hyväksi ohjelmoijaksi, kannattaa opetella hyvin ainakin muutama oleellisesti erilainen ohjelmointikieli. Sitten voi hakea myös töitä, joissa käytetään jotain itselle tuntematonta kieltä, koska on jo tottunut opettelemaan ja pääsee nopeasti alkuun. Kaikki firmat eivät etsikään kielen X huippuosaajia, vaan yleisesti päteviä ohjelmoijia.
Mutta saahan sitä tyytyä yhteen tai kahteen kieleenkin. JavaScript voisi olla hyvä lisä PHP:n rinnalle, jos pitää nettisivujen kehityksestä, mutta se ei oikein sovellu Windows-sovellusten toteuttamiseen.
Tuskin Java ainakaan ihan lähiaikoina on kuolemassa. Lisäksi sen kirjastojen ja JVM:n hallitsemisesta voi olla muutenkin hyötyä, koska jotkin uudet kielet kuten Scala ja Clojure käännetään JVM:lle.
Valitse kieli joka pitää sisällään ne asiat mitä et ole PHP:ssä joutunut hyödyntämään. Jos opiskelet C# hyvin, niin siirtyminen Javaan ei ole kovin haastavaa ja vice versa. Jos olet fiksu ja filmaattinen, osaat yhden kielen hyvin, niin voit jo päästä ohjelmointi alalle täsmäkoulutukseen.
Ei kukaan mene heittämällä työhön kuin työhön ilman organisaation omien työkalujen ja toteutustapojen opiskelua. Ohjelmistokehitykseen liittyy niin paljon muutakin kuin koodin kirjoittaminen, mm. kartoitusta ja määrittelyä sekä suunnittelua ja testaamista.
Et tule koskaan olemaan valmis ohjelmoija, pääasia että on pää joka oppii helposti uutta, ei se että osaa jo kaikesta kaiken.
Pidä mielessä että Nokia-Windows kapulat tulevat yleistymään, joten ehkä C# olisi hyvä vaihtoehto sinulle sen skaalavuuden takia. Toki JavaScripti on aina vain kiinnostavampi HTML5 ilmestyttyä.
Jos haluat töitä tulevaisuudessa kannattaa opiskella lähihoitajaksi, palkat nousee kohta rivikoodarin ohi, ja töitä tulee aina olemaan. :)
Kiitoksia vastauksista. On saatu jo vähän keskustelua aikaan.
Itse olen ehkä vähän perfektionisti, jonka vuoksi on varmaan hinkua oppia hallitsemaan kieli täydellisesti. Tähtään aina täydellisyyteen, mikä on osakseen hyvä ja osakseen huono. Koko ajan tahtoo vaan oppia lisää ja haluaa tehdä aina parasta. Tiedän, että on vielä kuinka paljon opittavaa. Varjopuolena on, ettei ikinä ole mihinkään tyytyväinen ja haluaa jatkuvasti lisää ja uutta.
Se siitä.
Olen suunnitellut tekeväni sovelluksia, joita pyöritettäisiin ihan windows-koneilla, joten käyttöjärjestelmästä riippumatonta ei tarvitse olla. C# houkuttelee kyllä siltä osin, että vaikuttaa olevan yksinkertainen formin luontisysteemi. C++ ja Java taas ovat mielikuvissani kieliä, jotka olisi hyvä osata ennen ryhtymistä muihin kieliin. PHP on ollut ehkä liian joustava verrattuna muihin kieliin. Ei tarvi alustaa muuttujia ja muuttujia voidaan muuttaa taulukosta kokonaisluvuksi ja niin edelleen. Ja taulukoita voi laajentaa mielensä mukaan. Javascript vielä pahempi tältä kannalta.
Tämä oli kiva kuulla ettei firmaan hakiessa välttämättä tarvitse juuri tiettyä kieltä osata, ainakaan täydellisesti. Itsellä ollut mielikuva, että täytyy olla oikea guru kyseisessä kielessä, että otetaan töihin.
Kiitos vinkistä, laitoinkin sitten paperit menemään yhteishakuun lähihoitajaopintoihin.
Lisäys: Vielä piti sanoa, kun tuli ehdotuksia javascriptin ja html5 suuntaan. En henkilökohtaisesti pidä yhtään kyseisistä 'kielistä' juuri yhteensopivuusongelmien vuoksi. Sitten, kun lähes kaikki käyttävät selaimia, jotka näitä tukevat, alan miettimään niiden käyttöönottamista. Kehittämisssäni verkkopalveluissa ei ole javascript eikä html5 edes käytössä, eikä silti kaikkien selaimet suostu toimimaan oikein, vaikka enää harvalla on ie6 jne selaimia käytössä.
Java on edelleen käytetyin/osatuin ohjelmointikieli tai toisella sijalla C:n jälkeen hieman tutkimuksista riippuen. Vielä tärkeämmin Java koko ajan tulee käytetymmäksi muun muassa Android-sovelluskehityksen myötä.
Ernohac kirjoitti:
jonka vuoksi on varmaan hinkua oppia hallitsemaan kieli täydellisesti.
No sittenhän sulla riittää varmasti vielä vuosiksi tekemistä sen PHP:nkin kanssa. Itse olen sitä mieltä, että mitään kieltä ei ole järkevää opetella täydellisesti, vaan ennemmin opetella hahmottamaan nopeasti mitä kannattaa tehdä milläkin tavalla ja etsimään tietoa nopeasti.
Ernohac kirjoitti:
En henkilökohtaisesti pidä yhtään kyseisistä 'kielistä' juuri yhteensopivuusongelmien vuoksi. Sitten, kun lähes kaikki käyttävät selaimia, jotka näitä tukevat, alan miettimään niiden käyttöönottamista.
No javascriptin osalta minulle kyllä riittää hyvin se 99,9% pöytäkoneissa käytettävistä selaimista.
Ernohac kirjoitti:
Kehittämisssäni verkkopalveluissa ei ole javascript eikä html5 edes käytössä, eikä silti kaikkien selaimet suostu toimimaan oikein, vaikka enää harvalla on ie6 jne selaimia käytössä.
Itsellä taas toimii kaikki tekemäni verkkopalvelut hienosti kaikissa IE7+, sekä suht uusissa Firefoxeissa, Safareissa, Chromeissa ja Operoissa, vaikka käytän Javascriptiä. Tietenkin testausvaiheessa joskus törmää johonkin pikkujuttuun jota täytyy twiikata että toimii vaikkapa Firefoxissa, mutta näitäkin tulee ihan hirveän harvoin. Jos sinulla on hirveästi ongelmia, niin ehkäpä vika ei ole tekniikassa ja sen epäyhteensopivuuksissa itsessään vaan huonossa toteutuksessa.
Ernohac kirjoitti:
Itse olen ehkä vähän perfektionisti, jonka vuoksi on varmaan hinkua oppia hallitsemaan kieli täydellisesti.
Melkein kuin pyrkisit huippumatemaatikoksi opettelemalla piin likiarvoa mahdollisimman pitkälle.
C++ on sinänsä hyvä vaihtoehto, että samalla kielellä voi opetella matalamman tason (C-tyylistä) ohjelmointia (taulukot, pointterit, dynaaminen muistinhallinta ilman roskienkeruuta, ym.) ja myös olio-ohjelmointi onnistuu. Loppujen lopuksi ei sillä niin suurta merkitystä ole minkä kielen valitset opiskeltavaksi, kaikesta kokemuksesta on hyötyä.
Grez kirjoitti:
No sittenhän sulla riittää varmasti vielä vuosiksi tekemistä sen PHP:nkin kanssa. Itse olen sitä mieltä, että mitään kieltä ei ole järkevää opetella täydellisesti, vaan ennemmin opetella hahmottamaan nopeasti mitä kannattaa tehdä milläkin tavalla ja etsimään tietoa nopeasti.
Ajan mittaan on kyllä huomannut, että tämä taito on kehittynyt. Oikein hävettää katsoa parin vuoden takaa tehdyn järjestelmän koodia. On niin pitkän ja sekavan oloista.
Grez kirjoitti:
No javascriptin osalta minulle kyllä riittää hyvin se 99,9% pöytäkoneissa käytettävistä selaimista.
Yhtenä syynä tähän javascript-kielteisyyteeni saattaa olla se, kun tein yhtä järjestelmää eräälle kaupungille, jonka harvoissa käyttämissäni koneissa javascript tuntui toimivan. Enkä tarkoita omilla sivuillani, vaan myös monilla muilla. Ja kyseisen järjestelmän käyttäjät käyttivät lähes pelkästään kyseisiä koneita.
Grez kirjoitti:
Itsellä taas toimii kaikki tekemäni verkkopalvelut hienosti kaikissa IE7+, sekä suht uusissa Firefoxeissa, Safareissa, Chromeissa ja Operoissa, vaikka käytän Javascriptiä. Tietenkin testausvaiheessa joskus törmää johonkin pikkujuttuun jota täytyy twiikata että toimii vaikkapa Firefoxissa, mutta näitäkin tulee ihan hirveän harvoin. Jos sinulla on hirveästi ongelmia, niin ehkäpä vika ei ole tekniikassa ja sen epäyhteensopivuuksissa itsessään vaan huonossa toteutuksessa.
Eräällä koneella ei päässyt sisäänkirjautumislomaketta pidemmälle. Ei auttanut muu kuin koneen vaihto.
Myönnän kyllä, että täytyy tämä oma pääkoppa saada paljon myönteisemmäksi näitä asioita kohtaan. On vaan niin huonoja kokemuksia toimivuudesta.
Metabolix kirjoitti:
Melkein kuin pyrkisit huippumatemaatikoksi opettelemalla piin likiarvoa mahdollisimman pitkälle.
Eh? Jos nyt viittasit ainoastaan tuohon yhteen lauseeseen, en oikein ymmärtänyt tätä kommenttia.
Minä kun olen siirtynyt työelämssä koodarista käyttäjäksi, niin kehtaan tehdä aika julman yleistyksen. .NET Sovellukset ovat selkeitä, ja Java-sovellukset ovat hankalia. Perustan tämän väitteeni puhtaasti omiin kokemuksiin.
Ernohac kirjoitti:
Metabolix kirjoitti:
Melkein kuin pyrkisit huippumatemaatikoksi opettelemalla piin likiarvoa mahdollisimman pitkälle.
Eh? Jos nyt viittasit ainoastaan tuohon yhteen lauseeseen, en oikein ymmärtänyt tätä kommenttia.
Kontekstina tietenkin oli alkuperäinen kysymyksesi hyödyllisimmästä kielestä. Tarkoitin sanoa, että yksittäisen kielen täydellinen opettelu on suunnilleen yhtä hyödyllistä (no ehkä vähän hyödyllisempää sentään) kuin piin likiarvon opettelu. Kielen osaaminen ei tee hyvää ohjelmoijaa. Ääriesimerkkinä mainittakoon Brainfuck, jonka kuka tahansa voi osata täydellisesti parin minuutin opettelulla mutta jota on siitä huolimatta todella vaikea käyttää.
Suurin osa ohjelmoinnista tapahtuu kielestä riippumattomalla tasolla, tai itse en ainakaan tähän hätään muista, milloin olisin ollut erityisesti vaikeuksissa kielitaidon takia, jos nyt ei ihan vierailla kielillä sohimista lasketa. Uuden kielen oppii kohtuullisesti päivissä tai viikoissa, ja tarvittavat lisätiedot kuten sopivat funktiot löytyvät netistä yleensä hetkessä.
JavaScripti on kyllä omasta mielestä myös hyvä kieli opetella suhkot hyvin. Sillä voi jo tehdä html5 tukevia mobiilisovelluksia lähes kaikille mobiilialustoille, eli myös windows phonelle. Onhan sen työstäminen ja debuggaus vähän erillaista, mutta kylhän siihenkin tottuu.
Myös C#:n yhteydessä voidaan käyttää JavaScriptiä, jos tehdään ASP.NET sovelluksia, niin siitähän on hyötyä silloinkin.
Ja niinkuin Grez sanoinkin, niin harvoin siinä tulee ongelmia eri selaimien välillä ainakaan sen jälkeen kun kielen on oppinut suhkot hyvin sekä tietää miten sitä kannattee ohjelmoida. Kirjastot tietty auttaa myös paljon nuissa selainten välisissä ongelmissa.
Myös PHP:llä voi ohjelmoida eri tyyleillä. En huomannut että oliko aloittaja ohjelmoinut tai käyttänyt olio-ohjelmointia. Jos ei, niin seuraavaksi voisi ottaa olio-ohjelmoinnin työn alle. Tämähän onnistuu vaikka PHP:llä aluksi, niin on tuttu kieli, mutta pystyy saamaan perusjutut; luokat, perintä, jne...
Myöskään ei käynyt ilmi että oliko aloittaja käyttänyt esim MVC-mallia ohjelmoinnissa. Jos ei, niin taas voisi opetella lisää ja tehdä asiat MVC-mallin mukaan. Ja tähänkin käy se tuttu PHP.
Tai sitten ei käynyt ilmi että onko aloittaja käyttänyt mitään frameworkkiä koskaan. Yksi hyödyllinen asia voisi olla kokeilla jotakin frameworkkiä, esim Yii:tä. Useissa työpaikkoissa on kuitenkin jokin framework käytössä, ja näin oppii että mitä tälläinen antaa lisää.
Eli ei tarvitse välttämättä edes vaihtaa kieltä ja voi oppia uutta, jos ei jotakin ole aikaisemmin tehnyt.
Oletan että aloittaja on käyttänyt tietokantoja, kun aikaa on nettisivujen kanssa vietetty kohtalaisen paljon. Mutta jos tietokannat eivät ole jostakin syystä tuttuja, niin suosittelen tutustumaan niihin. Ja taaskaan ei tarvitse vaihtaa kieltä.
C# perusasiat ( forms applications, wpf ja asp. Kahta vähän vähemmän ja yhtä laajasti ), plus perusosaaminen tietokannoista, niin pääsee jo hyvin alkuun.
Joskus pohdin asiaa siltä kantilta, että mitä ohjelmointikieliä kannattaisi osata noin yleisen ajattelumallin ja näkökulman laajentamiseen; Kielten opettelun suurin hyöty lienee siinä, että erilaiset kielet pakottavat hiukan erilaiseen lähestymistapaan ongelmien ratkaisemisessa. Esimerkiksi Haskellilla koodaus on noin teoriatasollakin erilaista Javalla koodaukseen verratessa.
Kielet, joita oikeasti käytetään riippuu toki tarkemmasta alasta, mutta C#:lla, C++:lla, Javalla, Lualla ja PHP:lla aika iso osa hommista hoituu. Itse tosin suosittelisin mieluummin opettelemaan muutaman hyvin erilaisen kielen kuin tusinan samankaltaista kieltä. Esimerkiksi Haskellin, C++:n, Ruby on Railsin ja Schemen hanskatessa ei varmasti tule kummempia ongelmia erilaisten koodirakenteiden ymmärtämisessä.
Suosikkini on C ja joskus kun tajuaa, että täähän on ihan selkeesti oliojuttu niin silloin otan käyttöön C++:n. Näitä kieliä osaan siis sujuvasti. schemeä olen jotunut pakkopullana opettelemaan kevyesti. Mutta kaikkein parasta mitä minulle kävi oli että törmäsin FORTHiin. Sillähän ei mitään missään mitenkään nykymaailmassa tee, mutta ajatuskuviot muuttuivat.
Ohjelmani lyhenivät ja tehostuivat. Usein jopa kirjoitan ajatukseni FORTHilla ensin. Mutta se, että arvostaako työnantaja ajattelutapojani pätkän vertaa tai koodini tehokkuutta on hankala tuoda esille. Paljon mukavampi on esitellä, että tein tämmösen sulautetun järjestelmän, jota voi näillä PHP sivuilta ohjata tai tältä puhelin java värkiltä, on paljon näppärämpi referenssi.
Luettuani keskustelua, tulin siihen tulokseen, että ei ole olemassa parasta kieltä, jota [Edit. olisi pakko] opetella, vaan kaikilla on omat mieltymyksensä.
vuokkosetae kirjoitti:
Ohjelmani lyhenivät ja tehostuivat. Usein jopa kirjoitan ajatukseni FORTHilla ensin. Mutta se, että arvostaako työnantaja ajattelutapojani pätkän vertaa tai koodini tehokkuutta on hankala tuoda esille. Paljon mukavampi on esitellä, että tein tämmösen sulautetun järjestelmän, jota voi näillä PHP sivuilta ohjata tai tältä puhelin java värkiltä, on paljon näppärämpi referenssi.
Joo, näin on. Muut kuin ohjelmoijat eivät käsitä tuota, ja voi olettaa, että joka firmassa ei ole ohjelmoijaa rekrytoimassa lisäväkeä.
Ernohac kirjoitti:
Javasta olisin kiinnostunut, mutta siitäkin on niin huonot ennisteet tulevaisuutta ajatellen, että se oltaisiin kuoppaamassa tulevaisuudessa.
Ei kai. Olet varmaan törmännyt pessimistiselle sivulle. Tällä sivulla olevien lukujen perusteella voi olettaa, että Javan kuoleminen on epätodennäköistä. Se on tietenkin selvää, että Javan kilpailijat pärjäisivät paremmin ilman Javaa.
Piti nyt alkaa Javaa oppimaan. Tuli tarpeeseen sms gateway -sovellus eräässä projektissani. Aluksi seuraa puhelimeen tulevia viestejä ja lähettää ne web-sivustolle. Myöhemmin puhelin olisi tarkoitus kiinnittää itse palvelimeen kiinni, jolloin sovellus lisää tiedot tietokantaan.
makumaku kirjoitti:
Myös PHP:llä voi ohjelmoida eri tyyleillä. En huomannut että oliko aloittaja ohjelmoinut tai käyttänyt olio-ohjelmointia. Jos ei, niin seuraavaksi voisi ottaa olio-ohjelmoinnin työn alle. Tämähän onnistuu vaikka PHP:llä aluksi, niin on tuttu kieli, mutta pystyy saamaan perusjutut; luokat, perintä, jne...
Myöskään ei käynyt ilmi että oliko aloittaja käyttänyt esim MVC-mallia ohjelmoinnissa. Jos ei, niin taas voisi opetella lisää ja tehdä asiat MVC-mallin mukaan. Ja tähänkin käy se tuttu PHP.
Tai sitten ei käynyt ilmi että onko aloittaja käyttänyt mitään frameworkkiä koskaan. Yksi hyödyllinen asia voisi olla kokeilla jotakin frameworkkiä, esim Yii:tä. Useissa työpaikkoissa on kuitenkin jokin framework käytössä, ja näin oppii että mitä tälläinen antaa lisää.
Tosiaan, unohdin mainita näistä. Olio-ohjelmointi on jäänyt vähemmälle. MCV-malli on myös tuttu Drupal-sisällönhallintajärjestelmästä, johon kehittelen itse moduuleita. Olen huomannut, että Zend framework vaikuttaa melko yleiseltä työpaikkailmoituksissa. Sitä pitää alkaa opettelemaan seuraavaksi sen jälkeen, kun saan nyt yhden ison projektin pois jaloista.
MySQL-tietokantaa olen käyttänyt monta vuotta.
jukkah kirjoitti:
Luettuani keskustelua, tulin siihen tulokseen, että ei ole olemassa parasta kieltä, jota [Edit. olisi pakko] opetella, vaan kaikilla on omat mieltymyksensä.
Tämä juuri vaikeuttaa valintaa :p itse pitää vaan kokeilla kaikkea..
jukkah kirjoitti:
Ei kai. Olet varmaan törmännyt pessimistiselle sivulle. Tällä sivulla olevien lukujen perusteella voi olettaa, että Javan kuoleminen on epätodennäköistä. Se on tietenkin selvää, että Javan kilpailijat pärjäisivät paremmin ilman Javaa.
En muista miltä sivustolta sen nyt luin, mutta oli tuore artikkeli(tässä kuussa kirjoitettu muistaakseni). Näistä luvuista olen kyllä tietoinen, mutta aina herää pelko, että kannattaako sittenkään opetella kieli.
Aihe on jo aika vanha, joten et voi enää vastata siihen.