Hei.
Aikanaan tuli tehtyä paljonkin pelejä basicilla Commodore64:lle.
Yliopistossa opiskelin Pascalin, Modula2:n ja ceen.
90-luvulla olin töissä ohjelmistosuunnittelijana ja viitisen vuotta koodasin
täysipäväisesti C++: lla ja satunnaisesti c:lla Windows-ympäristössä.
Nyt haluaisin vähän palautella ohjelmointitaitojani ja mietin, että mikä kieli kannattaisi valita.
Haluaisin aluksi tehdä vaikka yksinkertaisia pelejä www-sivuille.
Javascriptilla vähän leikin, mutta vahvan tyypityksen puuttuminen vähän häiritsi minua. Olenko liian konservatiivinen? :)
Kielen ja ohjelmointiympäristön valinnassa yksi kriteeri on myös, että voisin taitoani hyödyntää jos tulevaisuudessa palaisin taas sorvin ääreen - tälle vuosituhannelle tullessa koodaus jäi kun siirryin projektipäälliköksi. Nykyään toimin opettajana.
Kriteerejä:
-työvälineet ilmaisia
-ympäristön pystytys helppoa
-voi hyödyntää www-peliohjelmoinnissa sekä omien sivujen päivityksessä
-teollisuudessa käytetty = hyötyä työelämässä
-voin hyödyntää aiempaa ohjelmointiosaamistani (C++)
-jostain löytyy hyvä tutorial, jolla pääsee alkuun ja jossa kerrotaan, mitä kaikkea tarvitsee ympäristön asentamiseen. Ei mielellään kauheaa versio-- ja yhteensopimattomuushässäkkää.
Kiitos jo etukäteen vastauksista!
Itse erottaisin webbipeliohjelmoinnin listalta, jolloin C++ täyttäisi kaikki nuo kohdat. Sitten peleihin erikseen jokin muu. Unityhan on kovin suosittu ja Javascript/C# kielenä siihen (C# tehokkaampi kuulemma). Jos itse lähtisin tuosta, päivittäisin C++:n tämän päivän tasolle ja opiskelisin C#:a ja Javascriptiä lisäksi, edes sen verran että pystyy toimimaan niiden kanssa.
Ja et ole liian konservatiivinen, vaikka itseäni ei tyypittömyys ole juuri JS-koodauksessa haitannut. Jonkin verran kylläkin, kun ikinä ei suoraan koodista tiedä mitä mistäkin tulee.
Ainahan toki on TypeScript. Ei omakohtaista kokemusta, eikä kaikkia kirjastoja varmastikaan löydy sille muunnettuna, jotta saisi täyden ilon "tyypityksestä".
JavaScriptistä löytyy nykyään tuki tyypitetyille taulukoille, mikä varmasti lämmittää mieltäsi. Toki JavaScript ja C++ ovat aikamoisen erilaisia muutoin, koska muistin käsittelyä ei tarvitse paljon pohtia. Toisaalta C++:n kautta tuleva ymmärrys muistinkäsittelystä auttaa aikamoisen paljon varsinkin peliohjelmoinnin puolella. Se iso askel tulee JavaScriptin "funktio on herra" -mentaliteetin sekä asynkronisuuden omaksumisesta. Suurinpiirtein kaikki on objekteja ja kaiken kukkuraksi funktiopohjaisia objekteja, koska funktio on objekti. Perinteisten ohjelmointikielien käyttö tuntuu todella rajoittuneelta sen jälkeen kun JS on avautunut. Ennen muinoin JavaScriptin päällä vellonut huono maine on lähinnä johtunut kielen väärinymmärtämisestä ja sen sekoittamisesta selaimen DOMiin (joka osaa edelleen olla aika ankea, vaikka tilanne on parantunut).
- JavaScript on niin ilmainen kuin olla ja voi. Ympäristöksi riittää oma selain tai vaihtoehtoisesti Node.js jos haluaa värkätä omalla koneella.
- JavaScriptille on saatavilla hyviä ilmaisia pelikirjastoja, jotka vievät pois tarpeen tuntea selainten oikut (en ole itse käyttänyt).
- Kysyntää JS-osaajille on aikamoisen paljon, tosin fronttipuolen tekijän tarvitsee tietää todella paljon myös selaimista ollakseen oikeasti hyödyllinen. Peliteollisuus taas on kasvussa Suomessa, joten varmaan löytyy JS-koodarille tarvetta siltäkin rintamalta.
- Node.js mahdollistaa www-palvelujen teon palvelimen puolella. Nodehan korvaa kertaheitolla vaikka Apachen että PHP:n ja on samalla todella paljon nopeampi.
- Aiemmasta ohjelmointikokemuksesta on aina hyötyä: oma aiempi kokemukseni ennen panostusta JavaScriptiin tuli Visual Basic 6:sta ja PHP:sta (VB6:lla vieläpä pengoin tosi paljon muistinkäsittelyn kanssa). C++ on ihan yhtä hyvä pongahduslauta kuin mikä tahansa muu kieli. Ei se kieli vaan se osaaminen.
CodePenin JavaScript-tagatut esimerkit. Voi suoraan nähdä sorsan samalla kun kattelee mitä hienoa jotkut ovat tehneet. Ja muokata!
Suosittelen monien eri kielten kokeilemista. Se auttaa tietämään, mitä kieleltä haluaa. Esittelen tässä omat suosikkini, mutta ne tuskin ovat ainoat hyvät kielet mitä on. Minun pitäisi varmaan kokeilla lisää Javascriptiä; en ole jaksanut perehtyä sen hienouksiin, koska sain siitä huonon ensivaikutelman: sitä osaa kirjoittaa, vaikka ei ole opetellut ja eri tahot kiistelevät siitä millainen sen pitäisi olla(vs. on kantava ajatus sen suunnittelussa).
Python on interpretoitu kieli, jolla on suuri community ja hyvä tutoriali. Sille on tehty paljon kirjastoja. Sillä on dynaaminen, mutta vahva tyypitys. Käytän sitä, jos pitää nopeasti ratkaista joku ongelma skriptillä.
Ohjelmointitaitoinen osaa käyttää Pythonia heti jollain tasolla, sillä se muistuttaa monia muita kieliä, mutta kaikkien hienouksien(list comprehension / generator expression, slicing, yield, decorator...) oppiminen vie kauan.
Civilization IV käyttää Pythonia kaikkeen paitsi grafiikkaan.
Python tutorial
Golang on hyvin uusi kieli, joten sitä tuskin käytetään kovin monella työpaikalla. Siitä saattaa kuitenkin tulla suosittu, sillä se on Googlen tukema ja sitä voi käyttää Googlen App Enginen kanssa.
Se on käännettävä ja staattisesti ja C:tä vahvemmin tyypitetty. Se on tehty mahdollisimman yksinkertaiseksi ja se välttää asioiden moneen kertaan kirjoittamista. Se vaatii aivojen solmimista, sillä toisin kuin muissa moderneissa (objektiorientoituneissa) kielissä siinä ei ole perintää. Go korvaa perinnän syntaktisella sokerilla, joka tekee toisten olioiden käyttämisestä olion sisällä helpompaa.
Molemmat kielet ovat roskienkerättyjä, mikä tuntuu nykyään olevan standardi.
Nettiohjelmoinnissa käytännössä ainoa clienttipuolen kieli on Javascript/Ecmascript, kun taas serveripuolella mikä tahansa periaatteessa toimii.
Golang on suunniteltu juuri serveripuolelle. Sillä on hyvin helppo tehdä webapplikaatio(Sisäänrakennettu kirjasto tekee serverin kolmella rivillä koodia). Sillä on ainutlaatuisen helppo moniajo, mikä on tietenkin serverille tärkeää.
Pythonille kaikki nämä ominaisuudet saa kyllä, mutta ne on kiinnitetty purkalla. Nettisivujen tekemisen saa Djangolla, Stackless Python tukee monia pieniä "threadeja" ja Pypy JITcompilaa jotta saisi performanssia.
Serveripuolella varmaan eniten käytetty kieli on PHP. Sen hyvät puolet ovat sen suosio ja se, että sitä voi tunkea HTMLllän sekaan(En tiedä se edes hyvä puoli). Siinä on paljon poikkeuksia.
PHP
Asp.net MVC (C#) tai Ruby on rails. php jos ei edellämainitut millään ala sujumaan.
Lähes kaikille yleisille kielille on helppoja ja ilmaisia kehitysympäristöjä ja oppaita, ja kaikissa on hyötyä aiemmasta kokemuksesta. Sen sijaan selainohjelmointiin sopii aika harva. Yhteensopivuusongelmat taas vältetään sopivilla kirjastoilla.
Jos kerran C++ on ennestään hyvin tuttu, se on moniin tarkoituksiin varmasti hyvä valinta. Monelle alustalle voi ohjelmoida esimerkiksi Qt Creator -kehitysympäristöllä. Emscripten-kääntäjän avulla C++:lla voi tehdä myös selainohjelmia, ja tästä löytyy netistä ihan hyvä opas. Tavanomaisempi vaihtoehto selainohjelmointiin on JavaScript, ja siihen ei tarvitse mitään erityistä ympäristöä tai kääntäjää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.