Musim gugur ini Andrei Terekhov, Kepala Departemen Pemrograman Sistem di Matmekh, Universitas Negeri St. Petersburg, Profesor, Doktor Fisika dan Matematika, memberi tahu rekan-rekan kami tentang sejarah bahasa pemrograman populer dan penetrasi mereka ke Uni Soviet. Bersama dengan Andrei Nikolaevich, kami mempersiapkan, berdasarkan ceramahnya, materi tentang bagaimana berbagai bahasa melintasi Tirai Besi, bagaimana diterjemahkan ke dalam arsitektur yang berbeda, bagaimana beberapa dari mereka menjadi mode. Tren umum dan kesan pribadi - untuk semua orang yang ingin mendapatkan gambaran umum tentang sejarah masalah.
Bagi yang lebih suka menonton atau mendengarkan, video ceramah diposting di sini .
Pemrograman dalam kode
Mesin elektronik pertama yang benar-benar disebut Electronic Numerical Integrator and Computer dan dibuat pada tahun 1946 oleh orang Amerika. Inti dari komputer semacam itu adalah pemicu, yang pada tahun 1918 ditemukan oleh penduduk Petrograd Mikhail Aleksandrovich Bonch-Bruevich. Tidak seperti Popov, dia bahkan berhasil mengamankan hak atas penemuannya. Sirkuit itu sendiri cukup terkenal: ayah saya, seorang insinyur elektronik militer, menggunakan pemicu ini sebelum perang.
Sudah pada tahun 1949, insinyur Soviet Sergei Alekseevich Lebedev membuat mesin MESM di Kiev. Dia hanya tiga tahun di belakang Amerika, meskipun Kiev hampir hancur total. Lebedev bahkan diberi sebuah gedung di kota Feofaniya - waktu itu masih 30 km dari kota - dimana sebelum perang ada rumah sakit jiwa. Tapi kemudian tidak ada bangunan lain.
Sebuah bangunan di Feofaniya, sekarang sebuah distrik, dan di tahun 1950-an - pinggiran kota Kiev, tempat Sergei Lebedev bekerja.
Untuk komputer pertama ini, orang menulis dalam kode biner. Misalkan program tersebut terlihat seperti ini: 01 100 101 110. Misalkan 01 adalah kode penjumlahan. Kemudian dikatakan di sini: tambahkan kata di alamat 100 dengan kata di alamat 101 dan tulis hasilnya di alamat 110. Secara umum, semuanya jelas, tetapi sebagai orang yang menemukan pemrograman dalam kode, saya akan memberi tahu Anda bahwa ini sangat merepotkan ... Ya, Anda sendiri mungkin memahami ini.
Dari 1964 hingga 1966, saya belajar di sekolah matematika ke-157 dekat Smolny, salah satu sekolah paling terkenal di Leningrad, bukan bawahan RONO, tetapi di Akademi Ilmu Pedagogis. Di sana kami memiliki dua "Ural-1" dan dua teknisi perempuan yang tidak tahu bagaimana memprogramnya, tetapi dapat memperbaiki mesin ini. Saya sendiri juga harus belajar cara memperbaikinya terlebih dahulu, tetapi kemudian kami menulis banyak program berguna di Ural, bahkan untuk ahli geologi kami menghitung sesuatu.
Masalah utama pemrograman dalam kode bukanlah "01 02 03" - mudah diingat. Tetapi jika Anda perlu memasukkan sesuatu di antara dua sel - sesuai dengan logika kerja, sehingga beberapa larik tersinkronisasi - semua alamat di bawah sisipan ini akan di-crawl. Kami harus menulis ulang semuanya, dan yang terpenting, mengisi ulang.
Kami memasukkan program pada film 35 mm, yang kami rekatkan ke dalam cincin jika diperlukan loop. Masuk ke program - tuliskan checksum dengan pensil. Anda masuk lagi: jika checksum cocok, maka semuanya sudah benar. Jika tidak cocok, Anda memasukkannya untuk ketiga kalinya, dan seterusnya sampai turun.
Sangat tidak nyaman sehingga orang-orang dengan cepat datang dengan penggantian simbolis. Alih-alih 01, menjadi mungkin untuk menulis hanya simbol "+", dan bukannya alamat - a, b atau c. Itu adalah bahasa assembly, dengan penerjemah yang sangat sederhana, program tersebut dapat diterjemahkan ke dalam kode mesin. Ini mengambil dua tampilan: pertama, Anda membuat tabel semua pengenal dan alamatnya, yang kedua, Anda mengganti pengidentifikasi dengan alamat, dan hanya itu.
( ). 101? ? . 102? . , , .
John Backus dari Amerika, yang menemukan bahasa FORmula TRANslator pada tahun 1957, membuat revolusi nyata. IBM, tempat dia bekerja, secara umum menemukan banyak hal, termasuk, misalnya, kartu berlubang. Fortran memungkinkan untuk menulis rumus, dan penerjemah pertama dibuat darinya, jauh lebih rumit daripada penerjemah dari bahasa assembly. Artinya, orang dapat menulis program normal dalam bahasa algoritmik normal.
John Backus mengakui bahwa pendorong utama dalam pencariannya adalah kemalasan dan keinginan untuk menyederhanakan proses penulisan program. Foto - Backus di sampul Think, majalah perusahaan IBM
Ironisnya, Fortran masih populer hingga saat ini, terutama di kalangan fisikawan dan insinyur yang percaya bahwa mereka tidak memerlukan yang lain, meskipun bertahun-tahun telah berlalu. Banyak program standar telah terkumpul - perpustakaan besar.
Namun, seperti biasa, ada beberapa kesalahan yang cukup signifikan. Yang paling mahal terjadi lebih dari setengah abad yang lalu. Seorang insinyur menulis program seperti ini:
DO 3 I = 1.4
Ini adalah sebuah siklus. Operator hingga mark 3 harus dilakukan dengan I sama dengan 1,2, 3, 4. Tetapi orang Amerika itu membuat kesalahan dan menghentikan penuh alih-alih koma antara 1 dan 4. Di Fortran, tidak ada deskripsi wajib, jadi tidak ditemukan kesalahan. Akibatnya, penerbangan luar angkasa ke Venus pun terganggu.
Bahkan Lomonosov menemukan bahwa ada atmosfer yang sangat padat di sekitar Venus, tetapi tidak ada yang melihat permukaan planet tersebut. Amerika mengirim roket dengan tugas penting: seharusnya terbang ke Venus, melakukan beberapa putaran, dan kemudian menyelam di bawah atmosfer dan memotret permukaan. Roket itu terbang selama tiga bulan dan terbang. Saat saya menyelam, penutup kamera tidak terbuka, karena garis inilah yang bertanggung jawab untuk pembukaannya. Begitu banyak milyaran dolar beterbangan ke udara. Skandal itu luar biasa, orang yang membuat kesalahan ditemukan. 6-7 miliar adalah kerugian nyata bahkan bagi orang Amerika kaya. Tetapi programmer ini tidak terluka, karena dokumen tersebut memiliki tanda tangan dari semua bos yang mungkin.Setelah uji coba yang lama, diputuskan bahwa Fortran yang harus disalahkan atas segalanya: aturan untuk menentukan bahasa ternyata sangat tidak nyaman dan tidak dapat diandalkan.
Pada pertengahan 1970-an, kami menjadi penerjemah pertama dari Algol 68, dan kami menerjemahkan semua orang dari bahasa lama ke dalamnya. Secara khusus, kotak ke-93 dipindahkan - sekarang menjadi Institut Navigasi Radio dan Waktu Akurat.
Gedung Institut Teknik Radio Riset Leningrad - Institut Waktu dan Navigasi Radio Rusia - sekarang menjadi kantor bank Rossiya.
Sebelumnya, gedung itu terletak di gedung kuning besar di seberang Smolny, sekarang sudah ada bank di dalamnya, dan institut tersebut telah digusur ke pinggiran kota.Kemudian kami mentransfer puluhan program dari Fortran ke Algol 68 dan selalu menang empat kali. Saya pikir itu semacam penipuan, karena kami harus menang dua kali - hanya dengan mengorbankan penerjemah terbaik. Mengapa kita menang di empat? Dimengerti. Kami mengajar orang Algol 68 - Saya memberi ceramah, murid saya Leha Rokhlin sedang berlatih. Dan di Fortran, mereka menulis seperti ayam berkaki.
Suatu ketika mantan murid saya, seorang mayor tentara Soviet sebagai cadangan, Andrei Sergeevich Agapov, menelepon saya: “Andrei, di salah satu program jawabannya empat kali berbeda dari fortran". Karena beberapa lusin program berjalan dengan baik, saya menjawab: "Saya tidak peduli, itu terjadi." Dia: “Tidak, ini adalah kendali radar, yang menentukan koordinat untuk menembak. Jika, karena kesalahan dalam program, roket terbang ke arah yang salah, tidak akan terlihat oleh siapa pun. " Saya mulai mengerti. Saya pikir ALGOL 68 itu bohong, bagaimanapun juga, seorang penerjemah baru. Saya memeriksa semuanya - itu tidak bohong. Saya mulai membaca produk assembler - tidak, itu tidak bohong. Kemudian saya mulai dengan cermat membaca program Fortran. Tidak menemukan apa pun. Sudah brutal, menghabiskan satu bulan. Saya mulai membaca produksi assembler Fortran, tapi itu bodoh. Ditemukan! Lihat.
Tertulis:
X = 9.3.
Tapi X ganda dan 9,3 pendek. Alhasil, lahirlah dua tim.
LE 0, = E '9.3'
STD 0, X.
Di komputer ES ada mesin seperti itu, salinan IBM 360 - kata 64-bit. Dan sekarang perintah LE dimuat hanya di paruh kiri register, dan meninggalkan sampah di paruh kanan. Dan perintah STD menghapus seluruh register. Karena proses dikondisikan dengan buruk, yaitu, perubahan kecil pada data masukan sangat memengaruhi hasil, jawaban setelah 11 menit waktu CPU menyimpang empat kali. Ternyata saya harus menulis enam angka nol lagi di sini:
X = 9,3000000
Saya menemukan kesalahan ini dan mengingatnya selama sisa hidup saya, meskipun itu terjadi 40 tahun yang lalu.
Ada konsep "sistem yang bersahabat", dan ada - "tidak bersahabat". Ini adalah contoh tipikal dari sistem yang tidak bersahabat.
Atau contoh sederhana yang diderita semua siswa saya.
X = 1/3
Setiap orang normal mengira itu akan menjadi 0,33. Fig you! Akan ada nol. Dua bilangan bulat, yang artinya akan ada pembagian bilangan bulat. Dan jika Anda ingin mendapatkan 0,33, letakkan dua titik:
X = 1. / 3.
Cukup di satu tempat, maka itu akan benar. Tapi sekali lagi, siapa yang akan memperhatikan?
Algol 60
Fortran dinyatakan bersalah atas semua dosa mematikan, dan orang-orang mulai menemukan bahasa pemrograman baru. Orang Eropa datang dengan Algol 60. Ada juga beberapa kerusakan dengan angka: mereka muncul dengan itu pada tahun 1958 - setahun setelah Fortran. Tetapi bahasa itu sangat kikuk dan buruk sehingga bahasa itu direvisi dan diadopsi pada kongres IFIP (International Federation of Information Processing) hanya pada tahun 1960 - itulah namanya. Tetapi pekerjaan terus berlanjut, dan pada tahun 1964 sebuah pesan yang direvisi tentang Algol 60 diterbitkan. Kami mengerjakannya selama 6 tahun. Ingat angka ini, itu akan ditemui beberapa kali lagi. Butuh enam tahun untuk menyempurnakan versi awal bahasa ini.
Penerjemah pertama di Uni Soviet dari Algol 60 dibuat di Korolev Center (ini adalah institut luar angkasa, sekarang NPO Energia) di bawah kepemimpinan Svyatoslav Sergeevich Lavrov, yang sejak 1972 menjadi kepala departemen perangkat lunak komputer, tempat saya sekarang bekerja.
Svyatoslav Lavrov, 1987. Foto dari arsip akademisi Andrei Ershov
Lavrov adalah kepala departemen balistik eksternal - dialah yang menghitung lintasan satelit pertama, lintasan Gagarin. Dia menceritakan bagaimana tampilannya di era sebelum komputer, ketika beberapa ratus wanita menghabiskan waktu seharian penuh untuk memutar mesin, menghitung sesuatu.Setelah mendengar di suatu tempat tentang komputer pertama, Lavrov menjadi tertarik pada mereka, terbawa suasana dan akhirnya mengubah balistik eksternal menjadi pemrograman, menjadikannya penerjemah pertama. Kemudian di Novosibirsk Andrey Petrovich Ershov menciptakan penerjemah yang mengoptimalkan "Alpha". Mereka mengatakan bahwa bahkan orang Amerika pun mengakuinya sebagai penerjemah pengoptimalan terbaik. Kemudian, di Moskow, mereka membuat TA2 dari Algol 60 penuh, tetapi pada saat itu, Algol 60 lengkap dengan fitur-fitur bodohnya tidak diperlukan oleh siapa pun. Sejauh yang saya tahu, TA2 tidak pernah digunakan, tetapi saya bekerja dengan penerjemah Lavrovsky TA1M selama bertahun-tahun. Kami memiliki dua mesin M 20 di Mattech, mereka dilengkapi dengan TA1M, yang kemudian disebut "Signal".
PL / 1
Orang Amerika menjadi sakit hati ketika Algol 60 muncul di Eropa, dan membuat PL / I (Bahasa Pemrograman I). Bahasa yang buruk! Ratusan jenis konversi otomatis ke jenis lain. Bahasa shell, seperti yang mereka katakan. Beberapa ratus operator: untuk setiap operator - siapa yang akan mengingat semuanya? Namun demikian, bahasa ini juga menjadi sangat populer di Uni Soviet, sejak komputer ES muncul. Saya menulis di atasnya, tetapi mimpi buruk juga terjadi. Anda akan menjelaskan dalam satu prosedur variabel global A bin fix (integer), dan variabel lain A bin float (floating point). Kemudian Anda akan mencari kesalahan untuk waktu yang lama - penerjemah tidak akan mengatakan apa-apa.
Singkatnya, PL / 1 dan di Eropa sangat tidak disukai, tidak hanya di Uni Soviet. Saya telah ke Amerika Serikat berkali-kali dan telah mendengarnyatidak ada pemrograman kapitalis dan komunis, tetapi ada gaya yang berbeda .
Gaya Amerika adalah metode kekerasan. Ketika seseorang kekurangan daya komputasi mesin, dia pergi ke bosnya dan berkata: "Belikan saya mobil dua kali lebih kuat." Biasanya mereka membelinya.
Di Eropa - dan di Uni Soviet, tentu saja - hal ini tidak diterima. Saya harus berpikir dengan kepala saya, menemukan algoritma yang lebih efisien.
Saya pernah bertemu dengan kepala desainer penerjemah PL / 1. Nama belakangnya, Marx, mudah diingat oleh orang Soviet. Dia bukan orang Amerika, orang Inggris, dan penerjemah ini dibuat tidak jauh dari London - ada pusat IBM di Eropa. Kami bertemu dengannya di Novosibirsk, di mana ada konferensi besar di mana Marx membuat laporan. Dia ditanya: "Berapa banyak kesalahan yang ditemukan selama proses debugging?" Dia: "Saya tidak bisa menjawab pertanyaan ini - rahasia perusahaan." - "Berapa banyak orang yang Anda miliki?" Jawabannya sama. Kemudian Kes Koster, salah satu penulis Algol 68 (saya terikat padanya sebagai penerjemah), melompat dan mulai berteriak dalam bahasa Inggris yang agak spesifik, yang sekarang diketahui semua anak: "Kamu mencemarkan dunia bebas kami di hadapan rekan-rekan yang tertindas ini." Dan bagi saya: "Terjemahkan!" Saya: "Tidak diterima di sini, Kes." - “Mereka menugaskanmu padaku, jadi terjemahkan!"Ah baik? Saya mulai menerjemahkan seperti yang saya pahami, tetapi saya memahaminya dengan cukup akurat. Tapi tidak ada yang mengutuk saya. Lalu ada istirahat dengan gelas kopi dan brendi - kemudian begitu. Marx yang malang ini berdiri, dan sekitar satu meter ada dua lubang. Saya mendekatinya dengan dua wadah: "Ayo minum!" Dia membanting gelas dan berkata: “Biar saya ceritakan semuanya.Dalam percakapan pribadi saya bisa, tapi saya tidak bisa dari mimbar . " Jadi dia berkata bahwa dia memiliki 51 programmer, mereka menemukan begitu banyak kesalahan, ini adalah struktur yang liar - penerjemah dengan PL / 1.
Kemudian ternyata kami memiliki banyak kesamaan. Keduanya lahir pada tahun 1949, keduanya lulus dari universitas pada tahun 1971 - dia London, saya Leningrad. Saya berkata: “Bagaimana itu? Kami mengalahkan Anda empat kali dalam waktu siaran, tiga kali dalam kecepatan penghitungan, dan panjang kode yang tak terbatas. Kenapa kamu begitu bodoh? " Dia: "Berapa tahun Anda bekerja pada penerjemah dari Algol 68?" - "Tujuh tahun". - “Kami akan mengeluarkan Anda dari pekerjaan Anda sejak lama. Tahun - kendarai barang, jika tidak Anda akan berada di jalan. " Saat itulah saya pertama kali mengetahui apa itu Time to Market.Penting untuk bekerja dengan cepat, jika tidak seseorang akan menempati ceruk ini di pasar. Maka Anda akan melakukannya dengan lebih baik, tetapi tidak ada yang akan mengetahuinya. Di Uni Soviet, kami tidak mengetahui hal ini.
ALGOL 68
Orang Eropa menanggapi PL / I dengan bahasa ALGOL 68. Ada semacam kelompok kerja 2.1 IFIP tentang bahasa Algol. Ketika pada tahun 1964 sebuah pesan yang direvisi tentang Algol 60 diterbitkan, mereka memutuskan bahwa arah ini telah berakhir, sesuatu yang sama sekali berbeda harus dikembangkan. Mereka berteriak: apa yang akan kita lakukan selanjutnya? Jawabannya adalah Buku Putih - Saya menyimpannya di rak saya, langka, bukan di Internet - dengan proposal ke kelompok yang sama 2.1.
Ini berisi artikel panjang oleh Ralph London tentang bukti kebenaran program, artikel Barbara Liskov "The CLU Language", di mana dia pertama kali merumuskan konsep tipe data abstrak. Ada juga artikel oleh sarjana Belanda van Weingaarden tentang tata bahasa dua tingkat. Tata bahasa dua tingkat seperti mesin Turing dalam hal kekuatan, dengan bantuannya Anda tidak hanya dapat menjelaskan sintaks yang tepat - sekarang Anda tidak akan mengejutkan siapa pun - tetapi juga semantik yang tepat dari eksekusi bahasa. Dan setelah banyak pertemuan, orang-orang dari Kelompok Kerja 2.1 memutuskan untuk menggunakan tata bahasa dua tingkat van Weingaarden sebagai dasar untuk bahasa masa depan . Tidak lebih cepat diucapkan daripada dilakukan.
Kelompok itu terdiri dari sekitar 200 orang, termasuk ilmuwan Soviet: Ershov, Lavrov. Penasihat ilmiah saya Grigory Samuilovich Tseitin menulis banyak surat kepada para peserta - mereka bahkan mengucapkan terima kasih. Pada bulan Desember 1968, IFIP mengadopsi bahasa baru yang disebut Algol 68.
Itu adalah bahasa yang menakutkan, mimpi buruk. Di satu sisi sangat formal dan tepat, di sisi lain tidak mungkin untuk menuliskannya.
Maka Grigory Samuilovich Tseitin datang ke laboratorium pemrograman sistem kami, di mana saya kemudian bekerja sebagai siswa tahun ketiga matematika, dan berkata: “Teman-teman, mereka menemukan bahasa seperti itu - tidak ada yang bisa menerapkannya. Mari kita terapkan. " Kami: "Ayo pergi" - dan turun ke bisnis ini. Ijazah saya pada tahun 1971 disebut "Mencari rantai hantu di penerjemah dari Algol 68 untuk komputer ES." 11 halaman teks tulisan tangan dan program kerja. Lima tahun kemudian, saya menemukan kesalahan dalam ijazah ini, tetapi ketika saya membela diri, tidak ada yang menyadarinya.
Bahasanya sangat sulit, dan kami tidak sendirian dalam memikirkannya. Grup 2.1 dilanjutkan dan laporan revisi tentang ALgol 68 dikeluarkan pada 74. Enam tahun kerja keras lainnya oleh sebuah komite besar.Bahasa ini ternyata sudah cukup dimengerti, mulai diterapkan di banyak kelompok baik di Eropa maupun di Amerika. Di Uni Soviet, ada sekelompok Mikhail Ruvimovich Levinson di Institut Ekonomi dan Matematika Pusat, Ekaterina Logvinovna Yushchenko di Kiev. Sasha Maslov dan timnya menjadikan Algol 68 untuk Elbrus. Andrey Petrovich Ershov menciptakan penerjemah yang mengoptimalkan dari Algol 68 di Novosibirsk. Di Leningrad, ketika Grigory Tseitin meninggalkan pekerjaan ini, tugas benar-benar jatuh pada saya.
"Algol: Sukses dan Kegagalan", abstrak laporan ilmuwan Swiss Peter Naur, dipresentasikan pada kolokium "10 tahun Algol" di Zurich pada 31 Mei 1968. Dari arsip Akademisi Andrei Ershov
Saya tidak harus duduk dengan seseorang untuk menjadi kepala laboratorium. Semuanya berubah dengan sendirinya ketika kami mulai men-debug IBM / 360 di Moskow NITSEVT. Kami memiliki seorang doktor sains, sekitar lima kandidat dan sekitar 15 siswa, sementara kami menulis artikel dan buku, semuanya baik-baik saja. Tapi kemudian orang-orang dari generasi yang lebih tua perlahan-lahan mulai jatuh. Waktu di NITSEVT dialokasikan untuk kami hanya pada malam hari. Kami pergi ke Moskow selama tiga hari - kami bekerja di malam hari, kami tidur di siang hari, tetapi anak muda tidak peduli. Apalagi saya suka bekerja di malam hari. Ada perangkat Amerika dan Soviet. Lempar kabelnya, dan Anda bekerja dengan normal pada peralatan Amerika yang bagus, dan beralih kembali di pagi hari. Pada siang hari mereka tidak diijinkan melakukan ini.Tetapi rekan saya yang lebih tua tidak tahan: ketika mereka menyerahkan penerjemah, saya sudah menjadi kepala desainer dan kepala laboratorium.
Kami menjadi penerjemah pertama dari Algol 68 di Uni Soviet. Dengan sedikit kelambatan, kelompok Maslov dan Levinson. Yushchenko membuat perkembangan yang menarik, dikombinasikan dengan database. Sebuah penelitian ilmiah besar yang disebut "Proyek Beta" dilakukan di Novosibirsk. Mereka berusaha menggeneralisasikan masalah dengan kuat sehingga ALgol 68 dan PL / I dan Pascal dapat dilakukan dengan satu penerjemah. Baik dalam kode BESM-6 maupun dalam kode ES EVM. Proyek ini tidak pernah sepenuhnya selesai, tetapi mereka melakukan beberapa penerjemah tunggal.
Ketika kami mulai menerapkan Algol 68, ternyata tidak ada yang benar-benar membutuhkan keandalannya, kecuali militer.Tapi kemudian mereka jatuh hati, dan banyak organisasi militer beralih ke sana.
Daftar isi laporan revisi ALGOL 68 yang dikeluarkan oleh kelompok kerja 2.1. Yang pertama dalam daftar editor adalah Adrian van Weingaarden
Pascal
Salah satu peserta Pokja 2.1 adalah Niklaus Wirth. Dia, dan beberapa ilmuwan terkenal lainnya - Hoare, Dijkstra, sayangnya, Lavrov kami - tidak setuju dengan pendapat mayoritas dan pada bulan Desember 1968 menulis apa yang disebut Laporan Minoritas. Di dalamnya, mereka mengungkapkan gagasan bahwa "gunung melahirkan seekor tikus: bahasa ini begitu besar dan kompleks sehingga tak seorang pun akan memahaminya dalam hidup mereka." Faktanya, ini benar, tetapi setelah enam tahun bekerja dan merilis Pesan yang Direvisi, Algol 68 telah menjadi bahasa yang cukup bagus dan dapat dimengerti . Di kalangan akademisi, hal itu telah memperoleh popularitas yang cukup luas, tetapi dalam pemrograman industri, terutama di Amerika, hal itu tidak. Jadi Kamerad Wirth membuat tipuan seperti itu dengan telinganya - dia menciptakan bahasa yang dia sebut Pascal. Dia sendiri dari Zurich, tapi saat itu dia magang di Stanford.
Pascal - "dipangkas" Algol 68. Artinya, dia mengambil gunting, memotong ini, ini, ini ... Deskripsi pertama adalah - seperti buku catatan untuk 2 kopeck: 24 lembar, tipis, tipis. Karena saat itu kami sudah menyelesaikan pengerjaan ALGOL 68, salah satu siswa saya menerapkan Pascal dengan metode kami sendiri. Tetapi setiap pagi dimulai dengan pertanyaannya kepada saya: "mengapa Anda dapat menulis banyak operator antara berulang dan sampai tanpa tanda kurung tambahan, dan setelah lakukan - hanya satu?", "Mengapa Anda dapat menulis jika setelah lagi, tetapi tidak setelah itu?" apa yang harus dilakukan jika saya ingin meneruskan prosedur itu sendiri sebagai parameter, misalnya, untuk menghitung beberapa integral? ". Ada banyak inkonsistensi. Algol 68 memiliki keterbatasan sehingga memori tak terbatas tidak akan berfungsi, sehingga reduksi diri tidak akan berfungsi. Di Pascal, tidak.
Pada tahun-tahun itu di Uni Soviet, ada anekdot populer: "Saya bekerja di pabrik tempat tidur, setiap hari saya membawa detailnya ke rumah, saya ingin merapikan tempat tidur, tetapi tidak peduli bagaimana saya menggabungkannya, saya mendapatkan senapan mesin." Jadi, saat kami mulai memperbaiki Pascal, kami mendapatkan Algol 68 . Semua orang tertawa, mengatakan bahwa itu aneh, tetapi saya tidak menemukan sesuatu yang mengejutkan dalam hal ini. Hanya saja tiga ratus orang telah mengerjakan Algol 68 selama bertahun-tahun, termasuk kami.
Lucunya istri saya menulis kepada Kes Coster, penulis bagian pertukaran, tentang kesalahan yang dia temukan dan menerima jawaban: "Tuan Terekhova yang terhormat." Awalnya kami tersinggung, dan kemudian mereka memberi tahu kami: "Bagaimana dia bisa menebak bahwa Terekhova adalah dia?" Kemudian kami mulai merekrut Galiy Terekhov, dan dia mengerti segalanya.
Wirth adalah orang yang pintar, dia bekerja pada pemurnian Pascal, dan pada tahun 1974 dengan seorang pria bernama Jensenmembuat standar lebih tebal, halaman 100–120. Ketika Wirth merayakan ulang tahunnya yang ke 80, ada simposium kecil di Zurich, di mana saya diundang di antara 20-30 tamu. Ketika saya tiba, ternyata Jensen adalah seorang wanita, Kathleen. Sejujurnya, itu mengejutkan saya. Dia melakukan banyak hal untuk mengubah Pascal dari mainan menjadi bahasa yang serius.
Pidato Kathleen Jensen di simposium yang didedikasikan untuk ulang tahun ke-80 Niklaus Wirth
Kemudian Borland turun ke bisnis dan membuat Borland Pascal - sudah dua jilid tebal. Dengan demikian muncul bahasa yang sudah bisa digunakan . Sebelum itu - memanjakan sekolah.
Ketika laporan revisi Pascal Wirth dan Jensen keluar - juga beberapa tahun setelah penerbitan standar pertama - Wirth menulis di kata pengantar: "Pascal memiliki level yang lebih tinggi dari Algol 60". Editor terjemahannya adalah programmer Soviet terkenal Dmitry Podshivalov, seorang paman yang agak jahat. Dia suka berbicara dengan tajam. Setelah ucapan Wirth, sebuah catatan kaki muncul dalam terjemahannya: “Sulit untuk menyetujui pernyataan ini. Cobalah untuk menulis prosedur perkalian matriks dalam Pascal ”. Faktanya adalah bahwa di Pascal, seperti di C, Anda dapat mendeskripsikan sebuah array dari nol hingga seratus, hingga seribu, tetapi Anda tidak dapat mendeskripsikannya hingga N - tidak ada array dinamis. Bagaimana Anda menggambarkan prosedur perkalian matriks? Anda tidak tahu matriks mana yang akan dikalikan. Karena itu, Podshivalov benar sekali. Juga bagi saya, bahasa tingkat tinggi di mana Anda tidak dapat menulis prosedur perkalian matriks!
Nikolaus Wirth dan komputer Lilith dikembangkan di Swiss Higher Technical School of Zurich. Wirth membuat bahasa baru, Modula-2, khusus untuk mengimplementasikan perangkat lunak untuk sistem ini . 1981
Pascal akhirnya menjadi sangat populer di kalangan anak sekolah dan siswa. Untuk pembelajaran dasar program, dia sangat bagus. Untuk boneka, keandalan tidak berarti banyak: pikirkan saja, sebuah lubang dalam bahasa - satu, kedua, ketiga. Tetapi dapat dengan mudah dibaca dan ditulis. Menurut pendapat saya, Pascal tidak masuk ke pemrograman industri - di mana tanggung jawab diperlukan dan perlu untuk menulis sistem perangkat lunak besar dengan keandalan tinggi.
Neraka
Setelah orang Eropa membuat Algol 68, orang Amerika memutuskan - mengapa kita lebih buruk? Dan mereka memutuskan untuk membuat bahasa baru untuk Departemen Pertahanan AS. Sekarang pelanggan TI terbesar di dunia, karena tidak ada perusahaan yang dapat menandinginya dalam hal pendanaan. Orang Amerika memutuskan untuk melakukan pendekatan ini secara ilmiah. Pertama, rumuskan persyaratan untuk bahasa tersebut. Mereka disebut seperti ini: manusia jerami, manusia kayu, manusia baja. Dan yang terakhir adalah batu. Saya telah membaca buku tebal tebal ini, dengan jelas dan diartikulasikan dengan baik.
Kemudian mereka mengumumkan kompetisi dengan hadiah jutaan dolar. Tapi mereka mengerti, jika tidak ada tindakan khusus yang diambil, IBM pasti akan menang.Ini seperti pepatah tentang sepak bola: "Semua orang bermain, tapi Jerman menang." Pada tahun-tahun itu, IBM memiliki perputaran finansial 20 kali lebih banyak daripada pesaing terdekatnya. Mereka juga mengatakan "IBM dan 6 Kurcaci": satu perusahaan dengan omset 16 miliar dan enam lainnya - masing-masing 1 miliar ton. IBM akan menghancurkan semua orang. Karena itu, Kementerian Pertahanan mengklasifikasikan peserta, tidak ada yang tahu siapa itu siapa. Pada tahap pertama, terpilih 17 tim. Mereka memberi mereka cukup banyak dana - masing-masing jutaan dolar. Pada tahap kedua, dipilih empat tim dan diberi nama berdasarkan warna: merah, kuning, hijau, biru. Pendanaan mereka sudah mencapai miliaran, dan mereka tidak hanya harus membuat bahasanya, tetapi juga penerjemah tes agar mereka dapat diuji. Baru setelah mereka menyelesaikan pekerjaan mereka barulah amplop dibuka.
Ada skandal liar, karena orang Eropa tiba-tiba menang - tim Jean Ishbia dari Paris. Dengan bahasa yang sangat mirip dengan ALgol 68 dan sama sekali tidak seperti PL / 1. Bahasa itu diberi nama Ada - untuk menghormati programmer pertama di dunia Ada Lovelace, asisten Charles Babbage dan, ngomong-ngomong, putri Lord Byron, tetapi Anda mungkin tahu itu dengan baik.
Jean David Ishbia bekerja di bagian R&D di pabrikan komputer Prancis, Bull
Untuk menciptakan semua "manusia batu" ini, yaitu merumuskan tuntutan, Amerika membentuk komite. Ratusan spesialis dibutuhkan untuk mengevaluasi keseluruhan masalah. Oleh karena itu, seluruh kelompok pemrogram dibujuk dari Eropa ke Amerika Serikat. Seorang komunis ditangkap di salah satu komite - Ivan Bach Hongaria, seorang anggota Partai Buruh Sosialis Hongaria, praktis berada di Pentagon. Pada tahun 1976 saya mengajar di Universitas Budapest, di mana saya diperkenalkan dengannya. Kami menjadi teman, berjalan keliling Budapest, dan dia memberi tahu saya bagaimana segalanya diatur dengan orang Amerika. Akhirnya, dia mengirimkan saya salah satu deskripsi awal bahasa Neraka dalam rekaman. Kami mengerjakannya selama tiga tahun kemudian. Sekali lagi, ingat angka 6.
Jadi saya membawa ke Uni Soviet deskripsi pertama negara itu tentang bahasa Neraka. Secara alami, kami memutuskan untuk membuat penerjemah. Saya sudah menjadi ahli dalam masalah ini dan berpikir: karena ini adalah standar Departemen Pertahanan AS, tentara kami pasti ingin menggunakannya. Kemudian saya akan memberi tahu mereka: "Saya memiliki penerjemah." Tapi aku sangat merindukan - prajurit kami tidak tertarik pada Ada. Menurut saya, sia-sia. Mereka mencuri segalanya - itu perlu untuk mencurinya juga.
Ketika saya memutuskan untuk menjadi penerjemah, salah satu karyawan laboratorium saya, empat tahun lebih tua dari saya, berkata: “Andrei, Anda banyak mengawasi. Mengapa Anda semua untuk diri sendiri dan untuk diri Anda sendiri? Biarkan saya memimpin pekerjaan ini. " Saya menjawab: “Saya membawanya, memikirkannya, saya tahu bagaimana melakukannya. Tapi oke, pimpin. " Dia membujuk saya, dan saya sudah ada yang harus dilakukan. Tiga bulan berlalu dan ternyata grup yang dibuat di dekat Ada itu dipimpin oleh seorang lulusan hampir tahun ini. Itu adalah muridku Arkady Popov. Saya bertanya: “Bagaimana bisa? Mengapa Anda memberi tahu si brengsek itu? " Dan dia: "Saya tidak lulus - mereka mengambilnya dari saya". Pemuda itu ternyata sangat aktif.
Tapi ceritanya tidak berakhir di situ. Pemuda itu berkata kepada saya: “Andrey, kamu adalah pemimpin yang salah. Kami melakukan semuanya dengan prototipe, kami ingin segera melihat sesuatu. Itu perlu dalam sains: buat proyek dan ikuti. " Saya: “Anda memimpin - lakukanlah. Kita akan lihat di waktu yang sama. "
Sekelompok empat orang menghabiskan dua tahun mengetik tiga jilid tebal - draf. Kami menjaga anak-anak muda, bahagia untuk mereka, setelah desain selesai kami bahkan minum sedikit minuman keras. Momen khusyuk - dua tahun pekerjaan telah selesai. Tetapi butuh tiga bulan implementasi, dan ternyata mereka salah dalam proyek, dan dalam beberapa jenis struktur data yang sangat mempengaruhi yang lainnya. Arkady mendatangi saya, meminta maaf: "Kami tertipu." Tetapi kelompok ini tetap menjadi penerjemah pertama di Uni Soviet dari bahasa Neraka. Benar, lebih lambat dari yang akan dia lakukan, dan dengan cara normal, seperti orang lain.
Oleg Perminov, "Pengantar Bahasa Pemrograman ADA", 1991
Java dan Python
Di sinilah bahasa favorit saya berakhir. Jalan selanjutnya tidak lagi revolusioner.
Katakanlah Java. Berdasarkan mesin virtual, portabilitas kode. Bahkan Wikipedia mengatakan bahwa kode-p ditemukan sekitar tahun 1978. Tapi tidak! Saya bertanya kepada Wirth sendiri secara pribadi siapa yang datang dengan kode-p. Dia menjawab: "Saya mengarangnya." Ketika Pascal melakukannya, dia menemui rektor Universitas Stanford: “Ada bahasa di mana siswa dapat diajarkan dengan baik. Mari? " Rektor: “Ayo! Saya hanya memiliki enam jenis komputer. Dapatkan Pascal pada semua orang. " Wirth berkata bahwa dia hampir mati - tidak mungkin membuat enam penerjemah sendirian. Dan saat itulah dia menciptakan p-code, mesin virtual. Ternyata dia memiliki penerjemah dari Pascal ke kode-p yang ditulis dalam kode-p, dan kemudian penerjemah kode-p dibuat pada setiap mesin - ini adalah program perakitan yang sangat sederhana, beberapa ratus baris. Dan semuanya berhasil. Kami masih menggunakan ide ini. Klaim Niklasbahwa dialah yang menemukan p-code, dan bukan di 78, tapi di 71. Saya juga mendengar tentang p-code di awal tahun 70-an - beberapa informasi sampai kepada kami.
Sekarang Wirth melakukan sesuatu yang mirip dengan yang kami lakukan, dan kami membuat versi bahasa C - lebih aman, dengan kontrol yang lebih lengkap. Ternyata kami juga bukan yang pertama dalam hal ini. Sudah ada bahasa seperti itu - Di, diciptakan oleh Andrei Alexandrescu. Saya mengenalnya secara pribadi - saya melihatnya di beberapa konferensi.
Saya akan mengatakan beberapa patah kata tentang Python. Ini adalah bahasa yang tidak dapat digunakan untuk menulis program besar. Tapi ini sangat bagus untuk pembuatan prototipe: cepat-cepat berbaikan dan lihat apa yang terjadi. Jadi mereka menggunakannya, pada dasarnya. Bahasa ringan dengan jumlah pustaka yang banyak. Tetapi saya tidak dapat membayangkan bahwa mereka akan menulis kendali roket atau pertukaran telepon dengan Python - ini tidak dimaksudkan untuk sistem perangkat keras yang besar. Sebenarnya, Guido van Rossum sendiri berbicara tentang ini kepada saya ketika dia memberi tahu bagaimana dan mengapa Python muncul.
Si
Saya akan membahas lebih detail tentang sejarah bahasa C - salah satu yang paling populer. Ken Thompson pada tahun 1970 menemukan sistem operasi, yang sekarang disebut Unix. Itu adalah acara yang keren. Untuk ini, dia menggunakan bahasa tanpa tipe B. Beberapa saat kemudian Martin Richard menemukan bahasa BCPL - pengembangan bahasa Bi, juga tanpa tipe. Kemudian Dennis Ritchie memutuskan untuk menulis ulang semuanya dalam bahasa C yang lebih efisien dan dapat diandalkan, yang dia ciptakan sendiri. Dia mengandalkan B dan BCPL, tetapi menambahkan kontrol tipe.
Pencipta UNIX Ken Thompson dan Dennis Ritchie sedang mengerjakan PDP-11. Foto oleh Peter Hammer, sekitar tahun 1970
Ternyata lucu. Publikasi pertama Richie keluar pada tahun 1978, ketika Xi telah menjadi populer dan bahkan mencapai Uni Soviet. Saya tahu C karena kode sumber Unix didistribusikan secara bebas - ini adalah pengalaman pertama dari proyek sumber terbuka. Orang mempelajari C dengan cara berikut: membacanya - sebuah larik ditulis seperti ini, potongannya seperti ini, lingkaran seperti ini. Itu saja, tidak ada lagi yang dibutuhkan. Tetapi artikel pertama oleh penulis bahasa tersebut muncul hanya beberapa tahun setelah semua orang di dunia telah mengenalnya dengan dekat.
C adalah bahasa yang sangat bagus, saya menyukainya, tetapi ada lubang di dalamnya. Saya ingin memperbaikinya, sedang mengerjakannya sekarang dan akan memastikan untuk menggunakan versi yang lebih andal.
Cobol
Sampul laporan tentang bahasa Cobol yang disiapkan oleh Departemen Pertahanan AS untuk konferensi April 1960.
Cobol, iblis, juga ditemukan oleh orang Amerika. Faktanya adalah bahwa Fortran pada awalnya diciptakan untuk perhitungan ilmiah, sementara orang Amerika pada tahun-tahun itu sudah menggunakan banyak komputer dalam perekonomian - untuk mengelola produksi. Cobol diciptakan khusus untuk bekerja dengan data ekonomi.
Bahasanya sangat aneh, tapi ternyata bagus untuk kalkulasi ekonomi. Anda dapat mengatakan selama Anda suka bahwa itu penuh dengan lubang dan ceroboh, tetapi setengah dari program keuangan dunia ditulis di atasnya, Bank Sentral Rusia dan Sberbank juga mengerjakan Kobol. Saya tahu ini dengan baik, karena murid saya ada dimana-mana. Mereka tidak menulis program baru di dalamnya, tetapi ada banyak sekali program lama.
Kobol memberi saya kesempatan untuk bertahan hidup selama masa perestroika. Pada akhir 1980-an, kami memiliki sekelompok penerjemah yang hebat - penerjemah pertama dari Algol 68, dari Ada, dari bahasa kecerdasan buatan, kendali robot. Semuanya baik-baik saja, tetapi perestroika pecah, dan aliran program dari AS mengalir ke sini. Penyiar Amerika membanjiri pasar, dan karena tidak ada yang membayar apa pun - ini adalah era pembajakan - mereka mulai melupakan tim saya. Saya hampir putus asa, meskipun pada saat itu saya telah membentuk perusahaan "Terkom" - Terekhov dan tim.
Saya mungkin akan menghilang, tetapi kemudian orang Amerika memiliki masalah bisnis.Mereka telah mengumpulkan banyak sekali program di Cobol, tetapi pemeliharaannya ternyata sangat mahal, sangat sedikit orang yang mengetahui bahasa ini. Dan kemudian mereka memutuskan untuk melakukan rekayasa ulang seperti itu - untuk mentransfer program kobol ke platform modern. Mencoba di Universitas Duke tetapi gagal. Tetapi di perusahaan mereka ada penduduk asli Uni Soviet. Sebenarnya, baru pada perjalanan saya yang keenam atau ketujuh ke Amerika Serikat saya bertemu dengan seorang Amerika yang lahir di Amerika. Lenya Erlikh, mantan penduduk Odessa, berkata: "Jika Amerika tidak bisa, mungkin Rusia akan berhasil." Dan kami berhasil. Secara umum, bahasanya mengerikan, tetapi membantu saya bertahan di masa-masa sulit.