Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: DDR55 - 20.08.16 - klo:14.05

Otsikko: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 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 ???
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: nm - 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.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 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 ?
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Tomin - 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 (https://docs.python.org/3/), 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.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: nm - 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 (https://wiki.qt.io/PySide2)).

Go (https://golang.org/) ja Rust (https://www.rust-lang.org/en-US/) 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.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: snifi - 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
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 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 ?
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: AimoE - 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.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 20.08.16 - klo:19.29
Ainakin iltalehdessä puhutaan aina javasta eikä javaskriptistä
http://www.iltasanomat.fi/digi/art-2000000574867.html
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Tomin - 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).
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Ville Pöntinen - 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 :)
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: snifi - 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.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 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
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: nm - 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 (https://github.com/redox-os/redox).


Haskell taas on funktionaalinen ohjelmointikieli (https://fi.wikipedia.org/wiki/Funktionaalinen_ohjelmointi), 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.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: snifi - 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!
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: tmv - 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.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: nm - 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.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 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?
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Toshihiro - 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.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Toshihiro - 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ä.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: tmv - 21.08.16 - klo:12.29
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.

Joo. Ja toki harrastelijoillakin on eri tarkoitusperiaatteet. Tuskin muilla alustoilla kuin linux/unix edes mainitaan perliä. Administraattorin työkaluna tyyppisenä sitä lähinnä opetellutkin, joskin ainakin omissa tarkoitusperiaatteissa bash on monesti kätevämpi, kun ronklaa vaan komentorivin komentoja.

Lainaus
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.

Jaahas. Olen pitänyt php:tä melkolailla standardina web-ohjelmoinnissa, monesti osoiterivipalkissa ainakin php lukee.

Tokihan koitin, kun perlin aika oli ns. ohi, perl+cgi yhdistelmää web-sivustoissa, mutta se tosiaan oli monimutkaista. Tutustuin php:hen ja moni asia mikä perlillä vaati monta riviä, meni php:llä yhdellä rivillä - epämääräisenä kuriositeettina mainittakoon.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: snifi - 21.08.16 - klo:15.56
Minä olin itse aikaisemmin hyvinkin innokas Pythonin käyttäjä. Kuitenkin lopulta tuli aika, jolloin halusi tehdä aidosti käännettäviä ohjelmia. Silloin olisi pitänyt siirtyä kahden kielen käyttäjäksi ja minusta se ei ollut toimiva ratkaisu. Ehkä hienoisena houkuttimena toimi vielä, kun saattoi jättää yhdet ylimääräiset sulkumerkit pois `print`-funktiosta.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: AimoE - 21.08.16 - klo:16.03
Silloin olisi pitänyt siirtyä kahden kielen käyttäjäksi ja minusta se ei ollut toimiva ratkaisu.
En kyllä osaa kuvitella miten pelkästään yhden ohjelmointikielen käyttö voisi olla toimiva ratkaisu, ellei sitten ole kyse yksittäisestä sovelluksesta.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: nm - 21.08.16 - klo:16.30
kun pythonia ei tarvitse kääntää niin voiko sen silti kääntää jos haluaa?

Jos tavoitteena on saada ohjelma paketoitua sellaiseen muotoon, ettei lähdekoodia pysty suoraan lukemaan, on mahdollista käyttää esimerkiksi PyInstalleria (http://www.pyinstaller.org/). Se tuottaa yhden ajettavan binäärin, jossa on sisällä ohjelman tavukoodi, kaikki käytetyt Python-oheiskirjastot ja myös Python-tulkki.


En kyllä osaa kuvitella miten pelkästään yhden ohjelmointikielen käyttö voisi olla toimiva ratkaisu, ellei sitten ole kyse yksittäisestä sovelluksesta.

Niinpä. Ruuvia ei kannata asentaa vasaralla. :) Usein myös laajempien yksittäisten ohjelmistojen toteutukseen käytetään useita kieliä.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: snifi - 21.08.16 - klo:16.39
En kyllä osaa kuvitella miten pelkästään yhden ohjelmointikielen käyttö voisi olla toimiva ratkaisu, ellei sitten ole kyse yksittäisestä sovelluksesta.

En ymmärrä ihan täysin kysymystäsi, mutta itse olen kokenut yhteen kieleen keskittymisen erinomaisen hyväksi valinnaksi.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: AimoE - 21.08.16 - klo:16.56
En ymmärrä ihan täysin kysymystäsi, mutta itse olen kokenut yhteen kieleen keskittymisen erinomaisen hyväksi valinnaksi.

Ei se ollut kysymys vaan toteamus. Ihan jo pelkästään se että ohjelmointityökaluja komentelee omentotulkissa, olipa se bash tai joku muu, vaatii jonkinlaista komentojonojen ohjelmointia milloin mihinkin tarkoitukseen. Ja koodia muokatessa tulee muokattua ediotrin makroja tms. Tämän lisäksi eri asioita (nettilitíttymiä, taustaproseseja, jne.) tulee ohjelmoitua hieman eri työkaluilla. En kertakaikkiaan pysty kuvittelemaan että voisin rajoittaa ohjelmoinnin yhteen ainoaan kieleen. Kuka palkkaisi työhön ohjelmoijan joka osaa vain yhtä ohjelmointikieltä? Eihän ohjelmointitaitoa voi oppia jos ei kokeile monenlaisia kieliä. Parasta ohjelmointiharjoittelua on ylläpitää vanhoja ohjelmistoja. Siinä oppii samalla myös ohjelmistosuunnittelua.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: snifi - 21.08.16 - klo:17.28
Ei se ollut kysymys vaan toteamus. Ihan jo pelkästään se että ohjelmointityökaluja komentelee omentotulkissa, olipa se bash tai joku muu, vaatii jonkinlaista komentojonojen ohjelmointia milloin mihinkin tarkoitukseen. Ja koodia muokatessa tulee muokattua ediotrin makroja tms. Tämän lisäksi eri asioita (nettilitíttymiä, taustaproseseja, jne.) tulee ohjelmoitua hieman eri työkaluilla. En kertakaikkiaan pysty kuvittelemaan että voisin rajoittaa ohjelmoinnin yhteen ainoaan kieleen. Kuka palkkaisi työhön ohjelmoijan joka osaa vain yhtä ohjelmointikieltä? Eihän ohjelmointitaitoa voi oppia jos ei kokeile monenlaisia kieliä. Parasta ohjelmointiharjoittelua on ylläpitää vanhoja ohjelmistoja. Siinä oppii samalla myös ohjelmistosuunnittelua.

Tokihan erilaisiin kieliin törmää väistämättä niin komentotulkissa kuin ohjelmien asetustiedostoissa. Mutta mielestäni edellä oli kysymys tilanteesta, jossa tehdään yksinkertaiset työt Pythonilla ja kun tarvitaan kääntäjää, vaihdetaan C-kieleen. Tällaista kahden kielen asetelmaa minä pidän huonona. Minä itse teen Pythonin, C:n ja PHP:n työt yhdellä kielellä. Seurauksena on, että hallitsen tämän yhden kielen paremmin kuin jos olisin hajauttanut työt kahdelle tai kolmelle kielelle. Tämän olettaisi olevan myös työnantajan tavoitteissa.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: kamara - 21.08.16 - klo:18.43
Minusta kannattaa käyttää sopivinta ohjelmointikieltä ongelmanratkaisuun.

Jos haluan nopeutta, niin C (Joskus ehkä Assembler, mutta nykyään sitä ei juuri tarvitse). Pdf:ssä ja netissä käytän mielelläni php:tä (selaimissa JavaScriptiä). Kännyköissä olen käyttänyt Javaa.

Mielestäni ohjelmointikielellä ei ole niin väliä, kunhan sillä saa ratkaistua halutun ongelman riittävällä nopeudella tai sopivalla vaivalla.

Tavoitteena on ratkaista ongelma, enkä itse osaa sanoa, että onko oikea ratkaisu toteutettu väärällä tavalla. (Vähän kuin palomies sanoisi, että tulipalo on sammutettu väärin.)

En siis edes osaisi tehdä C:llä selaimessa pyörivää ohjelmaa,.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 21.08.16 - klo:19.02
Mitä eroa on metodilla ja funktiolla
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: kamara - 21.08.16 - klo:19.11
Mitä eroa on metodilla ja funktiolla

Metodi on jonkin luokan funktio/proseduuri.

Tosin opiskeluistani jonkin verran aikaa, joten tietävämmät voisivat tarkentaa/korjata selitystäni.

Edit - http://users.jyu.fi/~vesal/kurssit/cpp/materiaali/olio/

Edit2 - https://fi.wikipedia.org/wiki/Olio-ohjelmointi
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 21.08.16 - klo:19.32
Kumpaa kannattaa käyttää Python 3 ssa?
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: AimoE - 21.08.16 - klo:20.36
Kumpaa kannattaa käyttää Python 3 ssa?
Kumpaakin, tilanteesta riippuen. Ei se riipu kielestä vaan ongelmasta jota olet ratkaisemassa.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: kamara - 21.08.16 - klo:20.40
Kumpaa kannattaa käyttää Python 3 ssa?

Pienissä scripteissä käytän yleensä funktiota/proseduuria, mutta jos kyseessä on isompi kokonaisuus, niin kannattaa käyttää olio-ohjelmointia eli metodeita, jolloin luokkien kapseloinnista on hyötyä.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: AimoE - 21.08.16 - klo:21.53
Oppimisen kannalta on helpointa aloittaa funktioista ja proseduureista, ja siirtyä metodeihin sitten kun alkaa hiffata mihin olio-ohjelmointia tarvitaan.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: JA5U - 22.08.16 - klo:09.25
Itsellä olisi kovasti haluja päästä tuosta Olio-ohjelmoinnista kärryille.
Etenkin erilasiten suunnittelumallien (design pattern) soveltaminen omiin tarpeisiin.

Tuntuu olevan vain kovin haastavaan saada käsitys ongelmanratkaisusta ja siihen sovellettavasta suunnittelumallista.
Myös muiden olioohjelmointia ohjaavien periaatteiden kuten DRY, SRP jne. soveltaminen tuntuu haastavalta.

Ja joskus jos yrittää päästä kärryille jostain hyvin abstraktisti luodusta koodista, niin se vasta onkin haastavaa.
Yleensä koodin lukeminen ja ymmärtäminen on kuitenkin aika kohtuu helppoa. Jokseenkin vieraat syntaksit tuppaavat hidastamaan.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: AimoE - 22.08.16 - klo:10.29
Itsellä olisi kovasti haluja päästä tuosta Olio-ohjelmoinnista kärryille.
Etenkin erilasiten suunnittelumallien (design pattern) soveltaminen omiin tarpeisiin.

Suosittelen kirjaa "Refactoring", kirjoittaja Martin Fowler. Kannattaa hankkia omaksi jos vaan löytää sen jostain. Luet sen sitten ensin aloittelijan silmi, muöhemmin uudelleen kokeneemmin silmin. Miolemmilla kerroilla se avaa uusia näkökulmia. Kirjan esimerkit tosin on kirjoitettu Java-kielellä, mutta sillä ei ole mitään väliä, samat esimerkit voi vääntää milä tahansa ohjelmointikielellä, jossa on jonkinlainen oliomalli mukana. Osa esimerkeistä ei vaadi sitäkään. Itse koen tehneeni samoja siirtoja Cobol-kielellä kauan sitten 80-luvulla, ja kirjan lukeminen oli kiva elämys kun tajusin että jokainen ohjelmoija (jolla on oikeasti taupumusta ohjelmintiin) luonnostaan päätyy tekemään samoja siirtoja vaistomaisesti, enemmän tai bähemmän säntillisesti.

Edit: Refactoring ei varsinaisesti koske olio-ohjelmointia, vaan ohjelmointia ylipäätään. Siitä vain on helpointa esittää esimerkkejä oliomallien avulla, koska oliokoodissa siirtojen tavoite toteutuu selkeimmin.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: snifi - 22.08.16 - klo:10.58
Tässäkin olisi oma keskustelun aiheensa: Olio-ohjelmoinnin arvostus verrattuna muihin ohjelmointiparadigmoihin. Olio-ohjelmoinnista funktionaaliseen ohjelmointiin siirtyneenä tiedän, että olio-ohjelmointi on tänä päivänä yliarvostettua ja sen etuja liioitellaan.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: _Pete_ - 22.08.16 - klo:15.26

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

Kyllä pystyy: http://jnode.org/

 ;)
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: nm - 22.08.16 - klo:16.05

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

Kyllä pystyy: http://jnode.org/

 ;)

No joo. :)

Oikeastaan ajattelin olemassa olevan käyttöjärjestelmän laajentamista, kuten uuden ajurin kirjoittamista Linuxiin. Sekin voi kikkailulla olla periaatteessa mahdollista Go:lla tai Javalla, mutta itse en siihen lähtisi. Rust soveltuu sellaiseen matalan tason koodaukseen paremmin, ja on pitkällä tähtäimellä varteenotettava vaihtoehto C:lle käyttöjärjestelmäohjelmointiin.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: JA5U - 23.08.16 - klo:12.28
Ja toinen suuri ongelma tuppaa olemaan, että keksin uusia juttuja ennen kuin edellisetkään on valmiita.
Sitten lähden pykäämään sellaista elämäntarkoituksen ratkaisevaa geneeristä ratkaisua, joka taipuisi kaikkiin tuleviin tarpeisiin.

Tämän myötä törmäsin hiljattain YAGNI - You "Ain't Gonna Need It.
Eli ei tehdä sellaisia ominaisuuksia tai oteta niitä huomioon, jotka koetaan mahdollisesti vasta tulevaisuudessa hyödylliseksi.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: _Pete_ - 24.08.16 - klo:08.28
Jos kiinnostaa ja on tietoa Java(EE) ja IRC niin minulla olisi hyvä projekti jossa voi opetella ohjelmointia alkeista vaativimpiinkin tapauksiin...

Jos kiinnostakaa pistäkää privaviestiä niin kerron tarkemmin.

Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Postimies - 27.08.16 - klo:14.14
Miksi Rubyä ei ole mainittu? Linda Liukkaan  Hello Ruby on menestynyt maailmalla hyvin. C on kamala kieli eikä sovi aloittelijalle. Itse pidin aikoinaan Pascalista ja tein sillä ensimmäiset ohjelmani. Toki Basic oli laskimessa ja ekassa mikrossa. C on kirjoitettu C:llä ja ilman kirjastoja sillä ei tee oikein mitään. C:llä saa kirjoitettua hyvin hankalasti ymmärreltävää koodia. Toki tehokasta ja gcc kääntäjä tekee tehokasta koodia.  Voisi olla mielenkiintoista kirjoittaa vaikka Mandelbrotin joukko (fraktaali) eri kielille ja verrata suoritusnopeuksia. C:llä se hyvä puoli, että erilaisia kirjastoja siihen löytyy paljon. Jos on tarvetta laskea jotain tuhannen numeron tarkkuudella kielen vantamahdollisuudet pienenee. On paljon ns. alkuarvo herkkiä tehtäviä, joissa laskennassa numeroiden määrällä ja tarkkuudella on merkitystä. Toki käytetyllä aljoritmilla.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: AimoE - 27.08.16 - klo:14.43
C on kamala kieli eikä sovi aloittelijalle. Itse pidin aikoinaan Pascalista ja tein sillä ensimmäiset ohjelmani.
Kun itse aloitin opiskelun, Algol oli juuri hylätty ja opiskeltiin Pascalia ja Mixalia. Opiskelijat murisivat siitä ettei C ollut ohjelmassa, vaikka sitä tarvittiin töissä. Itse en koskaan ymmärtänyt sitä valitusta, koska minulle oli yhdentekevää mitä kieltä käytetään, kunhan opitaan. Ajattelin alusta asti että ohjelmoijan pitää osata monia kieliä. Eikä mennyt montaa vuotta kun jo muokkasin C-kielistä ohjelmaa. Mutta opetuskielen valinnan salat alkoivat aueta siinä vaiheessa kun luin artikkelin jonka kirjoittajaa en enää muista, enkä paljoa muutakaan. Artikkelin kirjoittaja kumminkin arvioi sitä miksi Pascal epäonnistui niin pahasti opetuskielenä sanomalla jotain sen tapausta että abstrakti Pascal-kone ei missään vaiheessa vastannut meidän käsitystämme tietokoneesta, kun taas abstrakti C-kone vastaa sitä täydellisesti. Minusta se oli hyvin sanottu, vaikka itse satuinkin olemaan ihan tyytyväinen Mixaliin ja Pascaliin, jotka molemmat olen jo autuaasti unohtanut.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: welmar - 27.08.16 - klo:15.16
Miksi Rubyä ei ole mainittu? Linda Liukkaan  Hello Ruby on menestynyt maailmalla hyvin.
Ruby on mukava mutta pari häiritsevää piirrettä löytyy. Rubyllä itsestään ei  tee mitään vaan gem:ssejä pitää olla ja niideen kanssa olen joskus saanut koneen sekoilemaan. Eniten ärsyttää kuitenkin se että rubylle kun etsii ohjeita niin lähes kaikki on tehty (ehkä Lindan peräs) ihan lapsille. Kokeilemisen arvoinen on myös Lua, joka on varmaan kaikissa linuxjakeluissa vakiona. Ohjelmoinnissa kuitenkin pitää oppia ohjelmoimaan kun sen oppii niin viimeistään silloin tajuaa että aika samanlaista se on vaikka kieli muuttuu. Minä itse yritän kans vasta opetella joten voin olla hyvinkin väärässä.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Postimies - 27.08.16 - klo:15.34
En ole koodia kirjoitanut vuosiin. Borlandin Turbo Pascal oli aikoinaan hyvin suosittu. Kääntäjä oli nopea vaatimattomassa ensimmäisessä koneessani jossa peräti 8Mhz kellotaajuus ja kovalevy. Aika nopeasti GUI kehittyi ja mukaan tuli kirjastot joilla pystyi tekemään esim. valikot pienellä vaivalla. Kaikissa ohjelmointikielissä pitää olla ne tietyt perusrakenteet. Hyvin voi aloittaa jollain opetuskielellä. Toimiva GUI nopeuttaa paljon.

C:llä muistin käsittely on hankalaa ja virheiden etsiminen työlästä. Muistaakseni muuttujien tyyppejäkään ei pahemmin tarkasteta joten integer tyyppisen muuttujan arvoksi voi pistää vaikka merkkijonon. Vahvasti tyypitetyissä kielissä noin ei pääse käymään. C on hyvin yksinkertainen kieli jolla ei tee juuri mitään ilman kirjastoja. 
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: welmar - 27.08.16 - klo:15.55
C:llä muistin käsittely on hankalaa ja virheiden etsiminen työlästä. Muistaakseni muuttujien tyyppejäkään ei pahemmin tarkasteta joten integer tyyppisen muuttujan arvoksi voi pistää vaikka merkkijonon. Vahvasti tyypitetyissä kielissä noin ei pääse käymään. C on hyvin yksinkertainen kieli jolla ei tee juuri mitään ilman kirjastoja.
Eikö näistä ongelmista pääse jo ihan sillä että käyttää jonkinlaista IDE:ä? Geany tai Kate+ pluginit kevyemmästä päästä jo hoitaa noi ongelmat. Eclipce tai Codeblock jos haluaa enemmän mutta itse olen toistaiseksi tyytynyt lähinnä Geanyyn koska aina ei ole välttämättä hyvä jos on kaikkee tarjolla. Eikä millään kielellä tee oikein mitään ilman kirjastoja, tai Rubyssä gem:sejä.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: kamara - 27.08.16 - klo:16.33
C:llä muistin käsittely on hankalaa ja virheiden etsiminen työlästä. Muistaakseni muuttujien tyyppejäkään ei pahemmin tarkasteta joten integer tyyppisen muuttujan arvoksi voi pistää vaikka merkkijonon. Vahvasti tyypitetyissä kielissä noin ei pääse käymään. C on hyvin yksinkertainen kieli jolla ei tee juuri mitään ilman kirjastoja.

Minä en taas huomaa eroa C:llä kirjoitettuun ja TPascalilla. Tyypitys toki on hivenen erilainen, mutta rekursioiden käyttö oli TPascalissa lähes mahdotonta, kun pino oli vain 64 kilotavua ainakin oletuksena.

Eli jos halusi tehdä rekursioita, niin ne tuli purkaa, jolloin koodi oli vaikeampi ymmärtää.

Eikös yleensä kielien ominaisuus ole se, että kirjastot auttavat koodaria ?
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: welmar - 27.08.16 - klo:16.43
Eikös yleensä kielien ominaisuus ole se, että kirjastot auttavat koodaria ?
Olenko ymmärtänyt jotain väärin mutta eikö kirjastot ole pieniä koodin pätkiä joita tarvitaan usein ja siksi niitä on ettei pyörää tarvitse aina keksiä uudelleen?
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: kamara - 27.08.16 - klo:16.54
Eikös yleensä kielien ominaisuus ole se, että kirjastot auttavat koodaria ?
Olenko ymmärtänyt jotain väärin mutta eikö kirjastot ole pieniä koodin pätkiä joita tarvitaan usein ja siksi niitä on ettei pyörää tarvitse aina keksiä uudelleen?

Sitä juuri tarkoitin.  ;)
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Postimies - 27.08.16 - klo:20.08
Minä en taas huomaa eroa C:llä kirjoitettuun ja TPascalilla. Tyypitys toki on hivenen erilainen, mutta rekursioiden käyttö oli TPascalissa lähes mahdotonta, kun pino oli vain 64 kilotavua ainakin oletuksena.

Eli jos halusi tehdä rekursioita, niin ne tuli purkaa, jolloin koodi oli vaikeampi ymmärtää.

Eikös yleensä kielien ominaisuus ole se, että kirjastot auttavat koodaria ?
Moni muukin asia oli noilla kääntäjillä hankalaa kun muistiavaruus oli pieni. Rekursio
on molemmilla kielillä helppo toteuttaa ja koodin kirjoittajan vastuulla on tietysti se,
että rekursio ei täytä muistia. Rekursion idea ei ehkä avaudu ihan aloittelijalle.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Postimies - 27.08.16 - klo:20.24

Eikös yleensä kielien ominaisuus ole se, että kirjastot auttavat koodaria ?
Kyllä kirjastot auttaa. C on vain niin köyhä, että melkein kaikki sen funktiot ovat
jossain kirjastossa. Tulostus funktiokin vaatii jonkun kirjaston. Tai vaikka
neliöjuuri. Jos haluaa tehdä parin rivin ohjelman joka tulostaa luvun
neliöjuuren siihen tarvitaan useampi kirjasto. Sitten muistelet missäs
moiset ovat ja kääntämiseen menee aikaa tulos yllättävän iso. Pythonilla,
perlillä ym. yksinkertaiset harjoitukset onnistuu helpommin. Jos vaikka
tekee ohjelman joka lukee luvun ja tulostaa sen neliöjuuren.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: welmar - 27.08.16 - klo:20.34
Mutta eikö se ole just C:n etu?  C kuitenkin on laiteläheinen kieli jossa on merkitystä sillä että ei ole liikaa mitään.  Neliöjuuret varmaan menee pythonilla ihan perusasennuksellakin mutta ei kovin ihmeellistä silläkään laske jos ei matematiikka kirjastoja asenna.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: kamara - 27.08.16 - klo:20.49
Moni muukin asia oli noilla kääntäjillä hankalaa kun muistiavaruus oli pieni. Rekursio
on molemmilla kielillä helppo toteuttaa ja koodin kirjoittajan vastuulla on tietysti se,
että rekursio ei täytä muistia. Rekursion idea ei ehkä avaudu ihan aloittelijalle.

Kyllä minä muistan, että rekursio TurboPascalilla oli käytännössä käyttökelvoton, kun rekursiotaso nousee kymmeniin, niin ohjelma kaatui pino-ongelmiin. Kateellisena kokeilin C:llä kyseistä, ja siinä raja tuli vastaan vasta kun muisti alkaa loppua, joten siinä sitä pystyi käyttämään, vaikka DOS:n 640 Kt:n rajoitus tuntuu nykyisin pieneltä. Nykyisissä FrePascalissa ei taida olla kyseistä ongelmaa, mutten ole testannut.

Kyllä kirjastot auttaa. C on vain niin köyhä, että melkein kaikki sen funktiot ovat
jossain kirjastossa. Tulostus funktiokin vaatii jonkun kirjaston. Tai vaikka
neliöjuuri. Jos haluaa tehdä parin rivin ohjelman joka tulostaa luvun
neliöjuuren siihen tarvitaan useampi kirjasto. Sitten muistelet missäs
moiset ovat ja kääntämiseen menee aikaa tulos yllättävän iso. Pythonilla,
perlillä ym. yksinkertaiset harjoitukset onnistuu helpommin. Jos vaikka
tekee ohjelman joka lukee luvun ja tulostaa sen neliöjuuren.

Tämä on kieltämättä totta, mutta toisaalta C-kielenkääntäjän ohjelmoijan ei tarvitse implementoida niin paljoa yksityiskohtia, jotta saa kielen implementoitua. C-kielellä ohjelmointi on sentään ihan huomattavasti mukavampaa kuin Assemblerilla.

C-kielen vahvuus ja samalla heikkous on sen laiteläheisyys.

- Welmar -kerkesi ensiksi.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: AimoE - 27.08.16 - klo:21.10
Rekursiosta hauskin homma joka tulee mieleen oli kun piti kirjoittaa aidosti rekursiivinen ohjelma, ja jostain syystä halusin tehdä sen TPU-kielellä joka tuli VAX VMS:n mukana. Se sopikin tehtävään lopulta ihan loistavasti, mutta hetken aikaa sain kyllä raapia päätäni. Ensinnäkin TPU ei salli että proseduuri kutsuu itseään, ja toiseksi kielessä ei ole osoitintyyppiä. Pinnalta katsoen näytti siltä että mitään rekursiivista ei voisi tehdä, mutta pienen miettimisen jälkeen tajusin että se on vain silmänlumetta. Proseduurien parametrithan välitetään by reference, joten se osoitintyyppi on siinä, eikä mikään estä kirjoittamasta kahta eri proseduuria jotka kutsuvat toinen toisinaan vuoronperään. Näillä avuilla sain dynaamisen puurakenteen ja sen läpikäynnin tehdyksi harvinaisen vaivattomasti. TPU on myös siitä kiva kieli ettei siinä ollut kiun muutama varattu sana opeteltavaksi.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: snifi - 27.08.16 - klo:21.18
Periaatteessa kääntäjä voi automaattisesti muuttaa rekursion iteraatioksi. Esimerkiksi Haskell-kääntäjä tekee näin. Itse olen myös käynyt läpi vaiheet, joissa aluksi opettelin rekursion, sitten opettelin pois siitä, ja nyt jälleen opettelen takaisin käyttämään rekursiota.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: AimoE - 27.08.16 - klo:21.36
Tarkoitin aidosti rekursiivisella matemaattisen logiikan määritelmää, eli sitä että vaikka ohjelman kuinka muuttaisi iteraatioksi niin sen muistin ja/tai ajankäytölle ei voi ennalta asettaa rajaa jossa se aina pysyy syötteestä määrästä ja laadusta riippumatta.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Postimies - 28.08.16 - klo:02.30
Kyllä minä muistan, että rekursio TurboPascalilla oli käytännössä käyttökelvoton, kun rekursiotaso nousee kymmeniin, niin ohjelma kaatui pino-ongelmiin. Kateellisena kokeilin C:llä kyseistä, ja siinä raja tuli vastaan vasta kun muisti alkaa loppua, joten siinä sitä pystyi käyttämään, vaikka DOS:n 640 Kt:n rajoitus tuntuu nykyisin pieneltä. Nykyisissä FrePascalissa ei taida olla kyseistä ongelmaa, mutten ole testannut.
Borlandin Pascal kääntäjän tuottamassa oli muitakin vikoja. Yksi harmillisin oli, että nopeamman koneen hankittuani ohjelmat eivät enää toimineet viallisen koodin takia. Muistaakseni jossain versiossa pinon kokoa pystyi kasvattamaan, mikä auttoi rekursiossa. Rekursiossa on aina se mahdollisuus, että ratkaisua ei löydy ja muisti loppuu. Siitä pitää huolehtia. Matemaattinen rekursio ei toimi aina kaikilla syötteillä koneessa. Jos vielä itseään kutsuvassa ohjelmassa esitellään lisää muuttujia muistia kuluu lisää. Aloittelijan kannattaa vältää rekursiota.
 

Joskus olen miettynyt voisiko Turbo Pascalille kirjoitettuja juttuja kääntää Free Pascalilla. Ongelmaksi muodostuu VGA-näytölle kirjoitetut grafiikka käskyt. Ehkä tuo Free Pascal osaa kirjoittaa pisteen näytölle. Dos aikoina tehtiin ohjelmia joissa grafiikka ja tekstitilaa vaihdeltiin. Nyt muistia olisi vaikka kirjoittasi koko näytön sisällön johonkin muuttujaan väreineen. 
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: ilkant - 28.08.16 - klo:12.06
Tässä on yksi tapa tutustua ohjelmointiin: IT-kouluttajien Koodiaapinen (http://koodiaapinen.fi/). Siinä on eritasoisia kursseja. Python-kurssi voisi olla ehkä hyvä täällä olevalle. Sen voi suorittaa täysin netissä, ei tarvitse omalle koneelle mitään asennuksia. Toki voi asennella ohjelmointiympäristöjä omallekin koneelle.

Kun lukee näitä kommentteja, huomaa selvästi ne kokeneiden ohjelmoijien kommenteiksi: Aluksi ei ole niin tärkeää se toteutuskieli ja sen tehokkuus tai hyvyys vaan oppia ohjelmoinnin perusasiat. Muuttujat, lohkot, lauseiden suoritusjärjestys, yms. Ne perusperiaatteet toimivat samankaltaisesti lähes jokaisessa tavallisessa ohjelmointikielessä. Java on edelleen hyvä opettelukieli. Aiemmin oli vielä formaalimpi Pascal.

Aluksi menee varmasti paljon aikaa tiedon etsintään. Ja vain kokeilemalla oppii ohjelmoinnissa!
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 04.09.16 - klo:23.02
En oo vähään aikaan taas lukenut palstaa mutta pari kyssäriä on

Mikä on anonyymi funktio? Toimiiko se puthonissa ?

Mikä on duck typing? Näin englantilaisessa tekstissä.

Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: juyli - 05.09.16 - klo:00.00
Joskus olen miettynyt voisiko Turbo Pascalille kirjoitettuja juttuja kääntää Free Pascalilla.
Onnekseni omat koodini Turbo Pascalilla ovat jo hävinneet bittiavaruuteen lerppujen ja korppujen kadottua (tai niiden bittien hävittyä ko. medioilta). Myös Turbo-C/C++ oli opiskelukielenäni. Object-Oriented Programming oli viimeisin opiskeluni muuri kiivetä yli asiallisen käyttämäni serpentiinikoodin - jalka lipesi ja bash-komentotulkin tai FreePascalin ohjein sain koodia suoritetuksi "omiin tarpeisiin".
Toki Gcc kääntää C-koodia, mutta koodaamiseni tavoitteet ovat (toisteksi) erityisen vaatimattomat.  Yleensä koodaaminen rajoittuu bash-skripteihin.

PS. Pascal oli nimenomaan opetuskäyttöön perustunut ohjelmointikieli.
https://fi.wikipedia.org/wiki/Pascal_(ohjelmointikieli)
Ja paluu nykyaikaan:
https://fi.wikipedia.org/wiki/Free_Pascal

Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: AimoE - 05.09.16 - klo:10.11
En oo vähään aikaan taas lukenut palstaa mutta pari kyssäriä on

Mikä on anonyymi funktio? Toimiiko se puthonissa ?

Mikä on duck typing? Näin englantilaisessa tekstissä.

Löytyyhän nuo ihan kuuklella:

https://en.wikipedia.org/wiki/Anonymous_function
https://en.wikipedia.org/wiki/Duck_typing

Aloittelijan ei kannata käyttää energiaa noihin käsitteisiin heti alussa, se vaan sekottaa pään. Kannattaa keskittyä niihin asioihin joita aloittelijan tutoriaaleissa esitetään ja vasta sitten siirtyä monimutkaisempiin asioihin. Varsinkin tuo duck typing vaatii aika vahvan olio-osaamisen taustakseen. Kannattaa yrittää pienempiä haukkapaloja.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Postimies - 05.09.16 - klo:19.07
Joskus olen miettynyt voisiko Turbo Pascalille kirjoitettuja juttuja kääntää Free Pascalilla.
Onnekseni omat koodini Turbo Pascalilla ovat jo hävinneet bittiavaruuteen lerppujen ja korppujen kadottua (tai niiden bittien hävittyä ko. medioilta). Myös Turbo-C/C++ oli opiskelukielenäni. Object-Oriented Programming oli viimeisin opiskeluni muuri kiivetä yli asiallisen käyttämäni serpentiinikoodin - jalka lipesi ja bash-komentotulkin tai FreePascalin ohjein sain koodia suoritetuksi "omiin tarpeisiin".
Toki Gcc kääntää C-koodia, mutta koodaamiseni tavoitteet ovat (toisteksi) erityisen vaatimattomat.  Yleensä koodaaminen rajoittuu bash-skripteihin.

PS. Pascal oli nimenomaan opetuskäyttöön perustunut ohjelmointikieli.
https://fi.wikipedia.org/wiki/Pascal_(ohjelmointikieli)
Ja paluu nykyaikaan:
https://fi.wikipedia.org/wiki/Free_Pascal
Itselläni on jotain jäljellä. Taitaa jopa kääntäjä löytyä. Turbo Pascalista pidin koska käänsi nopeasti. C oli hidas... Inhosin sitä. Nykykoneilla kääntää nopeasti.
Eilen latasin gitillä Kodin kehitys version. Lataaminen ja tarvittavien kirjastojen asennus kesti kauemmin kuin varsinainen käännös. Joskus tuotakin
on käännetty parisen tuntia. Gitillä voi ladata jotain helppoa ja opetella debuggaamaan koodia ja tekemään siihen muutoksia. Lasarukselle löytyi Doublefractal
https://sourceforge.net/projects/doublefractal/ Sekin on hauskaa jos lisää tuonne jonkun oman fraktaalin tai muuttelee jo olemassa olevia.
Ajan saa kulumaan jos Mandelbrot joukkoa alkaa laskemaan tuhansilla desimaaleilla.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: snifi - 05.09.16 - klo:23.19
Voisin yrittää valottaa tuota nimetöntä muuttujaa Haskell-kielellä. Määritellään funktio `square`, joka palauttaa luvun neliön. Esimerkiksi luvun 6 neliö on 6*6=36.

Koodia: [Valitse]
> let square x = x*x
> square 6
36

Nimettömänä funktiona edellinen saa muodon: "nimetön funktio parametrilla x palauttaa arvon x*x". Nuolimerkintä tulee matematiikan sanontatavasta "kuvautuu arvolle" ja nimettömän funktion nimi matematiikassa on "lambda", jota Haskell-kielen kenoviiva symbolisoi.

Koodia: [Valitse]
> (\x -> x*x) 6
36

Seuraavassa `xs` on lista kokonaislukuja

Koodia: [Valitse]
> let xs = [1..10]
> xs
[1,2,3,4,5,6,7,8,9,10]

Nyt lista `xs` kuvattuna funktiolla `square` tai vaihtoehtoisesti nimettömällä funktiolla `\x -> x*x` palauttaa listan alkiot korotettuna neliöön.

Koodia: [Valitse]
> map square xs
[1,4,9,16,25,36,49,64,81,100]
> map (\x -> x*x) xs
[1,4,9,16,25,36,49,64,81,100]

Sama listamuodostimilla:

Koodia: [Valitse]
> [x*x | x <- xs]
[1,4,9,16,25,36,49,64,81,100]
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 05.09.16 - klo:23.45
Mitä anonyymillä funktiolla voi tehdä mitä tavallisella ei voi? Miten teen sen Python 3 kielellä?

En tajua vieläkään mikä on duck typing. Mitä siitä hyötyy?
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Lepotila zZ - 06.09.16 - klo:00.17
Mitä anonyymillä funktiolla voi tehdä mitä tavallisella ei voi? Miten teen sen Python 3 kielellä?

Nimihän sen jo kertoo: Sille ei tarvitse antaa nimeä. Käytännössä sen määrittely hoituu pienemmällä määrällä koodia ja siksi sen käyttö voi olla joissakin yhteyksissä kätevää ja lisätä koodin luettavuutta. Tavallisia funktiota ne kuitenkin ovat, joten ei niillä ole mitään ihmevoimia, joita ei ole nimetyillä funktioilla.


En tajua vieläkään mikä on duck typing. Mitä siitä hyötyy?

Ei sitä ole tarpeen ymmärtääkään, koska se joko tulee tai ei tule valitsemasi ohjelomointikielen mukana. Kunhan käytät jonkin aikaa kieltä, jossa se on, ja sitten siirryt kieleen, jossa sitä ei ole, löydät vastauksen helposti.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: DDR55 - 06.09.16 - klo:00.50
No eikö sitä kukaan osaa selittää ilman ympäri pyöreitä vastauksia? Jos vastauksen löytää helposti niin eikö sen voi vaan sanoa suoraan?

Ei Tämä mikään arvuutus peli pitänyt olla ollenkaan vaan aloittelijoiden neuvomis  ketju.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Lepotila zZ - 06.09.16 - klo:01.01
No eikö sitä kukaan osaa selittää ilman ympäri pyöreitä vastauksia? Jos vastauksen löytää helposti niin eikö sen voi vaan sanoa suoraan?

Koska duck typingin hyödyt ja haitat kuuluvat ohjelmointikielten suunnittelijoiden osaamisalueeseen. He varmasti osaavat kertoa niistä. Mutta, miksi oletat, että ymmärtäisit mitään vastauksesta ilman käytännön ohjelmointikokemusta? Sanat ja käsitteet tulevat määritellyksi käytännössä ja ohjelmoinnin käsitteiden yhteydessä se käytäntö on ohjelmointi. Ilman kokemusta, keksit vain mielikuviteksessasi käsitteille merkityksiä (mielikuvia) ja uskot ymmärtäväsi asian. Mitä se hyödyttää?

Mikä hoppu sinulla on arvottamaan ohjelmointikielten kehittäjien ratkaisuja ennen kuin opettelet edes yhden kielen kohtuullisesti ja toteutat sillä jonkin projektin?

Ei duck typingin etuja ja haittoja kerrota ohjelmoinnin alkeiskurssilla. Siellä opetetaan yleensä yksi ohjelmointikieli. Sen kurssin jälkeenkään oppilaat eivät ole päteviä arvioimaan duck typingin hyötyjä ja haittoja, koska se vaatii kokemusta useammasta kielestä.

Jos sinulla on jo kokemusta useammasta ohjelmointikielestä, edessä annettu linkki Wikipedian artikkeliin on hyvä selitys. Lue se.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: JaniAlander - 06.09.16 - klo:02.07
Joskus olen miettynyt voisiko Turbo Pascalille kirjoitettuja juttuja kääntää Free Pascalilla. Ongelmaksi muodostuu VGA-näytölle kirjoitetut grafiikka käskyt. Ehkä tuo Free Pascal osaa kirjoittaa pisteen näytölle. Dos aikoina tehtiin ohjelmia joissa grafiikka ja tekstitilaa vaihdeltiin. Nyt muistia olisi vaikka kirjoittasi koko näytön sisällön johonkin muuttujaan väreineen.

Jonkun teiniaikojen tekstiseikkailupelin mistä lähdekoodit oli tallella käänsin Linukkeelle ja FreeBSD:lle harvojen graafisten osuuksien kääntämiseen en sitten vaivautunut (lähinnä Borland Pascalin ja TurboPascalin grafiikkakäskyjä) vaan pistin ne pätkät kommentteihin. Ääkköset piti MS-DOS kamasta muuttaa, muuten kääntyi kiltisti.
Otsikko: Vs: Ohjelmointi harrastuksen aloittaminen
Kirjoitti: Lepotila zZ - 06.09.16 - klo:02.25
Jatkan vielä hieman: Ohjelmointikielet ovat jonkin sortin käyttöliittymiä ohjelmoijille. Miksi jokin kielen ominaisuus on hyvä tai huono, voi olla objektiivinen kysymys, mutta usemmiten kyse on subjektiivisesta arvostelmasta. Aivan sama kuin se, että jotkut pitävät Ubuntun Unitystä ja toiset eivät voi sietää sitä. Unityä kannattaa kokeilla jonkin aikaa ja muodostaa sitten oma arvostelma. Turha lukea muiden kommentteja ja tehdä johtopäätöksiä niiden perusteella. Ohjelmointikielten arviointi vaatii vielä enemmän kokemusta kuin työpöytäympäristöjen arviointi, ja on vaikeaa erottaa objektiiviset seikat subjektiivisista.

Moni arvostettu ja fiksu ohjelmoija ei suostu koskemaan Pythoniin pitkällä tikullakaan, koska siinä on välilyönneillä (ja/tai sarkaimella) syntaktinen rooli. Minua asia on harvemmin haitannut. Ei ole mahdollista tietää omaa suhtautumista tuohonkaan piirteeseen ilman, että käyttää Pythonia ainakin jonkin aikaa. Sitten joko törmää arsyttäviin ongelmiin sen kanssa, tai sitten ei törmää ongelmiin ja sen sijaan arvostaa sen tuomaa yhdemukaista muotoilua, joka ei voi antaa väärää kuvaa koodin toiminnasta.

Duck typing liittyy kiinteästi Pythonin luonteeseen: Virheilmoitus tulee ajonaikaisesti kun tulkki ei kykene tekemään jotakin, mitä ohjelma näyttää vaativan siltä. Tyypeillä ei ole niin väliä, kunhan tulkki ei ajaudu tilanteeseen, jossa se ei voi jatkaa suoritusta. Tämä mahdollistaa joskus asioiden toteuttamisen vähäisemmällä koodilla kuin mitä on mahdollista vahvemmin tyypitetyillä kielillä. Toisaalta ne mahdolliset ajonaikaiset virheilmoitukset vääristä tyypeistä... Onko se nyt sitten hyvä tai huono ominaisuus? Minä pidän siitä. Python ei olisi Python ilman sitä.

Duck typing on siis sitä, että Python tulkki ei välitä olioiden tyypistä kunhan niistä löytyvät ne metodit ja/tai attribuutit, joita suoritettava ohjelma olettaa niillä olevan. Monessa muussa kielessä jo kääntäjä vaatii, että olio on tiettyä tyyppiä, ja olioiden tyyppi on määriteltävä eksplisiittisesti, esimerkiksi perinnän kautta.

Varmaan oikeat ohjelmoijat korjaavat, jos selitykseni menivät pahasti pieleen...