Miksi C++ on niin sotkuista (vaikea oppia)

Anonyymi-ap

Tuossa linkissä on esimerkki kahden kokonaisluvun yhteenlaskusta
https://www.educba.com/what-is-haskell-programming-language/
Sivulla siis verrataan Pythonia C++ ja Haskelia.

Python
>>>a=2

>>>b=3

>>>a+b

>>>5
-----------------------
C++
template <int x, int y>

struct add {

static constexpr int value = x + y;

};

int main() {

auto z = add<1,2>::value;

std::cout << z << std::endl;

return 0;

}
----------------------------
Haskell
add :: Int -> Int -> Int

add d e = d + e

main :: IO ()

main = do

let f = add 1 2

putStrLn $ show f

34

372

    Vastaukset 34

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Vaikka siksi että python on tulkkaava kieli. Nopeampi koodata mutta suorituskyky heikko. C saa irti kaiken prosessorista.

      • Anonyymi

        #!/usr/bin/env pypy
        # -*- coding: utf-8 -*-

        i = 1
        while i < 99999999:
        i = 1

        PyPy on vaihtoehtoinen nopeampi Python-toteutus. PyPy pyrkii nopeuteen ja pienempään muistin käyttöön verrattuna alkuperäisen Python-tulkkiin.

        Tämä while silmukka on noin kaksi kertaa nopeampi python koodina kuin C tai C koodina.


      • Anonyymi
        Anonyymi kirjoitti:

        #!/usr/bin/env pypy
        # -*- coding: utf-8 -*-

        i = 1
        while i < 99999999:
        i = 1

        PyPy on vaihtoehtoinen nopeampi Python-toteutus. PyPy pyrkii nopeuteen ja pienempään muistin käyttöön verrattuna alkuperäisen Python-tulkkiin.

        Tämä while silmukka on noin kaksi kertaa nopeampi python koodina kuin C tai C koodina.

        Näyttää plus merkki katoavan jonnekkin:

        Tämä while silmukka on noin kaksi kertaa nopeampi python koodina kuin C tai C✛✛ koodina.


      • Anonyymi

        Ei saimaanapina mitään osaa!


      • Anonyymi

        Ei saimaanapina osaa koodata.


    • Anonyymi

      Olen tämän huomannut C :sta kanssa ja sanoisin, että on yritetty saada liikaa ominaisuuksia mukaan. Nykyinen kieli muistuttaa hyvin vähän sitä mitä sillä oli esim. 20 vuotta sitten koodata.

      • Anonyymi

        Ongelma on lähinnä siinä, että cpp-kieli on nykyään enemmän kirjoitettavaa kuin luettavaa: Pitää oikeastaan kirjoittaa koodi itse, että sitä pystyy lukemaan s.e. huomaa kaiken mitä mukaan on saatu mahtumaan. Hyvin oops-herkkää toimintaa ja tästä syystä koodiin voi jäädä virheitä joiden metsästykseen saa kulumaan hyvän tovin.
        No onhan kuvattavat ongelmatkin toisaalta monimutkaisia, joten voi johtua siitä osa..


    • Anonyymi

      Toisilla vaan järki juoksee hitaammin kuin toisilla, tämän palstan tasokin jo kertoo sen. Täyspäisellä C sujuu kyllä ihan kivasti.

    • Anonyymi

      Cee kielessä lasketaan yhteen ihan normaalisti a b. Jos tulosta yritetään sovitella muuttujaan, niin pitää huomioida tyypin lisäksi myös koko, jottei tule ylivuotoa. Esimerkiksi 8-bittiseen unsigned chariin kun ynnää vaikka 100 200, niin ei siinä ole 300.

      • Anonyymi

        unsigned char voi sisältää korkeintaan luvun merkille joka on arvoltaan 255, joten muuttujan sisältö pyörähtää uudestaan ylimenevän osan (44) verran.

        #include <stdio.h>
        int main() {
        unsigned char i = 100 ⊹ 200;
        printf("unsigned char: %c\n", i);
        printf("unsigned char: %i\n", i);
        return 0;
        }

        unsigned char: ,
        unsigned char: 44


    • Anonyymi

      Tämä sivusto alkaa olemaan käyttökelvoton esimerkkien jakoon. Python koodista katoaa syntaksin mukaiset sisennykset on jo yksinään korjaamaton paikka aloittelevalle, mutta nyt kun siitä vielä katoaa ainakin tuo plusmerkki niin eipä sitä esimerkistä enää enää juuri ole hyötyä, esimerkillä tienaa korkeintaan "ei toimi" palautteen.

      • Anonyymi

        Joskus toimi sitova välilyönti sisentämiseen.

        >>> for i in range(3):
        ...        print(i)
        ...
        0
        1
        2

        Mutta joo ei tänne kannata laittaa kuin pastebinin linkkejä, jos haluaa jotain esittää,


      • Anonyymi
        Anonyymi kirjoitti:

        Joskus toimi sitova välilyönti sisentämiseen.

        >>> for i in range(3):
        ...        print(i)
        ...
        0
        1
        2

        Mutta joo ei tänne kannata laittaa kuin pastebinin linkkejä, jos haluaa jotain esittää,

        Se, auttaa vähän
        IF auttaa paljon.


    • Anonyymi

      btw: Haskelista löytyy kurssi https://haskell.mooc.fi/
      Oli ainakin itselle mielenkiintoista tehdä tehtäviä sieltä.
      Ehkä siinä oppi jotain ideoita. Mutta meni ajankulunakin :)

      Käytin exercises kansiossa komentoja (huom suorita komennot terminaalissa exercises kansiossa, muuten jää väärä versio)

      stack init --resolver lts-18.21 --force
      stack build

      Näiden komentojen jälkeen toimi. Muita ongelmia ei ollut, toimi kuin vettä vaan :)
      Testit ajetaan siis ohjeen mukaan
      stack runhaskell Set1Test.hs

      lts-18.21 koska:
      - Vanhemmallla lts-18... versiollaoli jotain ongelmia:
      https://github.com/commercialhaskell/lts-haskell/issues/329
      Tuolla vinkattiin virheen korjatun tuossa versiossa ja kokeilin onnea :)
      Joku uudempikin voi toimia jos noita oli lts-18... versioita

      - ja uudemmilla LTS-19.. (ghc 9...) ei toiminut haskell language server täysin, ainakin quick fix jäi jumiin vscode editorissa. Voihan ne ehdotukset tehdä copy pastena tai käsin kirjoittamallakin. Tuo quick fix siis antaa esim. vinkkejä miten koodin voisi kirjoittaa toisella tavalla tai paremmalla tavalla.
      Tuon näköinen ongelma: https://github.com/haskell/haskell-language-server/issues/646

      kohdassa 1.13 Working on the Exercises on muuten ohjeet tehtävien suorittamiseen ja stack tai cabal komennoille, itse käytin stack komentoja.

      • Anonyymi

        Samoilla ohjeilla toimii ainakin Linuxissa ja Windowsissa.
        Toimii aivan suoraan myös Windowsissa. Ei tarvitse käyttää WSL:ää tai muita linux-onwindows-virityksiä, jos ei viitsi.


      • Anonyymi

        Unohtui vielä että jostain tunki ghcup ohjelma.
        Asensin sen ja toimiin senkin kanssa.


    • Anonyymi
    • Anonyymi

      Luin jostain että C keksijä teki siitä nimen omaan vaikeen kielen, jotta C kehittäjien palkat olisi täten korkeammalla tasolla?

      • Anonyymi

        Näköjään täältä parsiutui tuo plus plus pois, eli tarkoitin tässä toki "C plus plus"


    • Anonyymi

      Kai se on sotkua jos ei osaa!

      • Anonyymi

        On se sotkua vaikka osaisikin: Ei minkäänlaista näkemystä, miltä koodin tulisi näyttää ja hullu mieltymys kulma(nokka) sulkeisiin.


      • Anonyymi
        Anonyymi kirjoitti:

        On se sotkua vaikka osaisikin: Ei minkäänlaista näkemystä, miltä koodin tulisi näyttää ja hullu mieltymys kulma(nokka) sulkeisiin.

        "kulma(nokka) sulkeisiin" kielii ettet ole ohjelmointi taitoinen, joten puhu vain omasta puolestasi ja kaveri jo kertoikin miltä osaamattomuus saa kielen kuin kielen näyttämään.


      • Anonyymi
        Anonyymi kirjoitti:

        "kulma(nokka) sulkeisiin" kielii ettet ole ohjelmointi taitoinen, joten puhu vain omasta puolestasi ja kaveri jo kertoikin miltä osaamattomuus saa kielen kuin kielen näyttämään.

        Nokka-sulkeista on puhuttu jo 25 vuotta sitten ohjelmointikurssilla? Et taida olla kovin monessa paikassa ollut koodaamassa, jos sanonta ei ole tuttu? Cpp:tä tuli viimeksi koodailtua joskus 15 vuotta sitten - sen jälkeen siirtyminen laitteistonläheiseen ohjelmointiin ja c ja asm ympäristöihin - enkä ole katunut.


      • Anonyymi
        Anonyymi kirjoitti:

        Nokka-sulkeista on puhuttu jo 25 vuotta sitten ohjelmointikurssilla? Et taida olla kovin monessa paikassa ollut koodaamassa, jos sanonta ei ole tuttu? Cpp:tä tuli viimeksi koodailtua joskus 15 vuotta sitten - sen jälkeen siirtyminen laitteistonläheiseen ohjelmointiin ja c ja asm ympäristöihin - enkä ole katunut.

        Jos on puhuttu 25 vuotta, niin et kuitenkaan ainuttakaan esimerkkiä kykene antamaan, taidat olla valehtelija.


    • Anonyymi
    • Anonyymi

      Vapunen ei osaa mitään!

    • Anonyymi

      Ei sittenkannata opetella jos ei osaa.

    • Anonyymi

      Ei sitä C :aa tarvitse kirjoittaa kuin Haskellia.

      • Anonyymi

        Mitä sinä tarkoitat?


      • Anonyymi
        Anonyymi kirjoitti:

        Mitä sinä tarkoitat?

        Kyseisessä esimerkissä tehty C kielellä template että pakotetaan kääntäjää toimimaan kuin Haskell.

        Eihän se pakollista ole.


      • Anonyymi
        Anonyymi kirjoitti:

        Kyseisessä esimerkissä tehty C kielellä template että pakotetaan kääntäjää toimimaan kuin Haskell.

        Eihän se pakollista ole.

        Ei ole pakollista, sotkee selvätkin asiat.


    • Anonyymi

      Kyllähän sitä kaikenlaisia vaikealukuisia kieliä on ohjelmointiinkin kehitelty.

      katsopa Delphi -esimerkkiä:

      const
      A = 2;
      B = 3;

      function Summa(A,B:Integer):Integer;
      begin
      Result := A B;
      end;

      // kutsuesimerkki:

      {$APPTYPE CONSOLE}

      begin
      WriteLn(Summa(A,B));
      end.

      JOS on GUI -ohjelma, niin sitten vaikkapa näin

      procedure TForm1.Button1Click(Sender:TObject);
      begin
      Memo1.Lines.Add('Summa on ' IntToStr(Summa(A,B)) '.');
      end;

      Sääli, ettei Delphi ole levinnyt laajemman yleisön tietoon.
      Taatusti helppolukuisimpia ohjelmointikieliä.
      Ja kääntää suoraan konekieleksi aivan kuin C ja C tekevät myös.

      Suorituskyky siis samaa luokkaa C -kielen kanssa.

      Ja Inline Assembly on myös Delphi -koodaajan käytettävissä, jos siihen on tarvetta.
      Toki Assembly on CPU -riippuvainen, eli kannattaa koodata ns. Purepascal -versio myös, niin saa käännettyä sellaisillekin prosessoreille, jolle ei ole koodattu sopivaa assemblyä.

      • Anonyymi

        Delphistä jos tykkää, niin nykyään kannattanee sitä kokeilla free-pascal:n ja lazaruksen kautta. Eipä silti, on tuonne Pascal-puolellekin tehty hiukan arveluttavia syntaksi-ratkaisuja: Tuo objective pascal tuntuu olevan ikään kuin lätkäisty olemassa olevan toteutuksen pintaan ja joissakin kohdissa aiheuttaa koodin hahmottamisessa jonkinlaisia fakiirin taitoja ymmärtää lukemaansa. Myöskin pointterien käsittely - vaikka se onkin c:n kaltaista - käyttää eri merkkejä syntaksissa ja aiheuttaa c:tä osaavalle lobotomian, koska aivot ei reagoi syntaksiin..
        Pascal-kääntäjä on perinteisesti kuitenkin ollut nopeampi kuin C-kääntäjä johtuen siitä, että käännettävällä koodilla on hiukan enemmän rajoitteita eikä kääntäjän tarvitse käydä koodia läpi kahteen kertaan. Kääntäjä on siis jossakin määrin idiootti ja sitä pitää hiukan vahtia: Muuten pinossa voi olla liikaa tavaraa esim. funktiokutsussa. Toisaalta se, ettei koodaajan tarvitse huolehtia include-poluista vaan ne asetetaan ympäristössä on vapauttava kokemus(uses lauseessa kerrotaan mitä unittia käytetään, ei mistä tiedostosta se löytyy, joskin täydennys on triviaalia).


    • Anonyymi

      c++ on muistinhallinnan ohjelma ja jota ei tarivi tulkita. Siten nopein ja siihen käytetään esim. selaimissa, rahalaitoksissa ja peleissä usein.

      Kun taas python ei välitä hallinnasta ja se tulkitaan. Pythonia on vaikea ymmärtää, kun taas mikrosoft ja java on helppo ymmärtää, vain liikaa roskaa

      c++ taas haluaa olla matemaattistermisempi mutta samaa kun java jne.

      helppous on kuitenkin kaukana kun käytetään vielä javascirp pythin libraries, jotka tekee koko effortista futile. Tlevana hetkenä koodaa JS ihan noin vaan; kirjastot on sitä varten ettö poainaa naooia ja saa sen JS:nä, mutta niin ei vielä ole. Itslle riittää JS täuysin itsenään, mtuta ei prina riitä, joila 99% rioskaa kaikkea.

    Ketjusta on poistettu 10 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. 124
      1435
    2. Costa Rica on tympeän makuinen kahvi

      Ostin kahvin hinnan romahduksen kunniaksi Costa Rican "Premium Blendiä". Piti olla sataprosenttista arabialaista. No ain
      Maailman menoa
      101
      1384
    3. Hei, voitko kuunnella

      Voisitko auttaa minua selvittämään asioita? En halua ajaa sinua hulluuteen kanssani, en sitoa sinua, en esittää vaatimu
      Ikävä
      149
      1335
    4. Joku porukka lähtenyt täältä

      Ihmeen hiljainen on palsta nyt. Yleensä tänne tulvii aloituksia yms, mutta nyt on kyllä erikoisen hiljaista.
      Ikävä
      246
      1218
    5. Se kun olit pitkästä aikaa silmieni edessä

      Oli kyllä sykähdyttävää. Tiedätkö, mikä laittaa minut ikävöimään sinua? Kun palautan mieleeni valtavan ihanan olemuksen,
      Ikävä
      57
      1076
    6. 71
      1044
    7. Vieläkään ei voi opiskella kursseja korkeakoulussa?

      Vaikka lakiin tehty muutos hän ei saanut opiskella työttömyystuella. https://yle.fi/a/74-20244925
      Työttömyys
      18
      1034
    8. Tuletko tänään

      Jos soitan? Niin... tuletko?🖤
      Ikävä
      84
      921
    9. Onkin niin, että olet hulluna minuun

      mutta et uskalla sitä tuoda ilmi. Salaa haaveilet kiihkeästä suhteesta, vaan siihen se jää, ja syyksi esteet ja muut. S
      Ikävä
      43
      746
    10. Mitä on mietteissäsi

      Tänään?
      Ikävä
      66
      724
    11. Mikä on hulluinta?

      Mitä ikäväsi kohde on tehnyt?
      Ikävä
      37
      666
    12. Nyt ei enää ole

      Mitään mikä pitäisi mut hiljaa, kaikesta. Tämä on muutamalle henkilölle täällä.
      Ikävä
      42
      640
    13. En olis uskonu

      et kuulut tollaseen porukkaan
      Ikävä
      102
      622
    14. Suolahden ostokeskus

      Kiinteistöyhtiö konkurssissa. Taisi jäädä vastikkeet maksamatta eräällä yrittäjällä.
      Äänekoski
      47
      599
    15. Hämmentävä hetki: TTK:sta pudonnut Johanna Puhakka lataa pettyneenä: "Sitä ei voi kieltää"

      Johanna Puhakka ja Jurijs Jurza Trosenko tippuivat Tanssii Tähtien Kanssa -kisasta. Suositussa viihdeohjelmassa nähtiin
      Tanssii tähtien kanssa
      15
      598
    16. Taidan luopua

      Sinusta.
      Ikävä
      34
      585
    17. Jälleen näin nainen unta sinusta

      Aika usein tulet uniini, enkä tiedä, mitä se tahtoo minulle sanoa. Tällä kertaa en ollut kotonasi, vaan ulkona jossain t
      Ikävä
      28
      559
    18. En haluaisi sanoa tätä

      Mutta olet sokea sille, mitä sinulla jo on! Jos minä olisin sinä, pyrkisin tekemään kaikkeni kohentaakseni nykyistä pari
      Ikävä
      40
      558
    19. Et taida olla ihan varma

      Päätöksestäsi?
      Ikävä
      67
      549
    20. Meiltä löytyy kyllä älliä

      Vai mitä oot mieltä...
      Ikävä
      92
      515
    Aihe