Ngobrolin Fungsional JS - Ngobrolin WEB
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://ksana.in/ngobrolinweb Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.
Ringkasan Episode
Bantu KoreksiEpisode Ngobrolin WEB ini membahas konsep-konsep pemrograman fungsional dalam JavaScript secara mendalam. Diskusi dimulai dengan sejarah singkat JavaScript yang awalnya dirancang oleh Brendan Eich untuk mengimplementasikan Scheme (bahasa fungsional) di browser, namun kemudian dikompromikan dengan tren Java yang sedang naik daun pada masa itu, menjadikan JavaScript sebagai bahasa hibrida yang mendukung baik paradigma fungsional maupun OOP. Pembahasan lanjut ke konsep-konsep fundamental pemrograman fungsional seperti pure function yang harus menghasilkan output yang sama untuk input yang sama tanpa side effect, pentingnya return value, serta konsep immutability di mana data tidak boleh diubah setelah dibuat. Episode ini juga menyinggung perbedaan antara pendekatan deklaratif (fungsional) dan imperatif, serta memperkenalkan utility library seperti Ramda.js yang membantu implementasi fungsional programming di JavaScript dengan fitur seperti pipe operator dan tree-shaking untuk optimasi bundle size. Diskusi ditutup dengan pembicaraan tentang bahasa-bahasa fungsional murni seperti Haskell, Elixir, dan Reason, serta bagaimana konsep fungsional dapat diterapkan dalam pengembangan web modern tanpa harus mengadopsi sepenuhnya bahasa fungsional.
Poin-poin Utama
- •JavaScript memiliki akar sejarah dari pemrograman fungsional melalui visi awal Brendan Eich yang ingin mengimplementasikan Scheme di browser, namun dikompromikan dengan tren Java yang sedang populer pada tahun 1995
- •Pure function adalah fungsi yang selalu mengembalikan hasil yang sama untuk input yang sama dan tidak memiliki side effect, dengan karakteristik utama: semua data yang dibutuhkan harus diteruskan melalui parameter dan fungsi harus memiliki return value
- •Side effect dalam konteks web mencakup manipulasi DOM, console.log, request ke server, save ke database, atau mengubah variabel di luar scope fungsi, yang sebaiknya diisolasi pada fungsi-fungsi tertentu saja
- •Immutability adalah konsep penting dalam pemrograman fungsional di mana data tidak boleh diubah setelah dibuat, berbeda dengan mutability yang memungkinkan perubahan data langsung pada variabel yang sama
- •Pendekatan deklaratif (fungsional) berfokus pada "apa yang ingin dicapai" menggunakan fungsi seperti map, filter, dan reduce, sedangkan pendekatan imperatif berfokus pada "bagaimana mencapainya" dengan for loop dan conditional
- •Higher order function adalah fungsi yang dapat menerima fungsi lain sebagai parameter atau mengembalikan fungsi, yang sangat umum digunakan dalam React components dan utility functions
- •Ramda.js adalah utility library yang populer untuk pemrograman fungsional di JavaScript dengan fitur seperti pipe operator, auto-currying, dan mendukung tree-shaking untuk optimasi bundle size
- •Belajar paradigma pemrograman fungsional tidak harus menggantikan OOP sepenuhnya, namun dapat memperkaya toolkit developer dan membantu memahami kode yang ditulis dengan paradigma berbeda
0:00hai hai selamat malam
0:17selamat malam
0:47Oke ya Maaf telat cari pencetanya dulu tadi bentuknya kayak gimana sih soundboard kayak
0:58kotak soundboard Hah nggak pernah lihat gua kayak drum pad nggak ini ini software software
1:06Oh software
1:08Selama ini bayanginnya kayak media
1:11Berarti pakai ini dong
1:12Itu softwarenya
1:16Jadi mau erot
1:17Mau
1:19Kirai
1:21Apa itu?
1:23Nadi
1:23Edisi Wibu
1:26Edisi Wibu
1:29Oke cukup
1:31Cukup ya behind the scene nya ya
1:34ya jadi ketemu lagi kita masih bareng eh Eka Ivan dan Riza kita bertiga masih trio web-web ya dan
1:46mungkin buat refreshing buat teman-teman yang mungkin baru baru join gitu ya mungkin kita bisa
1:52refresh dulu ini acaranya tentang apa sih ngobrolin web ini tentang apa ya kalau judulnya ngobrolin
1:59teknologi-teknologi web kan itu cakupannya luas kali ya kalau kita belajar semuanya
2:12sendiri enggak bakal enggak bakal puluhan hatam yang paling baru habis-habis kalau dipelajari
2:19ya makanya ada acara mingguan ini biar kita juga update update ya abdukadang teman-teman di chat
2:27lebih update dari kita betul silahkan repost Iya dan tujuannya adalah supaya kita enggak kehabisan
2:34ide kalau disuruh mengisi acara di baik devest Google IOS ataupun minta-minta di sekitar ya
2:41karena kita sudah mulai kehabisan materi jadi kita mau menggali apa teknologi-teknologi baru
2:47teknologi lama ya yang mungkin belum pernah atau jarang di cover jarang di bicarakan ya kita bisa
2:56bicarakan disini Oke jadi pilihannya antara kehabisan topik atau kebanyakan topik betul
3:03betul betul kebanyakan topik ya giliran ada yang seru banyak banget bingung milihnya giliran nggak
3:08ada ide pusing juga ya susah jadi manusia enakan jadi senjata hari ini hari ini dia itu ya udah
Lihat transkrip lengkap
3:17kita konsep promise ya jadi jadi langsung apa ya ini ya jalanin dulu hasilnya callback ya
3:26siap nah malam ini kita mau bahas mungkin topik yang cukup fundamental ya tentang
3:43konsep-konsep pemograman fungsional di JavaScript karena kan mungkin sebagian dari kita tahu bahwa
3:53eh JavaScript itu OP loh Iya ada benarnya tapi JavaScript juga kayaknya konsen-konsep fungsional
4:01nya banyak loh yang diterapkan apalagi kalau udah main-main react ya konsep komponen pure function
4:08gitu imutability kalau pakai Redux kan harus imutable kan tipe datanya dan lain-lain loh
4:15ini fungsional semua gitu kan tapi ada kelasnya juga gitu jadi ya memang eh apa namanya si
4:23JavaScript ini ya memang dia bisa banyak ini ya bunglon ya bisa menyamar sesuai kebutuhan
4:31Nah mungkin kita akan mulai dari sedikit sejarahnya dulu sejarah si JavaScriptnya Kenapa si JavaScript ini bisa bunglon ya ada tuh jadi beberapa minggu yang lalu saya ketemu sebuah paper judulnya javascript the first 20 years ini
4:48yang bikin yang nulis adalah yang bikin javascript juga Pak Brandon iya bikinnya tujuh hari doang ya
4:56bikin lebih lama daripada bikin javascript nya ya Oh ya bikin javascript nya tujuh hari bikin
5:04javascript nya kejartaian bikin papernya lama ini mungkin biasanya gitu ya Iya ini saya share juga
5:12apa namanya kalau teman-teman mau baca kita nggak bakal baca sampai habis ya kita cuman menunjukkan
5:18beberapa bagian-bagian penting yang berhubungan dengan obrolan kita malam hari ini jadi teman-teman
5:24download disini acm.org nah ini kita Scroll Scroll aja saya udah tandain ini adalah tentang cerita
5:32pembuatan desain dan evolusi JavaScript dari 99 95-2015 terus seperti yang kita tahu JavaScript
5:42itu dimulai dari apa ini ya enggak deh Oh bukan yang ini ini eh mana ya Kok kehilangan saya
5:53kehilangan highlight ya ini aja nih i1 itu di 97 is298 is399 habis itu mulai kehilangan arah
6:05sampai Yes 5 baru mulai ada drama dulu kan Iya 10 tahunan itu kayak terombang ambing ya sengketa
6:16sampai akhirnya kembali jamannya zaman kelamnya javascript kan ya sampai sempat ada yang namanya
6:23yang ada bikin pendingin apa itu upload server like iya flash flash flash action script Nah itu
6:33Jawa Serib kan sebenarnya kan turunannya
6:35iya dan
6:37ya banyak lah dramanya
6:39banyak ya nah seperti yang kita
6:41tahu ya di tahun
6:4389-91
6:45WWW
6:48World Wide Web itu muncul
6:49diperkasai oleh Tim Berners-Lee
6:51di CERN lalu kemudian
6:53nah ini menariknya
6:55di 95 si
6:57Pak Brandon ini
6:58direkrut oleh Netscape
7:01dengan iming-iming
7:03Ayo join ke Netscape
7:05Bisa bikin
7:07Scheme di browser
7:08Scheme itu adalah bahasa pemograman
7:10Funksional
7:11Yang satu
7:14Family, satu keluarga dengan
7:17Lispi
7:18Yang banyak kurung itu
7:20Jadi
7:22Dia diiming-imingi suruh bikin
7:25Bahasa pemograman mirip Scheme
7:27Untuk browser
7:28Join lah dia, wah dia tertarik sekali
7:31Karena memang dia mungkin ngefans ya
7:32sama-sama skim ini atau lebih dari awal dia emang main setnya fungsional ya fungsional betul kandidat
7:39untuk bahasanya ada banyak waktu itu ada Pol ada paytan ada TCL ada visual basic juga karena
7:46sinetgeist juga ada ada apa ya menjalin kerjasama dengan Microsoft juga pada saat itu ya tapi semua
7:53ketika 95 Sun Microsystem bikin kampanye gila-gilaan yang mau nge-publish atau merilis
8:04Java walaupun belum dirilis ya baru apa ya baru teaser gitu sampai akhirnya beberapa
8:14orang di Netscape memutuskan untuk yuk kita ikutin Java aja supaya kita bisa ikut hype gitu
8:23karena lagi ngetrend Iya jadi apa namanya diharapkan si JavaScript ini yang namanya
8:32belum JavaScript ya namanya masih yang lain ya mocha pada saat itu pokoknya bahasanya mirip Java
8:39seperti Java tapi objek-objek bukan kelas base ini beda ya objek-objek itu ya kayak javascript
8:51dulu ya pakai prototipe itu kan objek ya luar juga sama itu OP tapi dia objek base enggak ada
8:58kelas javascript ada kelas itu juga sintetik sugar kan sebenarnya kan ya sekarang dibaliknya
9:04itu di belakangnya sebenarnya di dalamnya function juga objek dan function ya Iya
9:10objek dan function Nah akhirnya dia bikinlah prototipe mocha itu yang tujuh hari itu demonya lumayan berhasil dan membuat apa teman di Netscape itu sangat bergairah gitu semangat gitu ya dan akhirnya walaupun dia tidak berhasil apa
9:32mewujudkan impiannya tapi disimpan dikasih waktu bikin bytecode di compiler in his ten days Sprint
9:43kita bisa bikin apa ya sepuluh hari dia bisa bikin bahasa ya
9:49ya jadi bisa-bisa inilah buat start create create create app terus kemudian bisa jadi
10:05Oh ya, jadi intinya sebenarnya yang mau digarisbawahi dengan apa dari sejarah yang singkat ini adalah
10:19Javascript itu sebenarnya awalnya ditujukan untuk dibuat untuk fungsional
10:27Dan berhubung ada pertemuan antara pragmatisme dan idealisme di tengah-tengahnya
10:36Jadi dua-duanya malah jadinya sekarang ya
10:38Sekaligus buat itu mengambil hati developer yang
10:44Ada developer yang suka OOP
10:47Karena mungkin awalnya belajar dari bahasa yang OOP
10:51Ada yang emang dari awal fungsinya udah seneng, udah puas
10:55ada yang minta objek, pengen objek oriented.
10:59Nah, kayaknya berusaha memuaskan semua orang itu.
11:03Semua pihak gitu ya.
11:04Gampang-gampang susah ya.
11:06Susah-susah gampang.
11:08Susah-susah, lebih banyak susahnya.
11:11Jadi ketika, mungkin ya, orang yang pertama kali meng-hire si Pak Brandon Eh ini bilang,
11:17oh ya, yuk kita idealisme mewujudkan Lispi style programming untuk scripting di browser.
11:25terus begitu apa tapi industri yang java yang di industri kebetulan yang lagi naik daun yang mulai
11:33naik daun itu java akhirnya ya ada apa namanya ya berinilah ya apa berkompromi lah kompromi kompromi
11:46kompromi supaya ya bahasanya bisa dipakai daripada dia bikin dia mewujudkan idealisme terus nggak
11:52makanya kan akhirnya mati jadi mati juga kan itu jadinya karya seni bukan produk bikin buat ekspresi
12:00diri aja makanya javascript dibilang fungsional Iya objek orientasi juga Iya gitu kan semua bisa
12:08masuk kemana Iya begitu juga dengan ria kalau nggak salah dulu sempat ada saya dengar di salah
12:14satu podcast gitu ya react dulu awal-awal kan ada kelas bisnya jadi bikin komponen kelas pertama
12:21belajar lihat tuh kayak gitu pas masih kelas base terus semua pakai bis itu apa komponen
12:27ditemukan komponen ditolong pas banget pas baru belajar nih pas baru mau ngerti pas berubah dong
12:34pas berubah jadi fungsional Dung karena usai belajarnya dadakan enggak apa belum mempelajari
12:41fundamental asli bingung tiba-tiba kopas kopas kode cuma pindahin dari satu tempat ke tempat
12:47ya jelas kalau pakai disk ya nggak ada lah nggak jalan di function pernah-pernah bikin
12:53disama dengan dead gak sih ah ah ah ah ah ah ah ah ah ah ah ah ah ah ah ah ah ah ah ah
13:02itu gede-geleguh sekali ya Nah em ya itu kelebihannya JavaScript dan juga sekaligus
13:10kekurangannya orang jadi bingung kan jadi ada plus-minusnya kok-kok posting kan itu ya
13:16salah ya ya skop hosting pernah kita bahas kita pernah kita bahas dulu setinggung kita belum
13:21posting posting posting pernah-pernah di beberapa episode yang dulu Iya padahal di apa ada kayaknya
13:35ada beberapa yang kontribusi ke react itu sempat bilang saya pernah dengar di satu podcast katanya
13:41Salah satu tujuan kita membuat kelas base seperti itu adalah untuk menjebak orang-orang Java
13:49yang tadinya coding di Java OOP supaya mau icip react habis itu terjebak dia Oh harus ikutin fungsional nih harus pakai Redux terus konsep fungsional dikenalin sedikit lama yang kelasnya hilang
14:04Terus mereka pindah.
14:06Terus mereka pindah ke Angular, oh enggak ya.
14:14Jadi ya salah satu, mungkin salah satu visi-misinya React juga untuk itu ya, untuk mengembangkan fungsional di sisi JavaScript.
14:22Begitulah seperti damar yang gak suka OOP
14:26By the way tadi sempat sebut
14:29Nyebut kata jQuery
14:30Baru rilis loh bulan ini
14:33JQuery 4
14:35Dan backbone juga rilis
14:37Ada angin apa ini
14:38Ada angin
14:41Masa lalu bertiup
14:43Kembali
14:44Itu kan muter kan
14:46Kayak fashion
14:47Tapi gak juga sih ya
14:51kalau saya lihat ya mungkin mereka baca almanac kali ya mereka baca web almanac mulai dari 2021
15:002022 2023 terus mungkin sudah dapat bocoran 2024 kayak gimana kayaknya trend jquery nggak turun-turun
15:09ya udah rilis aja sesuatu yang baru memodernisasi karena masih banyak banget yang pakai
15:15is make sense kalau dirilis yang baru betul apalagi sekarang kan ada apa ya mulai ada pergerakan
15:24mungkin beberapa untuk berwakil akan udah kayak apa ya framework fatigue istilahnya ya lelah ya
15:30mengikuti framework akhirnya banyak yang lari ke Vanilla kan lebih tepatnya semua framework sudah
15:36semua framework yang major ya baik itu react, svelte, view, apalagi?
15:44Angular, segala macam ujung-ujungnya sudah memiliki fitur yang mirip-mirip
15:53oh ya betul
15:55sudah ada react keluar compiler nya contohnya sudah mau keluarin compiler
16:00yang svelte punya compiler
16:03semuanya nanti ujung-ujungnya punya punya pakai signal semuanya pakai signal gitu ya fitur yang
16:10sama semua jadi ya ah sudah lah cek gue nih gua keluarin aja nih drop semua ya bikin lebih baik
16:15bikin performa lebih baik semuanya win kan ada apa ada ya ada beberapa framework juga atau
16:21library yang seperti Alpine, HTMX yang butuh apa ya landing page cuman butuh interaksinya nggak
16:29enak gitu ngapain kita introduce satu framework gitu kan ya betul lah hal-hal seperti jQuery dan
16:34teman-temannya ya hidup jQuery jQuery never die nah jadi sekarang malam ini kita akan coba apa
16:48ya menggali lebih dalam ini serba-serbi fungsional fungsional ini bisa diterapkan di JavaScript atau
16:57pasti bisa karena sudah banyak yang mengalami juga sudah banyak yang menggunakan juga cuman
17:02eh apakah teman-teman tahu semua tahu apa ya fundamental dari fungsional itu apa aja sih Nah
17:10ini yang atau kadang kita kita tahu cara kerjanya kita nggak tahu istilahnya Iya kita enggak tahu
17:16istilahnya lihat Oh maksudnya itu bilang kalau yang setara dengan kalau misalnya kayak kalau
17:24bandingin sama PHP sebenarnya PHP bisa fungsional juga kan bisa fungsional bisa OOP juga semua
17:31namanya hampir semua bahasa bisa Ruby juga walaupun di OOP tapi bisa fungsional Python
17:37juga bisa Java bahkan bisa C++ juga bisa asal bisa nyimpen fungsi di variable bisa bisa fungsional
17:44Tapi kan ada beberapa fitur yang kalau fitur itu dipunyai oleh sebuah bahasa baru bisa disebut sebagai bahasa fungsional.
18:02Mungkin kayak fungsional playboy, kayak jenis musik lah ya.
18:07Ini jazzy tapi bukan jazz kan?
18:10cuman saja ada unsur-unsur saja gitu belum tentu dia jazz itu musik pop tapi kayak ada
18:19apanya yang mirip-mirip aja musik rock dipadukan dengan dangdut jadi rockdut gitu kan udah beda
18:27lagi nih bisa kita bahas nanti next selain javascript apalagi bahasa-bahasa yang fungsional
18:32bisa fungsional Oke kita jadi kita harus tahu dulu apa itu fungsional ya memang kita
18:39Ada yang bisa bahasa lain gak? Kok gak bisa bahasa lain?
18:43Saya bisa bahasa Indonesia.
18:44Bisa PHP. Oh bahasa Indonesia.
18:46Bahasa Indonesia bisa.
18:48Bahasa Batak bisa.
18:49Bahasa Jawa.
18:51Dulu kan ada ya, bahasa pemungkiraman namanya Batak.
18:55Udah tau? Masa sih?
18:56Oh coba cari. Ada.
18:58Itu inside joke orang Indonesia ya?
19:01Kayaknya kalau orang luar Indonesia bingung.
19:05Jangan bilang cuma bisa jalan di Blankon.
19:09loh ini jadi crossing ya
19:12ls-ul os ya ui bener-bener itu ls-ul oles ls-ul os ulih menarik menarik menarik nah fungsi
19:31Programming adalah paradigma ya, OOP paradigma.
19:35Apa lagi ya? Paradigma pemerkeman itu apa?
19:37Apa aja ya? OOP, fungsional.
19:39Event driven? Masuk nggak ya?
19:43Prosedural.
19:45Prosedural.
19:47Mungkin teman-teman yang pertama ngalamin,
19:49terutama yang kuliah ya, prosedural ya.
19:51Pascal,
19:53Si,
19:55Vibi.
19:57Itu kayak imperatif atau apa sih?
19:59hanya fungsi-fungsi aja walaupun dia bisa berjalan di fungsi tapi ya belum bisa disebut fungsional
20:07Kenapa karena ada beberapa hal yang nggak di support ya yang pertama adalah ini pur function
20:17ya pure pure function pure function itu artinya apa artinya adalah eh mana dia kok ada tulisannya
20:25Nah ini, akan selalu mengembalikan nilai yang sama kalau argumentnya sama.
20:30Jadi inputnya selalu itu, outputnya selalu pasti sama, nggak pernah berubah.
20:38Ini F, kalau bisa tahu rumus matematika, F, X sama dengan X tambah 1.
20:46Jadi kalau X-nya 1, hasilnya harus 2.
20:51harus pasti dua dan enggak mempengaruhi hal lain di luar itu saya itu kedua apa poin kedua
20:59ini enggak termengaruhi oleh apapun dari luar dan enggak mempengaruhi apapun keluar
21:06sijil banyak-banyak lagi-lagi banyak bahasa baru ya ide-idenya menarik ya magelang ada
21:13beran itu katanya melalang kutilang hilang terbiasa hebat-hebat dan ya satu itu ya ketika
21:31kita masukkan parameter atau argumennya dengan nilai yang sama dia akan konsisten menghasilkan
21:39keluaran yang sama juga
21:401 ditambah 1 harus selalu 2
21:42terlihat
21:45terlalu simple ya, tapi
21:46kadang-kadang ada
21:48satu fungsi yang parameternya
21:512, tapi ternyata di dalamnya dia
21:53menggunakan global variable
21:54yang menyebabkan
21:56atau variable jadi scope di atasnya
21:58scope di atasnya
22:00atau apapun
22:01yang menyebabkan 1 ditambah 1 tidak lagi menjadi 2
22:03itu sudah tidak pure lagi
22:06bukan gak boleh, tapi bukan pure function
22:08jadinya
22:08atau kalau misalnya konteksnya web nih entah fetching data dari luar
22:14kita manggil data dari API itu udah jelas gak pure
22:18karena kan datanya pasti berubah
22:21belum tentu servernya nyala, belum tentu responnya oke
22:24terus atau kita berinteraksi sama DOM
22:27atau sama apapun lah UI yang di layar
22:31atau sama service worker atau web worker atau apapun lah
22:34pokoknya itu jelas gak pure karena pastikan bisa berubah-ubah ya
22:38Iya salah satu kekurangannya JavaScript kan scope scoping itu ya Jadi kalau misalnya misalnya
22:45variabel itu didefinisikan sebelum function itu secara variabel bisa diakses dari dalam
22:53function tanpa perlu menjadi parameter itu ya itu bahaya ya yang menyebabkan
23:00bagaimana kita memanfaatkan kekurangan itu menjadi kelebihan itu membantu itu ngebantu semua artikel jadi bijak ya minum teh tuh jadi dewasa
23:24nah apa tadi itu
23:26kita perlu nih kita perlu
23:29apa manipulasi atau pakai atau bikin kalkulasi pakai
23:33variable dari scope atasnya luarnya entah itu global atau apa
23:38kan terbantu banget
23:39banget nah sekalinya itu dipindahin dipindahin digeser naik ke atas ke bawah keluar ke dalam
23:46ya udah bubar semua jadi ada risikonya gara-gara JavaScript si PHP jadi ikut-ikutan loh untuk yang
23:54global variable ini masa Iya jadi si PHP itu kan kita bisa pakai variable dari luar scope
24:01si function dengan pakai keyword use jadi function ABCD terus ada parameter terus use variable dari
24:10luar nanti variable yang di dalam use itu keyword use itu bisa mengakses variable dari luar function
24:16javascript ini oke berhasil kalau sampai apa saya javascript pakai loh ya Eka nge-freeze
24:30soalnya untung ya untung posenya lagi bagus ya oke sambil menunggu Eka disini tadi kita
24:41sudah meng-highlight same result ya.
24:43Tapi ada satu kata kunci lagi yang
24:45jangan sampai kita lupakan,
24:47yaitu adalah return.
24:48For function itu harus ada return kan ya?
24:52Nggak bisa void ya?
24:53Nggak bisa void kan?
24:55Dan,
24:56secara JavaScript, secara bahasa,
24:59sebenarnya dia sudah pasti ada return.
25:04Kalau nggak percaya, coba.
25:06Function print dalamnya console.log.
25:08Pasti dia akan return dua kali kan?
25:10console.log nya sendiri ada return nya.
25:12Return kosong, nul, undefined atau apa gitu.
25:19Nah jadi kalau teman-teman mau bikin pure function, ya function itu biasakanlah ada return nya.
25:25Kalau mau nge-print ya di luar function nya.
25:28Jadi jangan, boleh aja sih kalau buat di-bugging sih gak masalah ya.
25:33Return undefined betul Maulana.
25:37Dia selalu return undefined kalau kita tidak ada return value-nya.
25:40Kita tidak mendefine return.
25:42Istilahnya apa? Implicit return ya?
25:44Ada explicit, ada implicit.
25:46Undefined itu tipe datanya apa ya?
25:49Undefined?
25:50Undefined.
25:52Iya undefined.
25:53Sama kayak null.
25:53Null juga tipe datanya null.
25:56Bedanya null sama none?
25:58Not none.
25:59Beda lagi ya.
26:00Iya beda lagi.
26:03Satu tadi harus ada return-nya.
26:05kemudian nilainya tetap sama yang kedua adalah set effect nah dia bisa menjelaskan set effect
26:11nah Eka tadi mau jelasin tentang apa tadi udah kelewati udah udah kok HP udah oke set effect
26:20set effect ini apa ya menjelaskan gimana itu tadi hal-hal resamping apapun yang di luar si
26:27itu terjemahan yang masih efek samping itu sendiri kayak misalnya kalau contoh konteksi web nih apa
26:38JavaScript di browser domain iplikasi kita memanipulasi dom atau misalnya mengubah apa
26:46ya yang ubah-ubah nge-print konsolok save ke database banyak ya kita ngirim pesan ke
26:54service worker bikin request ya kan itu mempengaruhi hal-hal di luar fungsin itu sendiri
27:01nah apa terus kenapa nah kenapanya jadi misalnya kita bikin kita mengupdate data
27:08row-nya tadinya 3 jumlahnya jadi 4 row kan kalau abis itu kita ngejalanin fungsin yang sama itu lagi
27:16hasilnya otomatis beda kan karena tadi 3 sekarang jadi 4 terus kalau dijalani lagi jadi 5
27:21Nah itu tuh udah masuk side effect semua kalau konteksnya web.
27:26Iya.
27:27Tapi kalau kita konteksnya web lagi,
27:31kalau misalkan kita bikin aplikasi yang harus manipulasi DOM
27:35atau simpan kereta base,
27:37itu udah pasti ada fungsi-fungsi yang ada side effect-nya.
27:41Nggak mungkin enggak.
27:42Jadi sebenarnya nggak salah.
27:44Nggak salah.
27:45Bukan dihindarin sama sekali.
27:48Cuma maksudnya kalau kita punya kan,
27:51kita kadang mecah jadi beberapa function nih Nah terus kalau misalnya itu impure function semua itu ya lumayan ribet ya Kenapa karena urutan 123 kalau dituker ini bisa bisa berubah hasilnya kan kalau impure
28:06yang semua jadi biasanya sih yang paling luar misalnya impure function tapi kayak helper atau
28:13utility function nya itu biasanya pure function semua karena itu larinya ke testing juga kan
28:19Betul
28:21Yang penting kita sadar bahwa ini pure sama indoor
28:24Kayak MVC
28:26MVC
28:27Model view controller
28:29Gimana tuh
28:31Ya
28:32Contohnya controller ya
28:35Yang memanggil
28:37Khusus yang untuk model dan view nya
28:40Terus model nya hanya khusus datanya
28:42View nya khusus UI nya
28:43Maybe
28:45Kalau mau dibikin pure function semua
28:48modelnya yang harus itu kan tetap yang bertetap set efek kan Iya sih tetap sama
28:57pionya saya mungkin yang paling make sense untuk pure functional adalah view-nya
29:03seperti react komponen ada yang Oh ya ada yang komponen komponen komponen komponen pinter masih
29:18Masih itu nggak sih konsepnya sekarang?
29:19Masih relevan nggak sih?
29:20Masih.
29:21Masih ya?
29:22Iya.
29:23Karena lebih enak pakai dumb component.
29:26Iya, semuanya dumb aja ya.
29:28Iya.
29:30Sesuai props.
29:33Nah, ini beberapa contoh yang tidak pure ya.
29:35Reading fast, random number generation.
29:38Nggak mungkin kan kita tes kan?
29:40Random number gimana ngetesnya kan?
29:43Bingung.
29:44terus kalau counter itu global variable salah satunya dan kita mengubah global variable ya
29:53salah satunya contoh dari mengeruhi hal lain di luar fungsinya itu sendiri ya benefitnya udah jelas
30:01ya apa kode kita jadi lebih bisa kita kreasi unit testingnya ya udah langsung kita expect expect
30:09kita bikin asuransi kalau satu ditambah satu ya hasilnya harus dua nggak bisa tiga nggak bisa nol
30:15lima kurang 7 hasilnya min 2 nggak boleh lainnya tapi kalau misalnya udah implementasi ini penerapan
30:23kita KTM saldo kita tinggal 10.000 kita tarik satuannya 50.000 ya nggak bisa kan nggak keluar
30:31saldo kita tetap 10.000 nggak bisa 10.000 kurang lebih 50.000 kan harusnya min minus 40.000 ya
30:38Coba kalau udah di penerapan, ya itu contoh yang impure function kan, karena duitnya nggak bisa keluar, ya udah tetap segitu.
30:47Tapi kalau pure function ya nggak ada, itu kalkulasi aja.
30:53Kemudian immutability.
30:54Nah, immutability ini juga...
31:01Apa ya? Jelasin dulu apa beda immutability dan mutability.
31:06Immutability kalau pakai cons.
31:08sederhananya tidak bisa berubah ini adalah dibuat kalau imutable itu biasa dia imut-imut
31:20imutable itu ya kalau misalkan kita udah asin variabel variabel yang tetap seperti itu konses
31:30konstan, nah gimana
31:32sebuah bahasa
31:34pemograman fungsional
31:36bisa hidup dengan immutability
31:38adalah dengan
31:40memanfaatkan yang tadi
31:41return value tadi, misalkan
31:44kalau kita pakai
31:46javascript nih
31:48array push
31:50123.push
31:534
31:53itu dia akan
31:56mengubah
31:58array awal yang 123
32:00menjadi 1234
32:01kalau kita pakai
32:06array.concate
32:08dia tidak akan mengubah 123 nya
32:12tapi dia akan melahirkan
32:13sebuah array baru
32:16sebuah array baru yang 1234
32:18itu perbedaan antara
32:20mutable sama immutable
32:21untuk struktur data
32:23jadi lebih
32:26apa namanya tujuannya
32:27supaya
32:28variable itu
32:31value dari variable itu
32:33tidak berubah sepanjang eksekusi jadi lebih terprediksi hasilnya Iya kembali lagi fungsional itu secara visi adalah itu prediksi bisa diprediksi dengan kita asumsi bahwa ini begini ya udah sampai ke bawah ya begitu gitu jadi udah bisa lebih kita prediksi secara ininya ya
32:55karena kalau lagi contohnya contohnya begini salah satu kembali lagi keuntungan dan kerugian
33:04menggunakan JavaScript contohnya di window objek kita bisa menaruh variabel di window objek kalau
33:12di browser ya di browser window dot something isinya ABCD sama dengan ber-lanjut ya terus
33:21kita apa namanya ini setelahnya bar itu contohnya isinya bar tetapi kita mengharapkan itu selalu
33:32bar namun ada tepat ada function lain Oh ya bisa juga jauh mati tetapi yang terparti terparti itu
33:42ternyata menggunakan variabel name yang sama di Windows objek buat darah hanya sendiri untuk
33:49susahnya dia terus jadi bak loh kok variable gua ada yang merobah siapa ini mau sampai susah banget
33:58itu di dibakar ngapa yang berubah gitu susah banget gitu susah banget ditemui cari kemana
34:06karena yang tepat itu bisa jadi kodenya di minify ya ya sudah berubah aja nah makanya butuhnya
34:14ya imutability itulah pentingnya ya Nah ini ada pertanyaan dari Maulana menarik imutability itu
34:24ada hubungannya sama pass by reference nggak pass by reference sama pass by value ya ada dua ya
34:32ada dua ya iya beda sih ya imutability artinya variable-nya nggak bisa dirubah jadi konstan
34:38kalau di PHP itu namanya konstan atau definition define jadi kalau sudah kalau di PHP kan ada
34:44define tuh kalau sudah di-define pada konstannya sampai sepanjang eksekusi variable itu nggak akan
34:53bisa dirobah itu namanya mutable nah kalau di JavaScript di fungsi programming ya menggunakan
35:04namanya flavor imitable semuanya harus di dan semuanya sih ya tetapi pola pikirnya semuanya
35:12ibu temen ada beberapa kali kejadian yang ini sih apa namanya menyebabkan baksal satunya ya
35:22misalkan tadi ya saya sebutkan ya misalkan kita punya apa ya rey ya konsol misalkan ARR sama
35:33dengan 123 gitu kan Terus tadi rey.us empat gitu nah beberapa orang bisa menuliskan seperti ini
35:46hasilnya berapa bisa ya karena bisa itu pengamanan kan jadi biar enggak salah ya
35:58ya let let something else aja let R2 let R2 ya ampun ini susahnya funksional ya R2
36:15dot push Oh ya R2 R2 ini kan dua sama dengan push 4 hasilnya berapa
36:25R2 karena dot push ini bukan mereturn hasilnya tapi mereturn jumlah length dari langsung
36:39langsung menimpa ya Iya dia array2 nya udah 1234 kary2 jadi kalau misalkan kita tambahin lagi push
36:485 dia akan jadi nggak bisa lagi ya kok nggak bisa karena R2 itu sudah jadi integer Oh iya udah
36:57kan enggak strykly type ya aja fast script ini emang
37:01diri kita tidak akhir tapi enak dipakainya
37:04berarti ini ya tadi ya ini ya R2 terus kita push lagi ya
37:09nah dia akan jadi 5 atau biar lebih gamblang lagi kita tambahin 15 oh nggak bisa lagi
37:15kita ulang lagi
37:18Hai atres kita tambahin 15 dia isinya 5 karena lengthnya dia menghitung lengthnya jadi reddit
37:24push akan mengembalikan jumlah itemnya lebih detail adalah lainnya array baru bukan area
37:31baru dia melakukan dua hal ya seperti ngerjain dua hal waktu kita jalanin metode push-metode
37:38push itu nge-push nambahin value itu ke dalam variabel rey itu tapi yang di return adalah
37:45length dari itu nah kalau mau kita seperti ini kita bisa melakukan dengan kongket kongket itu
37:54akan berita nge-rap yang baru hasil-hasil gabungannya ya value belia 1234 15 array
38:03duanya masih aman tidak terjadi apa-apa kalau kita mau balik ya Oke itu baru kan kayak nulis
38:09sektor baru kalau gini kan bisa aja kan jadi rei2 nya kita override menjadi rei yang baru
38:17itu boleh kan aman boleh tetapi kalau kalau di imutable itu bisa ini kan bukan imutable ini
38:25mutable kalau ini udah usah coba tadi yang balik ke konsol kalau imutable itu kan caranya kita
38:32harus ngeklon hilang hilang jadi contohnya cons-cons pakai cons-cons R1 R aja 123 ini ya Nah
38:47kalau mau biasa dengan cons R2 itu pakai dot concat atau spread operator biasanya sih kalau
39:01yang barunya yang kerennya sekarang spread dia roma 15 ya bisa di atas artiga di artiga tadi
39:16error itu juga tetap ini ya padahal ini sintaks error ya tetap dieksekusi ya Iya oke jadi di ini
39:29mutable artiganya selalu kepikiran jis kita melihat kodenya pasti isinya tidak ada nyampur-nyampur
39:38jadi kita tetap punya variabel ar dan variabel arti 2 atau arti dan bisa diisi dimana aja ya
39:46di depan di belakang ya Oh iya bener ya spread operator ya lupa ya dengan spread operator
39:55referensial transparansi function es nah ini kok apa namanya prinsip yang kedua yang tadi kan
40:03pure function membutuhkan pertama kedua imutability yang ketiga berarti yang ketiga adalah first class
40:09entities function at setara dengan variabel kalau di bahasa fungsional dan juga JavaScript
40:16ya maksudnya setara dengan primitive lainnya apa setara nilai primitive atau objek atau apalah
40:24jadi kalau misalnya string bisa di-assign ke variable cons r sama dengan cons name sama dengan ek
40:33cons r sama dengan tadi apa 123 cons my function sama dengan nah isinya function bisa di-assign
40:41variable bisa dikirimkan ke dalam function lain sebagai argumen bisa apa ya ya semua bisa lah
40:49bisa di return bisa sebagai return value bisa dimasukin ke function lain bisa dikeluarin dari
40:56bisa di return oleh fungsi lain makanya sebutannya higher order function Iya ini ini istilah kerennya
41:05higher order function. Jadi
41:07fungsi itu bisa
41:09jadi kayak fungsi anonimus
41:11yang kita assign
41:13ke value, eh sorry ke variable
41:15kemudian bisa
41:17jadi parameter atau argument
41:19di satu fungsi dan bisa
41:21dan sebuah fungsi bisa return fungsi yang lain.
41:25Kalau yang
41:25anonimus itu pasti semua orang
41:27yang pernah loading web pasti pernah pakai
41:29nggak mungkin nggak pernah pakai soalnya di
41:31event itu kan
41:34isinya kan akan fungsi dengan on click misalnya klik argumennya kan itu function atau on-on
41:42Scroll atau on apalah pokoknya event elemen web apapun kan itu dalamnya argumennya function
41:48Iya itu udah sering kita pakai tapi kita nggak tahu istilahnya biasanya saya dulu begitu atau kalau interview kerja tiba ditanyain apa maksudnya javascript adalah first class apa tadi namanya first class citizen
42:03first class citizen
42:05first class function
42:07first class entities
42:11first class apa tadi?
42:12entity
42:13first class citizen
42:15iya ada istilahnya first class citizen juga
42:18kalau untuk bahasa fungsional ya
42:20yang cukup sering juga ini kan
42:22set timeout kan atau set interval
42:24set timeout itu kan ada
42:26dua parameter ya
42:28handler ini adalah fungsi
42:30dan kemudian
42:33timeoutnya berapa lama
42:34fungsi disini kan bukan
42:36misalkan kita punya fungsi apa ya
42:38ponsel lock lah
42:42oh pakai itu ya
42:43ponsel apa nih
42:44print sama dengan
42:47ini ya
42:48ponsel lock
42:50Oh pernya pakai ini dong teks asyik gitu kemudian kita setel ya print-print misalkan 21 detik 1000
43:09perhatikan ya Oh iya nggak bisa kan harus gini kan bisa ya itu di pop-upnya ada tulisannya iya sih
43:31sebagai objek ya gini objek ini titik-titik apa spread spread operator are coba dulu ya
43:45kalau bisa di-loop dia bakal ngeluk bukan ya setelah satu detik dia akan nge-print itu 850
44:03itu adalah ID ID nya ya dia merita ID nya jadi biasanya kita bisa saya di sini ya ID kita kan
44:12Iya kan?
44:13Nah, sebenarnya yang mau saya tunjukkan adalah di sini.
44:16Di sini ini, print ini adalah seolah-olah sebuah variable kan?
44:20Kalau misalkan kita...
44:21Variable?
44:22Iya, iya.
44:23Variable tapi isinya function.
44:25Betul.
44:26Ini kan fungsi timeout ini adalah
44:28kita akan mengeksekusi fungsi yang dikirimkan di sini
44:32setelah satu detik kemudian.
44:35Iya kan?
44:35Apa yang terjadi kalau di sini saya langsung halo?
44:42ada bisa tebak ya langsung print yang lebih langsung berlalu langsung jalan kenapa ini
44:49jalan eksekusi sementara ini enggak dieksekusi ini disimpan dulu sampai satu detik kemudian
44:54berhenti cuma pengen fungsinya kayak gimana yang mengeksekusi adalah dia kayak siapa engine nya
45:00ya si event loop nya itu betul betul gitu lah kira-kira jadi eh apa namanya ini sebenarnya
45:10tapi tidak langsung dieksekusi dan higher order function ini atau first class entities ini tidak
45:18semua bahasa punya makanya itu yang membedakan antara bahasa fungsional dan tidak makanya
45:24JavaScript itu fungsional beneran kayak misalnya tadi kalau musik lagu atau musik
45:30istilahnya adalah callback betul sekali
45:39dan gara-gara nonton ini jadi sering pakai immediate immediate infor function ya function
45:55expression itu juga salah satu salah satu identitas dari functional programming juga
46:01karena tidak semua kalau nggak fungsional nggak bisa jangan apa namanya ini hal ini
46:07juga bisa membuat pakai order ini bisa menjadi membuat menjadi imperatif
46:13beneran aktif ya kayaknya deklaratif deklaratif ya
46:19step by step bukan sih Yes imperatif ya bisa jadi imperatif approach jadi kayak
46:30masing perintah itu kan ada fungsinya Nah itu dipas di masukin satu persatu Enggak kalau imperatif justru bukan fungsional kan
46:42Deklaratif yang fungsional.
46:45Coba baca dulu.
46:46Yang step by step itu yang mana sih? Yang maksudnya apa?
46:50Step by step itu, step by step itu deklaratif kan?
46:56Lakukan ini, setelah itu lakukan ini.
47:02radius dan lain-lain Oke kita mungkin cari bahasan yang lain dulu ya Nah bentar sih
47:12higher order ini itu sebenarnya kita pasti pernah lihat kalau pakai react-react komponen
47:18kan sebenarnya sekarang react itu fungsional komponen kan export cons function bla bla bla
47:24eh cons atau function pokoknya satu komponen itu kan sebenarnya itu function kan function yang bisa
47:29sender UI Nah kita kan bisa tuh apa masukin suatu komponen sebagai props sebagai argumen ke di
47:38komponen atau di bagian kode lainnya Nah jadi kita tuh kalau pernah loading direct pasti pernah
47:44ngelihat implementasi dari higher order function kalau alat sedikit kalau yang untuk yang membuat
47:55dengan menggunakan fungsi programing ini itu deklaratif approach jadi kalau misalnya kita
47:59mau sorting array contohnya kan array filter array reduce segala macam kita tinggal memanggil
48:05function-function itu kita tinggal mapping bahkan bisa di chaining kan bisa di chaining langsung
48:11kalau sedangkan kalau kita pakai imperatif kan dia pakai for loopnya kita sendiri kita kita
48:16Oh gitu kita bikin for dalam for
48:18Gimana caranya membandingkan
48:20Misalnya sorting
48:22Lebih besar atau lebih kecil
48:24Di return gitu ya
48:25Bisa jadi gini ya contoh ada ya
48:27Kita mau bikin
48:29Apa namanya
48:33Ilang
48:33Lanjut lanjut
48:35Contoh kasusnya gini
48:38Ada array of number
48:41Dan kita mau menjumlahkan
48:46angka yang genap saja
48:49oke
48:51jadi misalnya kita punya array
48:541, 2, 3, 4 sampai 10
48:56dan kita mau menjumlakan angka yang genap saja
48:58kalau imperatif kita bikin
49:00for
49:01for loopnya 1 kali
49:04apa 2 kali? 1 kali tapi ada
49:06conditional di dalam
49:07sedangkan
49:10kalau pakai declarative approach
49:12kita bisa pakai
49:13function yang namanya reduce
49:17tetapi di dalam reduce kita panggil
49:19filter event odd atau
49:21event number only
49:22jadi event number ini
49:25event number ini
49:28akan meng-callback
49:30isi array yang genap
49:33saja dan saat di reduce
49:35atau sum
49:37itu
49:38akan mereduce
49:41array menjadi integer
49:43penjumlahannya saja
49:45jadi lebih indah
49:47kalau pakai deklaratif karena hanya
49:48manggil dua fungsi
49:49for dan if
49:51itu contohnya
49:54tapi kan ifnya juga kalau diimperatif
49:56bisa ditaruh di fungsi juga kan
49:58bisa
50:00bisa
50:03tapi jadi fungsional kan
50:05kita coba aja
50:08gimana coba
50:09kita bikin yang operatif 2 pada kreatif dulu bikin imperatif dulu berarti ya ya
50:20belum di-share Oh ya belum di-share Sorry
50:24ini ya Coba isi 1-10
50:32males oke
50:39Ray 1-10 23 ada cara cepet enggak empat belum ada rezeki ada nggak sih ada 9 10 oke ada punya
50:55nipetnya cuma enggak ini ya udah Ray Oke terus kalau for imperatif for lagi sama dengan nol
51:07lebih kecil tambah 10 lang lang lang Ki sama dengan plus satu kan i plus plus ya sama lah ya ini pakai shift atau
51:24enggak Oh pakai shift terus disini if ya if if
51:31ke-3 di mod modul 1 2 0
51:45mungkin bikin variabel 12 diatasnya let apa gitu
51:54hasil-hasil sama dengan ini langsung aja hasilnya nol di sama-sama ya Iya mau langsung di sama
52:07nah ini ya 0 plus air 0 plus sama dengan Oh ya riset sama dengan plus sama dengan plus sama
52:21ya gitu ya Iya betul hasilnya error token anek anek tetapkan pun terang apa nih tak
52:41koma-koma ah ya 30 ini ini imperatif sebentar kalau saya ifnya mau saya
52:56fungsi misalkan function apa nih cek event event number berarti ini kan return oh ya return 6
53:19modul 2 return 6 modul 2 sama dengan 0
53:27true or false kan?
53:29iya
53:31gini ya
53:33dan sekarang for loop nya
53:35gimana tuh
53:37if
53:39iya lah
53:41iya lah
53:43iya
53:45if nya mau dipindahin ke sini
53:47event dalam kurha ad-6 nya ar-ar berkepi ya udah sama ya Iya cara lagi
54:00ayo loh ini susahnya enggak pake editor ya kurang satu kurang kurang kurang tutup kurung
54:12yang habis event kok 60 karena riset karena tambahin ya ya ya ya ya ya ya ya ya ya ya ya
54:2260 ya riset sama dengan nol dulu kalau ini saya mau hilangin pindahin ke function nggak bisa ya
54:27nggak bisa ini imperatif nggak bisa soalnya itu kan ada efek bisa kalau mau dibikin itu jadi
54:41bikin satu lagi satu lagi function lagi cek event no no no some awesome eh function ya kalau sama
54:50sefornya masuk buat yang ini kan buat yang ini sam kan bukan buat yang if kan iya oke oke oke
54:58anyway Coba kita yang cara deklaratif ya ini kita udah punya function event Iya sekarang kita mau
55:07yang function function sum ya bener-bener bener-bener bener-bener
55:30Arraynya belum lebih fine kan?
55:32Bukan array kan number
55:34Bukan
55:36Ini array yang lain
55:38Ini sum list
55:42Array boleh apa
55:44Array aja array
55:46Tulis aja
55:48Terus di loop
55:50Loop for
55:54Kayak tadi
55:57i lebih kecil dari array.length
55:59i plus plus
56:02i plus plus
56:03oke
56:03di dalamnya nanti
56:07di dalam function itu ada let
56:08let hasil atau let apalah
56:11let r
56:12let result juga boleh
56:140
56:15sama aja kayak tadi ya
56:17i plus plus sama dengan
56:20array
56:21i
56:23oke ini tutup
56:26udah udah kita punya yang tadi yang tadi yang event itu salah itu kecuma is event yang bener
56:38itu adalah event yang returnnya array jadi function sekarang bikin function is event
56:47arey terus yang ini adalah buat let result sama dengan arey kosong ya terus
57:07for kembali lagi for nya sama let i sama dengan nol berulang lagi ya
57:17oh iya lupa tuh return function nya nanti betul tutup oh iya belum dibalikin resultnya
57:33if if
57:35eh
57:37array
57:39oh iya
57:42array
57:42modus
57:440
57:47terus
57:49result.push
57:52push
57:55array
57:55tutup
58:00tutup
58:02itu sama tutup for return result return result
58:13ini
58:17Oke nah perbaiki dulu perbaiki dulu yang sam
58:24bisa bisa bisa jadi ini tinggal Sam manggilnya Sam
58:38itu buka sampai 10 daar eh samsori itu apa tadi nama fungsinya is event sam is event
58:49sam is event is event event art udah selesai Oh iya hari ini satu-satu bener-bener sam is event
59:04ini ya Iya tapi for loopnya ada dua ya jadinya ya Yes ya karena dua hal yang dikerjain kan
59:17menjumlahkan sama ngecek apa ngecek yang event yang tapi yang begini hasil dari
59:26dan hasil dari dari is event itu pure function apapun dimasukin pasti hasil is event enggak
59:35ada side effect kalau yang tadi bisa diunitas kalau tadi kan belum pernah ada result yang paling
59:42atas kan makanya kan pas udah 2x 60 iya masih bisa 60 itu side effect jadi kita sudah membahas
59:51nah ini ada nih dari yoga imperatif Bagaimana caranya kalau deklaratif apa yang ingin dicapai
59:59imperatif itu how deklaratif itu what what to do
1:00:08tapi kalau pakai apa reduce sama batik kalau mau di langsung ARR dot filter
1:00:22langsung ya entah itu filter itu
1:00:296 ya item mod2 item return return item mod2 harus return ya harus ada item mod2 item item dulu oh iya
1:00:55Oh iya item modul 2 hitam 2 sama dengan 0 gitu ya koma ya tutup tutup tutup tutup korong
1:01:06dot-dot reduce ya hey red push-push
1:01:16terus eh parameter pertama itu yang parameter pertama itu yang ininya kan
1:01:27yang inisiatornya ya inisiatornya 0 akumulaternya ya ini setornya 0, hitam hitam koma ACC
1:01:39bener enggak enggak lupa Ayo lo enggak lulus tes interview
1:01:48kan enggak hafal javascript kan ada kopilot Oh iya akumulatornya diawal aku letak di awal makanya
1:02:03makanya Mas bisa bikin aku sih bingung kan aku minta diawal itu sudah bener ya Iya tapi ACC ya
1:02:10ya udah bener item item 0 ya itu ini saya lu ya ini saya betul-betul ya ya ya ya terus udah
1:02:24acc plus item salah-salah gini bukan bukan salah nolnya itu di belakang fungsi luar ya
1:02:40luar abis luar iya itu fungsinya itu menerima akumulator sama item koma nol yes that's it
1:02:48bisa disingkat lagi sih Arda filter terus dalamnya is-is event bisa ya
1:03:04usah ya bener Yes Yes ayo is event ya is-is event nggak usah nah udah langsung terus reduksi
1:03:17sama reduksi kopas aja dari yang ada-ada sam kan nggak bisa beda-beda butuh argumen kopasnya di
1:03:27Oke siap 55 karena aranya aranya side effect ya ya ya ya kok beda sih Oh iya kok beda coba
1:03:42airnya apa isinya sekarang 10 masih iya nggak salah isi eventnya salah mana isi eventnya
1:03:51pakai coba lagi di dalamnya coba pakai ini pakai areo bukan isi event-event doang event doang
1:04:00enggak itu 30 Oh iya betul event ini kan yang ini kan tuh yang langsung return ini kalau ini
1:04:10dia pakai for loop ya ya pakai for loop harus yang truti yang buluian ya ya cuma gitu lah
1:04:18kayak bentuknya gitu ya kira-kira berarti pusing kan Eh cuma kalau udah kayak gini
1:04:26pasti jadi inget kalau besok-besok ditanya pasti kalau misalnya kita ngafalin deh Vinesi
1:04:31Iya kecuali yang kecuali ngafalin nya emang baru semalam pas lagi mau interview Iya pasti
1:04:38berapa hari pasti hilang lah tapi kalau pernah ketik gini kemungkinan nempel lebih kuat ya ya
1:04:45Oke
1:04:46Terus kita bahas apa lagi nih
1:04:48Sudah bahas
1:04:50Ada
1:04:51Kita lihat sebentar
1:04:54Ramda.js lucu
1:04:56Oh iya sebelum ke Ramda
1:04:58Oh iya Ramda.js dulu deh
1:05:00Ada yang pakai Ramda.js disini
1:05:03Ya ini fungsi library
1:05:08Ada lagi kan yang lain kan Ada beberapa ya ada Underscore Oh bukan bukan ada yang lain Bukan bukan ada satu lagi namanya apa ya
1:05:23Yang sering dipake di react juga kalo gak salah
1:05:27Imutable
1:05:31Imutable JS?
1:05:33Ah iya, eh Imutable JS itu bukan?
1:05:37Iya bener Imutable JS
1:05:39bener-bener ini ngasih nama rancu gitu nama kayak konsep Oh iya betul Iya
1:05:49belum pernah nyobain pakai belum ya ini sama ya konsepnya ya cuman ramda kayaknya lebih lebih
1:06:02baru ya sih modern enggak coba dokumen tesnya dia jauh lebih banyak fungsinya Iya lebih
1:06:09agresif dia Oh banyak helpernya ya Iya kayak underscore jadinya Oh yang ada pipe juga ya
1:06:18yang bakal keluar lele lele lele lele lele lele lele lele lele lele lele lele lele lele lele lele lele
1:06:34Hai Pak itu yang kemarin kita bahas yang bakal ada di javascript jadi habis dari sini return
1:06:41yang akan masuk ke sini Oh yang bacanya dari kanan kiri itu Iya ini kan kita mau bikin tiga
1:06:49pangkat 4 tambah satu tiga mengerjakan tiga hal jadi kurangin ya tiga pangkat 4 Yes itulah pipe
1:06:59itu pipe terus apa lagi ya eh kurih kurih kurih kariing kariing fungsi namanya karyak usil lagi
1:07:10di eksekusi lagi ini ya IV tapi next level ya gif next level karya itu enggak aremers bersadar
1:07:23ada ya di-match all mercy play mercy play kek bela yang merging karena JavaScript
1:07:33objek merging itu kalau udah nested properties pusing juga ya sus Iya ih keren juga ini ya
1:07:39masih gua baru pada pernah dengar doang tapi belum pernah pakai ini pakai ini trishek kebo
1:07:46kalau tersebut hajarlah Project selanjutnya harus pakai ini ramda3 shaking ya
1:07:58profit from the
1:08:08most bandel like webpack and rollup over 3shaking as way to to to drop unused ramda code and reduce bundle size
1:08:17iya bisa
1:08:18itu di hasil kedua
1:08:20hasil kedua
1:08:21di dalam
1:08:24ada penjelasannya
1:08:26coba cari 3shaking
1:08:283shaking ini apa sih
1:08:31buat ngilangin yang gak dipake ya
1:08:33iya kan itu banyak banget tuh metodenya
1:08:36jadi maksudnya jangan khawatir
1:08:37kalau kita cuma pakai satu yang dikompel
1:08:40maksudnya yang masuk
1:08:41yang di shipping production code nya
1:08:44cuma satu yang kita pakai itu
1:08:46itu kan halangan biasanya
1:08:47kalau pakai utility library
1:08:50kayak gini kan halangannya takutnya
1:08:52tiba-tiba besar banget
1:08:53hasil build nya gara-gara
1:08:56masuk semua, nah kalau ada
1:08:57tree shaking yaudah gak usah
1:08:59gak usah khawatir
1:09:01oke
1:09:04menarik
1:09:05bisa jadi akan nanti saya ini untuk kita jadi males ya lagi apa yang kita bikin lagi
1:09:22ya dry nah ini juga sama kan apa eh typescript typescript juga bisa menggunakan konsep-konsep
1:09:37fungsional tapi dia bukan bahasa fungsional kan maksudnya gimana tuh konsep-konsepnya aja
1:09:45ada ada objeknya juga ada kelasnya juga juga iya sih bahasa apa lagi ya yang dikompilasi JavaScript
1:10:03Rescript itu fungsional
1:10:07Rush
1:10:09Rush bukan
1:10:11Elixir
1:10:13fungsional
1:10:15ngomongin elixir
1:10:17saya punya nih
1:10:192015 saya pernah bikin blog tentang fiturnya sama ya first class function higher order function
1:10:26close udah nggak ada gitu sampai bukannya dari apa kue-kue betul kenapa Kok hilang Iya makna
1:10:35masih ada dan jelek ya yang dilihat masanya election election dos.com nya enggak diperpanjang
1:10:41udah nggak di piara dilanjut-lanjut sama siapa sama gue udah nggak dilanjut Oh udah gua matiin
1:10:492015 udah enggak enggak ada bandwidth lagi buat bikin-bikin askel nah ini nih first class
1:10:59function yang tadi ya function bisa dimasukin ke fungsi yang lain minimalisnya biasanya jaga
1:11:05apa maksudnya dipisahin lain break doang kaget nggak ada apa minim tutup kurung optional ya
1:11:13higher order function beda lagi ternyata jadi prinsipnya sama tapi ya maksudnya itu kan allow
1:11:21you to pass function as another function argument jadi bisa ngejalanin fungsi di dalam fungsi ya
1:11:28cuma bentuknya doang map ya tadi filter reduce juga itu adalah higher order contoh higher order
1:11:34closure itu yang tadi di javascript juga ada konsep closure kan
1:11:39bisa mengakses variable dari scope child scope ya
1:11:45value dari child scope dari atasnya
1:11:49dari luarnya sorry
1:11:51yang jelas fungsional program itu juga golem kan ya
1:11:55golem tidak golem op tapi op nya juga beda
1:11:59struct base dia
1:12:00Emotable tadi kita udah bahas ya
1:12:06Antara .push sama .concate
1:12:08Dia menghasilkan objek baru
1:12:10Ini juga sama
1:12:11Apa lagi ya
1:12:12Udah selesai
1:12:14Ya ini Haskell
1:12:18OCaml
1:12:19OCaml juga ada objeknya makanya ada O nya depannya
1:12:22Objek
1:12:23Objektif camel
1:12:27Ya
1:12:27Pearl, Pearl
1:12:31Pearl?
1:12:34Kayaknya Pearl itu
1:12:35Masih prosedural
1:12:37Kayaknya, gak tau
1:12:39Gak tau
1:12:40Tapi ini ada cerita lucu nih
1:12:45Dari blog ini
1:12:46Ini kan ada dua orang ya
1:12:49Masih aktif gak orangnya?
1:12:51Nah ini, jadi
1:12:52Saya waktu itu bikin blog ini
1:12:55Tujuannya adalah untuk belajar
1:12:57Karena tertarik kan
1:12:58Di 2012an itu tertarik sama
1:13:00Sama elixirnya
1:13:03Cuman memaksa belajar gimana caranya
1:13:05Yaudah ngeblok aja tiap minggu
1:13:07Jalan
1:13:09Minggu kedua
1:13:10Minggu kedua, minggu ketiga
1:13:13Tiba-tiba ada yang email namanya Pak Augi
1:13:15Dia bilang gini
1:13:17Kurang lebih ya
1:13:18Hey bro, gue suka
1:13:21Blok lo, artikel lo
1:13:22Tapi bahasanya ngaco
1:13:24Bahasa Inggrisnya, karena gue pake bahasa Inggris
1:13:26dia kan orang Amerika orang Washington
1:13:28belum ada chat GPT tapi ya
1:13:30kalau sekarang kan udah tinggal
1:13:32bagusin kata-katanya
1:13:33iya, gue mau deh
1:13:36jadi editor lu, gue bagusin
1:13:38sebelum lu publish
1:13:39akhirnya dia selama
1:13:42dari 2012
1:13:44sampai 2015
1:13:45ya kita kerja bareng gitu
1:13:47ceritanya menarik juga
1:13:51jadi ya
1:13:53karena memang
1:13:55elektris Indonesia waktu itu bahkan sampai sekarang juga sepi kan tapi banyakan yang akses dari luar
1:14:01ya seru sih seru ya begitulah terus nggak dipasang adsense sih nggak dipasang Iya dia bilangnya
1:14:12kan buat bayar buat bayar buat bayar domain dan bayar sarf iya sih bukan buat hal yang lain harus
1:14:22bisa self-sustain Oh iya bahasa yang lain ada lagi eh kalau PHP bisa ketiga itu enggak atau kompat apa
1:14:36Syarat atau syarat ya, prinsipal dari, pure function pasti bisa kan?
1:14:41Pure function bisa. Higher order function bisa nggak? Udah ngecek belum?
1:14:47Function PHP manggil bisa sih.
1:14:51Taruh di parameter?
1:14:54Asal bisa di save di variable berarti.
1:14:58Function bisa di save ke variable?
1:15:01PHP bisa.
1:15:03Bisa.
1:15:03nah walaupun bisa setelah dipasing ke dalam function lain bisa dijalanin dari dalamnya
1:15:09nggak kalau enggak ya berarti nggak bisa bisa hair order function
1:15:16bisa bisa variable function namanya ini tapi harus ada callable ini
1:15:28Oh indikatornya kolabel apa variabelnya namanya func func itu hair order function
1:15:39lo di sini go tanya Gemini program yang mendukung mendukung fungsi program
1:15:48raster skala ya lozor lozor elixir f-sharp f-sharp ya ras hotline ras kotlin bisa itu
1:16:04yang mendukung Oh ras warna purely functional language tapi dia bisa kotlin Swift scheme
1:16:16oke mel-elm elm-elm Idris dan piro script apalagi piro script ini
1:16:27interest your script itu eh sintaksnya seperti haskell tapi dikompilasi ke JavaScript
1:16:33kalian bisa bahasa perubahan apa aja jadi jadi si
1:16:52ini perang lagi program ini yang lebih lebih parah lagi nih eskalasi HTML
1:17:00berarti scss fungsinya programming enggak
1:17:04deklaratif deklaratifkan itu berarti apa yang ingin dituju hasilnya gimana
1:17:15bahasa yang deklaratif lagi adalah SQL itu deklaratif select select group by order by
1:17:29Yes Oke jadi disini apa tujuannya bukan memaksa teman-teman untuk berpindah ke bahasa fungsional
1:17:39tapi enggak ada salahnya belajar paradigma atau Pak ya paradigma baru bukan hanya fungsional mungkin
1:17:46ada partikul yang lain kita yang tidak tahu ya selain OOP dan fungsional itu bisa memperkaya
1:17:51pengalaman kita jadi ketika kita misalkan kita belajar fungsional nih kalau kita ketemu kita
1:17:56ngenalin kita recognize Oh ini begini terus kita bisa masuk ke mindsetnya Oh berarti ini
1:18:01urut-urutannya kita bacanya gampang kalau kita baca kode orang lain atau baca library external
1:18:06itu kita bisa ngerti karena kita bisa tahu mindset fungsional programming kalau kita malu kita enggak
1:18:13suka besok langsung project di kantor kalian di refactor aja jadi fungsional programming
1:18:17tiba-tiba nggak gitu juga kali tapi masih pakai disk
1:18:23memang kalau pakai fungsi nama programming tapi ada disk ketinggalan global dan yang masuk Iya
1:18:36Iya jadi kalaupun di pekerjaan kita sehari-hari menggunakan op kita bisa implementasi beberapa
1:18:44fungsi-fungsi yang ada di fungsi programing salah satu perpaksaan dan lain-lain SP1
1:18:50jadi funksional programming tapi bisnya ditinggal kekurangan dari bahasa yang tidak pure funksional
1:19:03ya jadi bisa nyampur-nyampur cuman ya pasti ada apa ya begitu juga sebaliknya mungkin kita sehari-hari
1:19:10mungkin bekerja sebagai yang menggunakan funksional paradigma funksional gitu ya pakai bahasa fungsional Tapi kita belajar OOP gak ada salahnya Berarti kapan kita kita pernah gak sih punya episode OOP tapi yang kayak gini nih yang kayak beneran di hudah satu persatu
1:19:25Nah berarti bisa jadi.
1:19:27Belum. Next-nya bisa.
1:19:29Yang paling saya, yang paling saya, kalau kalian mau memilih ya janganlah dicampur-campur.
1:19:34yang paling saya anti itu kalau konsepnya sudah dibuat fungsional tapi nanti pakai OOP di sebagian
1:19:41tempat nanti di kursus lain terus udah ada OOP tapi pakai nanti konsep fungsional ini kenapa
1:19:49dicampur-campur gitu kalau mau stay stay aja satu tempat jangan campur-campur jangan pakai filter
1:19:57pakai reduce jangan pakai map gitu maksudnya bukan maksudnya konsepnya yang kalau memang OOP ya ya
1:20:07rapi pemanggilan yang kayak pakai abstraction kemudian pakai objek apa Inherit turunan Inherit
1:20:14ya jadi yang maksud saya jangan dicampur-campur adalah udah pakai fungsi programming tetapi untuk
1:20:24memanggil function callback nya itu adalah objek tes ada kelas pakai kelas static function static
1:20:34function dari kelas lagi ya kan itu terbuka ya Nah jadi si Ken pernah mempromosikan kurang entah
1:20:44kenapa kurang suka kelas yang mempromosikan factory tapi kalau itu udah masuk piru fungsional
1:20:50jadi jadinya ya banyak-banyak juga konser ini bikin objek faktor itu kan apa polimorfism jadi
1:20:58dia misalnya pakai faktori ya 11 interface jadi faktori terus kemudian implement dari interface
1:21:07itu pakai tinggal pakai faktori mau jadi apa aja itu namakan polimorfism kalau dia opo ya
1:21:12cuma jadi enggak instansi kayak new apa konsuser sama dengan new user gitu enggak pakai kayak
1:21:19yang instant yang instansi si faktorinya sudah dibungkus konsuser sama dengan create user
1:21:28tanda kurung ya tapi harus hati-hati karena Iya karena kalau apa ada yang bilang Wah op
1:21:38ribet ya harus ada apa harus belajar inheritance polimorpism blablabla gitu kan fungsional simple
1:21:47gitu kan tapi enggak juga belum ketemu monat aja belum ketemu apa tadi factory method factory atau
1:21:56ada functors ada macem-macem konsepnya istilahnya itu bajak juga sebenarnya dan satu hal yang mungkin
1:22:04akan membuat kita sedikit jengkel dengan
1:22:06fungsi programming adalah
1:22:07nanti argumen dari parameter
1:22:10dari fungsinya itu banyak.
1:22:12Karena harus diikuti semua kan. Harus ada di
1:22:14parameter itu untuk mengubah sebuah data.
1:22:17Makanya argumennya
1:22:18pakai objek. Jadi cuma satu.
1:22:20Ya itu se-objek. Masukin se-objek
1:22:22objeknya. Kalau itu gimana
1:22:24kita ngedesainnya aja sih?
1:22:27Ya memang.
1:22:28Cuma di dalam objeknya kan ada banyak juga.
1:22:30itu tergantung apa yang mau diubah itu side efek juga enggak sih kalau ubah satu properti dari
1:22:40data user properti lainnya banyak yang berubah juga misalnya kalau user misalnya poinnya skornya
1:22:45di atas 3000 itu jadi ada properti lain yang berubah Nah itu saya beri bisa dianggap side
1:22:53benar-benar nah itu jadi ujung-ujungnya ribet juga cuma ribetnya bentuknya gimana dan kapan
1:23:05ketemunya OOP enggak ribet males belajar aja Oh iya sih ya deh jujur menurut saya sih ribet ya
1:23:15Kamu nggak tahu ini masing-masing orang ya?
1:23:21Masing-masing orang. Nah ini, kalau pakai paket seperti Ramda, apakah penggunaan memori bisa lebih kecil?
1:23:29Ya tergantung kalau kita nulis kode sendiri, kode yang sama, kode kita lepotan, panjang banget.
1:23:38Terus kalau kita ganti pakai Ramda, ternyata lebih rapih, lebih pendek.
1:23:41ya lebih kecil dong maksudnya teknik informali entah lebih kecilnya berapa baik beda berapa baik
1:23:47dong pasti lebih kecil kan tapi kalau kita bisa bikin kode yang lebih ringkes lebih efisien ya ya kode kita sendiri enggak usah pakai ramda lebih kecil tapi kan secara realistis perlu waktu juga tulis kodenya jadi di luar biasanya kalau memilih penggunaan
1:24:05library itu adalah untuk menghemat waktu untuk nge-develop nya karena fungsi-fungsi yang dasar
1:24:14kita nggak biasa sudah dibuat orang sudah dibuat orang jadi kita hanya fokus sama bisnis
1:24:20dia sudah ngetes dan kita hanya tes yang perlu kita buat aja jadi sebenarnya lebih mempercepat
1:24:27waktu untuk nge-develop dan yang kita maintain adalah fungsi-fungsi atau kode yang hanya
1:24:36hubungan sama bisnis prosesnya kita saja oke ya iya iya iya ada pertanyaan yang belum terjawabnya
1:24:45pertanyaan kursus yang masih bisa start-start funboy javascript gua gara-gara mantap jangan
1:24:56jangan fanboy ya jangan fanboy ya jangan sampai fanboy Eh ya kalau lagi suka jalan
1:25:02jalan aja nanti kalau misalkan tiba-tiba ke tempat lainnya serian taksi jangan toxic
1:25:07ini pertanyaan menarik nih dari kacang rebus Oh namanya bikin lapar ada kasih bahasa yang
1:25:15bisa ganti javascript secara full kalau pengumuman secara full belum ada belum
1:25:20ras pun lu ada ras itu bisa jalan di browser nggak sih harus di-compile belum belum bisa
1:25:26bikin juga kan nggak bisa bikin nggak bisa jalan bisa dong manipulasi dom ya belum bisa manipulasi
1:25:32belum bisa dulu sempat ada ada apa ada wacana untuk mengkode javascript di browser salah
1:25:43punya ya tadi silverlight apalagi flash script uplap punya itu sendiri ya jadi cuma satu lagi
1:25:53yang hampir ya yang hampir berhasil mengkode adalah Dart sebenarnya Iya tapi itu mau dimasukin
1:26:02chrome tadinya cuman entah kenapa enggak jadi akhirnya jadilah later enggak tahu bukan anggul
1:26:12ya dia lahir dari anggul aja klip-klip jadi klater jadi dipakai di flutter maksudnya bukan jadi
1:26:21flutter ya klas di komponen di react menurut saya lebih clean jadi nggak perlu use memo use callback
1:26:27lain-lain ya sudah lagi kau sudah ada Iya kalau sudah entar lagi sudah dari compiler
1:26:35yusmemo sudah enggak perlu yuscallback sudah enggak perlu tapi juga gara-gara kebanyakan pakai
1:26:42konsep programming itu jadi overuse ya bener gak sih pakai ini sini sini sini gitu kan jadi
1:26:47Iya itu kan sebetulnya kayak utility juga kan itu utility function kan sebetulnya
1:26:55betul untuk memudahkan sebenarnya kalau menjadi sulit ya jangan digunakan gitu aja ya
1:27:02tujuan asal jadi campur-campur udah itu doang campur-campur ya Apakah di masa depan no jay
1:27:12bisa rantai script out of the box bisa jadi bener-bener saya ya Dino udah bisa bunkenya
1:27:19udah bisa juga cuma berarti kayaknya not unlike with the most not kan mengutamakan stabilitas
1:27:25ya di dari apa standar filosofinya jadi paling kalau pada mau coba-coba dirantai pengen bikin
1:27:33rantai mengusai yang lebih lebih out of the box typescript itu paling diban sama Dino berharapnya
1:27:40Enggak, beberapa konsep TypeScript sendiri juga ada kemungkinan masuk ke JavaScript secara umum kan
1:27:49Jadi kayak misalkan ada beberapa tahun yang lalu, type mau di-introduce di JavaScript gitu
1:27:57Jadi bisa aja, bisa aja
1:27:59Kalau masuk lewat ECMAScript terutama ya, kalau udah standardized lah
1:28:04Nah ada satu lagi yang banyak pertanyaan yang menyangkut dengan fungsional programming kan
1:28:13kita pakai mutable variabel mutable data types mutable data structure Apakah itu akan memakan
1:28:22memori lebih banyak daripada kita mutable karena kan harus punya variabel yang banyak lebih banyak
1:28:28Oke memori pasti kan pasti pasti cuman nggak signifikan bener gak sih tergantung kita sebanyak apa kalau misalnya itu harus harus
1:28:42testing beneran sih kalau udah berapa ratus berapa ribu ya pasti makan memori signifikan
1:28:48karena ada pengalaman itu enggak ada karena ada jarak kolektor javascript sudah ada ya
1:28:54ya tapi kan kalau masih dipakai ada function yang jalan yang pakai itu semua ya justru karena
1:29:02ada imutable dan dia hanya live dalam satu function jadinya yang sudah selesai dipanggil
1:29:11dan yang tadi sudah begitu begitu fungsinya udah selesai ada saya kalian untuk garis kulit untuk
1:29:20ngumpulin sampah. Jadi sebenarnya ya not much.
1:29:25Gak terlalu signifikan ya.
1:29:27Kita gak bakal ngerasa kecuali kita ada fungsin yang ekstrim banget.
1:29:31Maksudnya kerjaan yang lama, berat banget yang ekstrim.
1:29:35Salah satu benefitnya mungkin dari fungsi programming adalah kode kita lebih mudah dipahami.
1:29:40Dan lebih mudah diprediksi hasilnya ya.
1:29:42Meskipun secara performa mungkin agak sedikit lebih tinggi.
1:29:47belum tahu bisa harus dicoba dan tergantung kasusnya kalau sudah bermain Matrix kayak
1:29:56kayak Matrix jarang yang gede-gede mungkin efek kalian sama apa ke Biko notationnya
1:30:03Masai kalau kalau datanya dua kali lipat gimana kalau datanya 10 kali lipat itunya
1:30:09kayak gimana harus ini kayak harus kita kayak membuat aplikasi spreadsheet contohnya
1:30:17yang mungkin mungkin akan terasa kalau misalnya ada formula segala macam kayak gitu kalau dan
1:30:26data-datanya setiap sel ada formulanya ribuan Oke Oh ya ada satu lagi kalau nggak deliksi
1:30:34ada ada satu lagi keunggulan fungsional programming dibandingkan non-functional
1:30:44streaming eh konkurrensi gimana itu karena kan datanya imutable kan jadi setiap fungsi yang
1:30:56dijalankan di misalkan berbarengan paralel itu dia tidak akan mempengaruhi karena nggak ada
1:31:01global variable kan nggak ada res kondisien kan ada yang ketimpah Yes gitu jadi jadi dia berdiri
1:31:13sendiri punya state masing-masing tidak mengganggu state yang lain begitu apa prosesnya sudah selesai
1:31:20dia kirimin ke fungsi yang lain untuk diproses gitu itu juga salah satunya yang membuat bahasa
1:31:27fungsional itu menjadi lebih menarik terakhir saya menunjukkan salah satu tadi ini kita sempat bahas
1:31:36apa yang variable-variable yang mutable ya itu mempengaruhi performance atau enggak sepertinya
1:31:42pengaruh terutama tergantung ini ya tergantung skillnya ya jangan di-release generalisir ya ini
1:31:49ada harus ditest yang dari Discord mereka punya masalah mereka pakai elixir secara bahasa 11 11
1:32:02mereka akhirnya terpaksa pakai ras karena data struktur dari siltoin mutable Iya jadi mereka
1:32:13coba untuk nge-push berapa nih mereka tujuannya ini nih mana dia memberlih 100.000 mau bukan
1:32:27mana ya ada ada ininya angka-angkanya itu kayaknya deh benchmark benchmark benchmark
1:32:33ini 500 milisecond ya enggak ada kayak mereka mau melakukan apa gitu ada satu fungsi yang
1:32:43membuat mereka harus beroptimasi mana ya itu tadi kalau ada server yang anggotanya 100.000
1:32:53ada orang baru join harus bikin baru lagi we would have to build a new list dengan membernya 100.001
1:33:02iya jadi itu yang dan mereka bikin itu worst case nya best case nya 500 milisecond mili apa mikron
1:33:15micro microsecond ya microsecond sama 170.000 microsecond
1:33:21kalau kalau kita 500 microsecond eh 1170 kayaknya masih oke lah ya
1:33:28nggak tahu ya ini tergantung itu kan aplikasinya juga kan
1:33:31itu kan 1 dikalikan 11 juta ya beda lah
1:33:36iya dan akhirnya mereka menggunakan
1:33:40ini sih ras untuk manggil aja di dari elixir manggil fungsi keras habis itu dia proses
1:33:49dibalikin lagi ke listriknya berarti tambah sulam ya enggak semua sekaligus bisa langsung
1:33:56direfaktor jadi keras kan Iya enggak enggak mereka melakukan refaktor jadi elixir itu bagus
1:34:02untuk realtime kan untuk di frontend nya back-end nya proses-proses berat itu bisa diarahkan ke
1:34:09bahasa yang low level seperti si Rush, Go dan lain-lain
1:34:14nah kebetulan Elixir bisa ini native implement function
1:34:21jadi functionnya itu ditulis dengan si atau Rush
1:34:23bisa langsung dipanggil
1:34:25kayak di info gitu ya
1:34:27jadi info kayak info komen lain ya berarti ya
1:34:31betul
1:34:32nah itu jadi kalau ditanya yang tadi pertanyaan tadi
1:34:37apakah berpengaruh? iya
1:34:38tapi kalau udah faktor pengalinya sangat besar seperti Scott itu baru itu berasa gitu baru
1:34:45worth it dibikin kayak gitu ya bikin satu service Iya nih ada yang pengalaman pakai
1:34:51ras enggak kita belum ada yang pakai sudah pakai hanya sekedar nulis-nulis
1:34:57black baru kayak ikut lesson courses nya more than Hello World model
1:35:03tapi belum Iya more than Hello World gampang susah eh bisa ngikutin
1:35:14tergantung gampang gampang susah karena harus mengerti mengerti pola pikirnya
1:35:27jelas karena komplit dipercobaan JavaScript ataupun PHP paradigmanya harus dipelajari ya
1:35:33paradigma sebuah bahasa juga harus dipelajari bahwa gua bawel tuh bawel banget Yes kompilernya
1:35:39bawel ya itu terkenal ya Jadi kalau belajar bahasa itu yang enggak cuman belajar sintaksnya tapi
1:35:46belajar ininya filosofinya Yes kalau gua katanya kan objek orientir tapi apa namanya pakai besnya
1:35:56itu bukan bukan kelas base dia enggak ada kelas tapi ada metode ya base struck base ya jadi itu
1:36:04yang harus terjadi interface ya
1:36:05bukan interface itu fungsinya enggak ada Jadi cuma interface itu functionnya cuma definisi aja
1:36:19Kalau struct itu
1:36:20kayak kelas
1:36:22dan dia ada satu
1:36:24function,
1:36:28kelas, dan
1:36:29metode. Tetapi
1:36:31anggap itu nama kelas itu adalah struct.
1:36:33Jadi di kelas yang besarnya
1:36:35itu adalah struct itu implement
1:36:36stok instruksi instruksi instruksi jadi sekelas itu punya banyak mengejar berdasarkan macam
1:36:42Oh isinya bisa ada properti apa kayak ada metode nya di dalam strak itu di PHP juga sudah bisa
1:36:50strak kalau mau main stok ada PHP sudah Iya kalau nggak ada itu modern loh Swift juga strak
1:36:59bis kalau nggak salah kalau nggak salah ya op-nya strak base jadi ya ya itunya yang juga harus
1:37:05belajarin gak cuman sub-sintax nya doang ntar ngomong bahasa programan macem-macem jadi inget
1:37:11komik ini deh udah peduli belum Coba deh buka di chat Oh pernah pernah pernah oke itu lihat ini
1:37:19nggak ngerti cuma karena enggak nguasain bahasa lain jadi kurang lucu sih Oh jadi enggak rilet ya
1:37:25ya Masa kalau enggak pakai bahasa itu kan enggak tahu lucunya dimana selain JavaScript coba zoom
1:37:32javascript kan hipster udah lebih lebih gitu ya framework set upnya lama bikin framework
1:37:45apa jadi misinya adalah si ksatria harus menyelamatkan prinses kan prinses di tawang
1:37:53benteng Nah kalau javascript bentengnya udah keburu ditinggal si prinsesnya udah pindah
1:38:02udah hilang Oke kemudian kalau bahasa lain gua gak ngerti sih gak ngerti lucunya dimana
1:38:12ini lancar lebre lebre lebre princess charge your is good Princess her entire wardrobe Oh ini
1:38:20terlalu lengkap ya terlalu lengkap cuma nggak bisa berhenti sulit di stop eh sih sih bukan
1:38:29OOP kan kalau OOP itu yang ada memes nya juga nanti coba kita lihat ya
1:38:34You have C-shark, you spend hours trying to express the entire queue in SQL in Qquery
1:38:41You give up and go to stack overflow
1:38:45ini kayaknya inside joke nya orang C-shark
1:38:50ya pakai java udah buru-buru versi ada dua ke-2 teso tapi nggak ada prinsesnya
1:38:58ya udah ini doang kurung isinya apa kayaknya itu bahasa yang penuh apa bracket apa tanda kurung terus kebolak ya kayaknya jadi apa kudanya naik orang kudanya naik prinses naik orang kebalik ya ya
1:39:20we don't support freeing capturing Princess we already have this free free Princess in
1:39:27standard library standard library is this the princess from the Java pen from Java
1:39:32disitu you declare your princess and Castle in this plan the you go for a drink forget about
1:39:43the implementation Oh cuman dideklar doang jadi jalan you have to respect image-image
1:39:52PHP masih sekali ya bisa mungkin persepsi populer ya orang yang enggak pakai PHP enggak tahu fitur
1:40:03itu ada berarti emang kurang ambasador aja betul kurang devrel aja pasti jadi nanti jadi devrel
1:40:12janganlah PHP tetap berkembang Iya banyak kok apa bahasa-bahasa yang lain juga banyak tetap
1:40:24berkembang juga HP 88
1:40:27840 Iya dari tahun berapa tuh PHP dibilang bakal mati bakal mati tapi enggak matikan
1:40:38ada juga bahasa yang yang awalnya mungkin sedikit populer terus kemudian enggak didengar tiba-tiba
1:40:46muncul gitu kan banyak kan tiba-tiba mati muncul lagi itu juga banyak kan lalat 83 yang sudah
1:40:54rilis 84 itu masih tahun ini tetapi 83 November lalu ya mungkin salah satu apa namanya kesulitan
1:41:04jaras tergantung dari background kita kalau berguna kita mungkin udah menggunakan bahasa
1:41:10yang type language seperti Java atau typescript mungkin itu mungkin kayaknya jadung lebih mudah
1:41:18ya cuman konsep-konsep itu banyak yang berbeda contohnya boroshekar boroshekar juga beda ya
1:41:25itu nah ya saya juga nggak tahu jadi banyak banyak apa ya sama kayak OOP banyak yang dipelajari apa
1:41:34istilahnya konsep-konsepnya mungkin itu by the way kita sudah hampir dua jam ternyata bisa
1:41:43seru ya ya mungkin next time kita akan bahas OOP di javascript kali ya biar adil biar adil
1:41:54kalau bahas PHP nanti bahas Pak amayum nekudotayum apa tuh Oh kalau nggak tahu ya berarti harus cari apa itu Oh hahaha oke nantilah itu itu skop operator masalah diskop operator Oh seru Iya sebenarnya kita mau bahas PHP kan tapi mau undang siapa gitu kan mau belum ketemu
1:42:19narasumbernya mungkin temen-temen disini punya kenalan yang bisa diajak ngobrol di sini boleh
1:42:25kita undang-undang nanti
1:42:29nah ini buat
1:42:31ntar buat episode PHP lah
1:42:35oke untuk malam ini
1:42:37mungkin kita udahan dulu
1:42:39jangan lupa
1:42:40kita bisa diskusi lebih lanjut
1:42:43di githubnya kita
1:42:45github.com slash ngobrolin
1:42:47atau kesana.in slash ngobrolin
1:42:49jadi
1:42:50sebenarnya bisa
1:42:52suggest topic atau bisa mau diskusi
1:42:55misalkan saya pengen tahu dong
1:42:57cara penggunaan
1:42:59apa ya
1:42:59is memo itu kayak gimana
1:43:01kalau sempat nanti kita akan jawab
1:43:05mungkin kita akan bikin episode khusus
1:43:07untuk menjawab pertanyaan-pertanyaan yang ada di sana
1:43:08itu menarik juga kan ya
1:43:10udah muncul nih
1:43:13nama-namanya Pak Sandika Gali
1:43:14Mas Petra
1:43:15kalau Pak Sandika Gali lebih gampang
1:43:19lebih gampang ya
1:43:20tapi dia gak mau
1:43:21diajak bahas PHP itu gak mau
1:43:23mungkin salah mungkin salah nonton ini mau dengan PHP bisa beli lambu
1:43:32lambo.js lambo.js ya lambo.js yang belikan yang bikin framework kan ya bukan yang menggunakan
1:43:45framework kan developer yang jadi kalian hanya bisa bermimpi sebelum kalian bikin framework
1:43:52Jadi silahkan berlemba-lemba
1:43:54Bikin framework ya
1:43:55Itu tadi nama bahasanya udah ada
1:43:58Di atas ada
1:43:59Kutilang
1:44:01Ditilang
1:44:04Ditilang
1:44:06Jadi mungkin untuk malam ini
1:44:10Kita udahan dulu sebelum semakin ngaco
1:44:12Terima kasih buat semuanya
1:44:14Yang sudah meramaikan
1:44:16Mudah-mudahan
1:44:17Kita dapat sesuatu lah ya
1:44:20Dari sesi malam ini
1:44:21Gak cuman saling mengejek
1:44:24Jangan ya gak boleh ya
1:44:25Lo kan gak ngejek kita mengapresiasi
1:44:29Mengapresiasi betul
1:44:30Oke kita ketemu lagi
1:44:33Minggu depan
1:44:34Minggu depan tanggal
1:44:35Tanggal 5 berarti minggu depan ada
1:44:39Bintang tamu spesial
1:44:40Kita tunggu saja
1:44:42Topiknya juga lagi hype ya
1:44:45Jadi ditunggu aja
1:44:46Kita
1:44:48Tanggal 5 ya
1:44:49dan untuk malam ini sekian Terima kasih banyak sampai jumpa minggu depan bye bye
Suka episode ini?
Langganan untuk update episode terbaru setiap Selasa malam!
Episode Terkait
17 Apr 2024
Ngobrolin OOP di JS - Ngobrolin WEB
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...
26 Agu 2025
Fundamental JavaScript - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Malam ini kita akan membahas tentang berbagai topik fundamental JavaScript. ...
21 Mei 2025
Ngobrolin React Server Component
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...