{"id":32333,"date":"2025-07-05T20:59:58","date_gmt":"2025-07-05T13:59:58","guid":{"rendered":"https:\/\/dte.telkomuniversity.ac.id\/?p=32333"},"modified":"2025-07-05T20:59:59","modified_gmt":"2025-07-05T13:59:59","slug":"pemrograman-modular-dan-fungsional","status":"publish","type":"post","link":"https:\/\/dte.telkomuniversity.ac.id\/en\/pemrograman-modular-dan-fungsional\/","title":{"rendered":"Pemrograman Modular dan Fungsional"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.google.com\/imgres?q=pemrograman%20modular&amp;imgurl=https%3A%2F%2Fcdn.prod.website-files.com%2F60229754045ee76e2fd860b1%2F6023c832afebb84d71e476f1_modular-programming-explained.png&amp;imgrefurl=https%3A%2F%2Ftranslate.google.com%2Ftranslate%3Fu%3Dhttps%3A%2F%2Fcodelabs.rocks%2Fblog%2Fdetailed-guide-for-modular-programming-concept%26hl%3Did%26sl%3Den%26tl%3Did%26client%3Dimgs&amp;docid=Ui6N4XwQf4rdVM&amp;tbnid=zpjrOUdChxLk8M&amp;vet=12ahUKEwjt-bCt8KWOAxV79DgGHUC5D0sQM3oECFEQAA..i&amp;w=1203&amp;h=578&amp;hcb=2&amp;itg=1&amp;ved=2ahUKEwjt-bCt8KWOAxV79DgGHUC5D0sQM3oECFEQAA\"><img fetchpriority=\"high\" decoding=\"async\" width=\"324\" height=\"155\" src=\"https:\/\/b581640.smushcdn.com\/581640\/wp-content\/uploads\/2025\/07\/image-38.png?lossy=1&strip=1&webp=1\" alt=\"\" class=\"wp-image-32334\" style=\"width:367px;height:auto\" srcset=\"https:\/\/b581640.smushcdn.com\/581640\/wp-content\/uploads\/2025\/07\/image-38.png?lossy=1&strip=1&webp=1 324w, https:\/\/b581640.smushcdn.com\/581640\/wp-content\/uploads\/2025\/07\/image-38-300x144.png?lossy=1&strip=1&webp=1 300w, https:\/\/b581640.smushcdn.com\/581640\/wp-content\/uploads\/2025\/07\/image-38-255x122.png?lossy=1&strip=1&webp=1 255w\" sizes=\"(max-width: 324px) 100vw, 324px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Pendahuluan<\/strong><\/h2>\n\n\n\n<p>Dalam pengembangan perangkat lunak modern, dua paradigma pemrograman yang semakin populer dan relevan adalah <strong>pemrograman modular<\/strong> dan <strong>pemrograman fungsional<\/strong>. Keduanya menawarkan pendekatan berbeda untuk membangun aplikasi yang lebih <strong>terstruktur, dapat dipelihara<\/strong>, dan <strong>mudah diuji<\/strong>. Dengan meningkatnya kompleksitas sistem perangkat lunak, pengembang semakin memerlukan metode yang dapat mengelola kode secara efisien dan fleksibel.<\/p>\n\n\n\n<p>Artikel ini membahas secara mendalam konsep, prinsip, kelebihan, serta penerapan nyata dari pemrograman modular dan fungsional, lengkap dengan contoh kode dalam bahasa populer seperti Python dan JavaScript.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Pemrograman Modular<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2.1 Definisi<\/strong><\/h3>\n\n\n\n<p>Pemrograman modular adalah teknik pengembangan perangkat lunak yang memecah program menjadi bagian-bagian kecil yang terpisah, disebut <strong>modul<\/strong>. Setiap modul bertanggung jawab atas satu fungsionalitas spesifik dan dapat diimpor ke dalam program utama.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2.2 Tujuan<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Reusabilitas kode<\/strong><\/li>\n\n\n\n<li><strong>Pemisahan tanggung jawab (separation of concerns)<\/strong><\/li>\n\n\n\n<li><strong>Kemudahan pemeliharaan dan debugging<\/strong><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Karakteristik Pemrograman Modular<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modul berdiri sendiri dan memiliki tanggung jawab tunggal.<\/li>\n\n\n\n<li>Modul dapat digunakan ulang di proyek lain.<\/li>\n\n\n\n<li>Komunikasi antar modul dilakukan melalui antarmuka.<\/li>\n\n\n\n<li>Meningkatkan organisasi dan keterbacaan kode.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Contoh Pemrograman Modular<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4.1 Python<\/strong><\/h3>\n\n\n\n<p>File: <code>matematika.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ndef tambah(a, b):\n    return a + b\n\n<\/code><\/pre>\n\n\n\n<p>File: <code>main.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nimport matematika\n\nprint(matematika.tambah(2, 3))\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4.2 JavaScript (ES6 Modules)<\/strong><\/h3>\n\n\n\n<p>File: <code>math.js<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export function tambah(a, b) {\n    return a + b;\n}\n\n<\/code><\/pre>\n\n\n\n<p>File: <code>main.js<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { tambah } from '.\/math.js';\n\nconsole.log(tambah(2, 3));\n\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Kelebihan Pemrograman Modular<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Fleksibel<\/strong>: modul dapat diganti tanpa memengaruhi sistem utama.<\/li>\n\n\n\n<li><strong>Mudah diuji<\/strong>: setiap modul dapat diuji secara terpisah.<\/li>\n\n\n\n<li><strong>Skalabel<\/strong>: mudah untuk memperluas sistem.<\/li>\n\n\n\n<li><strong>Kolaboratif<\/strong>: tim dapat mengembangkan modul yang berbeda secara paralel.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. Kekurangan Pemrograman Modular<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Butuh <strong>perencanaan struktur modul<\/strong> yang matang.<\/li>\n\n\n\n<li>Kadang menambah <strong>kompleksitas awal<\/strong> dalam pengaturan dependensi.<\/li>\n\n\n\n<li><strong>Overhead dokumentasi dan integrasi<\/strong> jika jumlah modul sangat banyak.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>7. Pemrograman Fungsional<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>7.1 Definisi<\/strong><\/h3>\n\n\n\n<p>Pemrograman fungsional adalah paradigma yang memperlakukan komputasi sebagai <strong>evaluasi fungsi matematika<\/strong> dan menghindari <strong>perubahan status<\/strong> dan <strong>data mutable<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>7.2 Ciri Khas<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tidak ada <strong>side effects<\/strong> (perubahan keadaan).<\/li>\n\n\n\n<li>Fungsi adalah <strong>first-class citizen<\/strong>.<\/li>\n\n\n\n<li>Mendorong <strong>immutability<\/strong> (data tidak dapat diubah).<\/li>\n\n\n\n<li>Mendukung komposisi dan rekursi.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>8. Konsep Dasar Pemrograman Fungsional<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>8.1 First-Class Functions<\/strong><\/h3>\n\n\n\n<p>Fungsi dapat disimpan dalam variabel, dikirim sebagai argumen, atau dikembalikan dari fungsi lain.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nconst sapa = function(nama) {\n    return \"Halo \" + nama;\n};\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>8.2 Pure Function<\/strong><\/h3>\n\n\n\n<p>Fungsi yang untuk input yang sama, selalu memberikan output yang sama tanpa efek samping.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def tambah(a, b):\n    return a + b\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>8.3 Higher-Order Function<\/strong><\/h3>\n\n\n\n<p>Fungsi yang menerima atau mengembalikan fungsi lain.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function operasi(a, b, fungsi) {\n    return fungsi(a, b);\n}\n\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>9. Fungsi Immutability dan Rekursi<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>9.1 Immutability<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>const angka = &#091;1, 2, 3];\nconst angkaBaru = &#091;...angka, 4]; \/\/ tidak mengubah array asli\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>9.2 Rekursi<\/strong><\/h3>\n\n\n\n<p>Menggantikan perulangan dengan pemanggilan diri sendiri.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def faktorial(n):\n    if n == 1:\n        return 1\n    return n * faktorial(n - 1)\n\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>10. Bahasa yang Mendukung Paradigma Fungsional<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Haskell<\/strong> (sepenuhnya fungsional)<\/li>\n\n\n\n<li><strong>Scala<\/strong>, <strong>Elixir<\/strong>, <strong>OCaml<\/strong><\/li>\n\n\n\n<li><strong>JavaScript<\/strong>, <strong>Python<\/strong>, dan <strong>Java<\/strong> (sebagian mendukung)<\/li>\n\n\n\n<li><strong>Clojure<\/strong> (berbasis Lisp)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>11. Contoh Implementasi Fungsional<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>11.1 JavaScript<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>const data = &#091;1, 2, 3, 4, 5];\nconst hasil = data.map(x =&gt; x * 2).filter(x =&gt; x &gt; 5);\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>11.2 Python<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>data = &#091;1, 2, 3, 4, 5]\nhasil = list(map(lambda x: x*2, filter(lambda x: x &gt; 2, data)))\n\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>12. Kelebihan Pemrograman Fungsional<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kode lebih bersih dan ringkas<\/strong><\/li>\n\n\n\n<li><strong>Lebih mudah diuji (unit test)<\/strong><\/li>\n\n\n\n<li><strong>Minim bug karena tidak ada perubahan status<\/strong><\/li>\n\n\n\n<li><strong>Paralelisme lebih aman<\/strong><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>13. Kekurangan Pemrograman Fungsional<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kurang intuitif bagi pemula.<\/li>\n\n\n\n<li>Tidak cocok untuk semua jenis aplikasi (misal, game real-time).<\/li>\n\n\n\n<li>Penggunaan rekursi berlebihan dapat mengurangi performa.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>14. Perbandingan Modular vs Fungsional<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Aspek<\/th><th>Modular<\/th><th>Fungsional<\/th><\/tr><\/thead><tbody><tr><td>Organisasi kode<\/td><td>Berdasarkan fungsionalitas<\/td><td>Berdasarkan fungsi<\/td><\/tr><tr><td>Reusabilitas<\/td><td>Tinggi<\/td><td>Tinggi<\/td><\/tr><tr><td>Immutability<\/td><td>Tidak diwajibkan<\/td><td>Sangat dianjurkan<\/td><\/tr><tr><td>Perubahan status<\/td><td>Umum terjadi<\/td><td>Dihindari<\/td><\/tr><tr><td>Kompleksitas awal<\/td><td>Sedang<\/td><td>Tinggi bagi pemula<\/td><\/tr><tr><td>Cocok untuk<\/td><td>Aplikasi besar<\/td><td>Aplikasi dengan logika matematis<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>15. Integrasi Modular dan Fungsional<\/strong><\/h2>\n\n\n\n<p>Dalam praktik modern, pendekatan modular dan fungsional sering digunakan <strong>bersamaan<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modular: memisah file dan tanggung jawab.<\/li>\n\n\n\n<li>Fungsional: struktur internal fungsi bersih dan bebas efek samping.<\/li>\n<\/ul>\n\n\n\n<p>Contoh: framework seperti <strong>React.js<\/strong> mendorong penulisan komponen fungsional dalam struktur modular.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>16. Studi Kasus Singkat: React<\/strong><\/h2>\n\n\n\n<p>React menggunakan paradigma fungsional dalam komponen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function Button(props) {\n  return &lt;button onClick={props.onClick}&gt;Klik Saya&lt;\/button&gt;;\n}\n\n<\/code><\/pre>\n\n\n\n<p>Komponen ini:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Stateless (tidak mengubah data internal)<\/li>\n\n\n\n<li>Dapat digunakan ulang (modular)<\/li>\n\n\n\n<li>Mudah diuji<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>17. Kesimpulan<\/strong><\/h2>\n\n\n\n<p>Pemrograman modular dan fungsional menawarkan pendekatan yang berbeda namun saling melengkapi dalam pengembangan perangkat lunak. Modularitas membantu organisasi dan kolaborasi proyek besar, sementara pendekatan fungsional meningkatkan kejelasan logika, pengujian, dan prediktabilitas kode.<\/p>\n\n\n\n<p>Penguasaan kedua paradigma ini akan sangat memperkaya kemampuan developer dalam membangun aplikasi yang scalable, maintainable, dan robust.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Referensi<\/strong><\/h2>\n\n\n\n<p>[1] R. E. Johnson and B. Foote, \u201cDesigning reusable classes,\u201d <em>Journal of Object-Oriented Programming<\/em>, vol. 1, no. 2, pp. 22\u201335, 1988.<\/p>\n\n\n\n<p>[2] E. Meijer, B. Beckman, and G. Bierman, \u201cLINQ: Reconciling object, relations and XML in the .NET framework,\u201d in <em>Proceedings of the 2006 ACM SIGMOD<\/em>, 2006.<\/p>\n\n\n\n<p>[3] J. Hughes, \u201cWhy functional programming matters,\u201d <em>The Computer Journal<\/em>, vol. 32, no. 2, pp. 98\u2013107, 1989.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Pendahuluan Dalam pengembangan perangkat lunak modern, dua paradigma pemrograman yang semakin populer dan relevan adalah pemrograman modular dan pemrograman fungsional. Keduanya menawarkan pendekatan berbeda untuk membangun aplikasi yang lebih terstruktur, dapat dipelihara, dan mudah diuji. Dengan meningkatnya kompleksitas sistem perangkat lunak, pengembang semakin memerlukan metode yang dapat mengelola kode secara efisien dan fleksibel. Artikel [&hellip;]<\/p>\n","protected":false},"author":59,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"wds_primary_category":0,"footnotes":""},"categories":[101],"tags":[],"class_list":["post-32333","post","type-post","status-publish","format-standard","hentry","category-berita"],"_links":{"self":[{"href":"https:\/\/dte.telkomuniversity.ac.id\/en\/wp-json\/wp\/v2\/posts\/32333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dte.telkomuniversity.ac.id\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dte.telkomuniversity.ac.id\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dte.telkomuniversity.ac.id\/en\/wp-json\/wp\/v2\/users\/59"}],"replies":[{"embeddable":true,"href":"https:\/\/dte.telkomuniversity.ac.id\/en\/wp-json\/wp\/v2\/comments?post=32333"}],"version-history":[{"count":2,"href":"https:\/\/dte.telkomuniversity.ac.id\/en\/wp-json\/wp\/v2\/posts\/32333\/revisions"}],"predecessor-version":[{"id":32337,"href":"https:\/\/dte.telkomuniversity.ac.id\/en\/wp-json\/wp\/v2\/posts\/32333\/revisions\/32337"}],"wp:attachment":[{"href":"https:\/\/dte.telkomuniversity.ac.id\/en\/wp-json\/wp\/v2\/media?parent=32333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dte.telkomuniversity.ac.id\/en\/wp-json\/wp\/v2\/categories?post=32333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dte.telkomuniversity.ac.id\/en\/wp-json\/wp\/v2\/tags?post=32333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}