Rumah >pembangunan bahagian belakang >C++ >Sejarah C dan C . Bahagian satu: kemunculan dan penyeragaman bahasa C. C dengan Kelas menjadi C
C dan C ialah bahasa ikonik di mana sejumlah besar kod ditulis. Apakah jalan yang telah mereka lalui untuk menjadi satu? Artikel ini merangkumi kemunculan C dan permulaan penyeragaman rasminya. Selain itu, anda akan belajar tentang C dengan Kelas dan perubahan akhirnya menjadi C .
1969. Apollo 11 melawat Bulan. AT&T Bell Labs membangunkan bahasa yang kita semua tahu hari ini sebagai C. Pada masa ini, sistem pengendalian Unix berada di peringkat pembangunan awal.
Malah, bahasa C mengambil alih ciri utama daripada bahasa B. Serta asal usul namanya. Bagi Unix, ia pada mulanya dilaksanakan dalam bahasa himpunan dan tidak mempunyai pengkompil untuk bahasa peringkat tinggi. Atribut pembangunan projek ini kepada salah satu sebab penciptaan bahasa C.
Pada tahun 1971, pengkompil dan beberapa utiliti dalam C telah dimasukkan ke dalam versi kedua Unix. Dan pada tahun 1973, kernel Unix sebahagian besarnya ditulis dalam C.
Dennis Ritchie dan Brian Kernighan menerbitkan edisi pertama "The C Programming Language" pada 22 Februari 1978. Buku ini merupakan bahan pertama yang tersedia secara meluas dalam bahasa C.
Rajah N1 - Kulit edisi pertama buku "C Programming Language"
Ia telah menjadi standard untuk pembangunan C dari masa penerbitannya sehingga pensijilan bahasa rasmi yang pertama. "Standard" itu dipanggil K&R—selepas huruf pertama nama keluarga pengarang.
Buku ini memperkenalkan program "Hello World" sebagai contoh program kerja minimum. Selepas tahun 1978, hampir setiap buku mengenai bahasa pengaturcaraan tidak dapat dilakukan tanpa contoh kod ini. Hari ini, memaparkan "Hello World" sebagai program pertama anda adalah tradisi yang sudah sedia terjamin.
#include <stdio.h> main() { printf("Hello, World\n"); }
K&R mempersembahkan beberapa ciri bahasa. Contohnya, struktur—satu set beberapa pembolehubah yang dikumpulkan di bawah satu nama untuk memudahkan rujukan, serta jenis data long int dan unsigned int.
Operator penambahan/tolak dengan tugasan juga berubah dalam K&R C. Sebelum ini, untuk meningkatkan nilai sebanyak satu, anda perlu menulis a = 1, tetapi operator tersebut mengelirukan pengkompil C. Selain itu, perbezaan antara a = 1 (naik satu) dan a = 1 (tugasan) kelihatan agak rapuh dari sudut pandangan manusia. Dalam K&R C pengendali ini bertukar menjadi yang biasa—a = 1.
Contoh kod dalam buku itu direka bentuk dalam gaya seragam, yang juga dinamakan sempena huruf pertama nama keluarga pencipta. Gaya K&R terkenal kerana penggunaan lapan ruang putih sebagai lekukan utama (walaupun empat ruang putih lebih biasa digunakan). Ia juga dipanggil "gaya kernel", kerana kernel Unix ditulis dalam gaya ini.
#include <stdio.h> main() { printf("Hello, World\n"); }
Pada Mei 1979, pekerja Bell Labs Bjarne Stroustrup mula membangunkan sistem yang akan menjadi kluster Unix yang pertama. Dengan kata lain, dia mula mencipta sistem pengkomputeran teragih yang disambungkan ke rangkaian biasa beberapa komputer.
Masalahnya ialah kekurangan kit alat yang sesuai untuk ini. Di antara bahasa pengaturcaraan sedia ada, terdapat dua pilihan yang boleh membantu menyelesaikan masalah ini, tetapi kedua-duanya mempunyai nuansa. Bahasa BCPL adalah pantas tetapi tidak sesuai untuk projek besar kerana ia agak hampir dengan bahasa peringkat rendah. Bahasa pengaturcaraan berorientasikan objek Simula, sebaliknya, sesuai untuk tugas itu tetapi agak perlahan. Jadi Stroustrup mula melaksanakan bahasa berasaskan Cnya sendiri.
Seawal Oktober 1979, prapemproses CPRE, menambah kelas, kepada C telah sedia. Bahasa itu dipanggil C dengan Kelas. Seseorang boleh menulis kod program dan menyampaikannya kepada prapemproses. Walau bagaimanapun, ia masih dianggap sebagai lanjutan kepada C.
Selain kelas, versi pertama C dengan Kelas termasuk:
Bahasa semakin popular:
Tetapi walaupun dengan populariti itu, C hanya mempunyai standard K&R yang tidak dinyatakan. Pembangun penyusun telah memperkenalkan banyak perubahan bukan standard kepada bahasa. Pada masa inilah masalah mudah alih kod mula memanas. Piawaian C pertama mula muncul memandangkan julat isu ini.
Pada tahun 1983, Institut Piawaian Kebangsaan Amerika (ANSI) membentuk jawatankuasa untuk merangka spesifikasi. Proses penyeragaman berakhir hanya pada tahun 1989, apabila standard pertama untuk bahasa itu disahkan sebagai "ANSI X3.159-1989: Bahasa Pengaturcaraan C". Pada tahun yang sama, edisi kedua buku "The C Programming Language" telah diterbitkan, menerangkan bahasa seperti yang terdapat dalam standard. Dalam masa setahun, piawaian ini telah diluluskan oleh Pertubuhan Standardisasi Antarabangsa (ISO) dengan perubahan kecil.
Rajah N2 - Kulit edisi kedua buku "C Programming Language"
Selain kemunduran perubahan pada bahasa sejak K&R, piawaian ini termasuk ciri baharu sepenuhnya, seperti prototaip fungsi dan prapemproses yang lebih canggih. Piawaian itu juga termasuk penerangan tentang komposisi perpustakaan standard. Di samping itu, beberapa cara yang tidak ditakrifkan lebih awal telah diberikan takrifan yang lebih tepat.
Pada tahun 1982, Bjarne Stroustrup mula mengusahakan perubahan yang akan membawa C dengan Kelas keluar dari negeri ini, yang penciptanya panggil sebagai "kejayaan sederhana". Bermula dari saat itu, ia mengambil masa setahun untuk membangunkan penyusun. Cfront keluar pada tahun 1983.
Ciri utamanya ialah ia menukar C dengan kelas kepada kod C. Selepas itu, kod yang ditukar dihantar kepada pengkompil C. Ciri ini membolehkan lebih ramai orang menggunakan pengkompil, serta menggunakannya pada infrastruktur Unix sedia ada.
Apabila bahasa berkembang, namanya berubah beberapa kali. Ia pertama kali dipanggil C84 kerana komuniti memanggilnya hanya C. Walau bagaimanapun, nama itu juga mengelirukan, kerana ia lebih seperti standard C baharu daripada subset bahasa. Dan ia sebenarnya tidak membantu dengan masalah nama sebelumnya. Akhirnya bahasa itu dikenali sebagai C , iaitu C dan pengendali kenaikan.
Apabila berpindah dari C dengan kelas ke C , ciri baharu lain muncul dalam bahasa:
Gaya ulasan, yang masih digunakan hari ini, berakar pada peringkat perkembangan bahasa ini. Gaya ini digunakan dalam bahasa lain juga.
Beginilah kehidupan C sebelum pensijilan rasmi. Stroustrup bertindak balas dengan segera kepada permintaan komuniti pengaturcara. Beliau menerbitkan karya yang mewakili huraian standard bahasa itu. Jadi, bahasa itu dikekalkan terutamanya atas usaha penciptanya.
Pada Februari 1985, versi pertama C yang boleh diagihkan telah dikeluarkan. Pada bulan Oktober tahun yang sama, pencipta bahasa Bjarne Stroustrup mengeluarkan edisi pertama buku "The C Programming Language."
Rajah N3 - Kulit edisi pertama buku "The C Programming Language"
Ia menjadi standard tersirat pertama untuk bahasa C sama seperti buku Kernighan dan Ritchey "The C Programming Language." Ia sehingga standard rasmi pertama.
Dalam buku itu, Stroustrup merangkumi ciri bahasa serta isu reka bentuk dari perspektif C, menyerikan setiap titik dengan banyak contoh kod.
Sejak itu, buku itu telah dicetak semula tiga kali lagi, setiap kali dengan kemas kini bahasa. Pada masa penulisan, edisi ke-4 terbaharu termasuk standard C 11.
Pada Julai 1989, pengkompil Cfront 2.0 telah dikeluarkan. Ia telah disemak dengan ketara berbanding versi sebelumnya dan juga membawa kebaharuan kepada bahasa C.
Pada masa ini, templat sudah menjadi buah mulut orang ramai. Tiada siapa yang meragui bahawa ia akan dilaksanakan, kerana ia adalah objektif yang realistik. Bagi satu lagi ciri unggul yang berpotensi—warisan berbilang—merupakan cabaran sebenar bagi pencipta daripada komuniti pengaturcaraan. Ramai yang mengatakan bahawa melaksanakan pelbagai warisan dalam C adalah mustahil. Dalam Simula, sebagai contoh, cadangan serupa telah ditolak kerana kerumitan pemungut sampah yang tidak dapat dielakkan. Walau bagaimanapun, warisan berbilang amat diperlukan, kerana ia akan memudahkan pembangunan perpustakaan yang kodnya agak menyusahkan tanpanya.
Akibatnya, berbilang warisan telah ditambahkan dalam Cfront 2.0. Penambahan bahasa ini telah mencetuskan kontroversi. Sebagai contoh, ada yang berpendapat bahawa bahasa Smalltalk, lambang pengaturcaraan berorientasikan objek, tidak mempunyai banyak warisan. Itulah sebabnya C sudah tentu tidak sepatutnya menerimanya. Pencipta bahasa beranggapan bahawa tindak balas sebegitu disebabkan oleh mengambil warisan berbilang terlalu serius.
Versi C di atas turut memperkenalkan:
Pada tahun 1990, Borland mengeluarkan persekitaran pembangunan bersepadu Borland C untuk membangunkan program C dan C (macam kelainan, hah?). Ia pada asalnya bertujuan untuk pembangunan di bawah DOS, tetapi kemudiannya sokongan Windows telah diperkenalkan juga.
Rajah N4 - Tangkapan skrin daripada Borland C
Secara sejarah, Borland C adalah keturunan Turbo C tetapi menggabungkan ciri-ciri C —sokongan pengaturcaraan berorientasikan objek.
Setiap versi persekitaran mempunyai pengkompil sendiri yang menyokong piawaiannya sendiri. Lama kelamaan, Borland C mendapat banyak perpustakaan khusus untuk pembangunan aplikasi yang pantas.
Versi Borland C IDE yang terakhir dikeluarkan pada tahun 1997, selepas itu ia digantikan dengan siri Borland C Builder. Penamat Borland C datang pada tahun 2000 dengan keluaran Borland C 5.5 datang dengan pengkompil.
Borland C ialah editor selesa yang bagus untuk DOS. Malah terdapat beberapa jenis pewarnaan sintaks.
Yuri Minaev, arkitek teras C dan C penganalisis PVS-Studio
Empat tahun selepas Borland, Microsoft mengeluarkan persekitaran pembangunan bersepadu Visual Cnya.
Pada tahun 1986, Bjarne Stroustrup menulis artikel "Apakah Pengaturcaraan Berorientasikan Objek?" di mana dia menyuarakan tiga kelemahan C :
Pewarisan berbilang diperkenalkan pada tahun 1989 dengan C 2.0, dan kelemahan selebihnya telah diperbaiki pada tahun 1990 dengan ciri bahasa baharu. Mereka diterangkan oleh Stroustrup dalam buku "Manual Rujukan C Beranotasi".
Templat dan pengendalian pengecualian muncul tidak lama lagi, satu demi satu. Templat telah diluluskan di Seattle pada bulan Julai, dan mekanisme pengendalian pengecualian telah diluluskan di Palo Alto pada bulan November. Keluaran rapat mereka adalah disebabkan oleh fakta bahawa kedua-dua inovasi ini menangani masalah yang sama. Menurut pencipta bahasa itu sendiri, templat membolehkan anda mengurangkan bilangan ralat semasa pelaksanaan program dengan memperluaskan keupayaan sistem jenis statik. Walaupun pengecualian membolehkan anda mengendalikan baki ralat.
Jenis berparameter telah dipertimbangkan kembali dalam edisi pertama C . Namun mereka terpaksa ditangguhkan kerana kekurangan masa untuk mengkaji isu reka bentuk dan pelaksanaan yang mencukupi. Pengecualian juga ditangguhkan atas sebab yang sama. Dan ia bukan sia-sia. Reka bentuk mereka bertahan dari 1984 hingga 1989.
"Manual Rujukan C Beranotasi" juga memperkenalkan ruang nama dan keupayaan untuk mengenal pasti jenis semasa masa jalan.
Pengaturcaraan generik mula mendapat momentum pada ketika itu. C dengan templat bukan perintis. Semasa membuat templat, pencipta sedang melukis idea daripada bahasa pengaturcaraan ML, CLU dan Ada.
Walau bagaimanapun, adalah selamat untuk mengatakan bahawa C mempromosikan paradigma ini. Templat memungkinkan untuk menulis kod tanpa makro dalam banyak kes, mengurangkan peluang menembak diri sendiri di kaki. Di sini datang lalat dalam salap —fungsi beroperasi sepenuhnya yang memudahkan kerja dengan pengaturcaraan generik hanya muncul oleh C 20. Tetapi itu tidak menghalang pengaturcara apabila mereka mengetahui bahawa templat boleh mendayakan pengiraan pada peringkat penyusunan...
Sebaliknya, pengecualian dalam C tidak begitu jelas. Malangnya, mereka tidak menyelesaikan semua masalah pengendalian ralat berbanding pendekatan terdahulu. Aliran kawalan menjadi tidak remeh apabila menggunakan pengecualian. Terdapat banyak cara untuk menembak diri sendiri dengan mereka, seperti mewarisi pengecualian secara peribadi, menangkap pengecualian mengikut nilai, atau mengatur blok tangkapan dalam susunan yang salah, dsb. Akibatnya, sesetengah piawaian pengekodan melarang penggunaannya, seperti Google Gaya Kod C.
Philipp Khandelyants, Ketua Pasukan pasukan pembangunan C dan C di PVS-Studio
"Manual Rujukan C Beranotasi" telah menjadi semacam pendahulu kepada penyeragaman rasmi C. Ia menerangkan semua inovasi yang tidak lama lagi akan menjadi standard untuk bahasa itu.
Dalam artikel ini, kami membincangkan peristiwa dalam sejarah C dan C dari 1969 hingga 1990. Dalam artikel seterusnya, kami akan menyelidiki sejarah C dari 1991 hingga hari ini:
Atas ialah kandungan terperinci Sejarah C dan C . Bahagian satu: kemunculan dan penyeragaman bahasa C. C dengan Kelas menjadi C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!