Kirjoittaja Aihe: Ohjelmointi harrastuksen aloittaminen  (Luettu 26402 kertaa)

DDR55

  • Käyttäjä
  • Viestejä: 101
    • Profiili
Ohjelmointi harrastuksen aloittaminen
« : 20.08.16 - klo:14.05 »
joskus tälläkin foorumilla sanoin että kiinnostaisi aloittaa ohjelmointi harrastuksena. Oikeastaan sillon kun tein omia virityksiä kerneliin, eli muutin vaan numeroita toisiksi, mutta en uskaltanut sitä kerneliä kääntää omaan käyttöön koska foorumilla peloteltiin että tietoja voi hävitä.

Tiedän että ohjelmissa on funktioita ja niitä voi kutsua, paljoa muuta en tiedä. Lisäksi tiedän että ohjelmat kirjoitetaan tiedostoihin ja kääntäjällä ne muutetaan binääriksi jota tietokone osaa suorittaa.

Joskus kysyin kaveriltani joka osaa ohjelmointia että mitä ohjelmointi kieliä käytetään linuxissa. Kaveri vastasi että oikeat ohjelmat tehdään c kielellä ja skriptiohjelmat perl kielellä. Lisäsi vielä että kaikki muut kielet on lelukieliä.  :D (saattoi olla huumoria)

Skripti ohjelmat ovat pieniä elämää helpottavia ohjelmia joilla joskus jopa liimataan oikeita ohjelmia yhteen. tälläisen käsityksen oon kaverin jutuista saanut. Kannattaako siis ensin alkaa opettelemaan oikeiden ohjelmien tekemistä vai kannattaako ensin tehdä vaan skriptiohjelmia.

Millä kielellä kannattaa aloittaa?
C vai PERL ???
Pääkone: Ubuntu 16.04 (käsin käänetty reaaliaikainen rtlinux)
Varakone1: Centos 7
Varakone2: Windows 10
Luuri: Android 5.0

nm

  • Käyttäjä
  • Viestejä: 16425
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #1 : 20.08.16 - klo:14.23 »
Joskus kysyin kaveriltani joka osaa ohjelmointia että mitä ohjelmointi kieliä käytetään linuxissa. Kaveri vastasi että oikeat ohjelmat tehdään c kielellä ja skriptiohjelmat perl kielellä. Lisäsi vielä että kaikki muut kielet on lelukieliä.  :D (saattoi olla huumoria)

Puolittain huumoria. Nykyisin suuri osa "oikeista ohjelmista" tehdään kyllä tulkattavilla skriptikielillä: isoja nettipalveluja koodataan pääosin JavaScriptillä (sekä käyttöliittymä että palvelinpuolen softa), ja Pythonia ja R:ää käytetään laajasti data-analytiikassa ja tieteellisessä laskennassa. Ubuntussa osa työpöytäohjelmista on myös toteutettu Pythonilla.

Perl on menneen talven lumia. C:tä voi harkita, jos tietokoneen toiminta ja matalan tason koodaus kiinnostaa. C toimii tavallaan myös kaikkien skriptikielten taustalla ja ohella. Esimerkiksi Pythonin soveltuminen suurten data-aineistojen käsittelyyn nojautuu täysin C:llä tai C++:lla kirjoitettuihin kirjastoihin. Java on myös laajasti käytetty, ja Android nojaa siihen.


Pythonilla pääsee nopeasti alkuun, ja se on suosittu ja vakavasti otettava ohjelmointikieli. Suomenkielisiä perusoppaita ja kurssimateriaalia on myös hyvin saatavilla.

DDR55

  • Käyttäjä
  • Viestejä: 101
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #2 : 20.08.16 - klo:15.31 »
Siitä on kauan kun puhuttiin niin ehkä Perl on sitten vanhentunut.

Javasta en tiedä koska siinä on ollut niitä tietoturva aukkoja. Lisäksi aina kaikki valittaa javasta , varsinkin Windows käyttäjät. En sitä halua asentaa.

Wikipediassa sanotaan että Python on helppo oppia. Kuulostaa hyvältä.
https://fi.m.wikipedia.org/wiki/Python_(ohjelmointikieli)

Kun katsoo Wikipediaa niin ohjelmointikieliä on varmaan sata. Ensin tehdään paljon kieliä ja sitten riidellään mikä on paras  :D

Mitä kieltä käytät nm ?
Pääkone: Ubuntu 16.04 (käsin käänetty reaaliaikainen rtlinux)
Varakone1: Centos 7
Varakone2: Windows 10
Luuri: Android 5.0

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #3 : 20.08.16 - klo:16.03 »
Python on oikein hyvä kieli aloittaa. Korkean tason kielenä siinä ei tarvitse juurikaan miettiä esimerkiksi muistinhallintaa. Lisäksi koodia voi kirjoittaa suoraan tulkkiin eli sitä pääsee heti kokeilemaan (päätteeseen python3, Ctrl+d poistuu) eikä tiedostoon kirjoitettuja ohjelmiakaan tarvitse erikseen kääntää, koska se on tulkattava kieli. Ohjelmointikielissä on tyypillisesti samat perusperiaatteet: muuttujat, operaatiot, ehtolauseet, silmukat ja niin edelleen. Siksi yhden kielen opittuaan seuraavan oppiminen on jo paljon helpompaa. Toki kaikissa kielissä on omat ominaispiirteensä.

En osaa suoralta kädeltä ehdottaa mitään tiettyä Python-ohjetta, mutta hakusanoilla Python ja opas löytyi useita suomenkielisiä tuloksia. Lisäksi Pythonilla on mainio dokumentaatio ja laaja vakiokirjasto, joten se on itsessäänkin hyvin monipuolinen ja tehokas työkalu. Joissain yhteyksissä Python 2:n ja Python 3:n välillä on pientä eroa, mutta suosittelen käyttämään suoraan Python 3:a, jos ei ole erityistä syystä käyttää vanhempaa versiota. Saman koodin pystyy tekemään molemmilla toimivaksi – usein hyvinkin pienellä vaivalla – mutta harjoitellessa siitä ei tarvitse välittää.

Työpöydällä Javassa ei sinänsä ole mitään suurempaa vikaa ja sitä käytetään joskus (useinkin?) opetuskielenä. Sen kanssa oppii Pythonia paremmin tyypityksestä ja kapseloinnista ja muutenkin se on ominaisuuksiltaan lähempänä C++:a. Jos haluaa välttää nuo usein varoitellut Javan tietoturva-aukot, niin kannattaa jättää selainliitännäiset asentamatta tai ainakin kieltää selaimesta Java-liitännäisen (ei siis JavaScriptin, eri asia!) automaattinen suoritus.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

nm

  • Käyttäjä
  • Viestejä: 16425
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #4 : 20.08.16 - klo:16.17 »
Javasta en tiedä koska siinä on ollut niitä tietoturva aukkoja. Lisäksi aina kaikki valittaa javasta , varsinkin Windows käyttäjät. En sitä halua asentaa.

Niin no työpöytäsoftaa Javalla enää harvemmin tehdään, vaikka kyllä niitäkin projekteja on. Tietoturvakritiikki taas on kohdistunut lähinnä selaimessa toimiviin Java-appletteihin, ja on osittain myös propagandaa, vaikka aukot ovat toki olleet vakavia. On kuitenkin hyvä, että selainmaailmassa pyritään keskittymään JavaScriptiin ja vältetään ylimääräisiä riippuvuuksia ja liitännäisiä.

Javaa käytetään palvelinpuolen web-ohjelmoinnissa ja Androidissa. Tietoturvatilannetta en pitäisi tällä hetkellä sen suurempana ongelmana kuin muissakaan kielissä.


Kun katsoo Wikipediaa niin ohjelmointikieliä on varmaan sata. Ensin tehdään paljon kieliä ja sitten riidellään mikä on paras  :D

Uusi kieli syntyy yleensä siksi, että jonkun idearikkaan ja taitavan koodarin tai tietojenkäsittelytieteilijän mielestä vanhat kielet ovat huonoja.  ;)


Mitä kieltä käytät nm ?

C:llä raskaampaa laskentaa ja matalan tason tietorakenteita ja algoritmeja
C++:lla ja Qt-kirjastolla työpöytäohjelmia
Pythonilla datan pyörittelyä, protoilua ja muuta vaivatonta näpertelyä
Bashilla skriptejä, joissa käsitellään tiedostoja ja kutsutaan komentoriviohjelmia (joskus prosessointi menee tosin sen verran monimutkaiseksi, että tekee mieli vaihtaa Pythoniin kesken kaiken)
JavaScriptillä web-koodausta

Python olisi kiva myös työpöytäohjelmien koodaukseen, mutta sen kanssa on aina ollut pienenä ongelmana se, että käyttöliittymäkirjastot eivät ole täysin vakiintuneita ja alustariippumattomia vaan enemmän harrastelijaprojekteja. Sama pätee kyllä moniin muihinkin kieliin. C++:n kanssa Qt on varsin miellyttävä, ja siihen on olemassa myös kohtuullisen hyvä Python-rajapinta. (Oikeastaan kaksikin: puolittain kaupallinen PyQt ja Nokian aloittama klooni PySide, joka on nyt muodostumassa viralliseksi Qt:n Python-rajapinnaksi).

Go ja Rust olisivat myös mielenkiintoisia, mutta en ole ehtinyt kokeilla niitä itse. Ne eivät myöskään ole parhaita kieliä aloittelijalle, koska sopivaa itseopiskelumateriaalia ei juuri ole, ja ekosysteemi on rajallinen.
« Viimeksi muokattu: 20.08.16 - klo:16.20 kirjoittanut nm »

snifi

  • Vieras
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #5 : 20.08.16 - klo:16.33 »
Minä olen viimeiset vuodet ohjelmoinut lähes yksinomaan Haskell-kielellä, ja aloitellut jopa ohjelmointioppaan kirjoittamista: https://github.com/jsavatgy/haskell-ohjelmointikieli

DDR55

  • Käyttäjä
  • Viestejä: 101
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #6 : 20.08.16 - klo:16.58 »
No jos Python on helppo ja c sopii raskaaseen laskentaan niin mitä erikoista go rust ja haskell kielissä on ?
Pääkone: Ubuntu 16.04 (käsin käänetty reaaliaikainen rtlinux)
Varakone1: Centos 7
Varakone2: Windows 10
Luuri: Android 5.0

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #7 : 20.08.16 - klo:19.22 »
Javasta en tiedä koska siinä on ollut niitä tietoturva aukkoja. Lisäksi aina kaikki valittaa javasta , varsinkin Windows käyttäjät. En sitä halua asentaa.
nm mainitsi sekä JavaScriptin että Javan, ethän vaan sekota niitä toisiinsa? JavaScript on käytössä joka selaimessa, eikä sillä ole mitäään tekemistä Javan kanssa. Se on vain hämäävästi nimetty.

DDR55

  • Käyttäjä
  • Viestejä: 101
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #8 : 20.08.16 - klo:19.29 »
Ainakin iltalehdessä puhutaan aina javasta eikä javaskriptistä
http://www.iltasanomat.fi/digi/art-2000000574867.html
Pääkone: Ubuntu 16.04 (käsin käänetty reaaliaikainen rtlinux)
Varakone1: Centos 7
Varakone2: Windows 10
Luuri: Android 5.0

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #9 : 20.08.16 - klo:20.22 »
Nimenomaan Javasta tai Javan selainliitännäisestä on löydetty niitä aukkoja. Myös selaimen JavaScript-toteutuksista voi olla löydetty aukkoja, mutta ne ovat aina selainkohtaisia. Yleensä nuo uutiset kyllä liittyvät nimenomaan Javaan. Helpolla pääsee, kun säätää selaimen asetuksista, ettei Java-liitännäistä suoriteta koskaan automaattisesti. Silloin sitä voi tarvittaessa kuitenkin käyttää, jos luottaa sivustoon.

Juu, hyvä muistaa, että Java ja JavaScript (aka ECMAScript) ovat eri asioita ja niillä on hyvin vähän tekemistä keskenään (äkkiseltään tulee mieleen, että molemmat ovat ohjelmointikieliä, joissa on C:n kaltainen syntaksi).
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

Ville Pöntinen

  • Käyttäjä
  • Viestejä: 2078
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #10 : 20.08.16 - klo:20.36 »
http://mooc.aalto.fi/ohjelmointi/index2016.html

Avoin kaikille. Voin suositella, jonkin verran oppilaitani on käynyt tuon ja itsekin huiskin sen puolihuolimattomasti reippaasti yli puolivälin tietääkseni mitä he tekevät. (En ohjelmoi työkseni, pieniä omia projekteja aina välillä.)

Kun oppii jonkin kielen hyvin/kohtuullisesti, on uusien kielien opettelu aika suoraviivaista.

Itseopiskelumateriaaleilla pääsee toki halutessaan vielä nopeammin eteenpäin :)

snifi

  • Vieras
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #11 : 20.08.16 - klo:20.43 »
No jos Python on helppo ja c sopii raskaaseen laskentaan niin mitä erikoista go rust ja haskell kielissä on ?

Haskell sopii raskaaseen laskentaan sekä on helppo, älykäs ja luettava ohjelmointikieli.

DDR55

  • Käyttäjä
  • Viestejä: 101
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #12 : 20.08.16 - klo:21.02 »
https://github.com/jsavatgy/haskell-ohjelmointikieli/blob/master/book.fi.md

tämä haskel opas menee kyllä yli hilseen,näyttää niin kryptiseltä että tämä kieli on kyllä suoraan egyptin pyramiidien seinältä keksitty. opas on varmasti ihan hyvä kokeneemmalle mutta kieli vaikuttaa vaikealta

miten teen haskellilla esimerkiksi tälläisen ohjelman komentorivillä:

Koodia: [Valitse]
Hei, mikä sinun nimi on?
- Ari
Moi Ari
loppu
Pääkone: Ubuntu 16.04 (käsin käänetty reaaliaikainen rtlinux)
Varakone1: Centos 7
Varakone2: Windows 10
Luuri: Android 5.0

nm

  • Käyttäjä
  • Viestejä: 16425
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #13 : 20.08.16 - klo:21.05 »
No jos Python on helppo ja c sopii raskaaseen laskentaan niin mitä erikoista go rust ja haskell kielissä on ?

Go ja Rust soveltuvat matalan tason ohjelmointiin, ja niillä on mahdollista korvata C/C++ monissa asioissa. Niissä on kehittynyt muistinhallinta (joka C:stä puuttuu) ja paljon turvallisuutta lisääviä ominaisuuksia. Molemmissa kielissä on myös huomioitu rinnakkaisohjelmoinnin haasteet paremmin kuin C:ssä ja C++:ssa.

Go:ssa on Javan tapaan pakollinen roskienkeruu, joka hieman rajoittaa kielen käyttömahdollisuuksia. Sillä ei esimerkiksi voi kirjoittaa ihan kernelitason koodia. Rustilla sekin on mahdollista.


Haskell taas on funktionaalinen ohjelmointikieli, ja poikkeaa perusperiaatteiltaan aika paljon muista mainituista kielistä, jotka ovat imperatiivisia.
Muita jossain määrin suosittuja funktionaalisia kieliä ovat mm. Clojure (joka on rakennettu Javan virtuaalikoneen varaan eräänlaiseksi vaihtoehtoiseksi kieleksi Java-ekosysteemiin),  Lisp, Scheme ja OCaml.

snifi

  • Vieras
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #14 : 20.08.16 - klo:21.52 »
Nappasin tähän valmiin ohjelman verkosta, luin sen komentokehotteeseen ja käynnistin funktion `main`:

Koodia: [Valitse]
$ ghci
GHCi, version 7.8.4: http://www.haskell.org/ghc/  :? for help
> :load your-name.hs
[1 of 1] Compiling Main             ( your-name.hs, interpreted )
Ok, modules loaded: Main.
> :! cat your-name.hs
main = do 
  putStrLn "Hello, what's your name?" 
  name <- getLine 
  putStrLn ("Hey " ++ name ++ ", you rock!") 
> main
Hello, what's your name?
Danny
Hey Danny, you rock!

tmv

  • Käyttäjä
  • Viestejä: 81
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #15 : 20.08.16 - klo:22.42 »
Minoon harrastanut ohjelmointia liki 10v enkä juuri tyvestä puuhun ole edennyt, johtuen siitäkin että kesäiseen aikaan jotenkin huomio vain suuntautuu muualle ja siinä välissä kerkee sopivasti unohtaa melkein kaiken. Nyt tänään, iltojen jo pimentyessä kummasti bash-skriptin kikkaretta vaan syntyi silti.

Aloitin reteesti c:llä, mutta ei sillä juuri mitään näkyvää tullut. Koulussa oli c++ ja vähän sama juttu. Vasta myöhemmin pythoniin tutustuessa alkoi jotain syntyä, se on em. kieliin huomattavasti suoraviivaisempi ja helpompi omaksua sinänsä.

Ja jos aikeena on nimenomaan harrastuksena aloittaa ohjelmointi, ei siinä ole niinkään väliä onko jokin kieli vanhentunut, viitaten perliin. Tavoitteet on harrastelijalla erilaiset kuin ammatikseen tai puoliammatikseen tekevät. Mun mielestä siihen kannattaa ehdottomasti tutustua. Tällä hetkellä eniten  itseä juuri kiinostaa bash ja perl. Perl tuntuu hauskemmalta kuin python.

Ja php lienee mainitsemisen arvoinen, vaikka web-palvelimiin suuntautuukin. Harrastelijan näkökulmasta kuitenkin melkoisen antoisaa kun näkyvää jälkeä ja tarkoitusta syntyy ruudulle. Linuxille on mukava asentaa samalla LAMP testaukseen.

nm

  • Käyttäjä
  • Viestejä: 16425
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #16 : 20.08.16 - klo:23.40 »
Ja jos aikeena on nimenomaan harrastuksena aloittaa ohjelmointi, ei siinä ole niinkään väliä onko jokin kieli vanhentunut, viitaten perliin. Tavoitteet on harrastelijalla erilaiset kuin ammatikseen tai puoliammatikseen tekevät. Mun mielestä siihen kannattaa ehdottomasti tutustua. Tällä hetkellä eniten  itseä juuri kiinostaa bash ja perl. Perl tuntuu hauskemmalta kuin python.

Perl on hyvä säännöllisten lausekkeiden pyörittelyyn ja muuhun vastaavaan merkkijonojen käsittelyyn. Se on edelleen ihan kätevä Linux/Unix-administraattorin työkalu. Muunlaiseen ohjelmointiin en sitä oikein suosittelisi etenkään aloittelijoille. Perlillä on kyllä vielä jossain määrin elinvoimainen ekosysteemi, mutta Pythoniin verrattuna se on moniin juttuihin aika rajallinen aloittelijankin kannalta. Lisäksi harrastelijoilla on usein tapana jämähtää siihen yhteen kieleen, jolloin huono ensimmäinen valinta alkaa jossain vaiheessa rajoittaa harrastusta ikävästi.


Ja php lienee mainitsemisen arvoinen, vaikka web-palvelimiin suuntautuukin. Harrastelijan näkökulmasta kuitenkin melkoisen antoisaa kun näkyvää jälkeä ja tarkoitusta syntyy ruudulle. Linuxille on mukava asentaa samalla LAMP testaukseen.

PHP on kuin Perl web-koodaukseen, mutta amatöörien suunnittelemana.   ;D

Se on kyllä totta, että sillä saa aika vaivattomasti jotain aikaan. Muutenhan web-ohjelmoinnissa muutosvauhti on tällä hetkellä täysin järjetön. Ohjelmointikehykset ja paradigmat muuttuvat jatkuvasti, ja ammattilaisillakin on vaikeuksia pysyä kelkassa. PHP voi siis olla jopa suositeltava kieli aloittelijalle web-palvelujen toteuttamiseen.

DDR55

  • Käyttäjä
  • Viestejä: 101
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #17 : 21.08.16 - klo:10.18 »
oppaan avulla tehty ohjelma python kielellä
Koodia: [Valitse]
print("Tervetuloa ohjelmaan")
print("Mikä sinun nimi on?")
nimi = input()
print("Terve", nimi)
print("heippa")

kun pythonia ei tarvitse kääntää niin voiko sen silti kääntää jos haluaa?
Pääkone: Ubuntu 16.04 (käsin käänetty reaaliaikainen rtlinux)
Varakone1: Centos 7
Varakone2: Windows 10
Luuri: Android 5.0

Toshihiro

  • Käyttäjä
  • Viestejä: 15
  • Arch Linux
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #18 : 21.08.16 - klo:10.23 »
Python on todella helppo, ja hyvä kieli aloittelijoille. Python 2, ja 3 välillä ei juurikaan eroavaisuuksia ole, mutta kannattaa käyttää silti uusinta versiota. Sitten kun Python on hallussa, niin kannattaa katsoa vaikka jotain käännettävää kieltä, kuten C kieltä. Kun nuo kaksi kieltä osaa, niin pitäisi olla muidenkin kielten opettelu sitten huomattavasti helpompaa.

Toshihiro

  • Käyttäjä
  • Viestejä: 15
  • Arch Linux
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #19 : 21.08.16 - klo:10.35 »
oppaan avulla tehty ohjelma python kielellä
Koodia: [Valitse]
print("Tervetuloa ohjelmaan")
print("Mikä sinun nimi on?")
nimi = input()
print("Terve", nimi)
print("heippa")
kun pythonia ei tarvitse kääntää niin voiko sen silti kääntää jos haluaa?
Python koodia ei pysty kääntämään niin, että tulkkia ei tarvittaisi. Python kuitenkin kääntää koodin Python-tavukoodiksi ennen ajamista, niin ohjelman suoritus on nopeampaa. Eli Pythonia ei pysty kääntämään kuten esim. C:tä.