Catatan Ada Lovelace tentang Analytical Engine menggambarkan algoritma yang dapat diulang. Lihat bagaimana gagasan awalnya berhubungan dengan desain program dan pemikiran komputasional modern.

Anda mungkin sudah pernah mendengar versi singkatnya: Ada Lovelace menulis “algoritma pertama,” sekumpulan instruksi yang ditujukan untuk Analytical Engine milik Charles Babbage. Orang masih mengutipnya karena itu contoh awal yang mengejutkan jelas dari apa yang sekarang kita sebut pemrograman—memecah tujuan menjadi langkah-langkah tepat yang bisa diikuti mesin.
Artikel ini bukan mencoba merekonstruksi roda-roda Engine atau membuktikan setiap klaim sejarah sampai tuntas. Sebaliknya, fokusnya pada gagasan pemrograman dalam karya Lovelace: bagaimana mengubah masalah matematika menjadi sesuatu yang dapat dieksekusi, bagaimana merepresentasikan data, dan bagaimana mengomunikasikan prosedur sehingga orang lain (atau sesuatu yang lain) bisa menjalankannya.
Catatan terkenal Lovelace terasa seperti jembatan antara matematika dan desain perangkat lunak. Meskipun mesinnya sebagian besar hipotetis, pola pikirnya familiar bagi siapa pun yang pernah mencoba membuat komputer melakukan sesuatu secara dapat dipercaya.
Berikut yang akan kita perhatikan:
Tujuannya sederhana: melihat “algoritma pertama” Lovelace tidak sekadar sebagai benda museum tetapi sebagai templat awal pemikiran komputasional yang masih mencerminkan bagaimana kita merancang program hari ini.
Augusta Ada King, Countess of Lovelace—lebih dikenal sebagai Ada Lovelace—tumbuh di persimpangan puisi dan matematika. Ibunya mendorong studi yang ketat, dan Ada cepat menjadi bagian dari lingkaran kecil ilmuwan dan pemikir terkemuka. Ia bukan jenius yang bekerja sendirian; ia adalah kolaborator berbakat yang mengajukan pertanyaan sangat jelas tentang apa arti mesin, bukan hanya apa yang bisa mereka lakukan.
Charles Babbage sudah terkenal karena rencananya untuk kalkulasi mekanis ketika Ada bertemu dengannya. Babbage bisa merancang perangkat keras di kepalanya: roda gigi, poros, dan roda angka yang tersusun menjadi sistem. Ada, sementara itu, punya bakat menjelaskan—mengambil ide teknis kompleks dan menerjemahkannya menjadi konsep terstruktur yang bisa dikomunikasikan.
Hubungan mereka efektif karena kekuatan mereka berbeda. Babbage mendorong visi rekayasa; Ada mendorong visi konseptual, terutama gagasan bahwa mesin bisa mengikuti urutan operasi yang dirancang seseorang sebelumnya.
Analytical Engine Babbage bukan sekadar kalkulator yang lebih baik. Di atas kertas, ia menggambarkan mesin tujuan-umum: satu yang bisa menyimpan nilai, melakukan operasi, dan menjalankan prosedur yang direncanakan langkah demi langkah. Anggaplah itu sebagai cetak biru awal untuk apa yang sekarang kita sebut komputer yang bisa diprogram—meskipun tidak pernah selesai dalam masa hidup mereka.
Tahun 1840-an adalah saat ketika matematika, industri, dan otomatisasi mulai saling tumpang tindih. Orang haus akan metode yang dapat diandalkan—tabel, rumus, dan prosedur yang dapat diulang—karena kesalahan mahal dan ilmu pengetahuan berkembang cepat. Dalam konteks itu, minat Ada pada “cara memberi instruksi ke mesin” bukan sekadar rasa ingin tahu. Itu respons yang tepat waktu terhadap kebutuhan yang tumbuh: mengubah penalaran manusia menjadi proses yang dapat diulang dan diperiksa.
Sebelum Ada Lovelace bisa mendeskripsikan sebuah algoritma, harus ada mesin yang layak “diprogram.” Analytical Engine Charles Babbage dibayangkan sebagai kalkulator tujuan-umum: bukan perangkat untuk satu rumus spesifik, tapi mesin yang bisa disiapkan untuk melaksanakan banyak urutan operasi berbeda.
Idenya sederhana: jika Anda dapat memecah masalah menjadi langkah-langkah aritmetika kecil (tambah, kurang, kali, bagi), sebuah mesin seharusnya bisa melakukan langkah-langkah itu secara andal, dalam urutan yang benar, sebanyak yang diperlukan.
Itu lompatan dari kalkulasi sekali pakai ke metode yang dapat digunakan kembali.
Babbage menggambarkan dua komponen utama:
Untuk input dan output, Engine dirancang menerima instruksi dan data menggunakan kartu berlubang (terinspirasi tenun), dan menghasilkan hasil dalam bentuk yang bisa digunakan manusia—dicetak atau dicatat.
Jika Anda memetakan ide-ide itu ke hari ini:
Inilah sebabnya Analytical Engine penting: ia menggambarkan pemisahan yang masih kita andalkan—perangkat keras yang mengeksekusi langkah, dan program yang menentukan langkah mana yang dieksekusi.
Ketika orang berbicara tentang Ada Lovelace dan algoritma pertama, mereka sering menunjuk pada sekumpulan tambahan khusus: “Catatan” yang ia lampirkan pada terjemahan bahasa Inggrisnya terhadap makalah Luigi Menabrea tentang Analytical Engine Charles Babbage.
Menabrea menggambarkan konsep mesin. Lovelace melangkah lebih jauh: ia memperlakukan Engine sebagai sesuatu yang bisa diberi instruksi—bukan sekadar dikagumi. Pergeseran itu alasan mengapa Catatan ini begitu penting dalam sejarah pemrograman. Mereka terbaca seperti pemikiran komputasional awal: memecah tujuan menjadi langkah tepat, memilih representasi, dan mengantisipasi bagaimana mekanisme akan mengikutinya.
Catatan Lovelace menjelaskan apa yang sekarang kita sebut desain program. Ia mendeskripsikan bagian-bagian Engine (seperti store dan mill) dalam istilah bagaimana operasi dapat diurutkan dan dikontrol. Gagasan sentralnya sederhana tapi dalam: jika Analytical Engine bisa melakukan operasi dalam urutan yang ditentukan pada simbol-simbol tertentu, maka "cara" harus ditulis dalam bentuk yang dapat dieksekusi mesin.
Di sinilah karyanya mulai menyerupai pemrograman modern. Bukan sekadar teori; melainkan metode.
Yang paling penting, Catatan berisi contoh kerja yang disajikan sebagai tabel langkah. Ia memaparkan, baris demi baris, apa yang harus dilakukan mesin—nilai apa yang ada di lokasi mana, operasi apa yang terjadi berikutnya, dan di mana hasil disimpan.
Format tabel itu adalah leluhur dari pseudocode, bagan alir, dan jadwal instruksi masa kini: rencana eksplisit dan dapat diperiksa yang bisa diikuti tanpa menebak. Terlepas Anda pernah membangun Analytical Engine atau tidak, kebiasaan yang diajarkan—mengubah gagasan menjadi urutan yang dapat dijalankan—adalah inti menulis perangkat lunak.
Sebuah algoritma, dalam bahasa sehari-hari, adalah metode yang dapat diulang: sekumpulan langkah jelas yang dapat diandalkan membawa Anda dari titik awal ke jawaban. Seperti resep yang tidak bergantung pada intuisi—jika Anda mengikuti langkah, hasilnya akan sama setiap kali.
Contoh terkenal Lovelace bertujuan menghitung bilangan Bernoulli—sekuens nilai yang muncul di banyak area matematika (misalnya rumus jumlah seperti 1 + 2 + … + n, dan bagian kalkulus). Anda tidak perlu tahu teori di baliknya untuk menghargai mengapa mereka contoh uji yang bagus untuk mesin komputasi awal.
Mereka menantang dengan cara yang tepat:
Dengan kata lain, cukup kompleks untuk membuktikan mesin bisa mengikuti metode terstruktur, tapi tetap rapi untuk dituliskan sebagai langkah.
Pada intinya, algoritma memiliki struktur yang familiar yang masih kita pakai di program hari ini:
Dengan melihatnya seperti ini, Lovelace bukan hanya menunjuk pada sebuah angka yang dihitung—ia menunjukkan cara mengatur perhitungan multi-langkah agar mesin bisa mengeksekusinya tanpa menebak.
Saat orang membicarakan algoritma bilangan Bernoulli Lovelace, mereka sering fokus pada hasil ("program awal") daripada pekerjaan desain yang membuat langkah-langkah dapat diandalkan. Prestasi sebenarnya bukan sekadar mencantumkan operasi—melainkan membentuknya sehingga mesin bisa mengikutinya tanpa improvisasi.
Alih-alih memperlakukan “hitung bilangan Bernoulli” sebagai satu tugas, Catatan memecahnya menjadi bagian-bagian kecil yang dapat diulang dan diverifikasi: menghitung nilai antara, menggabungkannya dalam rumus tertentu, mencatat hasil, lalu melanjutkan ke kasus berikutnya.
Dekomposisi penting karena setiap subtugas bisa divalidasi sendiri. Jika keluaran salah, Anda tidak mendebug “seluruh algoritma”; Anda memeriksa satu bagian.
Komputer mekanis tidak “menyimpan dalam pikiran.” Setiap nilai yang akan dibutuhkan nanti harus disimpan di suatu tempat, dan Catatan berhati-hati tentang itu. Beberapa angka adalah nilai kerja sementara; lainnya adalah hasil akhir yang harus bertahan untuk langkah-langkah berikut.
Ini adalah bentuk awal berpikir tentang state program:
Urutan operasi adalah fitur keamanan. Perhitungan tertentu harus terjadi sebelum yang lain, bukan untuk keindahan, tetapi untuk menghindari penggunaan nilai yang belum siap atau menimpa sesuatu yang masih diperlukan.
Dalam istilah modern, Lovelace merancang alur kontrol sehingga program punya jalur jelas: lakukan A, lalu B, lalu C—karena melakukan B lebih dulu akan diam-diam menghasilkan jawaban yang salah.
Salah satu gagasan paling “modern” yang tersembunyi dalam tabel langkah Lovelace adalah pengulangan: kemampuan melakukan set instruksi yang sama berulang-ulang, bukan karena kebingungan, tetapi karena pengulangan adalah jalan tercepat menuju hasil.
Pengulangan dalam program berarti: ikuti resep langkah kecil, periksa apakah selesai, dan jika belum, jalankan resep yang sama lagi. Intinya, sesuatu berubah setiap kali—seringkali penghitung, posisi dalam tabel, atau nilai yang sedang dibangun—sehingga program bergerak menuju garis akhir.
Dalam notasi Lovelace, Anda dapat melihat ini sebagai kembali terstruktur ke langkah sebelumnya. Alih-alih menulis ulang instruksi identik berkali-kali, ia mendeskripsikan pola dan menunjukkan kapan harus melingkar kembali. Itu adalah benih dari apa yang sekarang kita sebut iterasi.
Jika Anda pernah menulis kode, Anda sudah melihat pola ini sebagai for loop (“ulang N kali”) atau while loop (“ulang sampai kondisi benar”). Tabelnya juga menyiratkan bahan-bahan loop yang familier:
Bayangkan Anda ingin jumlah 1 sampai 5.
total = 0i = 1i ke totali sebesar 1i masih 5 atau kurang, ulangi langkah tambah-dan-tambahIni adalah iterasi dalam istilah sederhana: loop kecil yang memperbarui penghitung dan mengakumulasi hasil. Kontribusi Lovelace bukan hanya apa yang ia hitung—melainkan menunjukkan bahwa struktur pengulangan bisa ditulis dengan jelas sehingga mesin (dan manusia di masa depan) dapat mengeksekusinya dengan andal.
Sebuah prosedur bisa sangat logis di kepala Anda namun tetap mustahil bagi mesin—atau orang lain—untuk diikuti tanpa cara merujuk kuantitas yang berubah. Di sinilah variabel dan notasi menjadi penting.
Anggap variabel sebagai kotak berlabel di atas meja. Labelnya tetap sama, tapi isinya bisa berubah saat Anda bekerja.
Jika menghitung sebuah sekuens, Anda mungkin punya:
Tanpa kotak-kotak itu, Anda terpaksa mendeskripsikan semuanya dalam kalimat panjang (“ambil angka yang baru saja Anda hitung dua langkah lalu…”), yang cepat menjadi kusut.
Dalam Catatan Lovelace, simbol dan label bukan untuk formalitas—mereka ada untuk membuat proses dapat dieksekusi. Notasi yang jelas menjawab pertanyaan praktis:
Ketika prosedur panjang, klarifikasi kecil ini mencegah kesalahan umum: mencampur kuantitas yang mirip.
Penamaan variabel yang baik masih salah satu cara termurah untuk mengurangi bug. Bandingkan x1, x2, x3 dengan current_sum, term_index, dan next_term: set kedua memberi tahu Anda untuk apa kotak-kotak itu. Tipe menambah lapisan keamanan: memutuskan apakah sesuatu adalah bilangan bulat, pecahan, daftar, atau rekaman seperti memilih jenis wadah yang tepat—beberapa kesalahan menjadi mustahil, atau setidaknya lebih mudah dideteksi lebih awal.
Variabel dan notasi mengubah “ide cerdas” menjadi langkah yang dapat diulang dengan benar, oleh siapa saja (termasuk mesin).
Abstraksi berarti fokus pada yang penting dan sengaja menyembunyikan detail yang tidak relevan. Itu beda antara mengatakan “urutkan daftar ini” dan mendeskripsikan setiap pertukaran dan perbandingan secara manual. Catatan Lovelace menunjukkan naluri ini lebih awal: mereka bertujuan menyampaikan metode dengan jelas, tanpa memaksa pembaca terjebak pada detail mekanis mesin.
Ciri mencolok Catatan adalah bagaimana mereka menjaga gagasan inti terpisah dari aksi fisik mesin. Analytical Engine punya “bagaimana”-nya sendiri (roda gigi, store, mill), tetapi Catatan menekankan “apa”: urutan operasi yang diperlukan untuk mencapai hasil.
Pemislahan itu adalah benih dari apa yang sekarang kita sebut desain perangkat lunak:
Saat Anda bisa menjelaskan metode tanpa mengulang mekanika mesin, Anda sudah memperlakukan komputasi sebagai sesuatu yang portabel—bisa diimplementasikan ulang di perangkat keras berbeda atau oleh orang berbeda.
Tabel langkah dalam Catatan mirip “prosedur” awal: set langkah terdefinisi yang bisa diikuti berkali-kali. Kode modern memformalkan ini sebagai fungsi, modul, dan komponen yang dapat digunakan ulang.
Fungsi yang baik melakukan apa yang disajikan Lovelace:
Inilah sebabnya abstraksi bukan tentang menjadi samar—melainkan tentang menjadi berguna. Penggunaan ulang mengikuti dengan alami: setelah metode diungkapkan dengan rapi, Anda bisa memanggilnya lagi dalam konteks baru, menggabungkannya dengan metode lain, dan membangun sistem lebih besar tanpa tenggelam dalam detail.
Ada Lovelace tidak hanya mendeskripsikan apa yang bisa dilakukan Analytical Engine—ia menunjukkan bagaimana membuat prosedur tak ambigu untuk orang lain (atau mesin) mengikutinya. Itulah kekuatan sunyi dari Catatannya: mereka memperlakukan penjelasan sebagai bagian pekerjaan, bukan hiasan.
Salah satu alasan presentasinya terasa modern adalah penggunaan tabel langkah terstruktur. Tabel memaksa keputusan yang bisa disamarkan oleh prosa samar:
Itu mengurangi ambiguitas sama seperti pseudocode hari ini. Anda bisa membaca paragraf dan merasa mengerti—sampai Anda mencoba mengeksekusinya. Tabel langkah membuat jalur eksekusi terlihat, dan itulah yang dituju dokumentasi program yang baik.
Catatan Lovelace menggabungkan tiga hal yang masih kita coba jaga bersama:
Untuk apa program ini (niat)
Bagaimana cara kerjanya (prosedur)
Bagaimana menafsirkan notasi (antarmuka—nama, simbol, asumsi)
Itu cocok dengan komentar, docstring, dan README modern. README menjelaskan tujuan dan konteks. Komentar inline menjelaskan langkah rumit. Docstring mendefinisikan input/output dan kasus tepi. Saat salah satu dari ini hilang, pengguna dibuat menebak—dan menebak adalah tempat asal bug.
Saat mendokumentasikan proses (kode atau bukan), tulislah seolah-olah seseorang akan mereproduksinya tanpa Anda:
Itu bukan kerja ekstra—itu bagaimana sebuah metode menjadi dapat digunakan kembali.
Ada Lovelace sering diperkenalkan dengan julukan berani: “programmer pertama.” Itu singkatan yang berguna, tapi bisa juga mereduksi kebenaran yang lebih menarik. Perdebatan bukan sekadar soal klaim kehormatan—melainkan tentang apa yang kita maksud dengan program, komputer, dan kewenangan.
Jika "programmer" berarti seseorang yang menulis instruksi untuk mesin tujuan-umum, klaim Lovelace kuat. Dalam Catatannya tentang Analytical Engine, ia menggambarkan metode langkah-demi-langkah untuk menghasilkan bilangan Bernoulli—sebuah rencana bagaimana Engine bisa melakukan perhitungan non-trivial.
Namun sejarawan memperdebatkan label itu karena:
Penting memisahkan menciptakan gagasan komputasi dari membangun komputer yang bekerja. Kontribusi besar Babbage adalah arsitektur: mesin yang diusulkan dengan memori ("store"), pengolah ("mill"), dan kontrol lewat kartu berlubang. Kontribusi Lovelace bersifat interpretatif dan ekspresif: ia menjelaskan apa yang dapat direpresentasikan mesin dan bagaimana menulis prosedur sehingga mesin bisa mengikutinya.
Sebuah program tidak lantas berhenti menjadi program karena perangkat kerasnya tidak pernah dikirimkan. Dalam istilah modern, ini seperti menulis perangkat lunak untuk platform teoretis—atau merinci algoritma sebelum chip itu ada.
Cara yang hormat untuk membicarakan era ini adalah melihatnya sebagai kolaborasi lintas peran:
Yang bisa kita katakan dengan pasti: Catatan Lovelace membantu mendefinisikan apa itu pemrograman—bukan sekadar perhitungan, tetapi ekspresi teliti dari proses yang bisa dijalankan mesin.
Catatan Lovelace penting karena menunjukkan cara berpikir ketika mengubah gagasan menjadi rencana yang dapat dieksekusi mesin. Bahkan jika Anda tidak pernah menyentuh kartu berlubang atau roda gigi mekanis, pelajaran intinya masih sesuai dengan desain program modern: beri struktur jelas pada pekerjaan, beri nama dengan hati-hati, gunakan pengulangan dengan sengaja, dan bangun bagian yang dapat digunakan ulang.
Struktur mengalahkan kepandaian: Program lebih mudah dibangun dan dipelihara ketika dipecah menjadi langkah yang punya tujuan jelas. Pendekatan Lovelace mendorong Anda mendesain bentuk solusi sebelum terobsesi pada detail.
Kejelasan adalah fitur: Tabel dan penjelasannya bukan hiasan—mereka bagian dari program. Ketika masa depan-Anda (atau rekan) bisa mengikuti logika dengan cepat, program menjadi lebih andal.
Iterasi adalah alat, bukan trik: Pengulangan (loop) adalah cara menskalakan metode. Kuncinya mendefinisikan apa yang diulang, apa yang berubah tiap kali, dan kapan berhenti.
Abstraksi memungkinkan penggunaan ulang: Jika rangkaian langkah berhasil sekali, Anda seharusnya bisa menggunakannya kembali dengan input berbeda. Itulah benih fungsi, modul, dan pustaka.
Jika Anda pernah menggunakan alur kerja “bangun dengan mendeskripsikannya” — menulis kebutuhan, mengiterasi rencana, lalu menghasilkan perangkat lunak yang bekerja — Anda sudah mengulangi semangat Catatan Lovelace: buat prosedur eksplisit, jaga state jelas, dan dokumentasikan asumsi agar eksekusi dapat diulang. Alatnya baru; disiplinanya bukan.
Itulah salah satu alasan platform vibe-coding seperti Koder.ai cocok dengan cerita ini. Koder.ai memungkinkan Anda membuat aplikasi web, backend, dan mobile lewat antarmuka chat, tetapi prinsip dasarnya tetap: hasil lebih baik ketika Anda menentukan input/output, memberi nama dengan konsisten, dan meminta struktur langkah-demi-langkah (mode perencanaan membantu mengunci “Catatan” sebelum meng-generate atau mengubah kode).
Algoritma "pertama" Ada Lovelace adalah prosedur langkah-demi-langkah (disajikan dalam Catatannya) yang dimaksudkan untuk dijalankan oleh Analytical Engine karya Charles Babbage. Algoritma ini terkenal karena memperlakukan komputasi sebagai urutan operasi yang direncanakan pada nilai yang disimpan, yang sangat mirip dengan pemrograman modern meskipun mesin itu tidak selesai dibangun.
Tulisan ini menekankan ide-ide pemrograman dalam karya Lovelace — cara mengungkapkan metode sehingga dapat dieksekusi, diverifikasi, dan dipahami — bukan untuk merekonstruksi perangkat keras Engine atau menyelesaikan setiap perdebatan sejarah.
Analytical Engine adalah mesin tujuan-umum yang diusulkan yang dirancang untuk:
Arsitektur ini penting karena memisahkan perangkat keras yang mengeksekusi dari program yang menentukan langkah—perbedaan yang masih mendasari komputer modern.
Bilangan Bernoulli muncul di banyak rumus matematika. Mereka adalah contoh yang baik karena setiap nilai baru bergantung pada nilai sebelumnya, sehingga membutuhkan beberapa operasi, penyimpanan sementara, dan langkah yang dapat diulang—tepat jenis pekerjaan terstruktur yang ingin diuji pada mesin yang dapat diprogram.
Tabel langkah memaksa presisi. Ia membuat Anda menentukan:
Itu sebabnya bentuknya mirip pseudocode modern dan membantu orang lain “menjalankan” prosedur tanpa menebak.
Pengulangan adalah bentuk awal iterasi: Anda mendefinisikan satu set langkah kecil, mengubah sesuatu setiap kali lewat (mis. penghitung atau jumlah parsial), dan berhenti ketika kondisi terpenuhi. Dalam kode modern, itu setara dengan for/while yang memiliki:
Mesin tidak bisa mengandalkan konteks atau ingatan seperti manusia. Label atau "variabel" yang jelas memungkinkan Anda melacak:
Ini mengurangi kesalahan paling umum pada prosedur panjang: mencampur aduk kuantitas yang mirip.
Abstraksi memisahkan metode (algoritma) dari mekanika (bagaimana mesin melakukannya). Itu adalah benih dari komponen yang dapat dipakai ulang:
Dalam istilah modern, itulah fungsi dan modul yang membuat sistem bisa diskalakan.
Label itu diperdebatkan karena beberapa alasan:
Kesimpulan aman: Catatan Lovelace membantu merumuskan apa itu pemrograman—menulis prosedur yang tak ambigu agar mesin bisa mengikutinya.
Gunakan pemeriksaan cepat sebelum mulai coding:
Untuk panduan terkait, lihat /blog/how-to-write-better-requirements dan /blog/pseudocode-examples.