Tahtoisin opiskella perusohjelmointitaidot jotta osaisin tehdä pieniä ohjelmia Windows-ympäristöön. Aikaisempaa kokemusta on muutaman pienen ohjelman teko turbo c++:lla, ohjelmat olivat yksinkertaisia jotka ohjasivat lpt-portin kautta relekorttia ja sisälsivät yksinkertaisen graafisen käyttöliittymän. Siitäkin on jo niin kauan että olen varmaankin unohtanut perusteetkin.
Toiveinaa osaisin luetella seuraavat:
- Kielelle tulisi löytyä tarvittaessa hyviä suomenkielisiä oppaita
- Järkevä rakenne, perusasiat olisivat helposti omaksusuttavia.
- Mahdollisuus taitojen kehittyessä tehdä laajempiakin kokonaisuuksia.
- Mieluusti ilmainen henkilökohtaiseen käyttöön.
- Plussaa myös se että valmiita 'palikoita' löytyisi helposti
- Viimeisenä toiveena se että kielellä pärjäisi pitkälle tulevaisuuteenkin.
Kiitän vastauksista jo etukäteen, toivottavasti löydän avullanne sopivan kielen itselleni jotta saisin aikani kulumaan taas. :)
Python tai Java voisi olla hyvä valinta. Molemmat kielet ovat ilmaisia ja monipuolisia, ja ne soveltuvat myös laajojen ohjelmien tekemiseen.
Ohjelmointiputkan uutta Python-opassarjaa voi lukea tästä:
https://www.ohjelmointiputka.net/keskustelu/
Tässä on Helsingin yliopiston Java-kurssien materiaali:
http://www.cs.helsinki.fi/u/wikla/Ohjelmointi/
Arvostatko enemmän toimintaa tällä hetkellä vai pärjäämistä tulevaisuudessa?
Java ja python ovat kait kelpoja jos tehtäimessä on tämän päivän ohjelman tuottaminen, mutta jos tähtäimenä on olla huipulla 2-5v kuluttua, niin opettele jokin logiikka-ohjelmoinnin tyylinen kieli kuten esim. prolog.
Prolog ei välttämättä ole tulevaisuuden voittaja, mutta opit kuinka logiikkaan perustuvilla kielillä ohjelmoidaan.
[mainosta ja markkinoi]
Mozart/Oz-programming interface http://www.mozart-oz.org
Todella yksinkertainen rakenne, silti monipuolinen ohjelmointikieli. Perustuu logiikka-ohjelmoinnin tyyliseen esittelevään rakenteeseen. Heikkoutena taitaa olla ettei löydy suomenkielisiä oppaita.
Logiikka-ohjelmointi on vielä vähän O_o...
tepokas kirjoitti:
jos tähtäimenä on olla huipulla 2-5v kuluttua, niin opettele jokin logiikka-ohjelmoinnin tyylinen kieli kuten esim. prolog.
Jos tästä lähdettäisiin veikkaamaan, niin itse voisin panostaa aika reilusti "tai sitten ei" -vaihtoehdon puolesta.
Mitä itse kysymykseen tulee, niin tästä on keskusteltu ennenkin useaan kertaan. Itse suosittelisin aloituskieleksi Pythonia, joka täyttää myös esittämäsi kriteerit.
Opiskele ensin HTML ja sitten PHP. PHP on helppo ja saat tuntumaa miten voit tehdä loogisia päätöksiä. Jos taas ei esim selainpelien teko kiinnista lataa itsellesi CoolBasic. Se on täysin suomalainen ja kotisivuilta sekä ohjelmasta tisestään löytyy jokaiseen komentoon oleva opas. Saat näin hieottua hieman logiikkaa miten se kaikki toimii.
PHP ja HTML eivät ole aivan sitä mitä haen, sillä ymmärtääkseni nuo painottuvat hyvin pitkälle nettiympäristöön. Mieluummin enemmän 'universaali' ohjelmointikieli jolla pääsisi helposti myös rautaan käsiksi jos esim. tahtoisin erilaisia ohjauskortteja ja laitteita ohjailla/lukea com/lpt/usb - porttien kautta.
Myös mahdollisuus tehdä helpohkosti graafisia käyttöliittymiä sovelluksille olisi hyvä asia. Pelejä en kuitenkaan ajatellut vääntää, tosin sillekin olisi hyvä löytyä riittävästi ominaisuuksia hakemastani ohjelmointikielestä jos/kun tietotaito kehittyy ja aika käy pitkäksi. :)
Jos panostaisin kunnolla tulevan kielen opiskeluun, niin minkä kielen taitajilla olisi vientiä nyt ja tulevaisuudessa kun lasketaan nuo omat vaatimukset ohjelmointikieleltä mukaan?
Tästähän on keskusteltu aiemminkin ja vallitseva mielipide on kaiketi edelleen se, että ei ole mitään merkitystä mitä opiskelee. Tärkeintä on ohjelmoinnin osaaminen kielen osaaminen tulee kyllä dokumentaation kautta aika helpolla. Ohjelmoinnilla ja kielen sntaksilla ei ole yhteyttä juurikaan.
10-vuoden päähän ei ikävä kyllä näe kukaan, mutta ohjelmoinnin taitoja tarvitaan silloinkin, vaikka ohjelmoisimme x-kielellä.
Alla joitain ehdotuksia:
XBLite: http://www.xblite.com/
Modula-2: http://www.excelsior-usa.com/xdsx86win.html
xHarbour: http://free.xHarbour.com/free.xHarbour.com/
Klvi kirjoitti:
PHP ja HTML eivät ole aivan sitä mitä haen, sillä ymmärtääkseni nuo painottuvat hyvin pitkälle nettiympäristöön.
Aivan oikein. PHP on web-ohjelmointikieli, jota ei kannata opetella, jos nettisivujen tekeminen "tämän päivän työmarkkinoilla" ei kiinnosta.
Klvi kirjoitti:
Mieluummin enemmän 'universaali' ohjelmointikieli jolla pääsisi helposti myös rautaan käsiksi jos esim. tahtoisin erilaisia ohjauskortteja ja laitteita ohjailla/lukea com/lpt/usb - porttien kautta.
Jos rautaan haluaa päästä käsiksi, niin varma valinta on opetella C-kieltä. Sen osaaminen tai ainakin ymmärtäminen kuuluu toistaiseksi ohjelmoijan yleissivistykseen. C muun muassa suosittuna käyttöjärjestelmien ohjelmointikielenä ei myöskään katoa ihan vähään aikaan mihinkään.
Klvi kirjoitti:
Jos panostaisin kunnolla tulevan kielen opiskeluun, niin minkä kielen taitajilla olisi vientiä nyt ja tulevaisuudessa
Tosiaan oleellista on oppia ohjelmoimaan hyvin, minkä jälkeen uuden (töissä tarvittavan) kielen oppiminen ei ole ongelma.
Havaintojeni mukaan C/C++, Java ja .NET-kielet esiintyvät nykyään aika usein työilmoituksissa. Nämä tuskin myöskään katoavat pitkään aikaan.
Katselin lyhyitä koodinpätkiä eri kielille ja Python näyttäisi varsin mukavalta. Siitä taidan aloittaa oman opintieni ohjelmoinnin maailmaan. Pari kysymystä tahtoisin vielä esittää koskien pythonia:
- Kummalla kannattaa aloittaa, kakkos- vai kolmosversiolla?
- Python täyttää edellisissä viesteissä mainitsemani toiveet ohjelmointikieleltä?
- Moniajo on mahdollista?
Pythonin sivuilla suosittelevat kakkosversiota.
Täyttää.
Juu!
Ohjelmoinnin puolesta versioilla ei ole aloittelijalle paljonkaan eroa. Kakkosversiolle löytyy toistaiseksi enemmän valmista materiaalia (oppaita, koodia ym.), mutta toki suunta on aina kohti uudempaa, ja kolmosversiossa on myös joitakin yksittäisiä uudistuksia, jotka tekevät maailmasta paremman paikan. ;) Suosittelisin näistä syistä kolmosta.
"Rautaan käsiksi pääseminen" on aika epämääräinen ilmaisu, jota kannattaisi kyllä tarkentaa, jos se todella on kynnyskysymys tässä. Matalan tason laiteajurit täytyy käytännössä kirjoittaa C:llä tai jollain vastaavalla kielellä, mutta jos taas on kyse vaikkapa sarjaportin ohjaamisesta, niin joku on varmasti tehnyt jo sarjaporttiajurin, jota voi kohtuullisella vaivalla käyttää melkein millä tahansa.
Joka tapauksessa voit aloittaa mieleisestäsi kielestä; oppi ei varmasti mene hukkaan. Kannattaa myös totutella ajatukseen, että yksi kieli ei riitä kaikkeen. Itse olen esimerkiksi yhdessä työprojektissa käyttänyt ainakin PHP:tä, Smarty-kaavaimia, HTML:ää, CSS:ää, SQL:ää, JS:ää, Javaa ja Bash-skriptejä sekä suomea, ruotsia ja englantia. (Nämä ovat tosiaan vasta työkielet, kotona on sitten aivan muita. :)
Metabolix kirjoitti:
Ohjelmoinnin puolesta versioilla ei ole aloittelijalle paljonkaan eroa. Kakkosversiolle löytyy toistaiseksi enemmän valmista materiaalia (oppaita, koodia ym.), mutta toki suunta on aina kohti uudempaa, ja kolmosversiossa on myös joitakin yksittäisiä uudistuksia, jotka tekevät maailmasta paremman paikan. ;) Suosittelisin näistä syistä kolmosta.
Itselläni on jäänyt tuosta kolmosversiosta hieman pas** maku suuhun, sillä sen kanssa taistelin pari tuntia ja kun ei toiminut niin siirryin 2.6 takasin xD...
Ei tosiaan ole kieltä, jolla "pärjäisi pitkälle tulevaisuuteen" tai lyhyelläkään tähtäimellä, vaan ammattilainen tarvitsee aina useita kieliä eri tarkoituksiin. Kaikki imperatiiviset kielet = normaalit ohjelmointikielet toimivat hyvin samalla tavalla, joten on ihan sama, minkä ensin opiskelee. Kun jonkin ohjelmointikielen osaa, siis osaa tehdä ohjelmia sillä, on tavattoman helppoa opiskella uusia ohjelmointikieliä.
"vientiä nyt ja tulevaisuudessa" ei siis tosiaankaan ole minkään kielen osaajalle. Vaikka pelkällä PHP-osaamisella voi saada töitä firmassa, jossa tehdään nettisivuja, etsii työnantaja yleensä ammattilaisia, jotka tuntevat eri ohjelmointikieliä ja frameworkeja.
Python on hyvä ensikieli, mutta... on C:kin hyvä vaihtoehto.
Jos kuitenkin opiskelisit Javaa?
On myös hyviä syitä aloittaa BASIC:ista, Algolista tai Pascalista, mutta niistä voi olla vaikeaa löytää hyviä suomenkielisiä oppaita. Konekielinen koodaus on helpompi omaksua niistä lähtien. Niillä ei tehdä graafisia käyttöliittymiä, mutta perusohjelmointi on aina se varsinainen juttu, mikä pitää oppia, ja hyvin. PHP:lläkin oppii kaikki ohjelmoinnin perusteet, ja siitä on helppo lähteä.
Kaikilla kielillä koodatessa perusasia on osata muuttaa käytännön ongelma formaaliksi algoritmiksi, ja siinä suhteessa kielillä ei ole eroja. Kun sen osaa, kieli valitaan sitten käyttötarkoituksen mukaan.
hk:n kommentissa on asiaa. Näillä perinteisillä kielillä ei ole niin merkitystä minkä valitsee, enemmänkin käyttötarkoituksella. Mutta jos tulevaisuudessa haluat olla ohjelmistokehityksen kärjessä niin logiikka-perustaiset kielet on hyvä valinta.
Noilla logiikka-perustaisilla kielillä tulee olemaan samanlainen kupla/hype kuin oli näillä web-kielillä tuossa 2000-luvun alussa. Ja tämä kupla tulee olemaan n.5v sisällä.
Jo tänä päivänä, jos haluat sellaisen parempi palkkaisen homman jostakin näistä suomen suurimmista firmoista, niin logiikka-ohjelmoinnin osaaminen on se mitä haetaan ja mistä maksetaan.
Miksi sitten aloittaa Logiikka-ohjelmoinnin opettelu jo tänään. Logiikka-ohjelmointi vaatii vähän erilaisen näkökulman ohjelman tekoon kuin nämä perinteiset kielet ja sitä harva oppii päivässä (ja sen entisen pois oppiminen voi viedä vielä pidempään).
Eli valinta riippuu siitä haluatko tehdä ohjelmia heti vai haluatko olla kingi muutaman vuoden kuluttua.
tepokas kirjoitti:
Noilla logiikka-perustaisilla kielillä tulee olemaan samanlainen kupla/hype kuin oli näillä web-kielillä tuossa 2000-luvun alussa. Ja tämä kupla tulee olemaan n.5v sisällä.
Mihin lähteisiin perustat tämän väitteen?
tepokas kirjoitti:
Mutta jos tulevaisuudessa haluat olla ohjelmistokehityksen kärjessä niin logiikka-perustaiset kielet on hyvä valinta.
Oma arvioni on prosessorien ja niiden ytimien määärän kasvaessa, että rinnakkaisuus (concurrent programming) tulee olemaan se tulevaisuuden juttu.
Itse pidän Infernon Limbon ja Occamin tavasta käyttää kanavia säikeiden synkronisointiin. Modula-2 ja Active Oberon pohjaisen Zonnonin Active Object toteutus vaikuttaa myös toimivalta.
Oma neuvoni ohjelmointikielen valinnassa on kuitenkin, että valitse se millä saat työn tehtyä.
Python tai Java, jommallakummalla aloitan opintieni ohjelmointiin. Jos motivaatio pysyy hyvänä ja koen opiskelun palkitsevana niin jatkan sitten eteenpäin ja pohdin myöhemmin tuota '..kieli jonka osaajilla on vientiä nyt ja tulevaisuudessa'-kohtaa.
Hieman perustietoja etsiessäni törmäsin erilaisiin IDE:ihin. Niitäkin näytti olevan vähintäänkin riittävä määrä erilaisia vaihtoehtoja. Osaisiko kukaan suositella hyvää sellaista, ilmaista mieluiten - vai tarvitsenko edes sellaista alkutaipaleella?
Itse olen yleensä käyttänyt vain mieleistäni tekstieditoria ja ohjelmien kääntämiseen ja ajamiseen komentoriviä. Olennaista on, että tekstieditori osaa auttaa sisennyksessä (lisätä uuden rivin alkuun yhtä monta tabulaattoria kuin edellisellä) ja värittää koodista avainsanat ja esimerkiksi tekstivakiot.
Javan kohdalla Eclipse on aika suosittu IDE. Pythonille en tiedä. Hyviin tekstieditoreihinkin saa usein lisättyä tiettyjä tärkeimpiä toimintoja kuten ohjelman käynnistämisen pikanäppäimestä.
sisuaski kirjoitti:
Mihin lähteisiin perustat tämän väitteen?
Heh, Lähteitä hankala laittaa, tokkopa tuota enää muuten javasta puhuttas. Mutta jos asia kiinnostaa niin kannattaa seurata julkaisuja joissa mainitaan automata theory ja language theory. Löytynee ainakin eri yliopistojen julkaisuista.
jalski kirjoitti:
Oma arvioni on prosessorien ja niiden ytimien määärän kasvaessa, että rinnakkaisuus (concurrent programming) tulee olemaan se tulevaisuuden juttu.
Mutta eikait logiikka-ohjelmointi poissulje rinnakkaisuutta.
Klvi kirjoitti:
Osaisiko kukaan suositella hyvää sellaista, ilmaista mieluiten - vai tarvitsenko edes sellaista alkutaipaleella?
IDE: http://www.netbeans.com/
Taitaa olla Sun:n ylläpitämä, vastaa melkein kaupallisia tuotteita. Taitanee tukea javaa, pythonia, c++:saa ja pitkän liudan muita lyhenteitä.
Javaa varten Eclipse on tosiaan hyvä, samoin JCreator LE, ilmaisia molemmat. Jälkimmäinen on minusta vähän helppokäyttöisempi ja näppärämpi yksittäisten ohjelmanpätkien kokeilussa, Eclipse pitkän päälle parempi. JCreator Pro olisi ilmeisesti Eclipsen tasoinen, mutta se on maksullinen.
Netbeans IDE on varmaan hyvä supertietokoneen omistajalle, mutta ainakin minun koneissani se on todella takkuinen. Jo käynnistys kestää tolkuttomasti.
Gedit osaa värittää monien kielien koodia ja tekee muutkin perusjutut, kuten parittaa sulut. Sehän sisältyy kaikkiin Gnome-jakeluihin. Isompiin projekteihin IDEt tarjoavat enemmän tukea.
Kaavioiden piirtelyyn on olemassa aivan loistava ilmainen ohjelma nimeltä yEd Graph Editor. Siihen kannattaa tutustua, sillä kaavioita ei ammattimaisessa ohjelmointityössä voi välttää. Eikä tee mielikään, kun on kunnon välineet ja opettelee niitä käyttämään. Wordilla UMLin vääntäminen on tuskallista.
Klvi kirjoitti:
- Moniajo on mahdollista?
On mahdollista luoda monta threadia, mutta näitä threadeja ei koskaan suoriteta samaan aikaan (ainakaan minun käsityksen mukaan), lisää täältä
hk kirjoitti:
Netbeans IDE on varmaan hyvä supertietokoneen omistajalle, mutta ainakin minun koneissani se on todella takkuinen. Jo käynnistys kestää tolkuttomasti.
Heh, paremminkin sanottuna ei mopokoneen/rojua täynnä olevan koneen omistajalle.
ZcMander kirjoitti:
Klvi kirjoitti:
- Moniajo on mahdollista?
On mahdollista luoda monta threadia, mutta näitä threadeja ei koskaan suoriteta samaan aikaan (ainakaan minun käsityksen mukaan), lisää täältä
Tämä liittyy Python-tulkin nykyiseen referenssi-implementaation (CPython) ja ongelma on mahdollista kiertää.
http://www.parallelpython.com/
http://www.jython.org/
EDIT:
tepokas kirjoitti:
Heh, Lähteitä hankala laittaa, tokkopa tuota enää muuten javasta puhuttas. Mutta jos asia kiinnostaa niin kannattaa seurata julkaisuja joissa mainitaan automata theory ja language theory. Löytynee ainakin eri yliopistojen julkaisuista.
Tämä meni minulta nyt vähän ohi. Millä perusteella näiden kymmeniä vuosia (?) vanhojen tutkimusalojen sovellukset ovat valtaamassa ohjelmistoalan seuraavan viiden vuoden sisällä?
jalski: Rinnakkaisohjelmointi on varmasti tulevaisuudessakin kova juttu, kuten se on ollut ainakin viimeiset parikymmentä vuotta.
Aito samanaikaisuus onnistuu Python 2.6:sta lähtien tällä: http://docs.python.org/library/multiprocessing.
Geany on hyvä ja kevyt koodieditori Gnomelle.
hk kirjoitti:
Javaa varten Eclipse on tosiaan hyvä, samoin JCreator LE, ilmaisia molemmat. Jälkimmäinen on minusta vähän helppokäyttöisempi ja näppärämpi yksittäisten ohjelmanpätkien kokeilussa, Eclipse pitkän päälle parempi. JCreator Pro olisi ilmeisesti Eclipsen tasoinen, mutta se on maksullinen.
On myös hyvä muistaa, että IntelliJ IDEA:sta on nykyään ilmainen perusversio. Paljon parempi kuin Eclipse ja NetBeans.
os kirjoitti:
Tämä meni minulta nyt vähän ohi. Millä perusteella näiden kymmeniä vuosia (?) vanhojen tutkimusalojen sovellukset ovat valtaamassa ohjelmistoalan seuraavan viiden vuoden sisällä?
Perustuu ymmärrykseen kuvata probleema ja laskennallisuuteen.
On ihmisiä jotka tutkivat numeroita - ja löytävät näistä jotain uutta - keksinyt ketkä? babylonialaisetko, foinikialaisetko vaikko egyptiläiset - keksitty kumminkin useampi tuhat voitta sitten.
Meinaan vain, että jos jokin teoria on parinkymmenenvuoden takaa, niin ei se välttämättä kovin valmis vielä ole.
Aihe on jo aika vanha, joten et voi enää vastata siihen.