26
CMC 101 TOPIK DALAM PEMROGRAMAN PERTEMUAN 3 PROGRAM STUDI MAGISTER ILMU KOMPUTER FAKULTAS ILMU KOMPUTER

CMC 101 TOPIK DALAM PEMROGRAMAN PERTEMUAN ...cmc101.weblog.esaunggul.ac.id/wp-content/uploads/sites/...- banyak digunakan di wilayah kecerdasan buatan (roboOka, sistem cerdas) - biasa

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

  • CMC 101 TOPIK DALAM PEMROGRAMAN PERTEMUAN 3

    PROGRAM STUDI MAGISTER ILMU KOMPUTER FAKULTAS ILMU KOMPUTER

  • TOPIKDALAMPEMROGRAMANPEMROGRAMANFUNGSIONAL

    Pertemuan3

  • TUJUANPERKULIAHAN•  Mahasiswamampumembuatberpikirabstrakdanfungsional,danmampumembuatprogramsederhanadalambahasapemrogramanHaskell

    •  Abstraksidan“dekomposisi”dalamkonteksfungsional:data(typebentukan),fungsi

    •  EkspresiaritmaOka,logika,dankondisional•  Analisisrekurens•  Konseplistsebagaistrukturrekursif•  Operasidasarlistdenganelementertentu:integer,character,typebentukan

  • Lisp•  Lisp,beingthesecondoldestprogramminglanguageintheworld(aQerFortran),

    sOllholdsatopposiOoninAIcreaOngduetoitsuniquefeatures.Forexample,LisphasaspecialmacrosystemwhichmakespossibletodevelopadomainspecificlevelofabstracOonandbuildthenextlevelonit.LispinarOficialintelligencedevelopmentisknownforitsuniqueflexibilityasitadaptstotheproblemyouneedtosolveonthecontrarytotheotherlanguagesthatarechosenbecausetheycancompletethisorthattask.DevelopersoptforLispinmachinelearningandinducOvelogicprojects.

    •  Features:–fastprototypingcapabiliOes;-supportforsymbolicexpressions;–automaOcgarbagecollecOonwhichactuallywasinventedfortheLisplanguage;–libraryofconnecOontypesincludingdynamically-sizedlistsandhastables;–efficientcodingduetocompilers;–interacOveevaluaOonofcomponentsandrecompilaOonoffileswhiletheprogramisrunning.

  • Haskell•  HaskellisapurelyfuncOonalprogramminglanguagethatcanboastaboutitslazyevaluaOonandtypeinterfacefeatures.LogicTmonadsfacilitateexpressingnon-determinisOcalgorithms,andalgorithmscanbeexpressedinacomposiOonalway.

    •  Features:–majoralgorithmsavailableviacabal;–CUDAbinding;–compiledtobytecode;–canbeexecutedonmultpleCPUincloud.

  • AIML•  AIML(ArOficialIntelligenceMarkupLanguage)isadialectofXML

    usedtocreatechatbots.DuetoAIMLonecancreateconversaOonpartnersspeakinganaturallanguage.Thelanguagehascategoriesshowingaunitofknowledge;pa`ernsofpossibleu`eranceaddressedtoachatbot,andtemplatesofpossibleanswers.ToknowhowitworkscheckoutthisarOcleaboutbuildingachatbot.

    •  So,thema`erofbest-somethingisratherphilosophicalinanysphere,andAIdevelopmentisnotanexcepOon.TherearealotoffactorsinfluencingthechoiceofprogramminglanguagesforanAIproject.ItdependsonfuncOonsyouneedtocreate,usageandevenyourtasteinsomecases.However,moreandmoreAIprogrammersareusingPythonasit’sasimpleandpowerfultool,whileC++,PrologandLispcanbecalledrunners-upinthisrace.

  • PemrogramanFungsional

    Bahasapemrogramanfungsional:Lisp,Scheme,ML,Haskell

  • PROGRAMMINGFUNGSIONALBahasapemrogramanfungsional:Ø DisebutaplikaOfkarenafungsiyangdiaplikasikankedalamargumentasimenjadideklaraOfdannonproseduralØ DidasarkanpadakonsepmatemaOkadarisebuahfungsidanbahasapemrogramanfungsional,melipuO:

    -suatusetfungsiprimiOf-suatusetformatfungsional-aplikasioperasi-suatusetobjekdatadanfungsiasosiasi-suatumekanismeuntukmemberikanrujukansebuahnamaterhadapsuatufungsi

  • Ø  Merupakanhasildarifungsimeringkasdanmen-generalisirtypedatadaripeta

    3komponenprimerbahasafunc8onal:•  Kumpulanobjekdata

    menggunakanmekanismestrukturdataOngkatOnggi.Contoh:ArrayatauList

    •  Kumpulanfungsibuilt-in

    untukmemanipulasiobjekdatadasaryangmenyediakansejumlahfungsiuntukmembuatdanmengakseslist.

  • Contoh:LISP→-bahasauntukkomputasisimbolik,nilai direpresentasikandenganekspresisimbolik. -banyakdigunakandiwilayahkecerdasanbuatan (roboOka,sistemcerdas) -biasadieksekusidibawahkendaliinterpreter Ekspresiterdiridariatomataulist. Atom→ stringdankarakter(huruf,angka) Contoh:A 68000

    List→ urutandariatomataulist,dipisahkan denganspasi,ditutpdengantanda kurung Contoh:(PLUSAB)

    ((DAGINGAYAM)(SAWIKANGKUNGBAYAM)AIR))

  • ML(MetaLanguage)→ - merupakanbahasaaplikaOfdenganprogram-program yangditulismenggunakangayaCatauPASCALdan dengankonsepyanglebihadvancetentangOpedata -mendukungpolymorphismedanabstraksidata

    -berjalandenganinterpreter •  Kumpulanfunc8onalforms

    untukmembuatfungsibaru,yangmengizinkanprogrammermendefinisikanoperasibarudarikombinasifungsiygada

  • LAMBDACALCULUS

    Adalah:•  bahasasederhanadenganilmusemanOksederhana,ekspresifyang

    menyatakansemuafungsidapatdiperhitungkan•  MerupakansuatubentukformaldenganfungsisebagaiaturanContoh:-  DenganekspresipolynomialX²+3X-5-Denganfungsilebihdari1variabel

    (+ x y) ditulis ((+ x) y) dimana fungsi (+ x) adalah fungsi yangmenambahkansesuatukex

  • LambdaCalculusmurnimempunyai3buahElemen:q  LambangprimiOfq  Aplikasifungsiq  FungsiciptaanLambdacalculusmurniOdakmempunyaifungsitetapataukonstantaKalkulasidalamlambdacalculusadalah:

    menulisulang(mengurangi)suatulambda-expressionmenjadisuatuformatformal

  • ILMUSEMANTIKOPERASIONALIn8denotasionalIlmuSeman8kadalah:

    Terjemahandariprogramkonvensionalkedalampersamaanfungsional.TujuandenotasionalSemanOkdarisuatubahasaadalah:

    menugaskansuatunilaikepadaseOapekspresidalambahasaIlmuSemanOkdapatdinyatakandalamlambdacalculussebagaifungsimatemaOcal,Eval,dariekspresikenilaiContoh:Eval[+34]=7menggambarkanbhwnilaiekspresi

    (+34)untukmenjadi7

  • FUNGSIREKURSIF

    PerluasanSyntaxLambda-calculusyangmencakupekspresiyangtelahdinamai(namedexpressions)

    L::=...|x:L|...

    X=namadariEkspresiLambdaL

    FAC:\n.(if(=n0)1(*n(FAC(-n1))))dengansyntac8csugaring:

    FAC:\n.if(n=0)then1else(n*FAC(n-1))

    FAC:(\fac.(\n.(if(=n0)(*n(fac(-n1)))))FAC)

    H:\fac.(\n.(if(=n0)1(*n(fac(-n1)))))

    FAC:(HFAC)

  • letn:EinBadalahpenyingkatanuntuk(\n.B)E

    letx:3in(*xx)

    \y.letx:3in(*yx)Ekuivalen\y.(*y3)

    letrecn:EinBadalahpenyingkatanuntukletn:Y(\n.E)inB

    letn:EinB = (\n.B)Eletrecn:EinB = letn:Y(\n.E)inB

    ATURANLINGKUPLEKSIKAL

  • SEMANTIKTRANSLASIDANKOMBINATORKombinator:

    S=\f.(\g.(\x.fx(gx)))K=\x.\y.xI=\x.xY=\f.\x.(f(xx))\x.(f(xx))

    aturanreduksiuntukkalkulusSKIadalah: Sfgx -->fx(gx) Kcx -->c Ix -->x Ye -->e(Ye) (AB) -->AB (ABC)-->ABC

  • • AturanReduksidijalankandarikanankekiri• JikaOdakadareduksiS,K,I,Ymakatandakurungakandibuang,danprosesreduksiditeruskan

    SemanOkTranslasiuntukLambdaCalculus:Compile[s] -->sCompile[(E1E2)] -->(Compile[E1]Compile[E2])Compile[\x.E] -->Abstract[(x,Compile[E])]Abstract[(x,s)] -->if(s=x)thenIelse(Ks)Abstract[(x,(E1E2))]-->((SAbstract[(x,E1)])Abstract[(x,E2)])

    Dimanasadalahsimbol

  • Scheme

    • TurunandariLISP,didasarkanpadaLambdaCalculus.Dikonsentrasikankefiturlambda-calculus

    • Schememempunyaiduaobject:–  Atoms:UntaianKarakteryangbukanblank–  List:RangkainAtomatauListdipisahkanolehblankdanberadadalamtanda

    • Sebuahfungsidapatterbuatatasfungsiyanglaindandapatdiaplikasikanpadalistatauargumen

  • DARISISISEJARAH

    ALTERNATIFTEORIDASARMATEMATIKA•  AlonsoChurch,lambda-calculus,1930an•  HaskellB.Curry,logikakombinatorial1958,LISP(LIStProcessing),pemrosesanlistberdasarkanfungsirekursif.

    –  Recursion–  FirstclassfuncOon–  GarbagecollecOon

    1960an,penggunaanlambda-calculusdidalamilmukomputer→Seman8k

    DenotasionalTeoriSeman+kFormaluntukbahasapemrograman(PeterLandin,ChristopherStrachy,dll)

  • 1969,ModelMatema8kapertamauntuklambda-calculusber8pebebas(DanaScoY)

    Haskell•  bahasamodernyangdinamaisamadenganHaskellB.Curry•  Didesainoleh15oranganggotakomiteinternasional•  Pembentukanbahasafungsionalyangmemasukkan:

    –  ide-idebaikyangsebelumnyaadadalamrisetbahasafungsional–  Yangsesuaiuntukpengajaran,risetdanaplikasi–  FasilitasOverloading,yangdipadukandengansistember8pepolimorfis,

    i/ofungsional,abstraksidatadanpenyembunyianinformasi

    Func8onalProgrammingurutanmesinvirtual.–  Bahasapemrogramanfungsional→lambdacalculus–  Lambdacalculus→logikakombinatorial–  Logikakombinatorial→kodemesinreduksigraf

    Kesemuanyaadalahmesinvirtual

  • SOAL-SOAL1.  Bahasauntukkomputasisimbolik,nilaiyangdirepresentasikandengan

    ekspresisimbolikdisebut:a.Atom b.LISP * c.List d.ML

    2.Urutandariatomataulist,yangdipisahkandenganspasi,danditutup

    dengantandakurungadalah:a.Atom b.LISP c.List * d.ML

    3.  YangOdaktermasukelemenlambdacalculusadalah:

    a.lambdaprimiOf b.fungsiciptaanc.ilmusemanOk* d.aplikasifungsi

  • 4.TujuandenotasionalsemanOkdarisuatubahasaadalah:a.menulisulangsuatulambda-ekspressionmenjadisuatuformatformalb.menugaskansuatunilaikepadaseOapekspresidalam

    bahasa*c.memanipulasiobjekdatadasaryangmenyediakansejumlahfungsiuntukmembuatdanmengakseslistd.membuatfungsibaruyangmengizinkanprogrammermendefinisikanoperasibarudarikombinasifungsiyangada

    5.Yangtermasukdalamkumpulanobjekdataadalah:a.LISPdanML b.ArrayatauList*c.AtomatauList d.MLdanArray

  • 6.PrinsipyangterdapatdalamLambda-Calculus:a.  Nilaisuatuexpresitergantunghanyapadanilaidarisub-ekspresinya*b.  Kurangmemadaiuntukmengekspresikanfungsikomputasic.  NilaisuatuekspresiOdaktergantungatasnilaisub-ekspresid.  SemanOkyangkompleks7.Schemememiliki2buahobjek,yaitu:a.  AtomdanList*b.  ListdanSemanOcc.  AtomdanSemanOcd.  FuncOondanlist

  • 8.Manakahyangbukanmerupakanbahasapemrogramanfungsionalmodern?

    a.  Haskell*b.  LISPc.  Schemed.  Tidakadayangbenar9.Sebuahprogramfungsionalterdiriatasa.  EkspresiEb.  Algoritmac.  Inputd.  Tidakadayangbenar

  • 10.EkspresiLambda-Calculus\x.(x3-27)5akanmenghasilkan:a.  68b.  78c.  88d.  98