Kirjoittaja Aihe: Ohjelmointi harrastuksen aloittaminen  (Luettu 26314 kertaa)

_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #40 : 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.


Postimies

  • Käyttäjä
  • Viestejä: 2643
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #41 : 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.

AimoE

  • Käyttäjä
  • Viestejä: 2779
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #42 : 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.

welmar

  • Käyttäjä
  • Viestejä: 1582
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #43 : 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ä.

Postimies

  • Käyttäjä
  • Viestejä: 2643
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #44 : 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. 

welmar

  • Käyttäjä
  • Viestejä: 1582
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #45 : 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ä.

kamara

  • Käyttäjä
  • Viestejä: 3025
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #46 : 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 ?

welmar

  • Käyttäjä
  • Viestejä: 1582
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #47 : 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?

kamara

  • Käyttäjä
  • Viestejä: 3025
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #48 : 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.  ;)

Postimies

  • Käyttäjä
  • Viestejä: 2643
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #49 : 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.

Postimies

  • Käyttäjä
  • Viestejä: 2643
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #50 : 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.

welmar

  • Käyttäjä
  • Viestejä: 1582
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #51 : 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.

kamara

  • Käyttäjä
  • Viestejä: 3025
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #52 : 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.

AimoE

  • Käyttäjä
  • Viestejä: 2779
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #53 : 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.

snifi

  • Vieras
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #54 : 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.

AimoE

  • Käyttäjä
  • Viestejä: 2779
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #55 : 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.

Postimies

  • Käyttäjä
  • Viestejä: 2643
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #56 : 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. 

ilkant

  • Käyttäjä
  • Viestejä: 1366
  • Kubuntu
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #57 : 28.08.16 - klo:12.06 »
Tässä on yksi tapa tutustua ohjelmointiin: IT-kouluttajien Koodiaapinen. 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!

DDR55

  • Käyttäjä
  • Viestejä: 101
    • Profiili
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #58 : 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ä.

Pääkone: Ubuntu 16.04 (käsin käänetty reaaliaikainen rtlinux)
Varakone1: Centos 7
Varakone2: Windows 10
Luuri: Android 5.0

juyli

  • Vieras
Vs: Ohjelmointi harrastuksen aloittaminen
« Vastaus #59 : 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