Kedengarannya sulit dipercaya, C tidak dilahirkan sebagai manual paperback compang-camping.
Dalam satu atau lain bentuk, bahasa C telah mempengaruhi pembentukan hampir setiap bahasa pemrograman yang dikembangkan sejak 1980-an. Beberapa bahasa seperti C ++, C #, dan Objective C dimaksudkan sebagai keturunan langsung dari C, sementara yang lain hanya mengadopsi dan mengadaptasi sintaksnya. Seorang programmer yang telah beralih dari Java, PHP, Ruby, Python, atau Perl hampir tidak akan mengalami kesulitan dalam memahami program C sederhana, dan dalam pengertian ini C dapat dianggap sebagai lingua franca programmer.
Namun, C tidak muncul entah dari mana sebagai monolit pemrograman tunggal. Sejarah C dimulai di Inggris, dengan kolega Alan Turing dan program catur.
Tuhan Selamatkan Raja
Christopher Strachey telah disebut sebagai "orang pemrograman yang ideal," menurut dokumen panjangnya di majalah Annals of the History of Computing . Ia mendapatkan reputasi ini di University of Manchester Computing Center pada tahun 1951. Strachey berakhir di sana berkat pekerjaannya di komputer di Universitas Ferranti Mark I dan kenalannya dengan Alan Turing dari King's College, Cambridge.
Strachey lahir pada tahun 1916 dari keluarga Inggris yang terhubung dengan baik - pamannya, Lytton Strachey, adalah salah satu pendiri Grup Bloomsbury, dan ayahnya, Oliver Strachey, berperan penting dalam operasi pemecahan kode Sekutu di kedua perang dunia tersebut.
Akan menjadi kejutan bagi profesor Strachey di sekolah swasta dan Universitas Cambridge bahwa Strachey telah menjadi ahli yang diakui dalam pemrograman dan ilmu komputer. Strachey selalu menunjukkan bakat untuk sains, tetapi jarang menerapkannya.
Jika dia memiliki harapan untuk berkarir dalam penelitian ilmiah, dia mendapat pukulan telak oleh hasil ujian akhir yang biasa-biasa saja. Jadi, selama Perang Dunia II, Strachey bekerja untuk sebuah perusahaan elektronik Inggris dan kemudian menjadi guru sekolah, akhirnya berakhir di salah satu sekolah swasta paling bergengsi di London, Harrow.
Pada tahun 1951, Strachey pertama kali mendapat kesempatan untuk bekerja dengan komputer - dia diperkenalkan dengan Mike Wudger dari Laboratorium Fisika Nasional Inggris. Setelah menghabiskan satu hari di akhir pekan Natal untuk mengenal Pilot ACE Lab, di waktu luangnya di Harrow dia menemukan cara mengajar komputer untuk bermain catur. Menurut Martin Campbell-Kelly , yang kemudian menjadi kolega Strachey, "siapa pun dengan lebih banyak pengalaman dan kurang percaya diri akan senang hanya dengan tabel kotak."
Upaya pertama tidak membuahkan hasil: komputer Pilot ACE tidak memiliki cukup memori untuk bermain catur, tetapi itu menunjukkan satu aspek minat Strachey yang terbukti penting untuk pengembangan bahasa yang pada akhirnya akan mengarah ke C. Pada saat komputer terutama kemampuan mereka untuk menyelesaikan persamaan dengan cepat, Strachey lebih tertarik pada kemampuan mereka untuk melakukan masalah logika (seperti yang kemudian dia akui pada tahun 1952 di pertemuan Association for Computing Machinery ).
Musim semi berikutnya, dia mengetahui bahwa komputer Ferranti Mark I telah dipasang di Universitas Manchester. Alan Turing adalah asisten direktur lab komputer di universitas itu. Turing menulis buku teks untuk para pemrogram, dan Strachey tahu betul dari kolaborasinya di Cambridge untuk memintanya.
Pada Juli 1951, Strachey kebetulan mengunjungi Manchester dan secara pribadi berdiskusi dengan Turing tentang program drafnya. Terkesan, Turing menyarankan bahwa sebagai langkah pertama, tulis program yang memungkinkan Ferranti Mark I mensimulasikan dirinya sendiri. Simulator akan memungkinkan pemrogram untuk mengamati langkah demi langkah bagaimana komputer akan menjalankan program. Program "pelacakan" seperti itu akan mengidentifikasi bagian-bagian di mana program tersebut menimbulkan hambatan atau tidak efektif. Pada saat itu, baik siklus memori dan prosesor komputer sangat berharga, jadi ini adalah aspek penting dari pemrograman.
Program penelusuran Strachey berisi lebih dari seribu perintah - pada saat itu program itu adalah program terpanjang yang ditulis untuk Ferranti Mark I. Setelah bekerja semalaman, Strachey dapat menjalankannya, dan setelah selesai, program tersebut, menurut Campbell-Kelly , memainkan himne “Selamatkan Tuhan King ”melalui speaker komputer.
Pencapaian penghobi ini menarik perhatian Lord Halsbury, Managing Director National Research and Development Corporation, yang segera mempekerjakan Strachey untuk mengelola pekerjaan pemerintah guna mempromosikan aplikasi praktis dari universitas ilmu komputer Inggris yang berkembang pesat.
Dalam posisi inilah dia belajar tentang proyek Cambridge yang dijalankan oleh trio programmer bernama David.
David dan Goliath Titan
Pusat Komputasi Universitas Cambridge memiliki fokus yang kuat dalam melayani para ilmuwan. Komputer pertama di Laboratorium Matematika, EDSAC dan EDSAC 2, tersedia bagi para peneliti di seluruh universitas. Mereka menulis program yang dilubangi pada pita kertas dan dimasukkan ke dalam mesin.
Di pusat komputer, kaset yang dilubangi seperti itu dipasang pada tali jemuran dan dieksekusi satu per satu selama jam kerja. Program antrian menunggu ini kemudian dikenal sebagai "antrian pekerjaan," istilah yang masih digunakan sampai sekarang untuk menggambarkan cara yang jauh lebih kompleks dalam mengatur tugas komputasi.
Pada 6:55, Anda dapat melihat "antrian pekerjaan" EDSAC.
Hanya dua tahun setelah EDSAC 2 beroperasi, universitas menyadari bahwa mesin yang jauh lebih kuat akan segera dibutuhkan, dan untuk mengatasi masalah ini mereka harus membeli mainframe komersial. Universitas mempertimbangkan opsi untuk IBM 7090 dan Ferranti Atlas, tetapi tidak mampu membeli kedua mesin ini. Pada tahun 1961, manajer departemen Ferranti Peter Hall mengusulkan agar versi komputer Atlas yang dipreteli dikembangkan dengan University of Cambridge. Cambridge akan mendapatkan prototipe yang disebut Titan, dan Ferranti akan dapat menjual komputer baru tersebut kepada pelanggan yang terlalu mahal untuk Atlas.
Untuk menyediakan layanan komputasi ke seluruh universitas, komputer ini membutuhkan sistem operasi dan setidaknya satu bahasa pemrograman tingkat tinggi.
Hampir seketika, ide untuk memperluas bahasa yang dikembangkan untuk EDSAC 2 ditinggalkan. “Pada awal 1960-an, umumnya ada anggapan bahwa 'kami sedang membangun komputer baru, jadi kami membutuhkan bahasa pemrograman baru,'” kenang David Hartley dalam podcast 2017 . Bersama dengan David Wheeler dan David Barron Hartley berpartisipasi dalam tahap awal pengembangan bahasa pemrograman baru untuk komputer ini.
“Membangun sistem operasi baru tidak bisa dihindari,” kata Hartley, tetapi bukan bahasa pemrograman baru. “Kami pikir kami memiliki kesempatan untuk bereksperimen dengan bahasa baru. Dalam retrospeksi, sepertinya itu adalah keputusan yang sangat bodoh. "
Maurice Wilkes, yang memimpin proyek Titan, percaya bahwa tidak perlu bahasa pemrograman baru. Tugas utama Titan yang dimaksudkan adalah menyediakan layanan komputasi ke Universitas Cambridge, dan untuk itu, akan optimal untuk membuat dan menjalankan mesin secepat mungkin, melengkapinya dengan bahasa yang sudah familier bagi pengguna.
Sebelum menyetujui proposal untuk mengembangkan bahasa baru, Wilkes meminta analisis bahasa pemrograman yang ada. "Kami memilih mereka dengan sangat hati-hati," kenang Hartley, "sehingga dia memutuskan bahwa tidak ada bahasa yang cocok." Menariknya, kelompok kerja Fortran IV bahkan tidak menjangkau pengguna Fortran di Cambridge yang dapat berbicara tentang fitur tambahan yang tersedia dalam rasa Fortran lainnya. Karena itu, seperti kenang Hartley , kelompok itu yakin bahwa "kami dapat merancang dan mengembangkan sesuatu yang jauh lebih baik," tetapi setelah beberapa tahun usaha ini berakhir dengan kegagalan.
Ketiganya telah menyiapkan artikel pada bulan Juni 1962 tentang perlunya bahasa baru, dan, seperti yang dikatakan Hartley, "kami lolos begitu saja."
Bahasa pemrograman baru ini disebut CPL (Cambridge Programming Language), dan pada tahun 1963, pekerjaan sudah dilakukan. Para programmer Cambridge bergabung dengan John Buxton dan Eric Nixon dari University of London, dan singkatan CPL sekarang adalah singkatan dari Combined Programming Language. Proyek itu berkembang, dan Wilkes memutuskan untuk membawa Christopher Strachey untuk memimpinnya. Segera, menurut Campbell-Kelly , orang-orang yang terkait dengan proyek tersebut mulai memecahkan kode CPL sebagai "Bahasa Pemrograman Christopher."
Kelompok peneliti bahasa bertemu di Cambridge atau London, serta di Universitas London, tetapi terkadang mereka bertemu di bengkel rumah kota Kensington tempat Strachey tinggal bersama saudara perempuannya. Ruangan di belakang rumah dilapisi dengan kursi bergaya Victoria, bantal di lantai, dan dindingnya dihiasi dengan potret anggota Bloomsbury Group oleh salah satu kerabat Strachey. Di sanalah Strachey "mengadakan pesta pengadilan", kadang-kadang mengenakan gaun rias, dan, seperti yang diingat David Barron beberapa tahun kemudian, "kami berdebat tentang bagaimana mengubah dunia menjadi lebih baik, dan pada malam hari kami pulang."
Pada saat itu, David Wheeler telah pindah ke proyek lain, meninggalkan lima rekannya: Hartley, Barron, Buxton, Nixon dan Strachey.
Hartley senang mengerjakan CPL: "Sebenarnya itu pekerjaan yang cukup menarik," kenangnya. Pertemuan tersebut agak informal. "Kami membahas berbagai topik dengan sangat panas dan seiring waktu bahkan mulai saling melempar pesawat kertas."
Grup ini memulai dengan spesifikasi ALGOL 60, dengan tujuan menulis bahasa "ideal" yang praktis untuk pengguna yang berbeda, namun tetap estetis dan efisien.
Kesulitan dengan penentuan prioritas segera dimulai. Seperti yang dikatakan David Barron tentang Strachey, "itu tipikal baginya untuk mempertahankan sudut pandangnya pada perbedaan kecil dengan kekuatan yang sama seperti pada poin penting." Salah satu kontroversi kecil adalah penolakan Strachey terhadap tata bahasa konstruksi "IF ... THEN ... ELSE". “Saya tidak dapat membiarkan nama saya dikaitkan dengan rekomendasi untuk menggunakan bahasa Inggris yang salah buta huruf,” - ini, menurut memoar Hartley untuk Annals of the History of Computing , adalah sudut pandangnya. Strachey lebih menyukai "OR", yang bertentangan dengan cara penggunaan "OR" di hampir semua bahasa lain yang ada. Namun, preferensinya menang, dan dalam panduan referensi CPL "ATAU" digunakan di mana pengguna mengharapkan "LAINNYA".
Manual CPL, yang tentunya dapat ditemukan secara online .
Waktu yang berharga juga telah dihabiskan untuk mengembangkan cara menghindari penggunaan tanda bintang untuk menunjukkan operasi perkalian. Dalam hal ini, pertimbangan estetika menyebabkan komplikasi yang memperlambat implementasi bahasa pemrograman praktis karena aturan kompleks harus dikembangkan untuk membedakan antara “3a” yang berarti “3 * a” dan “3a” sebagai nama variabel.
Sementara itu, pengguna Cambridge semakin jengkel dengan kurangnya bahasa pemrograman praktis untuk komputer Atlas baru. Spesifikasi bahasa sebagian besar sudah selesai, tetapi kompilernya belum ada. Kelompok kerja membuat CPL begitu kompleks sehingga upaya awal untuk menulis kompiler dalam kode mesin sangat tidak efektif.
Dimulai dengan promosi
Pada tahun 1965, Strachey pergi ke Massachusetts Institute of Technology (MIT) selama beberapa bulan, dan sekembalinya dia menjadi direktur Kelompok Riset Pemrograman Oxford. Sementara itu, Martin Richards bergabung dengan proyek CPL di Cambridge. Dia mulai mengembangkan versi yang dilucuti dari CPL yang dapat digunakan pengguna. BCPL bahasa ini ("B" untuk "Basic", "simple") membutuhkan kompilator yang efisien.
Saat di MIT, Strachey membantu Martin Richards mendapatkan cuti selama dua tahun di institut tersebut, dan pada tahun 1966 Richards membawa BCPL bersamanya ke Massachusetts di mana dia dapat mengerjakan kompiler.
BCPL adalah bahasa "bootstrap" karena kompilernya mampu melakukan kompilasi sendiri. Pada dasarnya, sebagian kecil dari compiler BCPL ditulis dalam assembly atau kode mesin, dan compiler lainnya ditulis dalam subset BCPL yang sesuai. Bagian dari kompilator yang ditulis dalam BCPL diteruskan ke bagian perakitan, dan program kompilator yang dihasilkan dapat digunakan untuk mengkompilasi program apa pun yang ditulis dalam BCPL.
Kompiler bootstrap sangat menyederhanakan proses porting bahasa dari satu komputer atau sistem operasi ke yang lain. Agar kompiler dapat dijalankan di komputer lain, cukup dengan menulis ulang satu bagian kompiler yang relatif kecil, yang ditulis dalam kode khusus untuk komputer tertentu.
Saat Richards bekerja di MIT pada compiler BCPL, institut tersebut mulai berpartisipasi dalam proyek Multics dengan Bell Labs dan GE. Untuk mendukung proyek tersebut, jaringan dibuat yang menghubungkan MIT dan Bell Labs.
Sementara koneksi jaringan antara dua organisasi secara nominal dimaksudkan untuk membuat Multics lebih mudah untuk dikerjakan, Ken Thompson mengatakan kepada kami bahwa secara sosial dapat diterima untuk "menjelajahi" mainframe MIT mencari proyek lain, dan begitulah cara dia menemukan kode BCPL dan dokumentasi. Dia mengunduhnya ke mainframe Bell Labs dan mulai mengerjakannya. “Saya sedang mencari bahasa untuk melakukan hal-hal yang saya inginkan,” kenang Thompson. "Pemrograman di era sistem operasi berpemilik pada mesin besar ini sangat sulit."
Sekitar waktu percobaan Thompson dengan BCPL, Bell Labs menarik diri dari konsorsium Multics, dan departemen ilmu komputer Thompson untuk sementara waktu kehabisan komputer.
Ketika dia akhirnya mendapatkan komputer itu, itu adalah PDP-7 bekas, tidak terlalu kuat bahkan menurut standar zaman itu. Namun demikian, Thompson berhasil membangun dan menjalankan versi pertama Unix di mesin ini.
PDP-7 memiliki 8192 "kata" dalam memori (kata dalam kasus ini adalah 18 bit - industri belum menstandarkan "byte" 8-bit). Unix menggunakan 4.000 kata pertama, menyisakan 4.000 untuk menjalankan program.
Thompson memeras salinan BCPL-nya (yang juga merupakan CPL yang dipreteli) agar sesuai dengan 4.000 kata dari memori bebas PDP-7. Dalam proses pengompresan, dia meminjam bagian dari bahasa yang dia temui sebagai mahasiswa di University of California di Berkeley. Bahasa SMALGOL ini adalah bagian dari ALGOL 60 yang dirancang untuk berjalan di komputer yang kurang canggih.
Bahasa yang akhirnya digunakan Thompson pada PDP-7 adalah, menurut deskripsinya sendiri, "semantik BCPL dengan banyak sintaks SMALGOL," yang berarti terlihat seperti SMALGOL dan bekerja seperti BCPL. Karena bahasa baru ini hanya terdiri dari aspek-aspek BCPL yang menurut Thompson paling berguna dan sesuai dengan batasan PDP-7, dia memutuskan untuk mempersingkat nama BCPL menjadi hanya "B"
Thompson sebelumnya telah menulis Unix untuk PDP-7 di assembler, tetapi bahkan pada tahun 1969 itu bukanlah cara yang ideal untuk membangun sistem operasi. Pada PDP-7, ini berfungsi karena komputernya cukup mendasar dan Thompson menulis sistem operasi sebagian besar untuk bersenang-senang.
Sistem operasi apa pun yang perlu didukung dan diperbarui oleh banyak pemrogram, atau dijalankan pada perangkat keras yang lebih canggih pada saat itu, perlu ditulis dalam bahasa pemrograman tingkat tinggi.
Jadi ketika Bell Labs memperoleh PDP-11 untuk departemen tersebut pada tahun 1971, Thompson memutuskan sudah waktunya untuk menulis ulang Unix dalam bahasa pemrograman tingkat tinggi. Dia membicarakannya dengan Brian Kernighan di atas panggung di VCF 2019 .
Pada saat yang sama, Dennis Ritchie meminjam B dan mengadaptasinya untuk berjalan di komputer yang lebih canggih. Salah satu aspek pertama yang dia tambahkan ke B lagi adalah kemampuan untuk "mengetik" variabel. Karena memori PDP-7 terdiri dari kata-kata 18-bit, B dapat disederhanakan dengan memperlakukan setiap variabel sebagai salah satu kata memori atau urutan kata yang dirujuk oleh lokasinya dalam memori sistem. Tidak ada bilangan desimal tetap atau floating point, bilangan bulat atau string dalam bahasa tersebut. Seperti yang dikatakan Thompson, "Itu semua hanya kata-kata."
Pendekatan ini efektif pada mesin sederhana dengan sedikit memori dan basis pengguna kecil, tetapi pada sistem yang lebih kompleks dengan program kompleks dan banyak pengguna, pendekatan ini dapat mengarah pada cara spesifik untuk menentukan apakah suatu variabel adalah string atau angka, serta penggunaan memori yang tidak efisien. ...
Menurut edisi kedua History of Programming Languages oleh Thomas Bergin dan Richard Gibson, Ritchie menamakan bahasa yang dimodifikasi ini NB ("B Baru"). Itu diinstal pada mainframe dari Pusat Komputasi Bukit Murray, yang tersedia untuk pengguna melalui Bell Labs.
Biasanya, ketika Thompson memutuskan untuk menulis ulang Unix di Java, dia mulai dengan NB. Tiga upaya pertama berakhir dengan kegagalan, dan "karena keegoisan saya, saya menyalahkan bahasa untuk itu," kenang Thompson sambil menyeringai di VCF.
Setelah setiap kegagalan, Ritchie menambahkan fitur ke NB yang dia dan Ken butuhkan. Dia pernah menambahkan struktur - variabel yang menyimpan banyak nilai individu dengan cara yang koheren atau "terstruktur", setelah itu Thompson dapat menulis Unix dalam bahasa baru ini. Ritchie dan Thompson menganggap penambahan struktur yang tidak ada di B, SMALGOL, BCPL dan CPL perubahan yang cukup signifikan untuk mengubah nama bahasa, dan B menjadi C.
Hidup di bawah tanda C.
Christopher Strachey pada tahun 1955 dengan Ferranti Mark 1 (juga dikenal sebagai Komputer Elektronik Manchester).
C melarikan diri dari Bell Labs dengan cara yang sama seperti Unix. Ini membantu menjadikan PDP-11 dengan cepat menjadi salah satu minikomputer paling sukses di pasaran, tetapi harga Unixlah yang membuatnya paling menarik. Setiap pusat data dengan PDP-11 dapat menginstal Unix di atasnya dengan biaya media dan surat, dan
C datang dengan Unix. Kehadiran C di begitu banyak kampus, menurut Thompson, alasan utama keberhasilannya. Dalam surat itu, dia menulis bahwa "mereka lulus dari banyak orang yang tahu C".
Pendorong lebih lanjut untuk kesuksesan C adalah publikasi The C Programming Language pada tahun 1978 Dennis Ritchie dan Brian Kernighan. Buku kecil dengan 228 halaman menjadi, bahkan menurut standar waktu itu, menjadi pekerjaan yang sangat sederhana dan mudah diakses.
Pengetahuan yang luas tentang sintaks C mempengaruhi perkembangan banyak bahasa berikutnya, sedikit atau tidak ada kemiripan dengan C. Bahasa skrip seperti PHP dan JavaScript mengandung bit notasi pemrograman yang awalnya dirancang oleh Thompson agar sesuai dengan B ke dalam footprint memori kecil dari PDP-7. Misalnya, ini adalah operator penurunan "++" dan "-". Jika Anda hanya memiliki 4.000 kata untuk dikerjakan, mengurangi "x = x + 1" menjadi "x ++" akan menghemat cukup banyak ruang.
Thompson tidak pernah mengira C akan begitu tersebar luas. “Ada banyak bahasa yang sangat berbeda, sangat menarik dan berguna di sekitar,” kata Thompson. "Naluri estetika saya mengatakan kepada saya bahwa satu bahasa tidak dapat mencakup semua kebutuhan di alam semesta."
Seperti Unix, C sukses yang lahir dari kegagalan. Dalam kedua kasus, programmer mengambil bagian terbaik dari proyek yang gagal karena terlalu banyak yang diminta dari mereka. Multics, yang melahirkan Unix, digunakan pada puncaknya hanya di sekitar 80 komputer, dan CPL, yang akhirnya mengarah pada penciptaan C, tidak pernah selesai, dan para peneliti Cambridge meninggalkannya pada tahun 1967.
Ketika Christopher Strachey memulai kelompok riset pemrograman di Oxford, dia berkata, "membagi pekerjaan menjadi praktis dan teoretis adalah artifisial dan berbahaya."
CPL yang seharusnya menggabungkan sisi praktis dan teoritis, ternyata terlalu teoritis dalam pelaksanaannya. Kelompok kerja CPL tidak mencoba membuat program di CPL.
Namun, bahkan jika Strachey tidak dapat mencapai sintesis antara teori dan praktik di CPL, sikapnya sudah pasti benar. "C ditulis untuk menulis Unix," kenang Thompson. Dan "Unix dibuat agar kita semua bisa menulis program."
Periklanan
Server murah untuk tugas apa pun - itu tentang server epik kami . Buat paket Anda sendiri dengan beberapa klik, konfigurasi maksimum - 128 CPU core, 512 GB RAM, 4000 GB NVMe.