Rumah >pembangunan bahagian belakang >C++ >Sejarah C dan C . Bahagian satu: kemunculan dan penyeragaman bahasa C. C dengan Kelas menjadi C

Sejarah C dan C . Bahagian satu: kemunculan dan penyeragaman bahasa C. C dengan Kelas menjadi C

Linda Hamilton
Linda Hamiltonasal
2024-11-25 10:36:10247semak imbas

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 .

History of C and C  . Part one: emergence and standardization of C language. C with Classes becomes C

1969 — 1973. C dilahirkan ke dunia

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.

1978. Buku ini menjadi spesifikasi pertama

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.

History of C and C  . Part one: emergence and standardization of C language. C with Classes becomes 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");
}

1979. C dengan kelas

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:

  • kelas terbitan, tetapi belum mempunyai fungsi maya;
  • kawalan akses;
  • pembina dan pemusnah;
  • kelas rakan;
  • kawalan dan penghantaran jenis hujah fungsi.

1983. ANSI C

Bahasa semakin popular:

  • C mula menggantikan Asas sebagai bahasa utama untuk pengaturcaraan mikrokomputer;
  • Penyusun baharu muncul. Lebih-lebih lagi, ia ditulis oleh orang yang tidak terlibat secara langsung dalam pembangunan bahasa.

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.

History of C and C  . Part one: emergence and standardization of C language. C with Classes becomes C

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.

1983. C dengan Kelas C

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:

  • fungsi maya;
  • nama fungsi dan operator lebih muatan;
  • rujukan;
  • pemalar;
  • semakan jenis dipertingkatkan;
  • kawalan memori kedai bebas dikawal pengguna.

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.

1985. "Bahasa pengaturcaraan C."

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."

History of C and C  . Part one: emergence and standardization of C language. C with Classes becomes C

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.

1989. C 2.0

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:

  • penunjuk kepada ahli, yang membenarkan membuat penunjuk kepada medan dan fungsi bukan statik;
  • statik dan const fungsi ahli;
  • pengubah suai akses dilindungi;
  • pautan jenis-selamat;
  • kelas abstrak;
  • baharu dan padam khusus untuk kelas;

1990. Borland C

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.

History of C and C  . Part one: emergence and standardization of C language. C with Classes becomes C

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.

1990. Templat dan mekanisme pengendalian pengecualian dalam C

Pada tahun 1986, Bjarne Stroustrup menulis artikel "Apakah Pengaturcaraan Berorientasikan Objek?" di mana dia menyuarakan tiga kelemahan C :

  • kekurangan sokongan untuk jenis parameter;
  • kekurangan mekanisme pengendalian pengecualian standard;
  • kekurangan berbilang warisan.

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 siri seterusnya...

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:

  • Buku Bjarne Stroustrup tentang cara C dicipta;
  • C 98 ialah piawaian rasmi pertama;
  • C99—C terus bergerak;
  • Laporan Teknikal 1—ciri C baharu di atas kertas;
  • Keluaran Viva64, kemudian—PVS-Studio;
  • C merekodkan apa yang telah dicapai (C99, C11), dan C memperoleh momentum (C 11, C 17);
  • C 20 dan C 23.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn