Terve,
Osaisiko joku neuvoa aloittelijaystävällistä ja yleispätevää c++-kirjaa suomeksi?
Mielestäni Pratan Suuri C++ -ohjelmointi vaikutti hyvältä, kun selasin sitä aikoinaan kirjastossa. Kyseisen kirjan englanninkielisen version arvostelu löytyy tästä.
Toissa vuoden alussa aloitin nettisivujen koodauksen.
Tämän vuoden alussa aloitin PHP-ohjelmoinnin ja sain viime joululahjaksi PHP & MySQL-kirjan.
Joten järjestelmällisesti ajateltuna pitäisi saada tuo C(++)-kirja ensijoululahjaksi.
Mutta tässäpä kysymys kuuluukin:
-Haluan opetella mahdollisimman vähän ohjelmointikieliä,
mutta niitä, mitä opettelen, haluan osata kunnolla.
Elikkäs jos näin ihan lopullisesti ajatellaan, kumpi kannattaisi opetella, jos vain toisen opettelisi?
-Otetaan huomioon että todella pitkässä kuusessa oleva haaveeni, käyttöjärjestelmien koodaus onnistuisi seuraavalla kielellä paremmin, mitä alkaisin opettelemaan.
Adlibriksestä Jaskan postaama linkki vaikutti lupaavalta, mistä edellisenkin opuksen tilasin, joten sepä taitaa ensi joulunakin postilaatikkoon tipahtaa.
Mutten ole vielä varma, kun en vielä tästä C-ohjelmoinnista tiedä paljon mitään,
esim. näitä C:n ja C++:n eroja.
Kertokaas te viisaammat, kumpaa kannattaisi alkaa ihan oikeasti opettelemaan,
ottaen huomioon edellisen haaveeni? :D
Ps. En nyt tiedä oliko ihan sopiva aihe/alue, mutta ei nyt näin maanantai-iltana ollut muutakaan tekemistä kuin alkaa joululahjaa miettimään itselleni. ^^
Olisi tietysti hyvä tietää mitä tarkoitat käytännössä haavellaa käyttöjärjestelmän koodaamisesta. Nykytason käyttöjärjestelmät on sen verran laajoja, että kukaan yksittäinen ihminen ei sellaista yksinään kirjoita. Olitko siis ajatellut tehdä lähinnä kuten Linus, että koodailet Kernelin jonka päälle sitten laitat muiden tekemää palikkaa?
Joka tapauksessa jos vaihtoehdot sinulla on PHP ja C++ niin käyttöjärjestelmän koodaamiseen PHP:n voit samantien unohtaa. (Tietty käyttis on aika laaja käsite ja toisen käyttiksen päällä toimivan "käyttiksen" tekee toki PHP:lläkin)
ankzilla kirjoitti:
Haluan opetella mahdollisimman vähän ohjelmointikieliä, mutta niitä, mitä opettelen, haluan osata kunnolla.
Jos koskaan tulet hyväksi ohjelmoijaksi, pystyt helposti käyttämään uusiakin kieliä auttavasti muutaman minuutin pikaopettelulla, kohtalaisesti parin tunnin opettelulla ja melko hyvinkin jo muutaman päivän aktiivisella harjoittelulla.
Jos taas et tule hyväksi ohjelmoijaksi, et varmasti osaa yhtäkään kieltä kovin hyvin. Oikeaa osaamista ei ole se, että muistaa ulkoa syntaksin ja kasan funktioita, vaan se, että osaa nopeasti kirjoittaa hyvää (selkeää, tehokasta ja hienostunutta) koodia.
Käyttöjärjestelmän tekemiseen tarvitaan väistämättä ensiksi hieman konekieltä (Assembly), ja seuraava kerros pitää tehdä jollain konekieleksi käännettävällä (C, C++ tai Pascal tai mikä tahansa muukin, jolle löytyy sopiva kääntäjä ja jota voi sopivasti käyttää Assemblyn kanssa yhdessä). Täytyy pitää mielessä, että kielestä riippumatta käytännössä mitään funktioita ei ole, ennen kuin ne on itse ohjelmoitu.
Ookoo?
Kiitos vastauksista, Grez ja Metabolix.
Grez kirjoitti:
Nykytason käyttöjärjestelmät on sen verran laajoja, että kukaan yksittäinen ihminen ei sellaista yksinään kirjoita.
Tarkoitin nyt lähinnä projektia loppuelämäksi ;)
Grez kirjoitti:
Olitko siis ajatellut tehdä lähinnä kuten Linus, että koodailet Kernelin jonka päälle sitten laitat muiden tekemää palikkaa?
-||-
Grez kirjoitti:
Joka tapauksessa jos vaihtoehdot sinulla on PHP ja C++ niin käyttöjärjestelmän koodaamiseen PHP:n voit samantien unohtaa.
Tätä nyt en ymmärtänyt. Olenko missään vaiheessa sanonut mitään PHP:stä, muuta,
kuin että osaan sitä omasta mielestä tarpeeksi?
Mutta en nyt saanut vastausta, että kumpi olisi näin yleensä parempi kieli vaikka näitä käyttöjärjestelmiä koodatessa? (Siis tuo oli nyt vain esimerkki)
php:lla et voi käyttöjärjestelmää väsätä koska se on tulkattava kieli.
E: tuli vielä mieleen että ada on helposti opittava kieli ja se sopii myös isompiin ohjelmiin.
Jos nyt puhutaan tästä käyttöjärjestelmien koodaamisesta, niin itse valitsisin C:n C++:an sijaan. Syynä lähinnä se, että C++:sta ei ole paljoakaan hyötyä käyttöjärjestelmää koodatessa, sillä kuten jo Metabolix sanoi, mitään ei ole valmiina. Et siis voi käyttää standardikirjastoa ns. "valmiina" kummassakaan tapauksessa, joten C++:n laajemmasta kirjastosta C:hen verrattuna ei ole mitään hyötyä. Mikäli sitten haluat tuen C++ ohjelmille (joka ehkä olisi loogista, jos kernelikin on kirjoitettu sillä), joudut "porttaamaan" C++:n standardikirjaston (STL) omalle käyttöjärjestelmällesi, jonka ainakin kuvittelisin olevan hankalampaa, kuin C-kirjastoille vastaavan operaation tekemisen. Lisäksi jotkut C++:n ominaisuudet, kuten poikkeukset, eivät toimi suoraan, vaan nillekin on tehtävä erillinen tuki.
EDIT: Mikäli nyt ymmärsin kysyjän oikein, niin hän haluaa verrata C:tä ja C++:aa, eikä PHP nyt liittyisi tähän mitenkään. PHP:llä kun sitä käyttöjärjestelmää ei voi tehdä (ellei nyt kirjoita jotain tulkkia).
Kiitos, Legu, tuota hain juuri. Kiitos oikeasti :D
En älyä mitä tuo alottelijaa ja Grez tuli sekoilemaan, mut C siis :)
Edit: Entä olisiko tälle C-kielelle sitten mitään hyvää opaskirjaa? :)
Itse taas suosittelen C++:aa. Mitään siinä ei menetä (lähes kaikki C on myös kelvollista C++:aa), ja sen sijaan oliot ja mallit ovat erittäin tarpeellisia. Kun koodasimme PutkaOS-käyttöjärjestelmää (C:llä), monet asiat tuli toteutettua olio-ohjelmoinnin tyyppisesti, jolloin koodista tuli C:llä aika mutkikasta suhteessa C++:aan. Lisäksi koodasin pitkät pätkät esikääntäjäsotkuja, jotka olisi ollut helppo tehdä malleilla.
Henkilökohtaisesti en ymmärrä, miksi ohjelmoinnin opetteluun pitäisi olla kirjoja. Netti on asiaa pullollaan, C:n ja C++:n alkeisoppaat löytyvät Ohjelmointiputkastakin.
ankzilla kirjoitti:
En älyä mitä tuo alottelijaa ja Grez tuli sekoilemaan, mut C siis :)
No kannattaa opetella kysymään selkeästi, nii ei tarvitse ihmetellä. Alkuperäisessä viestissä puhuit ensin PHP:stä, sitten C(++):sta ja sitten seuraavaksi kysyit "kumpi" kannattaisi opetella kunnolla.
Metabolix kirjoitti:
Henkilökohtaisesti en ymmärrä, miksi ohjelmoinnin opetteluun pitäisi olla kirjoja. Netti on asiaa pullollaan, C:n ja C++:n alkeisoppaat löytyvät Ohjelmointiputkastakin.
Kiitos, Metabolix.
Olen lukenut tuntikausia oppaita netistä käsitellen C++:aa,
ja tiedän kuinka tuskallista on kyhnöttää nokka ruudussa ja lukea rivejä rivien perään.
PHP:n kanssa oli samanlaista. En olisi varmaan aloittanut ollenkaan koko ohjelmointia, jollen tuota kirjaa olisi saanut.
Kirjoissa kerrotaan myös asiat perusteellisemmin. :)
// Problem solved
Metabolix kirjoitti:
Henkilökohtaisesti en ymmärrä, miksi ohjelmoinnin opetteluun pitäisi olla kirjoja. Netti on asiaa pullollaan, C:n ja C++:n alkeisoppaat löytyvät Ohjelmointiputkastakin.
Kukin tyylillään, mutta itse luen mieluummin kirjaa kuin tuijotan ruutua. Väsyy silmätkin vähemmän. Netti ei ole aina saatavilla, mutta kirjan voi ottaa vaikka sänkyyn iltalukemiseksi. Paljon näppärämmin onnistuu kuin läppärillä. Useimmiten tulostankin netistä löytyvät oppaat ennen lukemista. Varsinkin jos on pdf saatavilla.
Lisäksi hyvin kirjoitettu ja tarkastettu kirja toimii opettajana ja referenssinä paremmin kuin hajanainen, oikeaa ja väärää tietoa pullollaan oleva netti. Netissä oleva teksti on pääsääntöisesti harrastelijoiden huolimattomasti kirjoittamaa tekstiä. Kirjat puolestaan on useimmiten alan ammattilaisten huolellisesti kirjoittamia ja ristiintarkastamia teoksia, joissa asiat käsitellään perusteellisesti ja tarkasti. Toki molemmissa löytyy poikkeuksia, mutta netin tietopaljouden seasta niiden poikkeuksien löytäminen ja ennenkaikkea tunnistaminen voi monesti olla etenkin aloittelijalle tuskallisen hankalaa.
Tietysti kirjassakin on huonot puolensa ja vastaavasti netissä hyvät puolensa, mutta ei toinen mielestäni sulje pois toista.
Omistan kaksi C++ kirjaa Bjarne Stroustrupin opuksen:" The C++ Programming Language" (löytyy myös suomennettuna) ja Päivi Hietasen "C++ ja olio-ohjelmointi"-kirjan.
Minun mielestäni Hietasen kirja sopii hyvin aloittelijoille, joten se on hyvä valinta. Kirja on hyvin oppikirjamainen. Esimerkit ovat hyviä ja selkeitä ja teksti helppotajuista. Joskus rautalankaa väänetään jopa liikaa.
Stroustrupin kirja ei mielestäni sovellu ensimmäiseksi kirjaksi. Se meni ainakin minulta yli hilseen monessa kohtaa. Todella vaikea kirja täydellinen vastakohta Hietasen teokseen. Lisäksi tekstin fonttikoko, ainakin minun painoksessani, on aivan liian pieni, joka vaikeuttaa lukemista.
Mutta Stroustruphan on C++:n kehittäjä, joten ainakin mies tietää mistä puhuu. Ja jos tämän kirjan sisäistää, niin tulee todella hyväksi koodajaksi. Minä en ole sisäitänyt, vielä.
Molemmat kirjani painokset ovat tosin vanhoja (noin 10 vuotta) C++ on tässä ajassa jonkin verran muuttunut. Uusiin painoksiin en tutustunut.
Metabolix kirjoitti:
--Kun koodasimme PutkaOS-käyttöjärjestelmää (C:llä), monet asiat tuli toteutettua olio-ohjelmoinnin tyyppisesti, jolloin koodista tuli C:llä aika mutkikasta suhteessa C++:aan. Lisäksi koodasin pitkät pätkät esikääntäjäsotkuja, jotka olisi ollut helppo tehdä malleilla.--
Enpä ole ennen kuullutkaan PutkaOS:sta =) Aika mielenkiintoiselta projektilta vaikuttaa. Pitääpä perehtyä lähdekoodiin tarkemmin. Onko putkalaiset tehnyt muita projekteja yhdessä?
Hmm...
En oikein tiedä tuosta olio-ohjelmoinnista, mutta olisiko tuo Talentumin "Olioiden ohjelmointi C++:lla" mistään kotoisin?
Viime jouluna sain samaa sarjaa olevan PHP & MySQL kirjan, ja olen tyytyväinen.
Kertokaas te viisaammat. ;)
Toi Päivi Hietasenki kirja näytti ihan jeesiltä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.