Lompat ke isi

Pemrograman komputer

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
(Dialihkan dari Computer programming)

Pemrograman komputer adalah penyusunan urutan instruksi, yang disebut program, yang dapat diikuti oleh komputer untuk melaksanakan tugas.[1][2] Pemrograman biasanya melibatkan perancangan dan penerapan algoritme, yaitu spesifikasi prosedur secara bertahap, dengan menulis kode dalam satu atau lebih bahasa pemrograman.

Saat ini, pemrogram umumnya menggunakan bahasa pemrograman tingkat tinggi yang lebih mudah dipahami manusia daripada kode mesin, yang dieksekusi secara langsung oleh unit pemrosesan pusat. Pemrograman yang mahir biasanya memerlukan keahlian dalam beberapa bidang yang berbeda, termasuk pengetahuan tentang domain aplikasi, rincian bahasa pemrograman dan pustaka kode generik, algoritme khusus, serta logika formal.

Tugas tambahan yang menyertai dan berkaitan dengan pemrograman mencakup analisis kebutuhan, pengujian, debugging (menyelidiki dan memperbaiki masalah), penerapan sistem build, dan pengelolaan artefak yang dihasilkan, seperti kode mesin program. Meskipun hal-hal tersebut terkadang dianggap sebagai bagian dari pemrograman, istilah pengembangan perangkat lunak sering digunakan untuk keseluruhan proses yang lebih luas ini—sedangkan istilah pemrograman, implementasi, dan pengodean digunakan untuk penulisan dan penyuntingan kode itu sendiri. Pengembangan perangkat lunak terkadang disebut rekayasa perangkat lunak, terutama ketika menggunakan metode formal atau mengikuti proses desain rekayasa.

Image
Ada Lovelace, yang catatannya ditambahkan pada akhir makalah Luigi Menabrea, memuat algoritme pertama yang dirancang untuk diproses oleh Mesin Analitis milik Charles Babbage. Ia sering diakui sebagai pemrogram komputer pertama dalam sejarah.

Perangkat terprogram telah ada selama berabad-abad. Pada awal abad ke-9, sebuah pengurut musik yang dapat diprogram ditemukan oleh bersaudara Banu Musa dari Persia, yang mendeskripsikan pemain seruling mekanis otomatis dalam Book of Ingenious Devices.[3][4] Pada tahun 1206, insinyur Arab Al-Jazari menemukan mesin drum yang dapat diprogram, yang memungkinkan sebuah otomaton mekanis musikal memainkan berbagai ritme dan pola drum melalui pasak dan nok.[5][6] Pada tahun 1801, alat tenun Jacquard dapat menghasilkan tenunan yang sepenuhnya berbeda dengan mengubah "program"—serangkaian kartu karton yang dilubangi.

Algoritme pemecahan kode juga telah ada selama berabad-abad. Pada abad ke-9, matematikawan Arab Al-Kindi mendeskripsikan sebuah algoritme kriptografi untuk menguraikan kode terenkripsi dalam A Manuscript on Deciphering Cryptographic Messages. Ia memberikan deskripsi pertama tentang kriptoanalisis melalui analisis frekuensi, yang merupakan algoritme pemecahan kode paling awal.

Program komputer pertama umumnya ditanggal pada tahun 1843 ketika matematikawan Ada Lovelace menerbitkan sebuah algoritme untuk menghitung suatu deret bilangan Bernoulli, yang dimaksudkan untuk dijalankan oleh Mesin Analitis milik Charles Babbage.[7] Algoritme tersebut, yang disampaikan melalui catatan pada terjemahan makalah Luigi Federico Menabrea mengenai mesin analitis, terutama dikembangkan oleh Lovelace sebagaimana dapat diketahui dari korespondensinya dengan Babbage. Namun, Charles Babbage sendiri telah menulis sebuah program untuk AE pada tahun 1837.[8][9] Lovelace juga merupakan orang pertama yang melihat penerapan Mesin Analitis yang lebih luas di luar perhitungan matematika.

Image
Data dan instruksi dahulu disimpan pada kartu berlubang eksternal, yang disimpan secara berurutan dan disusun menjadi tumpukan program.

Pada tahun 1880-an, Herman Hollerith menemukan konsep penyimpanan data dalam bentuk yang dapat dibaca mesin.[10] Kemudian, sebuah panel kendali (papan colok) yang ditambahkan pada Tabulator Tipe I miliknya pada tahun 1906 memungkinkannya diprogram untuk berbagai pekerjaan, dan pada akhir 1940-an, peralatan catatan unit seperti IBM 602 dan IBM 604 diprogram melalui panel kendali dengan cara yang serupa, demikian pula komputer elektronik pertama. Namun, dengan diperkenalkannya konsep komputer dengan program tersimpan pada tahun 1949, program dan data disimpan serta dimanipulasi dengan cara yang sama di dalam memori komputer.[11] Kursus pemrograman praktis yang mengintegrasikan perangkat keras dan perangkat lunak telah terbukti meningkatkan retensi dan keterlibatan mahasiswa teknik tahun pertama.[12]

Bahasa mesin

[sunting | sunting sumber]

Kode mesin merupakan bahasa program awal, yang ditulis dalam set instruksi mesin tertentu, sering kali menggunakan notasi biner. Tidak lama kemudian, bahasa rakitan dikembangkan sehingga pemrogram dapat menulis instruksi dalam format tekstual (misalnya, ADD X, TOTAL), menggunakan singkatan untuk kode operasi dan nama yang bermakna untuk alamat memori. Namun, karena bahasa rakitan tidak lebih dari sekadar notasi berbeda untuk bahasa mesin, dua mesin dengan set instruksi berbeda juga memiliki bahasa rakitan yang berbeda.

Image
Panel kendali berkabel untuk IBM 402 Accounting Machine. Kabel menghubungkan aliran pulsa dari pembaca kartu ke penghitung dan logika internal lainnya, hingga akhirnya ke pencetak.

Bahasa kompilator

[sunting | sunting sumber]

Bahasa tingkat tinggi membuat proses pengembangan program menjadi lebih sederhana dan mudah dipahami, serta tidak terlalu terikat pada perangkat keras yang mendasarinya. Alat pertama yang berkaitan dengan kompilator, A-0 System, dikembangkan pada tahun 1952[13] oleh Grace Hopper, yang juga menciptakan istilah "compiler".[14][15] FORTRAN, bahasa tingkat tinggi pertama yang digunakan secara luas dan memiliki implementasi fungsional, muncul pada tahun 1957,[16] dan banyak bahasa lain segera dikembangkan—khususnya COBOL yang ditujukan untuk pengolahan data komersial, dan Lisp untuk penelitian komputer.

Bahasa yang dikompilasi ini memungkinkan pemrogram menulis program dalam istilah yang secara sintaksis lebih kaya dan lebih mampu melakukan abstraksi kode, sehingga memudahkan penargetan berbagai set instruksi mesin melalui deklarasi kompilasi dan heuristik. Kompilator memanfaatkan kemampuan komputer untuk mempermudah pemrograman[16] dengan memungkinkan pemrogram menentukan perhitungan dengan memasukkan rumus menggunakan notasi infiks.

Entri kode sumber

[sunting | sunting sumber]

Program pada awalnya terutama dimasukkan menggunakan kartu berlubang atau pita kertas. Pada akhir 1960-an, perangkat penyimpanan data dan terminal komputer menjadi cukup murah sehingga program dapat dibuat dengan mengetikkannya langsung ke komputer. Penyunting teks juga dikembangkan sehingga perubahan dan koreksi dapat dilakukan jauh lebih mudah dibandingkan dengan kartu berlubang.

Pemrograman modern

[sunting | sunting sumber]

Persyaratan kualitas

[sunting | sunting sumber]

Apa pun pendekatan yang digunakan dalam pengembangan, program akhir harus memenuhi beberapa sifat mendasar. Sifat-sifat berikut termasuk yang paling penting:[17] [18]

  • Keandalan: seberapa sering hasil program benar. Hal ini bergantung pada kebenaran konseptual algoritme dan minimisasi kesalahan pemrograman, seperti kesalahan dalam pengelolaan sumber daya (misalnya buffer overflow dan race condition) serta kesalahan logika (seperti pembagian dengan nol atau kesalahan off-by-one).
  • Ketangguhan: seberapa baik program mengantisipasi masalah akibat kesalahan (bukan bug). Hal ini mencakup situasi seperti data yang salah, tidak sesuai, atau rusak; tidak tersedianya sumber daya yang diperlukan seperti memori, layanan sistem operasi, dan koneksi jaringan; kesalahan pengguna; serta pemadaman listrik yang tidak terduga.
  • Kegunaan: ergonomi program, yaitu kemudahan seseorang dalam menggunakan program untuk tujuan yang dimaksud atau, dalam beberapa kasus, untuk tujuan yang tidak terduga. Masalah-masalah ini dapat menentukan keberhasilan atau kegagalan program bahkan terlepas dari masalah lainnya. Hal ini mencakup berbagai elemen tekstual, grafis, dan terkadang perangkat keras yang meningkatkan kejelasan, sifat intuitif, koherensi, dan kelengkapan antarmuka pengguna program.
  • Portabilitas: cakupan perangkat keras komputer dan platform sistem operasi tempat kode sumber suatu program dapat dikompilasi/diinterpretasikan dan dijalankan. Hal ini bergantung pada perbedaan fasilitas pemrograman yang disediakan oleh berbagai platform, termasuk sumber daya perangkat keras dan sistem operasi, perilaku yang diharapkan dari perangkat keras dan sistem operasi, serta ketersediaan kompilator khusus platform (dan terkadang pustaka) untuk bahasa kode sumber.
  • Keterpeliharaan: kemudahan suatu program dimodifikasi oleh pengembang saat ini atau masa depan untuk melakukan perbaikan atau penyesuaian, memperbaiki bug dan celah keamanan, atau menyesuaikannya dengan lingkungan baru. Praktik yang baik[19] selama pengembangan awal memberikan perbedaan dalam hal ini. Kualitas ini mungkin tidak langsung terlihat oleh pengguna akhir, tetapi dapat secara signifikan memengaruhi nasib suatu program dalam jangka panjang.
  • Efisiensi/kinerja: ukuran sumber daya sistem yang dikonsumsi program (waktu prosesor, ruang memori, perangkat lambat seperti cakram, lebar pita jaringan, dan sampai batas tertentu bahkan interaksi pengguna): semakin sedikit, semakin baik. Hal ini juga mencakup pengelolaan sumber daya secara cermat, misalnya membersihkan berkas sementara dan menghilangkan kebocoran memori. Hal ini sering dibahas dalam kaitannya dengan bahasa pemrograman yang dipilih. Meskipun bahasa memang memengaruhi kinerja, bahkan bahasa yang lebih lambat seperti Python dapat mengeksekusi program secara instan dari sudut pandang manusia. Kecepatan, penggunaan sumber daya, dan kinerja penting bagi program yang menjadi hambatan sistem, tetapi penggunaan waktu pemrogram secara efisien juga penting dan berkaitan dengan biaya: perangkat keras tambahan mungkin lebih murah.

Penggunaan pengujian otomatis dan fitness function dapat membantu mempertahankan beberapa atribut yang disebutkan di atas.[20]

Keterbacaan kode sumber

[sunting | sunting sumber]

Dalam pemrograman komputer, keterbacaan mengacu pada kemudahan pembaca manusia dalam memahami tujuan, alur kendali, dan operasi kode sumber. Hal ini memengaruhi aspek-aspek kualitas di atas, termasuk portabilitas, kegunaan, dan yang paling penting, keterpeliharaan.

Image
Kode sumber dalam lingkungan pengembangan terintegrasi

Keterbacaan penting karena pemrogram menghabiskan sebagian besar waktunya untuk membaca, mencoba memahami, menggunakan kembali, dan memodifikasi kode sumber yang sudah ada, bukan menulis kode sumber baru. Kode yang sulit dibaca sering menyebabkan bug, ketidakefisienan, dan kode duplikat. Sebuah penelitian menemukan bahwa beberapa transformasi keterbacaan sederhana membuat kode menjadi lebih pendek dan secara drastis mengurangi waktu yang diperlukan untuk memahaminya.[21]

Mengikuti gaya pemrograman yang konsisten sering membantu keterbacaan. Namun, keterbacaan lebih dari sekadar gaya pemrograman. Banyak faktor, yang hanya sedikit atau bahkan tidak berkaitan dengan kemampuan komputer untuk mengompilasi dan mengeksekusi kode secara efisien, berkontribusi terhadap keterbacaan.[22] Beberapa faktor tersebut meliputi:

Aspek presentasi dari hal ini (seperti indentasi, pemisah baris, penyorotan warna, dan sebagainya) sering ditangani oleh penyunting kode sumber, tetapi aspek konten mencerminkan bakat dan keterampilan pemrogram.

Berbagai bahasa pemrograman visual juga telah dikembangkan dengan tujuan mengatasi masalah keterbacaan melalui pendekatan nontradisional terhadap struktur dan tampilan kode. Lingkungan pengembangan terintegrasi (IDE) bertujuan mengintegrasikan semua bantuan tersebut. Teknik seperti refactoring dapat meningkatkan keterbacaan.

Kompleksitas algoritmik

[sunting | sunting sumber]

Bidang akademik dan praktik rekayasa pemrograman komputer berkaitan dengan menemukan dan menerapkan algoritme yang paling efisien untuk kelas masalah tertentu. Untuk tujuan ini, algoritme diklasifikasikan ke dalam orde menggunakan notasi Big O, yang menyatakan penggunaan sumber daya—seperti waktu eksekusi atau konsumsi memori—dalam kaitannya dengan ukuran masukan. Pemrogram ahli memahami berbagai algoritme yang telah mapan beserta kompleksitasnya masing-masing dan menggunakan pengetahuan tersebut untuk memilih algoritme yang paling sesuai dengan keadaan.

Metodologi

[sunting | sunting sumber]

Langkah pertama dalam sebagian besar proses pengembangan perangkat lunak formal adalah analisis kebutuhan, yang diikuti dengan pengujian untuk menentukan pemodelan nilai, implementasi, dan penghapusan kegagalan (debugging). Terdapat banyak pendekatan berbeda untuk masing-masing tugas tersebut. Salah satu pendekatan yang populer untuk analisis kebutuhan adalah analisis use case. Banyak pemrogram menggunakan bentuk Pengembangan perangkat lunak tangkas (Agile), yaitu berbagai tahap pengembangan perangkat lunak formal lebih terintegrasi ke dalam siklus pendek yang berlangsung beberapa minggu, bukan bertahun-tahun. Terdapat banyak pendekatan dalam proses pengembangan perangkat lunak.

Teknik pemodelan yang populer mencakup Analisis dan Desain Berorientasi Objek (OOAD) serta Arsitektur Berbasis Model (MDA). Bahasa Pemodelan Terpadu (UML) merupakan notasi yang digunakan untuk OOAD maupun MDA.

Teknik serupa yang digunakan untuk desain basis data adalah Pemodelan Hubungan-Entitas (Pemodelan ER).

Teknik implementasi mencakup bahasa imperatif (berorientasi objek atau prosedural), bahasa fungsional, dan bahasa pemrograman logika.

Mengukur penggunaan bahasa

[sunting | sunting sumber]

Sangat sulit menentukan bahasa pemrograman modern apa yang paling populer. Metode untuk mengukur popularitas bahasa pemrograman mencakup menghitung jumlah iklan pekerjaan yang menyebutkan bahasa tersebut,[23] jumlah buku yang terjual dan kursus yang mengajarkan bahasa tersebut (hal ini melebih-lebihkan pentingnya bahasa yang lebih baru), serta perkiraan jumlah baris kode yang telah ditulis dalam bahasa tersebut (hal ini meremehkan jumlah pengguna bahasa bisnis seperti COBOL).

Beberapa bahasa populer untuk menulis jenis aplikasi tertentu, sedangkan bahasa lainnya digunakan untuk menulis berbagai jenis aplikasi. Misalnya, COBOL masih banyak digunakan di pusat data perusahaan[24] yang sering menggunakan komputer mainframe besar, Fortran dalam aplikasi teknik, bahasa skrip dalam pengembangan Web, dan C dalam perangkat lunak tertanam. Banyak aplikasi menggunakan campuran beberapa bahasa dalam pembuatannya. Bahasa baru umumnya dirancang berdasarkan sintaks bahasa sebelumnya dengan menambahkan fungsi baru, (misalnya C++ menambahkan orientasi objek pada C, dan Java menambahkan pengelolaan memori dan bytecode pada C++, tetapi sebagai akibatnya kehilangan efisiensi dan kemampuan untuk melakukan manipulasi tingkat rendah).

Debugging

[sunting | sunting sumber]
Image
Bug aktual pertama yang diketahui menyebabkan masalah pada komputer adalah seekor ngengat yang terperangkap di dalam sebuah komputer mainframe Harvard, yang dicatat dalam buku log bertanggal 9 September 1947.[25] Istilah "bug" sudah menjadi istilah umum untuk cacat perangkat lunak ketika serangga ini ditemukan.

Debugging merupakan tugas yang sangat penting dalam proses pengembangan perangkat lunak karena adanya cacat dalam program dapat menimbulkan konsekuensi signifikan bagi penggunanya. Beberapa bahasa lebih rentan terhadap jenis kesalahan tertentu karena spesifikasinya tidak mengharuskan kompilator melakukan pemeriksaan sebanyak bahasa lainnya. Penggunaan alat analisis kode statis dapat membantu mendeteksi beberapa masalah yang mungkin terjadi. Biasanya, langkah pertama dalam debugging adalah mencoba mereproduksi masalah. Hal ini dapat menjadi tugas yang tidak sederhana, misalnya pada proses paralel atau beberapa bug perangkat lunak yang tidak biasa. Lingkungan pengguna tertentu dan riwayat penggunaan juga dapat menyulitkan reproduksi masalah.

Setelah bug berhasil direproduksi, masukan program mungkin perlu disederhanakan agar lebih mudah di-debug. Misalnya, ketika bug pada kompilator dapat menyebabkannya berhenti secara tidak normal saat mengurai berkas sumber yang besar, penyederhanaan kasus pengujian sehingga hanya tersisa beberapa baris dari berkas sumber asli dapat cukup untuk mereproduksi kerusakan yang sama. Metode coba-coba/bagi-dan-taklukkan diperlukan: pemrogram akan mencoba menghapus beberapa bagian dari kasus pengujian asli dan memeriksa apakah masalah masih ada. Ketika melakukan debugging pada GUI, pemrogram dapat mencoba melewati beberapa interaksi pengguna dari deskripsi masalah asli dan memeriksa apakah tindakan yang tersisa cukup untuk memunculkan bug. Scripting dan penggunaan breakpoint juga merupakan bagian dari proses ini.

Debugging sering dilakukan dengan IDE. Debugger mandiri seperti GDB juga digunakan, dan biasanya menyediakan lingkungan visual yang lebih terbatas, umumnya menggunakan antarmuka baris perintah. Beberapa penyunting teks seperti Emacs memungkinkan GDB dipanggil melalui penyunting tersebut untuk menyediakan lingkungan visual. Sebuah penelitian menemukan bahwa pengajaran bahasa terstruktur seperti Pascal meningkatkan akurasi debugging dan pemahaman keseluruhan pemrogram pemula.[26]

Bahasa pemrograman

[sunting | sunting sumber]

Bahasa pemrograman yang berbeda mendukung gaya pemrograman yang berbeda (disebut paradigma pemrograman). Pemilihan bahasa yang digunakan dipengaruhi oleh banyak pertimbangan, seperti kebijakan perusahaan, kesesuaian dengan tugas, ketersediaan paket pihak ketiga, atau preferensi pribadi. Idealnya, bahasa pemrograman yang paling sesuai untuk tugas yang sedang dikerjakan akan dipilih. Pertukaran dari kondisi ideal ini melibatkan pencarian jumlah pemrogram yang cukup yang menguasai bahasa tersebut untuk membangun tim, ketersediaan kompilator untuk bahasa tersebut, serta efisiensi eksekusi program yang ditulis dalam bahasa tersebut. Bahasa membentuk suatu spektrum perkiraan dari "tingkat rendah" hingga "tingkat tinggi"; bahasa "tingkat rendah" biasanya lebih berorientasi pada mesin dan lebih cepat dieksekusi, sedangkan bahasa "tingkat tinggi" lebih abstrak dan lebih mudah digunakan tetapi dieksekusi lebih lambat. Biasanya lebih mudah menulis kode dalam bahasa "tingkat tinggi" daripada dalam bahasa "tingkat rendah".

Bahasa pemrograman sangat penting bagi pengembangan perangkat lunak. Bahasa-bahasa tersebut merupakan blok pembangun bagi semua perangkat lunak, dari aplikasi paling sederhana hingga yang paling canggih.

Allen Downey, dalam bukunya How To Think Like A Computer Scientist, menulis:

Detailnya berbeda-beda dalam setiap bahasa, tetapi beberapa instruksi dasar muncul di hampir setiap bahasa:
  • Masukan: Mengumpulkan data dari papan ketik, berkas, atau perangkat lain.
  • Keluaran: Menampilkan data pada layar atau mengirimkan data ke berkas atau perangkat lain.
  • Aritmetika: Melakukan operasi aritmetika dasar seperti penjumlahan dan perkalian.
  • Eksekusi bersyarat: Memeriksa kondisi tertentu dan menjalankan urutan pernyataan yang sesuai.
  • Pengulangan: Melakukan suatu tindakan secara berulang, biasanya dengan beberapa variasi.

Banyak bahasa komputer menyediakan mekanisme untuk memanggil fungsi yang disediakan oleh pustaka bersama. Jika fungsi dalam sebuah pustaka mengikuti konvensi waktu jalan yang sesuai (misalnya metode untuk meneruskan argumen), fungsi tersebut dapat ditulis dalam bahasa lain. Peringkat tahunan oleh IEEE Spectrum menganalisis popularitas bahasa pemrograman menggunakan metrik seperti lowongan pekerjaan, tren pencarian, dan aktivitas pengembang.[27]

Belajar pemrograman

[sunting | sunting sumber]

Belajar pemrograman memiliki sejarah panjang yang berkaitan dengan standar dan praktik profesional, inisiatif dan kurikulum akademik, serta buku dan materi komersial bagi pelajar, pembelajar mandiri, penghobi, dan pihak lain yang ingin membuat atau menyesuaikan perangkat lunak untuk penggunaan pribadi. Sejak 1960-an, belajar pemrograman memiliki karakteristik sebuah gerakan populer, dengan munculnya disiplin akademik, pemimpin inspiratif, identitas kolektif, dan strategi untuk mengembangkan gerakan serta mendorong perubahan kelembagaan.[28] Melalui cita-cita sosial dan agenda pendidikan tersebut, belajar mengode menjadi penting bukan hanya bagi ilmuwan dan insinyur, tetapi juga bagi jutaan warga yang mulai percaya bahwa membuat perangkat lunak bermanfaat bagi masyarakat dan anggotanya. Partisipasi dalam pendidikan ilmu komputer telah berkembang secara signifikan dalam beberapa tahun terakhir, dengan jutaan siswa memperoleh pengalaman pemrograman dasar melalui sekolah dan platform daring.[29]

Pada tahun 1957, terdapat sekitar 15.000 pemrogram komputer yang bekerja di AS, angka yang mencakup 80% pengembang aktif di dunia. Pada tahun 2014, terdapat sekitar 18,5 juta pemrogram di dunia, yang terdiri atas 11 juta orang yang dapat dianggap profesional dan 7,5 juta pelajar atau penghobi.[30] Sebelum munculnya Internet komersial pada pertengahan 1990-an, sebagian besar pemrogram mempelajari pembuatan perangkat lunak melalui buku, majalah, kelompok pengguna, dan metode pengajaran informal, dengan pendidikan akademik dan pelatihan perusahaan memainkan peran penting bagi pekerja profesional.[31]

Buku pertama yang berisi petunjuk khusus tentang cara memprogram komputer mungkin adalah Preparation of Programs for an Electronic Digital Computer (1951) karya Maurice Wilkes, David Wheeler, dan Stanley Gill. Buku tersebut menawarkan kumpulan subrutin umum untuk menangani operasi dasar pada EDSAC, salah satu komputer dengan program tersimpan pertama di dunia.

Ketika bahasa tingkat tinggi muncul, bahasa-bahasa tersebut diperkenalkan melalui banyak buku dan materi yang menjelaskan kata kunci bahasa, pengelolaan alur program, cara bekerja dengan data, dan konsep lainnya. Bahasa-bahasa tersebut mencakup FLOW-MATIC, COBOL, FORTRAN, ALGOL, Pascal, BASIC, dan C. Contoh buku pengantar pemrograman awal dari masa tersebut adalah A Primer of Programming for Digital Computers (1959) karya Marshal H. Wrubel, yang memuat petunjuk langkah demi langkah untuk mengisi lembar pengodean, membuat kartu berlubang, dan menggunakan kata kunci dalam sistem FORTRAN awal milik IBM.[32] A Guide to FORTRAN Programming (1961) karya Daniel McCracken memperkenalkan FORTRAN kepada khalayak yang lebih luas, termasuk pelajar dan pekerja kantor.

Pada tahun 1961, Alan Perlis menyarankan agar semua mahasiswa tahun pertama di Carnegie Technical Institute mengikuti mata kuliah pemrograman komputer.[33] Sarannya diterbitkan dalam jurnal teknis populer Computers and Automation, yang kemudian menjadi sumber informasi rutin bagi pemrogram profesional.

Pemrogram segera memiliki berbagai teks pembelajaran yang dapat digunakan. Referensi pemrogram mencantumkan kata kunci dan fungsi yang berkaitan dengan suatu bahasa, sering kali dalam urutan alfabetis, serta informasi teknis mengenai kompilator dan sistem terkait. Contoh awalnya adalah Programmers' Reference Manual: the FORTRAN Automatic Coding System for the IBM 704 EDPM (1956) dari IBM.

Seiring waktu, genre panduan pemrogram berkembang, yang menyajikan fitur suatu bahasa dalam format tutorial atau langkah demi langkah. Banyak buku pengantar awal dimulai dengan program yang dikenal sebagai "Hello, World", yang menyajikan program terpendek yang dapat dibuat pengembang dalam sistem tertentu. Panduan pemrogram kemudian membahas topik inti seperti deklarasi variabel, tipe data, rumus, pengendalian alur, fungsi yang ditentukan pengguna, manipulasi data, dan topik lainnya.

Panduan pemrogram awal yang berpengaruh mencakup BASIC Programming (1967) karya John G. Kemeny dan Thomas E. Kurtz, The Pascal User Manual and Report (1971) karya Kathleen Jensen dan Niklaus Wirth, serta The C Programming Language (1978) karya Brian W. Kernighan dan Dennis Ritchie. Buku serupa untuk khalayak populer (tetapi dengan gaya yang jauh lebih ringan) mencakup My Computer Loves Me When I Speak BASIC (1972) karya Bob Albrecht, A Book on C (1984) karya Al Kelley dan Ira Pohl, serta C for Dummies (1994) karya Dan Gookin.

Di luar buku pengantar khusus bahasa, terdapat banyak buku dan jurnal akademik yang memperkenalkan praktik pemrograman profesional. Banyak di antaranya dirancang untuk mata kuliah universitas dalam ilmu komputer, rekayasa perangkat lunak, atau disiplin terkait. The Art of Computer Programming (1968 dan edisi berikutnya) karya Donald Knuth menyajikan ratusan algoritme komputasi beserta analisisnya. The Elements of Programming Style (1974), karya Brian W. Kernighan dan P. J. Plauger, membahas gaya pemrograman, yaitu gagasan bahwa program seharusnya ditulis bukan hanya untuk memenuhi kebutuhan kompilator tetapi juga agar dapat dibaca manusia. Programming Pearls (1986) karya Jon Bentley memberikan nasihat praktis mengenai seni dan keahlian pemrograman dalam konteks profesional dan akademik. Teks yang secara khusus dirancang untuk pelajar mencakup Oh Pascal! (1982) karya Doug Cooper dan Michael Clancy, Data Structures and Algorithms (1983) karya Alfred Aho, serta Learning with Logo (1983) karya Daniel Watt.

Penerbit teknis

[sunting | sunting sumber]

Ketika komputer pribadi menjadi produk pasar massal, ribuan buku perdagangan dan majalah berusaha mengajarkan pengguna profesional, penghobi, dan pengguna biasa untuk menulis program komputer. Contoh sumber pembelajaran tersebut mencakup BASIC Computer Games, Microcomputer Edition (1978), karya David Ahl; Programming the Z80 (1979), karya Rodnay Zaks; Programmer's CP/M Handbook (1983), karya Andy Johnson-Laird; C Primer Plus (1984), karya Mitchell Waite dan The Waite Group; The Peter Norton Programmer's Guide to the IBM PC (1985), karya Peter Norton; Advanced MS-DOS (1986), karya Ray Duncan; Learn BASIC Now (1989), karya Michael Halvorson dan David Rygymr; Programming Windows (1992 dan edisi berikutnya), karya Charles Petzold; Code Complete: A Practical Handbook for Software Construction (1993), karya Steve McConnell; serta Tricks of the Game-Programming Gurus (1994), karya André LaMothe.

Industri perangkat lunak PC mendorong terciptanya banyak penerbit buku yang menawarkan buku pengantar dan tutorial pemrograman, serta buku bagi pengembang perangkat lunak tingkat lanjut.[34] Penerbit tersebut mencakup Addison-Wesley, IDG, Macmillan Inc., McGraw-Hill, Microsoft Press, O'Reilly Media, Prentice Hall, Sybex, Ventana Press, Waite Group Press, Wiley, Wrox Press, dan Ziff-Davis.

Majalah komputer dan jurnal juga menyediakan materi pembelajaran bagi pemrogram profesional dan penghobi. Sebagian daftar sumber tersebut mencakup Amiga World, Byte (magazine), Communications of the ACM, Computer (magazine), Compute!, Computer Language (magazine), Computers and Electronics, Dr. Dobb's Journal, IEEE Software, Macworld, PC Magazine, PC/Computing, dan UnixWorld.

Pembelajaran digital / sumber daya daring

[sunting | sunting sumber]

Antara tahun 2000 dan 2010, penerbit buku dan majalah komputer mengalami penurunan yang signifikan sebagai penyedia pengajaran pemrograman, karena pemrogram beralih ke sumber daya Internet untuk memperluas akses mereka terhadap informasi. Pergeseran ini mendorong munculnya produk dan mekanisme digital baru untuk mempelajari keterampilan pemrograman. Selama masa transisi, buku digital dari penerbit memindahkan informasi yang sebelumnya disampaikan dalam bentuk cetak kepada khalayak baru dan berkembang.[35]

Sumber daya Internet penting untuk belajar mengode mencakup blog, buku,[36] wiki, video, basis data daring, jurnal,[37][38] situs berlangganan, makalah konferensi,[39] dan situs web khusus yang berfokus pada keterampilan pengodean. Dalam beberapa tahun terakhir, platform seperti LeetCode, HackerRank, dan freeCodeCamp menjadi populer untuk mempelajari pemrograman, berlatih tantangan pengodean, dan mempersiapkan wawancara teknis. Sumber daya komersial baru mencakup video YouTube, tutorial Lynda.com (kemudian LinkedIn Learning), Khan Academy, Codecademy, GitHub, W3Schools, Codewars, dan banyak kamp pelatihan pengodean.

Sebagian besar sistem pengembangan perangkat lunak dan mesin permainan menyediakan sumber daya bantuan daring yang kaya, termasuk lingkungan pengembangan terintegrasi (IDE), bantuan peka konteks, API, dan sumber daya digital lainnya. Kit pengembangan perangkat lunak (SDK) komersial juga menyediakan kumpulan alat pengembangan perangkat lunak dan dokumentasi dalam satu paket yang dapat dipasang.

Organisasi komersial dan nirlaba menerbitkan situs web pembelajaran bagi pengembang, membuat blog, serta menyediakan umpan berita dan sumber daya media sosial mengenai pemrograman. Perusahaan seperti Apple, Microsoft, Oracle, Google, dan Amazon membangun situs web perusahaan yang menyediakan dukungan bagi pemrogram, termasuk sumber daya seperti Microsoft Developer Network (MSDN). Gerakan kontemporer seperti Hour of Code (Code.org) menunjukkan bagaimana belajar pemrograman telah dikaitkan dengan strategi pembelajaran digital, agenda pendidikan, dan filantropi perusahaan.

Pemrogram

[sunting | sunting sumber]

Pemrogram komputer adalah orang yang menulis perangkat lunak komputer. Pekerjaan mereka biasanya meliputi:

Meskipun pemrograman telah ditampilkan di media sebagai bidang yang agak matematis, beberapa penelitian menunjukkan bahwa pemrogram yang baik memiliki keterampilan yang kuat dalam bahasa manusia alami, dan bahwa belajar mengode serupa dengan mempelajari bahasa asing.[40][41]

Lihat juga

[sunting | sunting sumber]

Referensi

[sunting | sunting sumber]
  1. ↑ Bebbington, Shaun (2014). "Apa itu pengodean". Tumblr. Diarsipkan dari versi aslinya tanggal April 29, 2020. Diakses tanggal Maret 3, 2014.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  2. ↑ Bebbington, Shaun (2014). "Apa itu pemrograman". Tumblr. Diarsipkan dari versi aslinya tanggal April 29, 2020. Diakses tanggal Maret 3, 2014.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  3. ↑ Koetsier, Teun (2001). "On the prehistory of programmable machines: musical automata, looms, calculators". Mechanism and Machine Theory. 36 (5). Elsevier: 589–603. doi:10.1016/S0094-114X(01)00005-2.
  4. ↑ Kapur, Ajay; Carnegie, Dale; Murphy, Jim; Long, Jason (2017). "Loudspeakers Optional: A history of non-loudspeaker-based electroacoustic music". Organised Sound. 22 (2). Cambridge University Press: 195–205. doi:10.1017/S1355771817000103. ISSN 1355-7718.
  5. ↑ Fowler, Charles B. (Oktober 1967). "The Museum of Music: A History of Mechanical Instruments". Music Educators Journal. 54 (2): 45–49. doi:10.2307/3391092. JSTOR 3391092. S2CID 190524140.
  6. ↑ Noel Sharkey (2007), A 13th Century Programmable Robot, University of Sheffield
  7. ↑ Fuegi, J.; Francis, J. (2003). "Lovelace & Babbage and the Creation of the 1843 'notes'". IEEE Annals of the History of Computing. 25 (4): 16. Bibcode:2003IAHC...25d..16F. doi:10.1109/MAHC.2003.1253887.
  8. ↑ Rojas, R. (2021). "The Computer Programs of Charles Babbage". IEEE Annals of the History of Computing. 43 (1): 6–18. Bibcode:2021IAHC...43a...6R. doi:10.1109/MAHC.2020.3045717.
  9. ↑ Rojas, R. (2024). "The First Computer Program" (PDF). Communications of the ACM. 67 (6): 78–81. doi:10.1145/3624731.
  10. ↑ da Cruz, Frank (Maret 10, 2020). "Columbia University Computing History – Herman Hollerith". Columbia University. Columbia.edu. Diarsipkan dari versi aslinya tanggal April 29, 2020. Diakses tanggal April 25, 2010.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  11. ↑ "Memory & Storage | Timeline of Computer History | Computer History Museum". www.computerhistory.org. Diarsipkan dari versi aslinya tanggal Mei 27, 2021. Diakses tanggal Juni 3, 2021.
  12. ↑ Lumpp, Janet K.; Lovely, Jennifer; Letellier, Laura M.P.E. (2019). Instructional use of computers in a hands-on programming course for first-year engineering students. ASEE Annual Conference and Exposition.
  13. ↑ Ridgway, Richard (1952). "Compiling routines". Proceedings of the 1952 ACM national meeting (Toronto) on - ACM '52. hlm. 1–5. doi:10.1145/800259.808980. ISBN 9781450379250. S2CID 14878552. {{cite book}}: Ketidakcocokan ISBN / tanggal
  14. ↑ Maurice V. Wilkes. 1968. Computers Then and Now. Journal of the Association for Computing Machinery, 15(1):1–7, January. p. 3 (a comment in brackets added by editor), "(I do not think that the term compiler was then [1953] in general use, although it had in fact been introduced by Grace Hopper.)"
  15. ↑ The World's First COBOL Compilers Diarsipkan 13 Oktober 2011 di Wayback Machine
  16. 1 2 Bergstein, Brian (Maret 20, 2007). "Fortran creator John Backus dies". NBC News. Diarsipkan dari versi aslinya tanggal April 29, 2020. Diakses tanggal April 25, 2010.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  17. ↑ "NIST To Develop Cloud Roadmap". InformationWeek. November 5, 2010. Computing initiative seeks to remove barriers to cloud adoption in security, interoperability, portability and reliability.{{cite magazine}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  18. ↑ "What is it based on". Computerworld. April 9, 1984. hlm. 13. Is it based on ... Reliability Portability. Compatibility{{cite news}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  19. ↑ "Programming 101: Tips to become a good programmer - Wisdom Geek". Wisdom Geek (dalam bahasa American English). Mei 19, 2016. Diarsipkan dari versi aslinya tanggal Mei 23, 2016. Diakses tanggal Mei 23, 2016.
  20. ↑ Fundamentals of Software Architecture: An Engineering Approach. O'Reilly Media. 2020. ISBN 978-1492043454.
  21. ↑ Elshoff, James L.; Marcotty, Michael (1982). "Improving computer program readability to aid modification". Communications of the ACM. 25 (8): 512–521. doi:10.1145/358589.358596. S2CID 30026641.
  22. ↑ Multiple (wiki). "Readability". Docforge. Diarsipkan dari versi aslinya tanggal April 29, 2020. Diakses tanggal Januari 30, 2010.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  23. ↑ Enticknap, Nicholas (September 11, 2007). "SSL/Computer Weekly IT salary survey: finance boom drives IT job growth". Diarsipkan dari versi aslinya tanggal Oktober 26, 2011. Diakses tanggal Juni 24, 2009.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  24. ↑ Mitchell, Robert (Mei 21, 2012). "The Cobol Brain Drain". Computer World. Diarsipkan dari versi aslinya tanggal Februari 12, 2019. Diakses tanggal Mei 9, 2015.
  25. ↑ "Photograph courtesy Naval Surface Warfare Center, Dahlgren, Virginia, from National Geographic Sept. 1947". Juli 15, 2020. Diarsipkan dari versi aslinya tanggal November 13, 2020. Diakses tanggal November 10, 2020.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  26. ↑ Stone, Dan N.; Jordan, Eleanor W.; Wright, M. Keith (1990). "The impact of Pascal education on debugging skill". International Journal of Man-Machine Studies. 33 (1): 81–95. doi:10.1016/S0020-7373(05)80116-6.
  27. ↑ "Top Programming Languages 2024". IEEE Spectrum. Diakses tanggal Januari 20, 2025.
  28. ↑ Halvorson, Michael J. (2020). Code Nation: Personal Computing and the Learn to Program Movement in America. New York, NY: ACM Books. hlm. 3–6.
  29. ↑ "2024 State of Computer Science Education". Code.org. Diakses tanggal Januari 20, 2025.
  30. ↑ 2014 Worldwide Software Developer and ICT-Skilled Worker Estimates. Framingham, MA: International Data Corporation. 2014.
  31. ↑ Ensmenger, Nathan (2010). The Computer Boys Take Over: Computers, Programmers, and the Politics and Technical Expertise. Cambridge, MA: The MIT Press.
  32. ↑ Halvorson, Michael J. (2020). Code Nation: Personal Computing and the Learn to Program Movement in America. New York, NY: ACM Books. hlm. 80.
  33. ↑ Perlis, Alan (1961). "The role of the digital computer in the university". Computers and Automation 10, 4 and 4B. hlm. 10–15.
  34. ↑ Halvorson, Michael J. (2020). Code Nation: Personal Computing and the Learn to Program Movement in America. New York, NY: ACM Books. hlm. 352.
  35. ↑ Halvorson, Michael J. (2020). Code Nation: Personal Computing and the Learn to Program Movement in America. New York, NY: ACM Books. hlm. 365–368.
  36. ↑ Stemkoski, L., & Pascale, M. (2021). Developing Graphics Frameworks with Python and OpenGL. Taylor & Francis. Taylor & Francis. ISBN 978-0-367-72180-0.{{cite book}}: Pemeliharaan CS1: Banyak nama: daftar penulis (link)
  37. ↑ Berssanette, J. H., & de Francisco, A. C. (Agustus 2022). "Cognitive Load Theory in the Context of Teaching and Learning Computer Programming: A Systematic Literature Review". IEEE Transactions on Education. 65 (3): 440–449. Bibcode:2022ITEdu..65..440B. doi:10.1109/TE.2021.3127215.{{cite journal}}: Pemeliharaan CS1: Banyak nama: daftar penulis (link)
  38. ↑ Kinnett, Seth J.; Shinedling, Tatum; Sunset, Ben (Juli 1, 2025). "Adventure RPG: A Text Adventure Game for an Introductory Java Programming Course". Journal of Information Systems Education. 36 (3): 209–223. doi:10.62273/ASHE6341.
  39. ↑ Zaffalon, F.; Prisco, A.; De Souza, R.; Teixeira, D.; Paes, W.; Evald, P.; Tonin, N.; Devincenzi, S.; Botelho, S. (2022). A Recommender System of Computer Programming Exercises based on Student's Multiple Abilities and Skills Model. hlm. 1–8. doi:10.1109/FIE56618.2022.9962646. ISBN 978-1-6654-6244-0.
  40. ↑ Prat, Chantel S.; Madhyastha, Tara M.; Mottarella, Malayka J.; Kuo, Chu-Hsuan (Maret 2, 2020). "Relating Natural Language Aptitude to Individual Differences in Learning Programming Languages". Scientific Reports (dalam bahasa Inggris). 10 (1): 3817. Bibcode:2020NatSR..10.3817P. doi:10.1038/s41598-020-60661-8. ISSN 2045-2322. PMC 7051953. PMID 32123206.
  41. ↑ "To the brain, reading computer code is not the same as reading language". MIT News | Massachusetts Institute of Technology (dalam bahasa Inggris). Desember 15, 2020. Diakses tanggal Juli 29, 2023.

Bacaan lebih lanjut

[sunting | sunting sumber]
  • A.K. Hartmann, Practical Guide to Computer Simulations, Singapura: World Scientific (2009)
  • A. Hunt, D. Thomas, dan W. Cunningham, The Pragmatic Programmer. From Journeyman to Master, Amsterdam: Addison-Wesley Longman (1999)
  • Brian W. Kernighan, The Practice of Programming, Pearson (1999)
  • Weinberg, Gerald M., The Psychology of Computer Programming, New York: Van Nostrand Reinhold (1971)
  • Edsger W. Dijkstra, A Discipline of Programming, Prentice-Hall (1976)
  • O.-J. Dahl, E.W.Dijkstra, C.A.R. Hoare, Structured Programming, Academic Press (1972)
  • David Gries, The Science of Programming, Springer-Verlag (1981)

Pranala luar

[sunting | sunting sumber]

Templat:Kualitas perangkat lunak