EP 71

Ngobrolin Fungsional JS - Ngobrolin WEB

Bagikan:

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 Koreksi

Episode 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
Transkrip Bantu Koreksi

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!

Langganan Sekarang

Episode Terkait

Ngobrolin OOP di JS - Ngobrolin WEB
EP 78

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. ...

Fundamental JavaScript - Ngobrolin WEB
EP 142

26 Agu 2025

Fundamental JavaScript - Ngobrolin WEB

🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Malam ini kita akan membahas tentang berbagai topik fundamental JavaScript. ...

Ngobrolin React Server Component
EP 129

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. ...

Komentar