Olen tutustunut ohjelmoinnin opsikeluun ja tullut siihen johtopäätökseen että on kahta koulukuntaa. Toinen ajattelee että ensin pitäisi opetella ohjelmointi ja sitten lähteä tekemään projektia ja toiset ajattelevat että ensin pitäisi miettiä projekti sitten keksiä paras kieli siihen ja lähteä totwuttamaan ohjelmaa ja oppia matkanvarrella. Olen kokeillut ensimmäistä ja huomannut se osoittuvan tylsäksi. Eli minkä laisia ohjelmia kannattaisi alkaa tekemään c ohjelmointikielellä ja miten niitä jaetaan maailmalla. Javasta on jo kokemusta.
Ps. Ne näsäviisastelijat jotka täällä kirjoittelevat voivat pitää suunsa kiinnin. Joka kerta kun laitan viestin tänne ainakin yksi tulee kertomaan mitä kysymyksessäni on väärin. Kiitos kunnon vastauksista.
Lyhyesti:
C:llä kannattaa ohjelmoida nopeuskriittisiä tai tilakriittisiä ohjelmia.
Esim. Sulautetut kuten Arduino.
Siis ongelmia, joissa Assembleri on turhan työläsratkaisu, mutta Javalla tai vastaavilla ei päästä riittävään ohjelman toiminnan sukkeluuteen.
C on tämän ajan matalan tason kieli. Siinä näkyy nykyisten tietokoneiden arkkitehtuuri. Se, päinvastoin kuin muut kielet on melko valmis. Sen asema ainoana kaikista kielistä on kiveen hakattu. Se ei menetä asemaansa "ikinä". Cllä ohjelmoidaan Linux kerneliä, mikään muu kieli ei tule kuuloonkaan.
kiitos vastauksista.
Sanonpahan vaan, että on hyvä opetella ainakin yksi kieli kunnolla (esim. C), minkä jälkeen voit miettiä projektin ja käyttää siihen tarvittavia kieliä. Sen mitä itse oon opetellut, koin sen mielenkiintoiseksi enkä "tylsäksi". Eipä siihen ohjelmointiin oikein mitään oikotietä ole...
Kaikki järkevät ohjelmointikielet tarjoavat mahdollisuuden kutsua C:llä toteutettuja funktioita. Termi foreign function interface eli FFI viittaa yleensä nimenomaan C:hen; C:llä on hyvin keskeinen ja ainutlaatuinen asema yhteensopivuudessa.
Monet tärkeät kirjastot, esimerkiksi libjpeg, libpng ja zlib, on toteutettu C:llä. Korkean tason ohjelmointikielet Perl, Python ja Ruby on toteutettu C:llä. Laajat kirjastot kuten OpenSSL ja ImageMagick tarjoavat ensisijaisesti C-rajapinnan; muiden kielten rajapinnat pohjautuvat C:hen.
C on melko pieni kieli ja sen opettelu on hyödyllistä yleissivistystä jokaiselle koodaajalle.
C++ on pitkälti taaksepäin yhteensopiva C:n laajennus, jolla koodataan mm. nettiselaimia, pelimoottoreita ja suuria järjestelmiä, joiden tehokkuus on tärkeää. Moneen projektiin ainoat varteenotettavat vaihtoehdot ovat C ja C++.
Keskustelun aloittajaa suosittelen aloittamaan ratkaisemalla yksinkertaisia ohjelmointiongelmia C:llä. Esimerkiksi Project Euler ja PHP-haaste antavat tekemistä pitkäksi aikaa (nimestä huolimatta PHP-haasteen voi suorittaa muillakin kielillä). Isojen projektien aloittamista kannattaa harkita vasta kun kieli ja ohjelmointi on hyvin hallussa.
Eräällä tietojenkäsittelytieteen luennolla minusta luennoitsija esitti hyvin vertauksen C on ohjelmointikielille sama asia kuin latina on indoeurooppalaisille kielille. Pitää hyvin paikkansa.
LCHawk kirjoitti:
C on ohjelmointikielille sama asia kuin latina on indoeurooppalaisille kielille. Pitää hyvin paikkansa.
Pitääkö tosiaan, ja mitä sitten arvelet vertauksen tarkoittavan?
Indoeurooppalaisia kieliä ovat mm. ranska, ruotsi, venäjä, persia ja hindi. Tähän joukkoon nähden latina ei ole kovin erityinen kieli. Latina on kyllä vaikuttanut paljon ranskaan, ja latinasta (ja ranskasta) on lainattu joitain sanoja ruotsiin ja venäjään, mutta persia ja hindi ovat selvästi kaukaisempaa sukua. Suurta osaa indoeurooppalaisista kielistä ei edes kirjoiteta meikäläisin aakkosin.
Ohjelmointikielten joukossa toki tilanne on sikäli hieman vastaava, että C++ pohjautuu pitkälti C:hen, PHP:hen on jotain lainattu, Python on imperatiivisena kielenä jonkinlaista sukua näille, ja Lisp ja Prolog taas eivät ole sukua. Kuitenkin PHP ja Python on toteutettu C:llä, mikä luonnollisissa kielissä olisi melko absurdi ajatus.
C:tä ja latinaa verrattaessa on myös syytä huomata, että C on hyvin aktiivisesti käytössä ja nimenomaan käytännönläheisessä käytössä suurissa projekteissa (Linux ym.), toisin kuin latina, joka valtakautensa jälkeen jäi vain kirkon ja tieteen kieleksi ja on sieltäkin jo pitkälti syrjäytynyt.
Latinan ja C:n vertaus on siis vähintäänkin ontuva, ja minulle ei ainakaan ole selvää, mitä vertauksella on yritetty havainnollistaa.
Metabolix kirjoitti:
(13.06.2016 22:39:16): ”– –” Pitääkö tosiaan, ja mitä sitten arvelet...
Vertailulla yritettiin havainnollistaa tuota kielen "periytymistä" eli sitä, että C on vaikuttanut paljon muiden kielten, kuten juurikin PHP:n, Pythonin ja Javan kehitykseen samoin kuin latina on vaikuttanut juurikin ranskan ja englannin yms. kehitykseen. Tuota sillä haettiin. On totta, että tuon käytön osalta vertailu ontuu.
Hyvä kuva pohdintaan miten vertaus osuu. Tokihan voi ajatella, että C:llä on ollut yhtä vähän/paljon vaikutusta kuin latinalla ottaen huomioon, että latina on vaikuttanut yhteen isohkoon haaraan ja on hyvin kaukana muista haaroista, puhumattakaan vanhemmista kielistä.
Latinan suhde indoeurooppalaisiin kieliin ei kerro useimmille käpistelijöille yhtään mitään. Vaikka vertaus pitäisikin jollain tasolla paikkansa, se ei ole hyödyllinen ja kuulostaa minusta turhalta akateemiselta pätemiseltä. Sen sijaan voisi sanoa, että moni nykyaikana käytetyimmistä kielistä on perinyt enemmän tai vähemmän ominaisuuksia C:stä ja antaa esimerkkejä. Lisäksi kannattaa mainita, että edelleen on käytössä C:täkin vanhempia kieliä (COBOL, Fortran, Lispit) ja täysin erillisiä kieliperheitä (esim. APL, pinokielet, ML). Esoteeriset kielet voivat myös olla hyödyllisiä Turingin täydellisyyden ja eri paradigmojen havainnollistamisessa ja niiden toteuttamisesta saa hyviä harjoitusprojekteja.
Aihe on jo aika vanha, joten et voi enää vastata siihen.