Mekanisme
Antikythera dari Yunani kuno adalah kalkulator menggunakan persneling dari
berbagai ukuran dan konfigurasi untuk menentukan operasi, yang dilacak siklus
Metonik masih digunakan di bulan-ke-surya kalender, dan yang konsisten untuk
menghitung tanggal olimpiade . Al-Jazari dibangun Automata diprogram pada tahun
1206.
Salah satu sistem yang digunakan dalam perangkat ini adalah penggunaan pasak dan Cams ditempatkan ke drum kayu di lokasi tertentu, yang secara berurutan akan memicu tuas yang pada gilirannya dioperasikan instrumen perkusi. Output dari perangkat ini adalah drumer kecil bermain berbagai ritme dan pola drum. The Jacquard Loom, Joseph Marie Jacquard yang dikembangkan pada tahun 1801, menggunakan serangkaian karton kartu dengan menekan lubang di dalamnya.
Salah satu sistem yang digunakan dalam perangkat ini adalah penggunaan pasak dan Cams ditempatkan ke drum kayu di lokasi tertentu, yang secara berurutan akan memicu tuas yang pada gilirannya dioperasikan instrumen perkusi. Output dari perangkat ini adalah drumer kecil bermain berbagai ritme dan pola drum. The Jacquard Loom, Joseph Marie Jacquard yang dikembangkan pada tahun 1801, menggunakan serangkaian karton kartu dengan menekan lubang di dalamnya.
Pola lubang pola yang mewakili alat tenun
harus mengikuti menenun kain. Alat tenun bisa menghasilkan tenun yang sama
sekali berbeda dengan menggunakan kumpulan kartu yang berbeda. Charles Babbage
mengadopsi penggunaan kartu menekan sekitar tahun 1830 untuk mengendalikan
Analytical Engine. Program komputer pertama ditulis untuk Analytical Engine
oleh matematikawan Ada Lovelace untuk menghitung urutan Bilangan Bernoulli. Sintesis
perhitungan numerik, operasi dan output telah ditentukan, bersama dengan cara
untuk mengatur dan masukan instruksi dengan cara yang relatif mudah bagi
manusia untuk hamil dan menghasilkan, menyebabkan perkembangan modern
pemrograman komputer. Pengembangan pemrograman komputer dipercepat melalui
Revolusi Industri. Pada akhir 1880-an, Herman Hollerith menemukan rekaman data
pada media yang kemudian dapat dibaca oleh mesin.
Sebelum
menggunakan mesin dibaca dari media, di atas, telah untuk kontrol, bukan data.
"Setelah beberapa percobaan awal dengan kertas pita, ia menetap di kartu
menekan ..." Untuk memproses kartu menekan ini, pertama kali dikenal
sebagai "kartu Hollerith" dia menciptakan tabulator, dan mesin
keypunch. Ketiga penemuannya dasar dari industri pengolahan informasi modern.
Pada tahun 1896 ia mendirikan Tabulating Machine Company (yang kemudian menjadi
inti dari IBM). Penambahan panel kontrol (plugboard) ke 1906 Tipe I Tabulator
memungkinkannya untuk melakukan pekerjaan yang berbeda tanpa harus secara fisik
dibangun kembali. Pada akhir 1940-an, ada berbagai mesin panel kontrol
diprogram, disebut catatan unit peralatan, untuk melakukan pengolahan data
tugas.
Data dan
instruksi dapat disimpan pada kartu punched eksternal, yang disimpan dalam
rangka dan disusun dalam deck. Penemuan arsitektur von Neumann memungkinkan
program komputer untuk disimpan dalam memori komputer. Program awal harus susah
payah dibuat dengan menggunakan instruksi (operasi dasar) dari mesin tertentu,
sering kali dalam notasi biner. Setiap model komputer mungkin akan menggunakan
instruksi yang berbeda (bahasa mesin) untuk melakukan tugas yang sama.
Kemudian, perakitan bahasa tersebut dikembangkan yang memungkinkan programmer
menentukan setiap instruksi dalam format teks, singkatan memasukkan kode untuk
setiap operasi, bukan menetapkan sebuah nomor dan alamat dalam bentuk simbolik
(misalnya, ADD X, JUMLAH).
Memasuki sebuah program dalam bahasa assembly
biasanya lebih nyaman, lebih cepat, dan kurang rentan terhadap kesalahan
manusia daripada menggunakan bahasa mesin, tetapi karena bahasa assembly adalah
sedikit lebih dari satu notasi yang berbeda untuk bahasa mesin, setiap dua
mesin dengan instruksi yang berbeda set juga memiliki perakitan yang berbeda
bahasa. Pada tahun 1954, FORTRAN diciptakan, melainkan tingkat pertama bahasa
pemrograman tinggi untuk memiliki implementasi fungsional, dibandingkan dengan
hanya desain di atas kertas [9] [10] (Sebuah bahasa tingkat tinggi adalah,
dalam istilah yang sangat umum,. bahasa pemrograman yang memungkinkan
programmer untuk menulis program dalam istilah yang lebih abstrak dari
instruksi bahasa assembly, yaitu pada tingkat abstraksi "lebih
tinggi" daripada bahasa assembly.) Ini memungkinkan programmer untuk
menentukan perhitungan dengan memasukkan formula secara langsung (misalnya Y =
X * 2 + 5 * X + 9).
Program
teks, atau sumber, diubah menjadi instruksi mesin menggunakan program khusus
yang disebut kompilator, yang diterjemahkan program FORTRAN ke dalam bahasa
mesin. Bahkan, nama FORTRAN adalah singkatan dari "Formula
Translation". Banyak bahasa lainnya dikembangkan, termasuk beberapa
program untuk komersial, seperti COBOL. Program itu sebagian besar masih masuk
menggunakan kartu punched atau pita kertas. (Lihat pemrograman komputer di era
kartu punch). Pada akhir 1960-an, perangkat penyimpanan data dan terminal
komputer menjadi cukup murah bahwa program dapat dibuat dengan mengetikkan
langsung ke dalam komputer. Teks editor tersebut dikembangkan yang memungkinkan
perubahan dan perbaikan harus dilakukan jauh lebih mudah dibandingkan dengan kartu
berlubang. (Biasanya, kesalahan dalam meninju kartu berarti bahwa kartu harus
dibuang dan yang baru menekan untuk menggantikannya.) Ketika waktu telah
berkembang, komputer telah membuat lompatan raksasa di bidang kekuatan
prosesor. Ini telah membawa bahasa pemrograman baru yang lebih disarikan dari
hardware.
Meskipun
bahasa tingkat tinggi biasanya dikenakan biaya overhead yang lebih besar,
peningkatan kecepatan komputer modern telah membuat penggunaan bahasa ini jauh
lebih praktis daripada di masa lalu. Bahasa ini semakin disarikan biasanya
lebih mudah untuk belajar dan memungkinkan programmer untuk mengembangkan
aplikasi jauh lebih efisien dan dengan kode sumber kurang. Namun, bahasa
tingkat tinggi masih praktis untuk beberapa program, seperti yang di mana
tingkat rendah kontrol perangkat keras diperlukan atau di mana kecepatan
pemrosesan maksimum adalah penting.
Sepanjang
paruh kedua abad kedua puluh, pemrograman adalah karier yang menarik di
sebagian besar negara maju. Beberapa bentuk pemrograman telah lepas pantai
semakin tunduk pada outsourcing (impor perangkat lunak dan jasa dari negara
lain, biasanya dengan upah rendah), membuat keputusan karir pemrograman di
negara maju lebih rumit, sementara meningkatkan peluang ekonomi di daerah
kurang berkembang. Tidak jelas seberapa jauh kecenderungan ini akan berlanjut
dan seberapa dalam dampak akan programmer upah dan kesempatan.