Programming Quartet: Perspektif Makro untuk Pemrograman, Bagi Semua Kalangan

Bernaridho 7 April 2017

Programming Quartet: Perspektif Makro untuk Pemrograman, Bagi Semua Kalangan

Penepatan janji

Pada akhir tulisan saya 'NUSA: Managing Expectation' saya janjikan untuk menulis tentang Programming Quartet dan biaya pembuatan programming tools. Tulisan ini adalah perwujudan janji tersebut, walau parsial. Pada tulisan ini saya baru penuhi janji tentang Programming Quartet, yang mengindikasikan 4 hal.

Programming Quartet: Sebuah Pengantar

Dalam lebih dari 2 dekade karir kombinasi saya sebagai akademisi dan praktisi saya melihat lack of understanding tentang pemrograman di banyak orang dengan posisi tinggi dan organisasi bergengsi. Dengan berbagai cara saya berusaha mengkoreksi banyak miskonsepsi. Sekitar akhir tahun 2016 saya dapatkan ide cara menjelaskan perspektif makro tentang pemrograman. Perspektif makro ini melengkapi perspektif mikro tentang pemrograman. (VOpTOq sebagai teori pemrograman adalah perspektif mikro tentang pemrograman).

Imgur

Perspektif makro tentang pemrograman saya rumuskan dalam 2 prinsip. Prinsip pertama: belajar dan praktek pemrograman adalah seperti belajar dan praktek berbahasa manusia. Prinsip kedua: perbedaan pemrograman dengan berbahasa manusia adalah: bahasa pemrograman bersifat formal (kaku), sedangkan bahasa manusia (alami) bersifat informal (luwes). Dengan kedua prinsip di atas, mari kita lihat satu-per-satu anggota Programming Quartet.

Programming Theory

Analogi dari programming theory adalah teori tentang bahasa manusia. Apapun bahasa alami manusia – Jawa, Indonesia, Jepang, Inggris, Cina, Arab, Batak, dan lainnya – pasti ada konsep bilangan, kata kerja, tandabaca, kata benda abstrak, kata benda nyata, dan kata sifat. Ke 6 konsep ini secara kasar terpetakan ke value, operation, punctuator, type, object, dan qualifier pada bahasa pemrograman.

Baca juga: CoderTalk: Bernaridho Imanuel Hutabarat, Inventor Teori Pemrograman VOpTOq

Relevansi ke belajar teori pemrograman? Teori pemrograman VOpTOq invensi saya bisa dirumuskan demikian: apapun simbol pada source-code, intermediate-code, dan runnable-code dari bahasa pemrograman apapun; pasti bisa dipetakan ke salah satu dari 6 konsep utama VOpTOq. Jadi apapun simbolnya, dari bahasa pemrograman apapun; mewakili satu dari hanya 6 kemungkinan: value, operation, punctuator, type, atau qualifier. Itu mirip dengan kata-kata dalam bahasa manusia. Apapun kata yang dipakai, sudah fixed kategorisasi kata-kata yang dibuat para linguists (ahli-ahli bahasa).

Gambar di bawah ini adalah contoh buku yang jelaskan programming theory. Gambar-gambar lain sesudah gambar 2 ini bisa dipakai untuk kontraskan tiap item dari Programming Quartet.

Imgur

Programming Language

Kita sadari atau tidak, pada setiap bahasa manusia ada pola umum kalimat. Sebagai contoh: kalimat pada bahasa Indonesia miliki pola tersendiri, demikian pula bahasa Inggris, bahasa Jepang, dan lain-lain. Mari kita lihat dua contoh. Maaf saya pakai istilah verb, noun, adjective; untuk kemudahan.

Kalimat pada bahasa Indonesia secara umum berpola noun verb noun adjective. Contoh kalimat: Saya beli sepatu baru. Kalimat pada bahasa Inggris secara umum berpola noun verb adjective noun. Contoh kalimat: I buy new shoes. Kalimat pada bahasa Jepang berpola lain lagi, silahkan search di web.

Relevansi ke belajar bahasa pemrograman? Belajar bahasa pemrograman adalah belajar leksik, sintaks, dan semantik bahasa pemrograman. Dua gambar di bawah ini mencontohkan sintaks dua bahasa pemrograman.

Imgur
Imgur

Programming Library

Analogi dari programming library adalah kosa kata. Kosa kata ini mencakup kosa kata benda, kosa kata kerja, kosa kata sifat, dan lain-lain. Belajar programming library seperti belajar tambah kosa kata.

Baca juga: Logika Tidak Cukup Untuk Belajar Pemrograman

Sebagai contoh, awalnya kata benda yang dikuasai hanya saya, kita, mereka, kamu, sepatu. Kata benda yang dikuasai hanya makan, kata sifat yang dikuasai hanya baru. Menambah kosa kata benda dengan CodePolitan, Microsoft, Linux, dan lain-lain adalah analogi dari belajar programming-library. Menambah kosa kata kerja dengan tidur, mandi, makan, dan lain-lain adalah analogi dari belajar programming-library.

Imgur

Gambar di atas saya pakai jelaskan pemetaan analogi ke praktek penguasaan programming-library. Membaca buku seperti 'PL/SQL Packages and Types Reference' adalah upaya menguasai programming-library, bukan upaya menguasai programming theory maupun programming-language. Buku tersebut tidak jelaskan sintaks Oracle PL/SQL; gambar ketiga pada tulisan ini yang jelaskan sintaks PL/SQL.

Programming Tool

Analogi dari programming-tool adalah penterjemah, manusia sebagai penterjemah. Ada orang-orang yang berprofesi sebagai penterjemah, tersumpah maupun tidak. Mereka menterjemahkan dokumen legal, atau menemani kepala negara saat berbicara dengan kepala negara lain yang memakai bahasa yang berbeda.

Relevansi ke programming? Programming-tools utamanya mencakup code-translators (Compiler, Linker, Interpreter, CompileLinker, LinkRunner), text editor, debugger, dan lain-lain. Belajar programming-tools adalah belajar cara memakai produk seperti Visual Studio, Eclipse, NetBeans, Android Studio, dan lain-lain. Belajar programming-tools bukan belajar teori pemrograman, bukan belajar bahasa pemrograman, bukan belajar pustaka pemrograman. Gambar 5 contohkan materi belajar programming-tool.

Imgur

VOpTOq dan derived concepts

Big deal dari VOpTOq dan derived-concepts adalah universalitasnya ke semua bahasa pemrograman. Buku Concepts pada gambar 2 tidaklah universal. Jangankan ke bahasa pemrograman dengan 'paradigma' lain seperti C#, Java, shell, dan lain-lain; cukup besar porsi istilah-istilah pada buku Concepts pada gambar 1 yang bahkan tidak dapat jelaskan bahasa pemrograman yang sejenis: Microsoft Transact SQL (gambar 4).

Baca juga: Programming: Dunia yang Anarki

Perbandingan kecepatan: tool, bukan language

Pada tulisan 'NUSA: Managing Expectation' saya menulis bahwa kecepatan programming-languages tidak dapat dibandingkan; yang dapat dibandingkan adalah kecepatan code-translator. Mari kita review berdasarkan penjelasan Programming Quartet. Anda tidak bisa bandingkan kecepatan bahasa Inggris versus bahasa Indonesia (banyak joke tentang hal ini). Yang bisa Anda bandingkan adalah kecepatan dua atau lebih orang menterjemahkan suatu teks/ucapan dari bahasa sumber dan bahasa target yang sama. Misal: si A menterjemahkan bahasa Jepang ke Indonesia lebih cepat daripada si B.

Penutup

Dalam interaksi ke ratusan atau ribuan orang selama 2 dekade, saya belum menemukan penjelasan seperti Programming Quartet ini. Saya invent sendiri, dan pernah dipresentasikan di event yang diselenggarakan komunitas Mozilla Indonesia. Audiens saat itu banyak yang non-technical persons.

Saya berusaha perkuat perbedaan Programming Quartet dengan gambar-gambar berbeda dari subjek yang mirip dan produk yang sama. Selain gambar 1 dan gambar 3 tentang Microsoft Transact SQL, semua gambar lain berasal dari Oracle Corp. Anda dapat lihat bahwa Oracle Corp (sadar atau tidak sadar) telah pisahkan dengan baik buku-buku mereka berdasarkan Programming Quartet. Saya mendapatkan cara belajar dengan Programming Quartet amat membantu sisematika belajar dan mengelola harapan.