Kirjoittaja Aihe: Ohjelmoinnin aloittaminen  (Luettu 9884 kertaa)

suppo84

  • Käyttäjä
  • Viestejä: 175
    • Profiili
Ohjelmoinnin aloittaminen
« : 14.08.11 - klo:22.45 »
Heps! Olen tässä jonkin aikaa miettinyt että voisi ottaa uusia haasteita elämääni ja alkamaan opiskelemaan ohjelmointia. Olen jonkin verran googletellut ja tutkinut eri kielillä toteutettuja pikkuohjelmia ja jotenkin toi c++ kiinnostaisi kaikkein eniten.

Python tietysti olisi aloittelijan kannalta ehkä mukavin aloittaa, niin sitä on monet kehuneet mutta siltikin jotenkin kiinnostaisi tuo c++.

Olen ajatellut aloittavani niin että asennan koneelle Kdevelop nimisen ohjelman ja kääntäjänä gcc hoitaa homman mielestäni ihan mallikkaasti. Eli aloitan tekemään urakalla harjoitustöitä sekä lukemaan c++ teoriaa. Harmittaa kun ei tullut silloin joskus ylä-asteella lähdettyä paremmin perehtymään siihen koodauksen alkeisiin vaan tuli pelailtua vaan jotain pasianssia silloin...  ::)

Ajattelin nyt avata tälläisen keskustelun ko. aiheesta jos olisi muitakin innostuneita jakamaan kokemuksia ja ajatuksia.

matsukan

  • Käyttäjä
  • Viestejä: 2148
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #1 : 14.08.11 - klo:23.12 »

Katso myös voisiko myös  Qt tulla kysymykseen. Qt tarjoaa kaikki perusedellytykset C++ ohjelmoinnin  oppimiseen.

Tutustu myös versionhalintaan (Git, Subversion) koska joudut miettimään myös taitojen kehittyessä versioiden hallintaa.
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

suppo84

  • Käyttäjä
  • Viestejä: 175
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #2 : 15.08.11 - klo:00.03 »
Kyllä tuo Qt on myös ollu mielessä, ajattelin kuitenkin että kannattaisi varmaan opetella ensin hieman tuon c++ perusteita ja sitten vasta miettiä Qt:tä?

Teho

  • Käyttäjä
  • Viestejä: 477
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #3 : 15.08.11 - klo:00.05 »
Kyllä tuo Qt on myös ollu mielessä, ajattelin kuitenkin että kannattaisi varmaan opetella ensin hieman tuon c++ perusteita ja sitten vasta miettiä Qt:tä?
Aika alkeista se Qt koodaaminenkin lähtee: http://doc.trolltech.com/3.0/t1.html =D

SuperJaakkima

  • Käyttäjä
  • Viestejä: 36
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #4 : 15.08.11 - klo:01.47 »
Mun mielestä C++ kannattaa opetella sinne pohjalle koska pääsee syvemmälle peruskäsitteisiin sisälle. Qt:lla keskittyminen menee liian helposti käyttöliittymän viilaukseen.

suppo84

  • Käyttäjä
  • Viestejä: 175
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #5 : 15.08.11 - klo:11.45 »
Kyllä mä aloitankin ihan noista C++ perusteista, mulla on pohjalla tollasta html/css graafista suunnittelua niin voi helposti mennä näppien asentojen säätämiseen ym. kaikki aika, yritä sitten siinä oppia jotain perusteita.  ;D

Ajattelin tilata tuolta readme.fi sen C++ opetuskirjan kun se olis nyt tarjouksessakin. Siinä olis koodausesimerkkejä ja toivottavasti myös selkeää ja loogista opetusta jota vielä ymmärtäisi.

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #6 : 15.08.11 - klo:12.32 »
Mikset opettelisi perliä?
  • yhtä helppoa kuin python
  • hyvä lisä html osaamiseen, koska käy cgi-scripteihin
  • koodi näyttää vielä käsittämättömämmältä kuin c++, joten kaverit ei tiedä että olet aloittelija 8)
;)

odysseus

  • Vieras
Vs: Ohjelmoinnin aloittaminen
« Vastaus #7 : 15.08.11 - klo:16.37 »
Jep. Minä aikoinani kaaaaaauan sitten aloitin näin (siis suurinpiirtein tässä järjestyksessä):

Basic (C64 versio)
Assembler (C64 versio motorolan komentokäskyversiot)
Pascal
Assembler (Intel 8088 ja 8086 komentokäskyversiot)
C (K&R)
C (Ansi)
C + Embedded SQL (Oracle versio)
SQL (stored procedures jne)
C (Win32 API)
Visual Basic
C++
C++ (QT API)
PHP ja muut webbihössöt kuten XHTML, CSS2, Javascript...
...

Jos saisin nyt valita miten aloittaisin, niin järjestys olisi tässä:

C (Ansi)
C++ (Ansi niin pitkälle kuin se Ansia on)
PHP + SQL  ja muut webbihössöt kuten XHTML/HTML5, CSS2/3, Javascript...
C++ QT (sekä GTK)
Shell Scipting, Python, Perl jne...
Jotkut muut (C++) cross-platform frameworkit
PHP frameworkit

..ja jättäisin oman onnensa nojaan sellaiset välineet millä tuotetaan laitteistoriippuvaista koodia ja muutenkin epästandardia kamaa..

tsp

  • Käyttäjä
  • Viestejä: 10
    • Profiili
    • Ubuntu Linux Projekti
Vs: Ohjelmoinnin aloittaminen
« Vastaus #8 : 16.08.11 - klo:08.30 »
Itse suosittelen että haet kirjastosta esim. Päivi Hietasen C++ kirjan (hyvä kirja, olen lukenut itsekin sen) ja jos sen lukemisen jälkeen kiinnostusta yhä asiaan löytyy niin sen jälkeen tutustut tarkemmin esim. Qt:hen. Qt:ssa on nykyään QtQuick jolla UI:t rakennetaan todella helposti ja sovellusten logiikka kirjoitetaan C++:lla. Dokumentaatio Qt:ssa on erittäin hyvä ja esimerkkejä löytyy todella paljon joten alkuun kyllä pääsee mukavasti.

Skriptikielistä itsellä on kokemusta Perl:stä mutta jotenkin on jäänyt sellainen kuva että Python olisi korvaamassa sitä, tiedä sitten ...

crope

  • Käyttäjä
  • Viestejä: 817
  • Fedora 12
    • Profiili
    • http://palosaari.fi/
Vs: Ohjelmoinnin aloittaminen
« Vastaus #9 : 16.08.11 - klo:13.35 »
Mikset opettelisi perliä?
  • yhtä helppoa kuin python
  • hyvä lisä html osaamiseen, koska käy cgi-scripteihin
  • koodi näyttää vielä käsittämättömämmältä kuin c++, joten kaverit ei tiedä että olet aloittelija 8)
;)

Hohhoh, ootkos kummallakin koodaillut?
Minusta nämä argumentit on jokseensakin kaikki pielessä.
1. Python on helpompi
2. cgi-scriptit ovat menneen talven juttuja
3. siltä se kyllä helposti näyttää

Antti

suppo84

  • Käyttäjä
  • Viestejä: 175
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #10 : 16.08.11 - klo:16.02 »
Kävin hakemassa tuon Päivi Hietasen C++ kirjan, on kyllä sairaan puuduttavaa tekstiä mutta kun oon päättäny opetella koodaamaan niin se täytyy kestää, on tuossa pari muutakin kirjaa mutta sitä samaa niissä kaikissa.

Olen onnistunut koodaamaan jo sovelluksen johon syötetään numeroita ja sovellus laskee yhteen ne yhteen ja ilmoittaa jopa vastaluvun. Olipas sekavasti selitetty, mutta tuntuu hienolta että oon päässy tässä hommassa jo hieman eteenkin päin, pian alan ymmärtämään mitä noissa kirjoissa tarkoitetaan funtioilla ym.

Mulle toi luetun ymmärtäminen on yhtä tuskaa tämän adhd:n takia mutta opin kyllä käytännössä leikiten, eli tekemällä oppii...  ::)

odysseus

  • Vieras
Vs: Ohjelmoinnin aloittaminen
« Vastaus #11 : 17.08.11 - klo:16.37 »
Kävin hakemassa tuon Päivi Hietasen C++ kirjan

Ko. kirjaa en tunne, mutta jos se on SUOMEKSI, niin varo ainakin seuraavia kompastuskiviä tulevaisuutta varten, eli tee näin:

-muuttujat ja funktioiden sekä metodien nimet aina ENGLANNIKSI
-kommentit PhpDoc (tai Pear) muodossa ENGLANNIKSI jos ne on "implementation free"
-muut kommentit ENGLANNIKSI kielen omilla menetelmillä
-paketoi kaikki loogiset osa-alueet omiin tiedostoihinsa ja anna niille soveltuva "namespace" tai "prefix".. (esim gui, database, core jne)
-tee ohjelmista parametroitavia ja siten ohjattavia "vivuilla"
-tee ohjelmista aina geograafisesta alueesta riippumattomia
-tee ohjelmista aina kieliriippumattomia gui:n osalta (käytä template malleja)
-tee ohjelmiin aina oma virheenkäsittelijä
-tee ohjelmiin aina oma lokinkirjoitusrutiini, jossa parametreillä valittavissa myös "debug" ja "verbose"
-tee ohjelmastasi vapaan lisenssin alainen ja levitä se eteenpäin, jotta muutkin hyötyvät!!!!

...muitakin ohjeita piisaa, mutta muista nuo, että varmistat sen, että koodi on ylläpidettävissä ja myös muunkielisten kuin suomalaisten tekemänä. Maailma on kansainvälinen!

Edit:
-käytä versionhallintaa (SVN on hyvä)
« Viimeksi muokattu: 17.08.11 - klo:16.45 kirjoittanut odysseus »

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #12 : 17.08.11 - klo:18.41 »
Hohhoh, ootkos kummallakin koodaillut?
Pitää tunnustaa ettei ole pythonista kovin paljon kokemusta. Olen kyllä lueskellut Mark Pilgrimin kirjaa ja miettinyt että tuotakin pitäisi joskus koettaa.

Perliä tuli välteltyä koko 90-luku. Vaikka lehdissä oli usein mielenkiintoisia juttuja perl-ohjelmoinnista, mutta pahin kokeilunhalu haihtui aina koodilistauksia katsoessa. Siis c-kielestä lainattu syntaksi, johon näytti olevan vielä lisätty loputkin ascii-koodin välimerkit ei oikein innostanut.

Vuosituhannen vaihteessa törmäsin sitten yhteen kamelikirjaan, jota tuli lueskeltua, ja pitihän sitä ruveta  myös kokeilemaan. Pian alkoi harmittamaan ettei ollut tullut ennakkoluuloissaan kokeiltua aiemmin. Imho paras keksintö kaikenlaisiin "quick & dirty" scripteihin mitä nyt ikinä tarvitseekin.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #13 : 17.08.11 - klo:18.51 »
Lainaus
-muuttujat ja funktioiden sekä metodien nimet aina ENGLANNIKSI
-kommentit PhpDoc (tai Pear) muodossa ENGLANNIKSI jos ne on "implementation free"
-muut kommentit ENGLANNIKSI kielen omilla menetelmillä
-paketoi kaikki loogiset osa-alueet omiin tiedostoihinsa ja anna niille soveltuva "namespace" tai "prefix".. (esim gui, database, core jne)
-tee ohjelmista parametroitavia ja siten ohjattavia "vivuilla"
-tee ohjelmista aina geograafisesta alueesta riippumattomia
-tee ohjelmista aina kieliriippumattomia gui:n osalta (käytä template malleja)
-tee ohjelmiin aina oma virheenkäsittelijä
-tee ohjelmiin aina oma lokinkirjoitusrutiini, jossa parametreillä valittavissa myös "debug" ja "verbose"
-tee ohjelmastasi vapaan lisenssin alainen ja levitä se eteenpäin, jotta muutkin hyötyvät!!!!

...muitakin ohjeita piisaa, mutta muista nuo, että varmistat sen, että koodi on ylläpidettävissä ja myös muunkielisten kuin suomalaisten tekemänä. Maailma on kansainvälinen!

Edit:
-käytä versionhallintaa (SVN on hyvä)

Olisikohan nuo vaatimukset vähän pidemmälle ehtineelle ohjelmoijalle, "Hello World" näytölle ei varmaan tarvitse näin raskasta systeemiä ?    Tarkoitan lähinnä ettei alkava ohjelmoija  löisi hanskoja tiskiin heti kun näkee tuon listan.  :)

PS. Tuskin noita ensi tuotoksia myöskään kansainvälisesti julkaistaan...
PPS.  Ideat sinänsä näyttävät hyviltä.
« Viimeksi muokattu: 17.08.11 - klo:18.54 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

muep

  • Käyttäjä
  • Viestejä: 896
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #14 : 17.08.11 - klo:22.04 »
-muuttujat ja funktioiden sekä metodien nimet aina ENGLANNIKSI
-kommentit PhpDoc (tai Pear) muodossa ENGLANNIKSI jos ne on "implementation free"
-muut kommentit ENGLANNIKSI kielen omilla menetelmillä
-paketoi kaikki loogiset osa-alueet omiin tiedostoihinsa ja anna niille soveltuva "namespace" tai "prefix".. (esim gui, database, core jne)
-tee ohjelmista parametroitavia ja siten ohjattavia "vivuilla"
-tee ohjelmista aina geograafisesta alueesta riippumattomia
-tee ohjelmista aina kieliriippumattomia gui:n osalta (käytä template malleja)
-tee ohjelmiin aina oma virheenkäsittelijä
-tee ohjelmiin aina oma lokinkirjoitusrutiini, jossa parametreillä valittavissa myös "debug" ja "verbose"
-tee ohjelmastasi vapaan lisenssin alainen ja levitä se eteenpäin, jotta muutkin hyötyvät!!!!

...muitakin ohjeita piisaa, mutta muista nuo, että varmistat sen, että koodi on ylläpidettävissä ja myös muunkielisten kuin suomalaisten tekemänä. Maailma on kansainvälinen!

Edit:
-käytä versionhallintaa (SVN on hyvä)


Minustakin tuo on aika pitkä lista vaatimuksia, vähemmälläkin kyllä pystyisi opettelemaan. Tärkeintä oikeastaan on pyrkiä etenemään niin että homma on kivaa. Siten jaksaa opetella ja kokeilla enemmän.

Englantia kyllä suosittelen minäkin koodissa käyttämään mikäli siitä ei ole vaivaa. Ihan alkuun suomenkielinen nimeäminen voi helpottaa erottamaan, mitkä nimivalinnat koodissa ovat omia ja mitkä muualta saatuja, mutta pidemmän päälle silti kannattaa ihan tavan vuoksi kirjoitella englanniksi koodit siltä varalta että joku suomea osaamaton sattuu lukemaan. Tämä helpottaa esimerkiksi internetistä apua kysellessä vastaajia lukemaan koodia.

Versionhallinnan opettelu on myös erittäin hyödyllistä, jos semmoinen kiinnostaa. Itse en oikein osaisi kuvitellakaan ohjelmoivani mitään useamman päivän projektia ilman että pitäisin versiohistoriaa tallessa. Toisaalta tämäkin on semmoinen että alkuun pärjää ilmankin. Työkalut siihen eivät nykyään ole mitään mahdottoman hankalia käyttää, mutta kun ohjelmoinnin aloittaminen muutenkin vaatii sitä huomiota niin tämän jättäisin ehkä siihen vaiheeseen kun rupeaa tuntumaan että samaa ohjelmaa tulee kirjoitettua useampi päivä.
[http://smolt.fedoraproject.org/show?uuid=pub_ac53b581-021a-4b76-bd14-e7d51f55462f]Pöytäkone[/url]
Läppäri

odysseus

  • Vieras
Vs: Ohjelmoinnin aloittaminen
« Vastaus #15 : 18.08.11 - klo:16.47 »
-muuttujat ja funktioiden sekä metodien nimet aina ENGLANNIKSI
-kommentit PhpDoc (tai Pear) muodossa ENGLANNIKSI jos ne on "implementation free"
-muut kommentit ENGLANNIKSI kielen omilla menetelmillä
-paketoi kaikki loogiset osa-alueet omiin tiedostoihinsa ja anna niille soveltuva "namespace" tai "prefix".. (esim gui, database, core jne)
-tee ohjelmista parametroitavia ja siten ohjattavia "vivuilla"
-tee ohjelmista aina geograafisesta alueesta riippumattomia
-tee ohjelmista aina kieliriippumattomia gui:n osalta (käytä template malleja)
-tee ohjelmiin aina oma virheenkäsittelijä
-tee ohjelmiin aina oma lokinkirjoitusrutiini, jossa parametreillä valittavissa myös "debug" ja "verbose"
-tee ohjelmastasi vapaan lisenssin alainen ja levitä se eteenpäin, jotta muutkin hyötyvät!!!!

...muitakin ohjeita piisaa, mutta muista nuo, että varmistat sen, että koodi on ylläpidettävissä ja myös muunkielisten kuin suomalaisten tekemänä. Maailma on kansainvälinen!

Edit:
-käytä versionhallintaa (SVN on hyvä)


Minustakin tuo on aika pitkä lista vaatimuksia, vähemmälläkin kyllä pystyisi opettelemaan. Tärkeintä oikeastaan on pyrkiä etenemään niin että homma on kivaa. Siten jaksaa opetella ja kokeilla enemmän.

Englantia kyllä suosittelen minäkin koodissa käyttämään mikäli siitä ei ole vaivaa. Ihan alkuun suomenkielinen nimeäminen voi helpottaa erottamaan, mitkä nimivalinnat koodissa ovat omia ja mitkä muualta saatuja, mutta pidemmän päälle silti kannattaa ihan tavan vuoksi kirjoitella englanniksi koodit siltä varalta että joku suomea osaamaton sattuu lukemaan. Tämä helpottaa esimerkiksi internetistä apua kysellessä vastaajia lukemaan koodia.

Versionhallinnan opettelu on myös erittäin hyödyllistä, jos semmoinen kiinnostaa. Itse en oikein osaisi kuvitellakaan ohjelmoivani mitään useamman päivän projektia ilman että pitäisin versiohistoriaa tallessa. Toisaalta tämäkin on semmoinen että alkuun pärjää ilmankin. Työkalut siihen eivät nykyään ole mitään mahdottoman hankalia käyttää, mutta kun ohjelmoinnin aloittaminen muutenkin vaatii sitä huomiota niin tämän jättäisin ehkä siihen vaiheeseen kun rupeaa tuntumaan että samaa ohjelmaa tulee kirjoitettua useampi päivä.

Sori, en halunnut pelotella aloittelevaa, mutta minusta on erittän hyvä, että heti alusta opitaan oikeat (yleiset ja standardit) toimintatavat, sillä jatkossa niiden kitkeminen on todella hankalaa.

Toki "hello world"-tasolla pitääkin kokeilla ja testailla. Se on oikein hyvä malli. Silti helposti siinä jää joitain koodinpätkiä sieltä vanhasta roikkumaan, joten siksi kannustan kovasti koodaamaan siten, että ensin tehdään proto ja sitten siitä "omaan kirjastoon" valmis koodi.

Jos joitain lisäohjeita nyt pikaisesti haluan antaa, niin vielä sen, että kun ja jos koodaat QT:lla tai millä tahansa muulla GUI-frameworkillä, niin pidä se core-koodi erillisenä. Tämä tarkoittaa sitä, että koodaa jokaisesta loogisesta "palikasta" oma ohjelmansa, jota voi ajaa komentoriviltä. (Käytä GNU:n getopt:ia parametrointiin). Koodaa GUI-osuus QT:lla tmv siten, että se kutsuu tekemäsi ohjelman suorittavaa rajapintaa "entry-point funktiota" (jolloin olet luonut oman APIn siihen), jotta homma on siirrettävissä mahdollisimman helposti toiselle alustalle. Tämä mahdollistaa myös sen, että koodi on siirrettävissä linkitettyyn kirjastoon (.so tai .dll) pelkästään exporttaamalla rajapinta ulos.
Jos teet siihen luokan ympärille, niin sitten siihen interface, mutta minä suosin kyllä kovasti Ansi-C toteutusta, joihin sitten kannattaa aina laittaa headeriin tuo cplusplus osio:

Koodia: [Valitse]

#ifndef _MY_HEADER_H_
#define _MY_HEADER_H_

#ifdef __cplusplus
extern "C" {
#endif

..varsinainen header koodi..

#ifdef __cplusplus
}
#endif

#endif /* _MY_HEADER_H_ */

Autan mielelläni alkuun, jos jotain kysyttävää tulee ja voin kaivaa tuon mainitsemani getopt() koodin windows alustaa varten, jotta saat koodista alustariippumatonta. Linukassahan se on GNU-oletuksena kirjastoissa.

Versionhallintaan löytyy ohjeita esimerkiksi täältä:
http://artis.imag.fr/~Xavier.Decoret/resources/svn/index.html

Edit:
getopt() löytyi täältä:
http://www.greenend.org.uk/rjk/bzr/sftpserver.dev/getopt.c

Eli tuo vain sitten projektiin mukaan, teet sille prototyypin "getopt.h"

Koodia: [Valitse]
#ifndef _GNU_GETOPT_H_
#define _GNU_GETOPT_H_

#ifdef __cplusplus
extern "C" {
#endif

int getopt(int argc, char *const *argv, const char *optstring);

#ifdef __cplusplus
}
#endif

#endif /* _GNU_GETOPT_H_ */

ja sitten omaan "main.c":n koodi:

Koodia: [Valitse]
#ifdef _WIN
#include "getopt.h"
#endif

Ja näin sinulla on Windows kelpoinen versio koodista, joka hyödyntää getoptia.
« Viimeksi muokattu: 18.08.11 - klo:17.14 kirjoittanut odysseus »

tsp

  • Käyttäjä
  • Viestejä: 10
    • Profiili
    • Ubuntu Linux Projekti
Vs: Ohjelmoinnin aloittaminen
« Vastaus #16 : 19.08.11 - klo:08.39 »
En nyt halua lähteä kritisoimaan mitään, että mikä on oikea tapa kirjoittaa koodia ja mikä ei mutta omissa sovelluksissani en kyllä ole käyttänyt mitään kirjasto lähestymistä ja hyvin olen pärjännyt. Toki kirjoitan koodin siten, että selkeät osa-kokonaisuudet on jaettu omiin h/cpp tiedostoihin ja ne erotetaan selkeillä rajapinnoilla muusta koodin osasta mutta en ole nähnyt tarvetta omissa projekteissa että jokin osa-kokonaisuus pitäisi olla esim. DLL:ssä.

Ymmärrän kyllä että DLL lähestymiselle on tarvetta! Esimerkiksi työelämässä kun jokin sovellus tehdään niin voi olla että tuolloin on useita tiimejä jotka kirjoittavat koodia johonkin sovellukseen, tuolloin on luonnollista että koodi jaetaan siten, että yksi tiimi toimittaa yhden DLL:n jossa on tietyt rajapinnat ja tietty toiminnallisuus ja toinen tiimi toisen DLL:n jne. ja näistä muodostuu se killer applikaatio. Mutta kuten sanottua jos itse puuhastelee jotain omaa sovellusta omiin (ja ehkä muidenkin tarpeisiin) niin aika pitkälle tuolla modulaarisella ajattelullakin selviää ja siihen ei tarvitse DLL:iä.

Niin ja jos Qt:lla koodaat niin kyllä se sovellus pitäisi olla kohtalaisen helposti siirrettävissä alustalta toiselle johtuen siitä että Qt on "Cross-platform application and UI framework".

Englannin käyttäminen on hyvä tapa ja sitten jos dokumentaation haluaa generoida suoraan koodista niin siihenkin varmaan on useita tapoja kuten jo mainitut tai sitten esim. doxygen tai jokin muu, versionhallinnasta SVN on varmaan hyvä mutta niin on myös Git ... maailma on täynnä valintoja, mutta kuten muep kirjoitti "Tärkeintä oikeastaan on pyrkiä etenemään niin että homma on kivaa" pidä tuo mielessä ja lopulta omat tarpeet sanelevat hyvin pitkälti sen että mihin koodauksessa pitää keskittyä ja tarvitseeko jotain kirjasto, versionhallintaa ym. vai ei.

odysseus

  • Vieras
Vs: Ohjelmoinnin aloittaminen
« Vastaus #17 : 19.08.11 - klo:10.37 »
En nyt halua lähteä kritisoimaan mitään, että mikä on oikea tapa kirjoittaa koodia ja mikä ei mutta omissa sovelluksissani en kyllä ole käyttänyt mitään kirjasto lähestymistä ja hyvin olen pärjännyt. Toki kirjoitan koodin siten, että selkeät osa-kokonaisuudet on jaettu omiin h/cpp tiedostoihin ja ne erotetaan selkeillä rajapinnoilla muusta koodin osasta mutta en ole nähnyt tarvetta omissa projekteissa että jokin osa-kokonaisuus pitäisi olla esim. DLL:ssä.

Ymmärrän kyllä että DLL lähestymiselle on tarvetta! Esimerkiksi työelämässä kun jokin sovellus tehdään niin voi olla että tuolloin on useita tiimejä jotka kirjoittavat koodia johonkin sovellukseen, tuolloin on luonnollista että koodi jaetaan siten, että yksi tiimi toimittaa yhden DLL:n jossa on tietyt rajapinnat ja tietty toiminnallisuus ja toinen tiimi toisen DLL:n jne. ja näistä muodostuu se killer applikaatio. Mutta kuten sanottua jos itse puuhastelee jotain omaa sovellusta omiin (ja ehkä muidenkin tarpeisiin) niin aika pitkälle tuolla modulaarisella ajattelullakin selviää ja siihen ei tarvitse DLL:iä.

dll tai so tai mikä tahansa kirjasto ja sellaisen ohjelmointityyli vastaa pitkälti myös mallia, joka on hajautettu eri koneille! On erittäin viisasta paketoida näitä moduleita omiksi kokonaisuuksiksi. Edut tulevat näkyviin sitten kun koodia on kymmeniätuhansia rivejä... Eihän sitä koskaan tiedä, jos joku haluaakin vääntää koodin n-tier ratkaisuksi vaikka CORBA-mallilla tmv :-)
Kannattaa siis tehdä heti alusta alkaen melko abstrakteja funktioita, jotka hoitavat jonkun tietyn pikkujutun. Samankaltaiset funktiot sitten omaksi jaetuksi kirjastoksi, jota sitten kutsutaan "emo-ohjelmasta". Ja tietty kannattaa käyttää suunnaattoman runsasta OpenSource tarjontaa, ettei pyörää keksi udelleen. Sopiva koodi on monesti gookkelin hakustringin päässä.

Niin ja jos Qt:lla koodaat niin kyllä se sovellus pitäisi olla kohtalaisen helposti siirrettävissä alustalta toiselle johtuen siitä että Qt on "Cross-platform application and UI framework".

Mutta aina ei haluta sitä GUI:ta mukaan lainkaan, joten siksi erillinen komentorivipohjainen rajapinta myös. Se on muutenkin linux-tyyppinen tapa tehdä koodia; Ensin ohjelma, joka toimii komentoriviltä ja sitten GUI wrapperi päälle.. Näin koodi toimii esimerkiksi ssh:n läpi terminalissa ja pelkällä GUI-toteutuksella saat ohjelmasta graafisen version desktopille. Samalla säilyy portti sille, että joku haluaakin vääntää GUI:n GTK:lla tai Win32 API:n päälle jne. Sama core toteutus pelaa kuitenkin.

Englannin käyttäminen on hyvä tapa ja sitten jos dokumentaation haluaa generoida suoraan koodista niin siihenkin varmaan on useita tapoja kuten jo mainitut tai sitten esim. doxygen tai jokin muu, versionhallinnasta SVN on varmaan hyvä mutta niin on myös Git ... maailma on täynnä valintoja, mutta kuten muep kirjoitti "Tärkeintä oikeastaan on pyrkiä etenemään niin että homma on kivaa" pidä tuo mielessä ja lopulta omat tarpeet sanelevat hyvin pitkälti sen että mihin koodauksessa pitää keskittyä ja tarvitseeko jotain kirjasto, versionhallintaa ym. vai ei.

Jep Git on myös hyvä ja onhan noita muitakin. SVN on vain yritysmaailmassa ollut se eniten "vastaantuleva".

Ja todellakin. Ohjelmointi ON kivaa! Ei kun harjoittelemaan. Antamani ohjeet ovat vain niitä millä koodia tehdään sitten "isojen poikien kanssa", mutta alkuun vaan hiekkalaatikolle ja siitä se lähtee -kokeilemalla oppii parhaiten ja se on hauskaa!

suppo84

  • Käyttäjä
  • Viestejä: 175
    • Profiili
Vs: Ohjelmoinnin aloittaminen
« Vastaus #18 : 24.08.11 - klo:22.01 »
Opinnot on mielestäni edennyt ihan hyvin, teoriaa on tullut luettua paksu kirjallinen (melkein jo lopussa) ja harjotustöitäkin on tullut väkerrettyä muutama. Olen ajatellut myös vähän opiskella noita GUI juttuja, se QT kyllä kiinnostaisi kovasti joten varmaan siihen tulee perehdyttyä jossakin vaiheessa mutta tuli vastaan tälläinen kuin Ultimate++ joka vaikuttaa aika yksinkertaiselta joten sopii mulle kuin nenä päähän nyt näin alkuun ;D

Kiitos kaikille vinkeistä! Perehdyn tuohon versiointiin myös tässä kun alan tekemään jotain isompaa projektia mihin kuluu päiviä eikä muutamaa tuntia niinkuin näihin harjoitustöihin...

odysseus

  • Vieras
Vs: Ohjelmoinnin aloittaminen
« Vastaus #19 : 27.08.11 - klo:15.38 »
Opinnot on mielestäni edennyt ihan hyvin, teoriaa on tullut luettua paksu kirjallinen (melkein jo lopussa) ja harjotustöitäkin on tullut väkerrettyä muutama. Olen ajatellut myös vähän opiskella noita GUI juttuja, se QT kyllä kiinnostaisi kovasti joten varmaan siihen tulee perehdyttyä jossakin vaiheessa mutta tuli vastaan tälläinen kuin Ultimate++ joka vaikuttaa aika yksinkertaiselta joten sopii mulle kuin nenä päähän nyt näin alkuun ;D

Kiitos kaikille vinkeistä! Perehdyn tuohon versiointiin myös tässä kun alan tekemään jotain isompaa projektia mihin kuluu päiviä eikä muutamaa tuntia niinkuin näihin harjoitustöihin...

QT on siinä mielessä hyvä, että koodi uppoaa moniin puhelimiinkin (jopa Androidiin on jo joku viritys tehty). Tuosta Ultimatesta en osaa sanoa kun siitä ei ole kokemusta.

Linux puolelle (esim GTK-ohjelmointiin) kannattaa katsastaa myös Anjuta:
http://www.anjuta.org/

Tosin ihan alkuun kannattaa väsätä juttuja "jollain editorilla" ja sitten kääntää komentoriviltä ja opetella makefile perusteet. Se auttaa jatkossa ymmärtämään _monia_ asioita. Myös configure ja automake kannattaa katsastaa läpi ainakin periaatetasolla.

Ei muuta kun kovasti intoa opiskeluun!