Pelajari bagaimana gagasan program tersimpan—yang sering dikaitkan dengan John von Neumann—membuat perangkat lunak dapat digunakan ulang, memungkinkan komputer tujuan-umum, dan melahirkan pemrograman modern.

Di jantung komputasi modern ada pertanyaan sederhana: apa yang memungkinkan satu mesin melakukan banyak tugas berbeda tanpa dibangun ulang setiap kali? Komputer elektronik awal bisa menghitung dengan cepat, tetapi “mengganti pekerjaan” sering berarti mengubah pengaturan fisik mesin. Ide program tersimpan adalah titik balik yang membuat komputer benar-benar dapat diprogram.
Sebuah komputer dengan program tersimpan menyimpan instruksi untuk sebuah tugas (program) di jenis memori internal yang sama dengan data yang diolah program itu. Alih-alih menyambung ulang perangkat keras atau mengatur panel secara manual, Anda dapat memuat kumpulan instruksi baru ke memori dan menjalankan tugas berbeda.
Sekarang ini terdengar jelas, tetapi ini adalah pergeseran mendasar:
Ini bukan sekadar rasa ingin tahu sejarah. Konsep program tersimpan menjelaskan mengapa “perangkat lunak” ada sebagai hal yang terpisah dari “perangkat keras,” dan mengapa memperbarui sebuah perangkat hari ini bisa membuka fitur baru tanpa mengganti chip di dalamnya.
Di bagian berikutnya, kita akan menelusuri masalah yang dihadapi komputer awal, apa yang diubah pendekatan program tersimpan, orang-orang dan dokumen yang memperjelas ide itu (termasuk laporan EDVAC yang terkenal), serta bagaimana istilah “arsitektur von Neumann” menjadi representasi desain yang banyak dipakai.
Meskipun nama John von Neumann sangat terkait dengan komputasi program tersimpan, penghargaan dibagi di antara tim dan era yang lebih luas. Banyak peneliti sedang berkonvergensi pada ide serupa saat membangun komputer elektronik praktis pertama. Artikel ini menjaga konteks itu agar pembaca memahami bagaimana gagasan itu cepat menyebar dan menjadi model default bagi sebagian besar komputer berikutnya.
Sebelum ide program tersimpan, banyak komputer awal tidak “menjalankan perangkat lunak” seperti yang kita maksud sekarang. Mereka mampu menghitung dengan kecepatan mengesankan, tetapi memberi tahu mereka apa yang harus dilakukan sering berarti mengubah mesin itu sendiri secara fisik.
Pendekatan umum adalah menggunakan papan colokan, kabel sambungan, dan panel sakelar. Operator menghubungkan kabel antar soket, mengatur baris sakelar, dan kadang mengatur unit waktu sehingga sinyal tiba dalam urutan yang tepat. “Program” bukan berkas yang Anda muat—melainkan diagram sambungan sementara.
Pengaturan ini bekerja, tetapi membawa biaya tersembunyi: setiap tugas baru adalah proyek teknik mini. Jika Anda ingin mengubah urutan operasi (tambah, kali, banding, loop), Anda mungkin harus memindahkan puluhan atau ratusan sambungan. Satu kabel yang salah tempat bisa menciptakan kesalahan halus yang sulit didiagnosis, karena logika didistribusikan di sambungan perangkat keras alih-alih ditulis sebagai langkah yang dapat dibaca.
Mengonfigurasi ulang bisa memakan waktu berjam-jam atau berhari-hari, terutama jika mesin harus dimatikan dengan hati-hati, disambung ulang, dan diuji. Itu berarti fleksibilitas terbatas: mesin-mesin ini sering dijadwalkan untuk satu jenis perhitungan untuk waktu lama karena mengganti pekerjaan sangat mengganggu.
Bayangkan sebuah mesin yang diatur untuk menghitung tabel balistik artileri—perhitungan panjang dan repetitif dengan rumus tetap. Jika peneliti kemudian ingin mesin yang sama menyelesaikan masalah berbeda, seperti menyusun hasil statistik sensus, itu bukan sekadar “sunting program dan jalankan lagi.” Urutan operasi, langkah penyimpanan sementara, dan pemeriksaan kondisional mungkin berbeda semuanya, sehingga memerlukan desain ulang papan colokan dan putaran verifikasi baru.
Dunia inilah yang ingin dilepaskan oleh komputer program tersimpan.
Komputer program tersimpan adalah mesin di mana instruksi (program) berada di memori kerja yang sama dengan data yang digunakan program itu. Dengan kata lain, komputer tidak memperlakukan “apa yang harus dilakukan” sebagai sesuatu yang terpisah dari “apa yang dikerjakan”—keduanya disimpan sebagai pola bit di memori.
Ketika pionir komputer awal berbicara tentang memori, mereka maksudkan penyimpanan internal cepat komputer—yang sekarang kita kaitkan paling dekat dengan RAM. Itu adalah tempat prosesor bisa membaca dan menulis dengan cepat saat berjalan.
Ini berbeda dari penyimpanan jangka panjang seperti hard drive atau SSD. Drive bagus untuk menyimpan berkas saat daya mati, tetapi bukan papan tulis langsung yang digunakan prosesor untuk mengambil instruksi berikutnya dan memperbarui hasil sementara.
Begitu instruksi disimpan di memori, mengganti tugas menjadi jauh lebih sederhana: Anda bisa memuat program baru ke memori dan menjalankannya, tanpa membangun ulang, menyambung ulang, atau mengonfigurasi perangkat keras secara fisik. Mesin tujuan-umum yang sama bisa mengerjakan penggajian di pagi hari dan perhitungan balistik di sore hari—karena “bagaimana” pekerjaan dilakukan hanyalah kumpulan bit yang bisa Anda ganti.
Bayangkan sebuah dapur di mana resep dan bahan disimpan bersama di pantri yang sama. Koki (prosesor) berulang kali mengambil dari pantri (memori) untuk membaca langkah resep berikutnya (instruksi) dan mengambil atau memperbarui bahan (data).
Ingin membuat hidangan lain? Anda tidak merenovasi dapur. Anda cukup mengganti resep—dengan menggunakan meja, oven, dan alat yang sama.
John von Neumann tidak “menemukan komputer,” dan dia tidak sendirian menciptakan ide program tersimpan. Yang ia lakukan—dengan cemerlang—adalah membantu mengubah konsep yang menjanjikan menjadi desain yang dirumuskan dengan jelas dan dapat dibagikan sehingga insinyur dan lab lain bisa membangunnya.
Von Neumann terlibat dalam proyek komputasi masa perang dan pascaperang, memberi nasihat kepada tim dan merapikan struktur logis desain awal. Ia pandai menjelaskan pilihan teknis kompleks dengan cara yang teratur dan mudah dipahami, dan itu penting karena komputasi elektronik awal bergerak cepat dengan banyak kelompok memecahkan masalah serupa secara bersamaan.
Sama pentingnya, ia menulis dan menyebarkan penjelasan berpengaruh tentang bagaimana sebuah komputer bisa menyimpan instruksi program dalam memori yang sama yang dipakai untuk data. Pembingkaian yang jelas ini memudahkan orang lain untuk mendiskusikan, mengajar, dan mereplikasi pendekatan tersebut.
Nama sering melekat bukan pada orang pertama yang punya ide, tetapi pada orang yang penjelasannya menjadi titik rujukan. Tulisan von Neumann banyak dibaca, disalin, dan disitasi—jadi pembaca berikutnya secara wajar mengaitkan organisasi “program tersimpan” dengannya.
Label ini juga menyederhanakan sejarah: lebih mudah mengatakan “arsitektur von Neumann” daripada menyebutkan setiap kontributor dan laporan. Namun singkatan itu bisa mengaburkan apa yang sebenarnya terjadi.
Komputasi elektronik awal adalah usaha kolaboratif yang melibatkan matematikawan, insinyur, dan programmer. Konsep program tersimpan matang melalui diskusi, draf, prototipe, dan revisi di lintas tim. Peran bertahan von Neumann adalah membantu mengkristalkan dan menyebarkan ide—mempercepat adopsinya—daripada membuatnya sendirian.
EDVAC (Electronic Discrete Variable Automatic Computer) adalah salah satu proyek komputer pascaperang awal yang bertujuan melampaui mesin “satu kali pakai”. Sepenting upaya perangkat keras adalah keputusan untuk menuliskan ide desain dalam bentuk yang jelas dan dapat dibagikan. Pada saat itu, pembangunan komputer masih dekat dengan rekayasa eksperimental—pengetahuan hidup di buku catatan lab, rapat, dan kepala beberapa spesialis. Sebuah laporan bisa mengubah wawasan-wawasan terpencar itu menjadi sesuatu yang dapat dibahas, dikritik, dan digunakan ulang oleh tim lain.
First Draft of a Report on the EDVAC (sering disingkat "laporan EDVAC") menguraikan, dalam istilah konseptual yang jelas, ide program tersimpan: sebuah komputer harus menyimpan instruksi program dalam jenis memori internal yang sama dengan data. Memori itu bukan hanya tempat menyimpan angka sementara perhitungan berjalan—ia juga menyimpan langkah-langkah yang memberi tahu mesin apa yang harus dilakukan selanjutnya.
Pembingkaian ini membuat komputer terasa kurang seperti perangkat tujuan tetap dan lebih seperti mesin umum yang bisa “diberi tugas ulang” dengan mengubah apa yang ada di memori. Anda tidak menyambung ulang sistem untuk beralih dari satu tugas ke tugas lain; Anda memuat urutan instruksi yang berbeda.
Selain konsep itu sendiri, laporan membantu menstandarkan cara orang berbicara tentang komputer: memori, kontrol, aritmetika, dan input/output sebagai bagian fungsional terpisah yang bekerja bersama. Memiliki kosa kata bersama dan deskripsi yang banyak dibaca tidak hanya menjelaskan EDVAC—itu memberi bidang yang lebih luas model mental umum untuk membangun, membandingkan, dan memperbaiki komputer program tersimpan.
Sulit menjawab “siapa yang menemukan komputer program tersimpan?” dengan satu nama. Ilmu pengetahuan dan teknik jarang bekerja seperti itu. Gagasan sering berkembang secara paralel, disempurnakan lewat diskusi, dan baru meyakinkan ketika didemonstrasikan dalam perangkat keras yang bekerja.
John von Neumann memang sangat terkait dengan konsep program tersimpan, tetapi kerja awal melibatkan banyak orang dan kelompok:
Sebuah komputer program tersimpan bukan satu wawasan tunggal. Ia menggabungkan (1) lompatan konseptual bahwa instruksi bisa tinggal di memori seperti data, (2) teknik rekayasa untuk membangun memori dan unit kontrol yang andal, dan (3) praktik pemrograman yang membuat desain dapat dipakai. Berbagai orang berkontribusi pada bagian yang berbeda.
Satu alasan lain pengakuan dibagi: mengusulkan ide tidak sama dengan membangun mesin yang bekerja hari demi hari. Laporan awal dan diskusi membuat konsep lebih jelas; prototipe awal dan sistem produksi membuktikan bahwa itu layak. Sejarah yang hati-hati menghargai kedua jenis kontribusi itu—tanpa memaksakan verdict “penemu pertama” yang sederhana.
Ketika orang mengatakan “arsitektur von Neumann,” biasanya mereka menunjuk model sederhana yang banyak diajarkan tentang bagaimana komputer program tersimpan diorganisasikan. Itu bukan merek atau satu mesin sejarah—itu label praktis untuk rencana dasar yang muncul, dalam satu bentuk atau lain, di banyak komputer.
Pada tingkat konseptual, gambarnya terlihat seperti ini:
Ide utamanya adalah CPU tidak memiliki tempat fisik terpisah untuk “program” dibanding “angka.” Ia menarik semua yang dibutuhkan dari memori.
CPU menjalankan program dengan mengulang sebuah loop yang sering digambarkan sebagai fetch–decode–execute:
Deskripsi ini disederhanakan, tetapi menangkap inti: program adalah urutan instruksi yang tersimpan di memori, dan CPU menelusuri langkah-langkahnya.
Meletakkan instruksi dan data dalam memori yang sama membuat komputer tujuan-umum dalam arti yang sangat praktis:
Jadi “arsitektur von Neumann” lebih baik dipahami sebagai singkatan untuk model program tersimpan dengan CPU, memori bersama yang memegang instruksi dan data, dan I/O—sebuah ide yang sangat terkait dengan penjelasan jelas von Neumann, walau cerita awal melibatkan banyak kontributor.
Orang sering membicarakan “von Neumann” dan “Harvard” seolah keduanya filosofi yang saling bersaing. Sebenarnya keduanya adalah dua cara praktis mengatur instruksi program dan data agar komputer dapat mengambil yang dibutuhkan.
Dalam desain bergaya von Neumann, instruksi dan data tinggal dalam memori yang sama dan biasanya lewat jalur utama yang sama ke CPU.
Itu sederhana secara konseptual: program hanyalah byte di memori, bersebelahan dengan angka, teks, dan gambar yang diolahnya. Ini juga membuat komputasi tujuan-umum lebih mudah—perangkat lunak dapat dimuat, diubah, dan disimpan menggunakan mekanisme yang sama seperti data.
Pertukarannya: ketika instruksi dan data berbagi “jalan,” mereka bisa bersaing untuk bandwidth. (Kadang Anda mendengar ini disebut “bottleneck,” tetapi ide intinya adalah berbagi.)
Pendekatan Harvard memisahkan penyimpanan instruksi dari penyimpanan data, sering dengan jalur berbeda untuk mengambil masing‑masing.
Pemecahan ini bisa memudahkan pengambilan instruksi berikutnya sambil juga membaca/menulis data—berguna di sistem kecil dan dapat diprediksi. Contoh sederhana adalah banyak mikrokontroler, di mana kode program mungkin berada di flash sedangkan variabel berada di RAM.
CPU modern sering terlihat “von Neumann” bagi perangkat lunak (satu ruang alamat, satu model program), sementara secara internal mengambil ide seperti Harvard. Contoh umum adalah cache instruksi dan cache data terpisah (I-cache dan D-cache). Bagi program Anda, tetap terasa seperti satu memori, tetapi perangkat keras bisa mengambil kode dan data lebih efisien.
Yang perlu diingat: tidak ada pemenang universal. Von Neumann menekankan kesederhanaan dan fleksibilitas; Harvard menekankan pemisahan dan throughput. Banyak mesin mencampur keduanya untuk menyeimbangkan pemrograman, biaya, daya, dan kecepatan.
Komputer dengan program tersimpan tidak hanya menjalankan perhitungan—ia bisa memuat satu set instruksi dari memori, mengeksekusinya, lalu memuat set lain nanti. Pergeseran itu membuat perangkat lunak dapat digunakan ulang dan dibagikan: sebuah program bisa ditulis sekali, disimpan, disalin, ditingkatkan, dan didistribusikan tanpa menyentuh perangkat keras.
Saat program ada di memori, mesin fisik yang sama bisa melakukan banyak pekerjaan berbeda cukup dengan menukar instruksi yang dibacanya. Itulah arti “tujuan-umum” yang sebenarnya: satu mesin, banyak program. Komputer tidak lagi didefinisikan oleh alur kerja tunggal; ia menjadi platform.
Contoh modern yang mudah dipahami adalah laptop Anda yang menjalankan email, permainan, dan spreadsheet. Di baliknya, ide yang sama: perangkat keras tetap, sementara program tersimpan yang berbeda dimuat dan dijalankan saat Anda mengganti aplikasi.
Begitu instruksi diperlakukan sebagai data dalam memori, menjadi praktis membangun lapisan perangkat lunak yang membantu Anda menulis perangkat lunak:
Alat-alat ini bergantung pada asumsi bahwa program dapat disimpan, dipindahkan, dan dimanipulasi seperti informasi lain. Itulah yang membuat perangkat lunak menjadi ekosistem daripada artefak sekali pakai yang terikat pada pengkabelan tertentu.
Sebuah cara berguna melihat busur panjang: program tersimpan memungkinkan compiler dan OS, yang memungkinkan alat pengembang modern—dan hari ini kita melihat lapisan abstraksi lain di mana Anda bisa mendeskripsikan aplikasi dengan bahasa alami dan alat menghasilkan kode yang berjalan. Misalnya, Koder.ai adalah platform vibe-coding tempat Anda membangun aplikasi web, backend, atau mobile lewat antarmuka chat, memanfaatkan LLM dan workflow agen untuk mempercepat jalur dari niat (“apa yang harus dilakukan?”) ke instruksi yang dapat dieksekusi (kode sumber yang bisa Anda ekspor, deploy, dan rollback lewat snapshot).
Hasilnya tetap siklus kebajikan: program tersimpan membuat alat yang lebih baik menjadi mungkin, dan alat yang lebih baik membuat program yang lebih ambisius menjadi mungkin—mengubah komputer menjadi mesin tujuan-umum yang fleksibel.
Ide program tersimpan membuat komputer fleksibel, tetapi juga menyoroti batas praktis yang masih dibicarakan insinyur: “hambatan von Neumann.” Dalam istilah sehari-hari, ini seperti kemacetan lalu lintas di jalan antara CPU (pekerja) dan memori (gudang).
Dalam desain program tersimpan khas, baik instruksi maupun data tinggal di memori. CPU mengambil sebuah instruksi, lalu mengambil data yang dibutuhkan, lalu menulis hasil—sering di jalur yang sama. Jika jalur itu tidak bisa memindahkan informasi cukup cepat, CPU akan menunggu walau seharusnya bisa menghitung lebih cepat.
Dua faktor terkait membentuk hambatan ini:
CPU mungkin bisa melakukan miliaran operasi per detik, tetapi jika memori tidak dapat memberikan aliran instruksi dan data yang stabil, kinerja dibatasi oleh langkah terlambat: mengambil byte.
Ini adalah pertimbangan rekayasa yang luas, dan komputer modern menggunakan beberapa teknik untuk mengurangi dampaknya:
Pendekatan ini tidak menghilangkan “jalan” dasar, tetapi membantu menjaga arus sehingga CPU lebih banyak bekerja dan lebih sedikit menunggu.
Konsep program tersimpan bukan barang museum—itulah cara komputasi sehari-hari tetap fleksibel. Perangkat Anda tidak perlu “disambung ulang” untuk melakukan sesuatu yang baru; mereka cukup memuat instruksi yang berbeda ke memori dan menjalankannya.
Di ponsel, mengetuk ikon aplikasi membuat sistem operasi memuat kode aplikasi itu dari penyimpanan ke memori, lalu CPU mengeksekusinya. Di laptop, hal yang sama terjadi ketika Anda membuka browser, mengedit dokumen, atau menjalankan game. Di server, terlihat lebih nyata: mesin bisa menjalankan ribuan beban kerja yang berubah—permintaan web, kueri basis data, pekerjaan latar—tanpa mengubah perangkat keras sama sekali.
Bahkan fitur yang kita anggap sebagai “seperti perangkat keras” sering kali didefinisikan perangkat lunak. Routing jaringan, jalur decoding video, peningkatan foto, dan kebijakan manajemen daya sering diperbarui melalui firmware dan perangkat lunak sistem—instruksi baru, perangkat yang sama.
Bahasa seperti Python dan JavaScript biasanya berjalan melalui interpreter atau mesin virtual. Alih-alih CPU langsung mengeksekusi kode sumber Anda, program Anda diterjemahkan menjadi bentuk terstruktur (bytecode atau instruksi internal) yang disimpan di memori dan dijalankan langkah demi langkah. JVM Java, .NET, runtime WebAssembly, dan mesin JavaScript browser semua bergantung pada ini: instruksi menjadi struktur data yang dapat dimuat, dipindah, dan dieksekusi.
Karena instruksi hanyalah informasi, serangan sering mencoba menyelinapkan kode berbahaya melalui data—injeks i kode klasik. Pertahanan seperti proteksi memori, penandatanganan kode, dan wilayah memori yang tidak eksekusi ada untuk mencegah data yang tidak tepercaya diperlakukan sebagai instruksi yang dapat dijalankan.
Semua ini kembali ke janji sentral program tersimpan: fleksibilitas melalui perangkat lunak—perilaku baru pada perangkat keras yang sama.
Saat melihat sebuah komputer (atau membaca spesifikasi), pertanyaan-pertanyaan ini membantu mengenali model dasarnya:
Jika Anda ingin lebih banyak tulisan bersahabat seperti ini, jelajahi /blog.
Catatan: Jika Anda bereksperimen dengan cara modern mengubah “instruksi” menjadi sistem yang berjalan—baik dengan menulis kode langsung atau menggunakan platform build berbasis chat seperti Koder.ai—pertimbangkan untuk mendokumentasikan apa yang Anda pelajari. Koder.ai juga menawarkan program earn-credits untuk konten yang dipublikasikan dan referal, yang bisa menjadi cara praktis mendanai lebih banyak eksperimen dan tutorial.
Komputer dengan program tersimpan menyimpan instruksi program dalam memori internal yang sama dengan data yang diproses instruksi tersebut. Untuk mengganti tugas, Anda memuat kumpulan instruksi yang berbeda ke memori alih-alih mengubah sambungan atau konfigurasi perangkat keras secara fisik.
Sebelum ide program tersimpan, banyak mesin “diprogram” menggunakan papan colokan (plugboard), kabel sambungan, dan pengaturan sakelar. Mengubah urutan operasi bisa memakan waktu berjam-jam atau berhari-hari untuk menyambung ulang dan menguji kembali, dan satu sambungan yang salah bisa memperkenalkan kesalahan yang sulit ditemukan.
Dalam konteks ini, “memori” berarti penyimpanan kerja cepat komputer (yang paling mirip dengan RAM modern) yang dapat dibaca dan ditulis CPU saat berjalan. Ini berbeda dari penyimpanan jangka panjang (seperti disk/SSD), yang digunakan untuk menyimpan program dan berkas saat daya mati.
Laporan EDVAC menjelaskan secara jelas organisasi di mana instruksi dan data berbagi memori internal yang sama, serta memberikan kosakata yang berguna untuk membicarakan bagian-bagian komputer (memori, kontrol, aritmetika, input/output). Kejelasan ini memudahkan tim lain untuk berdiskusi, membandingkan, dan membangun sistem serupa lebih cepat.
Nama von Neumann melekat sebagian besar karena deskripsinya dibaca dan disitasi secara luas, bukan karena dia satu-satunya kontributor. Pendekatan program tersimpan berkembang dari komunitas yang lebih luas (insinyur, matematikawan, dan programmer awal) yang mengerjakan masalah serupa pada waktu yang sama.
"Arsitektur von Neumann" umumnya merujuk pada model dengan:
Ini adalah label pengajaran yang praktis untuk organisasi program tersimpan, bukan klaim tentang satu mesin historis atau penemu tunggal.
Dalam desain bergaya von Neumann, instruksi dan data berbagi satu memori (seringkali satu jalur utama ke CPU). Dalam desain Harvard, penyimpanan instruksi dipisahkan dari penyimpanan data (sering dengan jalur terpisah).
Banyak sistem modern menggabungkan keduanya—misalnya satu model alamat ke perangkat lunak, tetapi cache instruksi dan data terpisah secara internal.
“Hambatan von Neumann” adalah batas kinerja yang muncul ketika CPU dan memori berbagi jalur terbatas untuk memindahkan instruksi dan data. Mitigasi umum meliputi cache, prefetching, dan paralelisme (misalnya banyak core), yang mengurangi waktu tunggu tetapi tidak menghilangkan batasan dasar.
Karena program hanyalah informasi yang dapat dimuat ke memori, Anda bisa mengubah perilaku dengan mengganti perangkat lunak tanpa mengganti chip. Itulah sebabnya ponsel atau laptop yang sama dapat menjalankan banyak aplikasi, dan pembaruan firmware/OS bisa menambah fitur tanpa merancang ulang perangkat keras.
Karena instruksi direpresentasikan sebagai data di memori, penyerang kadang mencoba menyelundupkan kode berbahaya melalui data — misalnya injeksi kode. Pertahanan modern termasuk proteksi memori (wilayah non-eksekusi), penandatanganan kode, dan kontrol lain yang memisahkan “data yang boleh dibaca” dari “kode yang boleh dijalankan.”