Penulis | Michael McMillan
Penerjemah | Bulan Sabit, editor yang bertanggung jawab | Xi Yan
Gambar segel | Unduhan CSDN dari Visual China
Diproduksi | CSDN (ID: CSDNnews)
Kapan tanda kurung kurawal terkenal yang menandai awal dan akhir blok kode menjadi bagian dari bahasa pemrograman? Atau yang lebih penting, kapan blok kode menjadi bagian penting dari struktur pemrograman?
Saya berharap dapat menjawab pertanyaan tersebut melalui artikel ini.
Bahasa tanpa blok kode
Pemrogram yang akrab dengan gaya sintaks bahasa C akrab dengan blok pemrograman. Di C, C ++, Java, JavaScript, dan banyak bahasa lainnya, semua struktur pemrograman utama adalah blok kode. Dengan kata lain, struktur pemrograman ini ditempatkan dalam blok kode, dan simbol blok kode adalah kurung kurawal buka dan tutup.
Sebenarnya, ini tidak sepenuhnya benar. Misalnya, jika pernyataan dan loop adalah dua struktur, jika bagian utama hanya berisi satu pernyataan, maka blok kode dapat dihilangkan. Namun, dalam beberapa tahun terakhir, para ahli dalam gaya pemrograman telah menyarankan bahwa bagian utama dari semua struktur pemrograman harus ditempatkan dalam blok kode (lihat buku "The Essentials of the JavaScript Language" Douglas Cockroft untuk penjelasan yang lebih meyakinkan).
Namun, bahasa pemrograman tingkat tinggi pertama tidak memiliki blok kode.
Izinkan saya mengambil bahasa FORTRAN di tahun 1950-an sebagai contoh. Gartner membandingkan karakteristik beberapa bahasa pemrograman awal dalam ulasannya tentang bahasa tingkat tinggi awal "Perkembangan Awal Bahasa Pemrograman" (artikel itu dicetak ulang dalam bukunya "Makalah Terpilih pada Bahasa Komputer") . Metode perbandingannya adalah untuk mendemonstrasikan bagaimana program tertentu ditulis dalam beberapa bahasa. Program ini mengimplementasikan algoritma yang disebut TPK. Mari kita lihat cara menulisnya dalam JavaScript modern:
Anda tidak perlu peduli dengan fungsi program ini. Poinnya di sini adalah bahwa program ini mendemonstrasikan semua fitur penting dari bahasa pemrograman modern yang diyakini Gartner.
Seperti yang saya katakan sebelumnya, Gartner menggunakan algoritme ini untuk membandingkan beberapa bahasa pemrograman, salah satunya sekarang dikenal sebagai bahasa tingkat tinggi pertama yang benar-benar. Berikut ini adalah algoritma TPK yang ditulis oleh Gartner dan diimplementasikan di Fortran:
Saya tidak ingin membahas detail sintaks Fortran, tetapi Anda dapat dengan jelas melihat bahwa bahasa tersebut tidak memiliki blok kode. Fungsi ini didefinisikan pada sebuah baris, bukan didefinisikan sebagai sebuah blok. Siklus DO menggunakan label baris untuk mengontrol siklus. Bahasa tingkat tinggi pada saat itu tidak memiliki konsep pengelompokan pernyataan gabungan ke dalam blok kode, jadi bahasa ini masih perlu mengandalkan goto untuk mengontrol aliran program.
Kode ini ditulis oleh Gartner menggunakan Fortran pada tahun 1957. Antara 1957 dan 1960, sebuah bahasa baru muncul, dan itu adalah ALGOL, yang menutupi kekurangan banyak bahasa tingkat tinggi seperti Fortran.
Blok kode di ALGOL
Bahasa pemrograman ALGOL pertama kali diusulkan pada tahun 1958, meskipun versi yang paling populer adalah Algol 60. Salah satu ciri bahasa Algol adalah kemampuannya mengelompokkan pernyataan menjadi pernyataan gabungan, disebut juga blok kode. Setiap program Algol dapat dianggap sebagai blok kode, karena program tersebut biasanya berisi satu atau lebih pernyataan (karena itu istilah "pernyataan gabungan"). Pengembang Algol percaya bahwa banyak skenario pemrograman (seperti penilaian bersyarat dan loop) memerlukan banyak pernyataan untuk dipertimbangkan secara keseluruhan.
Algol menggunakan kata kunci begin dan end untuk menunjukkan awal dan akhir blok kode. Blok kode dapat bertumpuk di blok kode lain, blok kode luar disebut blok kode utama, dan blok kode bagian dalam disebut blok sub-kode. Misalnya, program Algol berikut berisi blok kode bersarang:
Program akan mengeluarkan angka 2 dan 1 secara berurutan.
Berikut ini adalah contoh penggunaan blok kode di pernyataan if Algol:
Berikut ini adalah contoh penggunaan blok kode di Algol's for statement:
Mari kita lihat program TPK yang ditulis dalam bahasa Algol. Anda dapat melihat bahwa dibandingkan dengan Fortran, struktur blok kode dapat membuat program lebih jelas:
Terlihat bahwa struktur blok kode Algol menjadikan program lebih seperti bahasa yang kita gunakan saat ini.
Beralih ke BCPL
Perubahan berikutnya dalam tata bahasa struktur blok adalah bahasa BCPL yang ditemukan oleh Martin Richards di Universitas Cambridge pada tahun 1967. Pada tahap awal pengembangan bahasa Algol antara tahun 1960 dan 1967, pengembang kompilator dan pengembang sistem telah mencari cara untuk mengembangkan program sistem (seperti sistem operasi) dalam bahasa selain bahasa mesin dan bahasa assembly. Alasan mengapa BCPL ditekankan di sini adalah karena setelah pengembangan dan penyempurnaannya, itu menjadi bahasa B yang ditemukan oleh Ken Thompson dan kemudian berkembang menjadi bahasa C.
Bahasa BCPL yang dikembangkan oleh Richards merupakan bahasa sistem yang memiliki efisiensi yang sama dengan bahasa assembly, namun sintaksnya lebih mirip dengan bahasa tingkat tinggi seperti Algol, sehingga lebih mudah dan efisien untuk menulis program. Ini berarti banyak fitur bahasa tingkat tinggi seperti Algol harus disertakan dalam BCPL dengan cara yang lebih efisien.
Salah satu cara untuk mencapai efisiensi ini adalah dengan mengubah tanda blok kode dari kata (awal dan akhir) menjadi simbol. Untuk pernyataan gabungan dan blok kode, Richards merekomendasikan penggunaan simbol $ (dan) $ sebagai penanda awal dan akhir. Simbol ini disebut "tanda kurung bagian".
Dalam BCPL, jika $ (dan) $ digunakan dengan struktur seperti pernyataan if atau loop, mereka mewakili pernyataan gabungan. Jika $ (berisi beberapa definisi, mereka mewakili blok kode.
Misalnya, berikut ini adalah contoh penggunaan pernyataan if dan pernyataan gabungan di BCPL:
Berikut ini adalah contoh blok kode BCPL:
Di sini, simbol awal menunjukkan awal blok kode karena segera diikuti oleh deklarasi.
$ (dan $) menjadi kurung kurawal dalam bahasa C.
Sekitar tahun 1968 atau 1969, Ken Thompson dan Dennis Ritchie dari Bell Labs mulai menggunakan bahasa pemrograman sistem untuk mengembangkan sistem operasi. Faktanya, Thompson awalnya ingin menggunakan Fortran, tetapi segera menyerah karena dia menemukan bahwa Fortran tidak memungkinkan. Jadi dia memutuskan untuk memodifikasi bahasa BCPL untuk membuat bahasa sistem yang lebih cocok, dan bahasa B. lahir.
Meskipun bahasa B lebih mirip dengan bahasa sistem yang diinginkan Thompson dan Ritchie, bahasa tersebut masih belum dapat sepenuhnya memenuhi persyaratan, sehingga Ritchie mulai mengembangkan bahasa lain yang disebut NB, yang berarti B. Baru. NB tidak bertahan lama dan akhirnya digantikan oleh bahasa baru lainnya, yang akhirnya disebut C. Jika Anda memiliki pertanyaan tentang bagaimana bahasa C dikirim dari BCPL, B, dan NB, saya sarankan Anda membaca "Sejarah Bahasa C" oleh Dennis Ritchie.
Banyak fitur yang diturunkan dari bahasa B ke NB kemudian ke bahasa C telah dimodifikasi oleh Thompson, salah satunya adalah singkatan operator. Untuk menempatkan bahasa di komputer dengan memori yang sangat terbatas pada saat itu, modifikasi ini diperlukan. Misalnya, Thompson membuat operator penugasan kombinasi (seperti + =) dan operator increment (++) dan decrement (-) untuk membuat bahasa lebih efisien. Ini juga menyebabkan penyederhanaan simbol lain di BCPL, seperti $ (dan) $ diubah menjadi {dan}.
status quo
Banyak bahasa saat ini telah mengadopsi tanda kurung kurawal sebagai simbol utama blok kode, terutama yang dekat dengan gaya C, seperti C ++, Java, C # dan JavaScript.
Yang lebih menarik adalah bahasa baru juga menggunakan tanda kurung, seperti Go dan Rust. Faktanya, bahasa Go mengharuskan setiap pernyataan bersyarat atau struktur loop untuk menggunakan kurung kurawal, yang mengikuti saran pakar pemrograman: meskipun tidak diperlukan, setiap struktur harus menggunakan kurung kurawal.
Tautan asli:
https://medium.com/better-programming/a-brief-history-of-the-curly-brace-in-programming-5b3eacdc3f7a
Artikel ini adalah artikel terjemahan CSDN, harap tunjukkan sumber untuk mencetak ulang.
Manfaat hari ini
Temui Lu Qi
Juga sebagai bagian penting dari "Jutaan Orang Mempelajari AI", Konferensi Pengembang AIProCon 2020 akan disiarkan langsung secara online mulai 3 hingga 4 Juli, memungkinkan pengembang untuk mempelajari tentang teknologi mutakhir AI saat ini dalam satu tempat Pengalaman praktis dalam penelitian, teknologi inti dan aplikasi, dan kasus perusahaan, dan Anda juga dapat berpartisipasi dalam salon pengembang dan proyek pemrograman online yang menarik dan beragam. Berpartisipasilah dalam serangkaian aktivitas berwawasan ke depan dan berinteraksi dengan siaran langsung online. Anda tidak hanya dapat berkomunikasi dengan puluhan ribu pengembang, tetapi Anda juga memiliki kesempatan untuk memenangkan hadiah siaran langsung eksklusif dan terhubung dengan pakar teknis.
Platform pengembangan AI one-stop killer telah hadir! Ucapkan selamat tinggal untuk beralih alat pemodelan terfragmentasi
Ide besar tentang transportasi cerdas yang dipicu oleh kemacetan lalu lintas di Jalan Lingkar Keempat di Beijing
Tolong, jangan tanya saya apa itu tumpukan!
Ide besar tentang transportasi cerdas yang dipicu oleh kemacetan lalu lintas di Jalan Lingkar Keempat di Beijing
Mesin virtual perusahaan Anda masih menganggur? Lihat praktik pengujian integrasi berkelanjutan berdasarkan Jenkins dan Kubernetes!
Dari Web1.0 hingga Web3.0: Analisis terperinci tentang perkembangan dan arah masa depan Internet dalam beberapa tahun terakhir
- Baru malam ini | Profesor Universitas Sains dan Teknologi Hong Kong Li Shiwei bertanya tentang masa depan dan membuka rute baru di Greater Bay Area
- Red Hat menggunakan model "langganan" untuk menjadi saudara pertama open source, dan pelopornya dipromosikan menjadi presiden
- Produk teknologi MQ meledak, mari kita bahas tentang middleware perpesanan sumber terbuka Tencent TubeMQ | The Force Project
- Ren Zhengfei mundur sebagai direktur Shanghai Huawei; Baidu "Cloud Phone" dirilis online hari ini; Inkscape 1.0 RC versi dirilis | Geek Headlines
- Kursus wajib untuk programmer: Mengapa Anda harus menggunakan Python untuk analisis data? Apakah Excel buruk?
- Mungkinkah rumah-rumah di Venus Utara ini menghargai? Batas harga rumah baru dan sekitarnya yang terbalik melebihi 1.000 yuan / meter persegi
- "Danau Dongqian", yang merupakan kumpulan dari "ribuan hewan peliharaan", akan "memperbesarnya" lagi