Mengapa beberapa bahasa pemrograman populer dipengaruhi oleh C? [Tutup]

23

10 bahasa pemrograman teratas, menurut indeks TIOBE tampaknya sangat dipengaruhi oleh C:

1. Jawa

Bahasa ini banyak mengambil sintaksnya dari C dan C ++ tetapi memiliki model objek yang lebih sederhana dan lebih sedikit fasilitas tingkat rendah. - wikipedia.org

2. C

C adalah salah satu bahasa pemrograman yang paling banyak digunakan sepanjang masa dan ada sangat sedikit arsitektur komputer yang tidak ada kompiler C. - wikipedia.org

3. C #

Selama pengembangan .NET Framework, pustaka kelas awalnya ditulis menggunakan sistem kompiler kode yang dikelola yang disebut Simple Managed C (SMC). Pada Januari 1999, Anders Hejlsberg membentuk sebuah tim untuk membangun bahasa baru pada waktu itu yang disebut Cool, yang merupakan singkatan dari "C-like Object Oriented Language". - wikipedia.org

4. C ++

Ini dikembangkan oleh Bjarne Stroustrup mulai tahun 1979 di Bell Labs sebagai tambahan untuk bahasa C. - wikipedia.org

5. Tujuan-C

Objective-C adalah bahasa pemrograman berorientasi objek yang reflektif yang menambahkan pesan gaya-Smalltalk ke bahasa pemrograman C. - wikipedia.org

6. PHP

Dia menulis ulang skrip-skrip ini sebagai bahasa pemrograman C Common binary Interface Interface (CGI), memperluasnya untuk menambahkan kemampuan untuk bekerja dengan formulir Web dan untuk berkomunikasi dengan database dan menyebut implementasi ini "Personal Home Page / Forms Interpreter" atau PHP / FI. - wikipedia.org

8. Python

Python dikandung pada akhir 1980-an dan implementasinya dimulai pada Desember 1989 oleh Guido van Rossum di CWI di Belanda sebagai penerus bahasa pemrograman ABC (sendiri terinspirasi oleh SETL) yang mampu menangani pengecualian dan berinteraksi dengan sistem operasi Amuba. - wikipedia.org

ABC (bahasa pemrograman) Desainernya mengklaim bahwa program ABC biasanya sekitar seperempat ukuran dari program Pascal atau C yang setara, dan lebih mudah dibaca. - wikipedia.org

9. Perl

Perl meminjam fitur dari bahasa pemrograman lain termasuk C, shell scripting (sh), AWK, dan sed. - wikipedia.org

10. JavaScript

JavaScript menggunakan sintaksis yang dipengaruhi oleh C. - wikipedia.org

Tampaknya sebagian besar dari mereka meminjam sintaksis mereka dari C dan / atau sangat dipengaruhi dalam beberapa cara lain, setidaknya di awal mereka. Mengapa?

John Isaiah Carmona
sumber
15
Memiliki sintaksis c like tidak sama dengan berbasis pada c.
Oded
15
Selain itu, TIOBE adalah indeks sampah.
DeadMG
3
Sebaliknya, dapatkah saya bertanya mengapa bahasa pemrograman berbasis C lebih populer?
Manoj R
3
@YannisRizos Selamat dari pertanyaan ini! Ini sebenarnya pertanyaan yang bagus sekarang.
maple_shaft
16
Karena C adalah turunan dari ALGOL, dan ALGOL adalah untuk memblokir labguages ​​imperatif seperti apa Ibrahim bagi orang Kristen, Yahudi dan Muslim.
Ingo

Jawaban:

40

Dengan munculnya UNIX di tahun 1970-an, bahasa pemrograman sistem standar C dengan cepat menjadi lingua franca dari dunia pemrograman. Untuk beberapa saat, C praktis wajib untuk setiap programmer. Dengan demikian, fakta bahwa C telah mempengaruhi hampir setiap bahasa pemrograman yang datang setelahnya dengan satu atau lain cara tidak mengejutkan, karena dua alasan:

  • Saat mendesain bahasa baru, masuk akal untuk mendasarkan sintaksisnya, jika mungkin, pada bahasa populer yang ada yang dapat dianggap sebagai pengetahuan umum.
  • Bahasa baru lebih mungkin berhasil jika kurva belajarnya dangkal, dan sintaksis yang menyerupai bahasa yang sudah dikenal umumnya lebih mudah dipelajari (kecuali jika berperilaku sangat berbeda meskipun ada kesamaan). Jadi bahasa yang meminjam sintaksis dari C umumnya mendapatkan daya tarik lebih cepat daripada yang tidak.

Tetapi bahasa lain ada, dan masih ada, beberapa dari mereka bahkan mendahului C - ada keluarga LISP (CL, Clojure dan Skema menjadi dialek modern paling populer), keluarga ML (dengan beberapa dialek modern), ada seluruh pasukan Dialek BASIC (VB.NET dan VBA adalah implementasi modern), ada Pascal dan kerabatnya (Delphi menjadi yang paling dikenal) dan banyak bahasa 'aneh' yang mengambil pengaruh dari banyak bahasa lain dan menciptakan beberapa hal sendiri; contohnya termasuk Go, Python, Lua, Haskell (dan pendahulunya, Miranda), Prolog, dan Erlang. Meskipun tidak satu pun dari bahasa ini (kecuali Python) yang masuk dalam 10 teratas Anda, banyak dari mereka memiliki basis pengguna yang stabil dan komunitas yang aktif; mereka tentu tidak akan pergi.

Juga, perlu dicatat bahwa jumlah pengaruh C dalam bahasa-bahasa ini berbeda secara liar, mulai dari hampir 100% bahasa C yang kompatibel C ++ dan Objective-C, hingga Python (yang dengan sengaja meninggalkan banyak fitur sintaks C). Dan itu hanya sintaksis: dalam hal semantik, sebagian besar bahasa dalam daftar itu tidak memiliki banyak kesamaan dengan C. Mayoritas yang luar biasa memiliki manajemen memori yang dibangun ke dalam bahasa, dan akibatnya, menyalin semantik, melewati argumen, dll. sangat berbeda. JavaScript, misalnya, memiliki pengaruh semantik yang kuat dari Skema, sementara sintaksnya dirancang menyerupai Java (yang, pada gilirannya mendasarkan sintaks bit-and-pieces pada C, tetapi bukan semantiknya). Perbedaan lain (dengan pengecualian C ++ dan Objective-C, yang sebagian besar kompatibel dengan C) termasuk penanganan kesalahan, aturan ruang lingkup,#include), dan fakta bahwa banyak dari bahasa-bahasa ini 'divirtualisasi', yaitu, mereka berjalan pada penerjemah, kompiler JIT, atau mesin virtual.

Omong-omong, Python memang memiliki pengaruh C, tetapi tentu saja tidak "didasarkan pada" C. Kedua sintaks dan semantik berbeda secara radikal dari C, dan ini adalah desain. Python hanya meminjam fitur dari C di mana alternatif lain sama-sama "baik" (sesuai "Zen Python" - ketikkan import thisinterpreter python).

Adapun masa depan pemrograman; prediksi bervariasi. Pengaruh C tidak akan hilang, tetapi perkembangan terkini dalam perangkat keras (mesin multi-inti menjadi hal yang umum, GPU yang kuat, CPU tidak lagi menjadi hambatan kinerja yang khas, koneksi jaringan yang cepat andal, dll.) Membutuhkan pendekatan yang sangat berbeda dalam pemrograman secara umum. Siapa pun yang pernah menulis aplikasi terdistribusi multithreaded dalam bahasa imperatif dapat mengatakan bahwa itu sangat sulit, sementara bahasa seperti Haskell memiliki fitur yang menghilangkan sebagian besar masalah khas dan menawarkan pendekatan yang lebih abstrak dan lebih terstruktur untuk pemrosesan terdistribusi, bersamaan, dan paralel. (Kemurnian menjadi konsep penting dalam konteks ini). Bahasa pemrograman yang lebih baru (misalnya C # atau D) sudah menyertakan banyak fitur untuk mendukung idiom semacam itu. Bagaimanapun,

tammmer
sumber
Jawaban yang bagus, tetapi "CPU berhenti menjadi hambatan kinerja yang khas"? Dalam pengalaman saya, masalah kinerja berlimpah - CPU, IO, sebut saja. Jika tidak, profiler tidak akan diperlukan, meskipun mereka tidak terlalu efektif.
Mike Dunlavey
6
@MikeDunlavey: Biasanya, hambatan yang saya temui disebabkan oleh I / O, jaringan, kinerja cache CPU, throughput bus, dan komunikasi proses (tidak efisien). Kembali pada hari-hari, CPU hampir pasti adalah hambatan; ini tidak benar lagi.
tdammers
1

Ini seperti bertanya mengapa bahasa Inggris adalah bahasa yang dominan di AS. Kenapa tidak Spanyol atau Prancis? Mereka menguasai lebih banyak wilayah AS daripada koloni Inggris. Kenapa tidak Belanda? Ibukota AS pertama berada di bekas jajahan Belanda. Saya tidak yakin mungkin ada "jawaban" untuk ini.

Namun, timeline "Sejarah Bahasa Komputer" ( http://www.levenez.com/lang/ ) memberikan semua jawaban yang mungkin ada.

S.Lott
sumber
6
Karena Inggris Raya dari tahun 1600-1880 kira-kira adalah pusat industri dan keuangan utama dunia, diikuti oleh Amerika Serikat dari tahun 1880-Sekarang (<- dapat diperdebatkan). Itu menjadi bahasa bisnis internasional dan dituturkan dengan lancar oleh lebih dari 2 miliar orang di seluruh dunia. Itu dan tidak ada yang mau berbicara bahasa Spanyol atau Belanda :)
maple_shaft
6
@maple_shaft - "tidak ada yang mau berbicara bahasa Spanyol" ?! ... apakah Anda tahu berapa banyak negara yang digunakan? en.wikipedia.org/wiki/Spanish_language
Rook
12
@ S.Lott: Maksud Anda bagian di mana Kerajaan Inggris adalah kekaisaran terbesar yang pernah ada, dan menempati 25% dari seluruh permukaan dunia? "Tidak kuat" semacam itu?
DeadMG
3
@DeadMG: Saya tidak berbicara tentang dunia. Saya berbicara tentang AS pada 1700-an di mana Prancis membuat Inggris terkurung di daerah kecil di sepanjang pantai. Saya berbicara tentang Inggris yang kehilangan keterlibatan militer di teater ini saja. Prancis jelas mengendalikan sebagian besar dari apa yang menjadi dirinya AS. Namun. AS akhirnya berbicara bahasa Inggris. Bukan Perancis. Analisis yang sama berlaku untuk C. Ini adalah sejarah yang kompleks dengan banyak faktor yang mempengaruhi. Tidak ada yang sepele, tepuk jawaban.
S.Lott
4
@ S.Lott Orang Prancis tidak memenangkan setiap pertemuan. Hanya dengan melihat Amerika Utara, mereka memenangkan mayoritas; tetapi kalah 4 dari 5 pertempuran besar di NA selama 1559/60 mengakibatkan kekalahan telak di teater. Tangkapan dari Fort Ticonderoga dan Niagara, The Plains of Abraham, dan pertempuran Restigouche adalah semua kemenangan Inggris. Dengan memotong pasokan / penguatan, yang terakhir membuat kemenangan Prancis di Sainte-Foy tidak relevan.
Dan Neely
0

Jika Anda membuat bahasa pemrograman baru, memiliki sintaksis yang mirip dengan bahasa populer yang ada membuat belajar lebih mudah bagi pengguna baru Anda. Apalagi jika banyak konsep yang mirip antar bahasa.

Saya juga berpikir bahwa sintaks C-style relatif mudah dibaca. Untuk membandingkan dengan Pascal, menggunakan simbol "{" dan "}" untuk blok kode lebih terbaca daripada "mulai" dan "akhir", yang secara optik sangat mirip dengan pengidentifikasi. Python bahkan lebih terbaca, tetapi memasukkan spasi putih dalam sintaks akan membuka serangkaian masalah baru dengan pengeditan. Contoh lain: Lisp dan JavaScript membagikan beberapa gagasan, tetapi ketika hal yang sama ditulis dalam sintaks C-style, itu kurang jelas.

Saya yakin banyak orang akan tidak setuju dengan paragraf kedua, karena setiap orang memiliki bahasa favorit mereka sendiri, tetapi saya pikir popularitas sintaksis gaya-C sebagian merupakan kebetulan sejarah, tetapi sebagian juga menunjukkan bahwa penulis C membuat beberapa hal yang baik. keputusan.

Viliam Búr
sumber
-1

Bahasa pemrograman berevolusi dari waktu ke waktu seperti bahasa alami, dengan beberapa bahasa yang lebih tua mempengaruhi evolusi itu dengan cara yang lebih kuat daripada yang lain, sementara yang lain memudar menjadi ketidakjelasan dan pengaruhnya lebih sulit dilacak pada tingkat permukaan, yaitu sintaksis.

Pengaruh C berasal dari banyak sumber - levelnya rendah, tersebar luas, mendapat dukungan di kalangan Unix dan Microsoft. Ini juga kelangsungan hidup dari masalah yang paling cocok - mudah untuk melihat sintaksis mirip-C memiliki daya tarik lebih daripada sintaksis Pascal yang diturunkan dari Algol yang diturunkan secara verbal dan para pesaing C lainnya pada tahun 1970-an dan 1980-an. Oleh karena itu secara luas diadopsi oleh bahasa yang datang setelahnya.

Dengan tumbuhnya pentingnya pemrograman multithreaded dan bahasa fungsional yang sangat cocok untuk itu, saya akan mengatakan kita akan melihat pengaruh mereka tumbuh di masa depan. Contoh kasus: Python, yang bahkan membuat daftar itu di posting pertanyaan.

Tampilan garis waktu yang bagus dari sejarah bahasa untuk direnungkan

scrwtp
sumber
Anda salah. Baik PASCAL dan C adalah keturunan ALGOL.
Ingo
Benar, tetapi Algol sendiri adalah keturunan Fortran dan mengambil beberapa konstruksi yang saya maksud di sana (program, akhir, subrutin dibandingkan dengan tanda kurung c). Namun, apa yang ada dalam pikiran saya sebenarnya adalah sintaks seperti Algol. Diedit.
scrwtp
sintaks seperti C memiliki lebih banyak daya tarik daripada sintaks yang diturunkan dari Algol yang diturunkan dari Pascal dan pesaing C lainnya di tahun 70-an dan 80-an +1 untuk itu. mulai programmer adalah manusia juga ujung mulai mereka yang percaya bahwa itu nyaman untuk memetakan tanda baca dengan kata-kata seperti awal-akhir kehilangan pertempuran mereka untuk kawat gigi keriting akhir cerita
nyamuk
Saya tidak melihat bukti bahwa sintaks C kurang jelas, kecuali dalam arti bahwa sebagian besar pengembang tahu C atau semacam bahasa yang berhubungan dengan C, sehingga terlihat lebih akrab. AFAICT, C menang atas Pascal karena strukturnya, dan fakta bahwa implementasi tidak harus menggulung tautannya sendiri, bukan sintaksis.
David Thornley
@ David-Dari apa yang saya ingat, salah satu alasan C menang atas bahasa lain adalah karena relatif mudahnya mengakses memori dalam C (mis. Pointer). Saya tahu mereka fround sekarang, tetapi kembali ketika 1 KB RAM banyak memori, itu adalah fitur yang sangat kuat dari bahasa. Saya tahu bahasa lain menyediakan fitur seperti pointer, tetapi tidak semudah C.
Dunk
-3

Sebagian besar bahasa yang Anda daftarkan hampir tidak ada hubungannya dengan C selain dari persamaan sintaksis yang tidak relevan. Dua turunan C aktual adalah Objective-C dan C ++.

DeadMG
sumber
Jika kita tidak mempertimbangkan sintaks, maka satu-satunya perbedaan antara bahasa adalah ketersediaan konstruksi bahasa umum (loop, conditional, variabel, abstraksi dari kelas-kelas dan penutupan seperti ini, dll ...) dan bahwa mereka semua menyamakan perilaku mesin kode. Semua bahasa tingkat rendah mirip satu sama lain dan semua bahasa tingkat tinggi sangat mirip satu sama lain pada saat itu.
maple_shaft
2
Anda seharusnya tidak memikirkan bahasa sebagai fungsi apa yang dimilikinya, tetapi bagaimana ia mengomunikasikan perilaku aplikasi. Kode sumber Anda adalah tingkat dokumentasi terendah dan satu kode sumber ditulis untuk orang - orang dan BUKAN untuk mesin . Jika kita menulis kode hanya untuk mesin maka kita semua akan mengkode dalam perakitan.
maple_shaft
1
@maple_shaft: Cukup benar! Saya diminta dalam sebuah wawancara untuk menjelaskan perbedaan antara bahasa mesin (assembler) dan bahasa pemrograman. Jawaban saya adalah: "Bahasa mesin untuk mesin, bahasa pemrograman untuk programmer."
Treb
1
@maple_shaft: Sintaksnya tidak relevan dengan komunikasinya kepada orang - orang . Jika saya mengganti kata bahasa Inggris dengan ejaan yang berbeda, bahasa Inggris akan tetap menjadi bahasa yang sama. Bentuk sintaksis tidak relevan, yang komunikatif adalah semantik bahasa.
DeadMG
3
@DeadMG: Tapi pertanyaannya adalah tentang sintaks. Anda dapat menganggap persamaan sintaksis tidak relevan, tetapi orang yang mengajukan pertanyaan ingin tahu mengapa ada persamaan yang tidak relevan ini .
Nicol Bolas