C++ Template programozas

C++ Template programozas
2005-03-28T02:54:09+02:00
2005-03-30T01:50:15+02:00
2022-11-01T01:41:53+01:00
  • Tudastarba feltettem egy kerdest... ugyan csak kozvetve kapcsolodik a temahoz, megis hatha valaki innen talal ra megoldast :D
    Mutasd a teljes hozzászólást!
  • Igy van gyakorlatilag STL a Templatekre epul..

    Mint ahogy a neve is mutatja: Standard Template Library

    Talan nem veletlen, hogy mind a .NET nyelvekben, legalabbis a C#-ban, es a Java 1.5-ben is elkezdtek bevezetni ennek a paradigmanak a tamogatasat. A Java-t neztem eddig, es persze elso korben nem tamogatja a templateket annyira mint a C++! Ennek folyomanya kent amennyire tudom jon/jonni fog/ a STL for Java!
    Mutasd a teljes hozzászólást!
  • Templatek tovabbi erossege, hogy C++-ban ugy hiszem az o segitsegukkel lehet a Generikus (vagy Generativ?) programozast alkalmazni...

    Generikusat.

    A generatív általánosabb, használja a generikus programozást is, de ide tartozik pl. a metaprogramozás, az aspektus orientáltság és a szándék orientáltság is.
    Mutasd a teljes hozzászólást!
  • Igy van gyakorlatilag STL a Templatekre epul...

    Templatek tovabbi erossege, hogy C++-ban ugy hiszem az o segitsegukkel lehet a Generikus (vagy Generativ?) programozast alkalmazni...

    A konyvet olvastam (illetve annak kb 60%-t), eszmeletlen milyen erosek a templatek, es hogy mennyi fogalom stb. kapcsolodik hozzajuk :)
    Mutasd a teljes hozzászólást!
  • Egyet ertek veled, hogy elegge mostohan kezelt terulete a C++-nak a templatek!

    Bar sokan hasznaljak oket, akar anelkul is hogy tudnanak rola (pl.: VC++ CString)!

    Mindazonaltal, talan nem is veletlen ez, ui. ez a plusz absztrakcio amit bevezet, eleg nehezen kepzelheto el (no nem feltetlen a legegyszerubb tipusbehelyettesitesre gondolok, henem pl. Template Meta Programming terulete)!

    De azt hiszem annak aki komolyan akar foglalkozni a templatekkel annak kotelezo olvasmany: C++ Templates - The Complete Guide

    Ebben egy sor olyan buktatora is felhivjak a figyelmet amire amugy nem biztos, hogy gondol az ember elsore!
    Mutasd a teljes hozzászólást!
  • C++ Templatek, Template Meta programozas, Expression Templatek stb.

    Templatek, mint olyanok mar jopar eve a C++ nyel reszei, megis viszonylag kevesen ismerik, megkevesebben hasznaljak, kevesek latnak benne fantaziat, es a legtobbunknek eletidegen a gondolkodas modja, talan a szintaxisa is (ez talan azert lehet, mert sokkal inkabb funkcionalis programozasra hasonlito stilust es gondolkodast igenyel).


    Az alacsony ismeretsegen, a "varazslaton" es legfogkeppen azon illuzio lerombolasat szeretnem itt a forumon "elkezdeni", miszerint nincs ertelme vagy haszna a Templateknek, tovabba erdekelne, hogy ki milyen melysegben, milyen temaval kapcsolatban kerult / kerul a templatek kozelebe :).


    Vitaindito hozzaszolasomban vazolnam a sajat helyzetem (itt nem terek ki a templatek hasznalatanak alapjaira, de akit erdekel szivesen leirom - vagy adok linket).


    Mint tudjuk a templatek eseteben a formalis es aktualis parameterek ellenorzesere a nyelv nem biztosit tul sok eszkozt (tovabba az mindig forditasi idoben tortenik... a templatekkel kapcsolatba, amugy is mindig forditasi ideju dolgokrol beszelunk!), tekintsunk erre egy peldat:

    Adott egy olyan osztaly template, amely kulonbozo muveleteket valosit meg tetszoleges tipus felett (pl: rendezes, hatvanyozas stb). Ebben az osztalyban templateben definialva van egy kisebb-egyenlo operator (<=).

    Aktualis parameterkent atadjuk a komplex szamok tipusat (osztalyat ha ugy tetszik) - amelyben koztudottan, nincs a valos szamokhoz hasonlo rendezesi relacio, tehat tegyuk fel, hogy ehhez a komplex tipushoz nincs kisebb-egyenlo operator.

    Az osztaly templatunkben van egy rendezo sort() fuggveny, melyet szeretnenk meghivni... ez azonban a <= operator hianya miatt lehetetlen, es forditasi hibat fog okozni, ez viszont a C++ lusta peldanyositasi (lazy instantiation) strategiaja miatt csak akkor derul ki amikor olyan fuggvenyt szeretnenk meghivni, amely megprobalja felhasznalni a nemletezo kisebb egyenlo operatort.

    Ergo, amig nem hasznaljuk a kisebb egyenlo operatort, addig a fordito teljes boldogsagba leforditja nekunk a kodot es a program mukodik is!

    Az altalunk keszitett osztaly template-nek bizonyos helyzetben elvarasa lehet - mondjuk gyenge elofeltetele -, hogy letezzen az aktualis parameternek kisebb egyenlo operatora, annak erdekeben, hogy helyesen mukodjon. Na ezt nem tamogatja a nyelv mai valtozata...

    Ez a C++ -nak nem egy defektusa vagy hibaja, ez Bjarne Stroustrup (es tobbiek) tudatos tervezesenek eredemenye. (Talan itt a prog.hu-n volt is ezzel kapcsolatban egy cikk.)


    Nah, egy template "elvarasainak" explicit megadasara vannak bizonyos probalkozasok pl: Boost::Concept_checklibrary...

    Ennek egy refaktorizalasaval foglalkozok, azaz a jelenlegi feluletet tobbe-kevesbe (inkabb kevesbe :) megtartva, egy uj implementalasan a a Zolyomi-Porkolab fele cikk alapjan, az ELTE-n TDK kereteben.

    Nah, ennyi finom bevezetes utan erdekelne, hogy esetleg masok foglalkoznak e hasonlo temaval? De a templatekkel foglalkozo altalanos problemakat, kerdeseket is szivesen latnek itt - igen, akar "alap szinten" is :).
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd