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