Mengapa ada begitu banyak bahasa pemrograman? Mengapa bahasa baru masih dibuat? [Tutup]

51

Mengapa ada begitu banyak bahasa pemrograman?

Dan apa yang mendorong seseorang untuk membuat bahasa pemrograman terlepas dari kenyataan bahwa bahasa lain sudah ada?

Moshe
sumber
video menghibur tentang topik ini adalah "Bahasa pemrograman terakhir" oleh Paman Bob Martin ( skillsmatter.com/podcast/agile-testing/bobs-last-language )
mikera
Karena programmer menyukai alat.
haylem
2
Tidak terkait: xkcd.com/927
Lightness Races dengan Monica
Sulit untuk membenarkan ini, saya kira setiap bahasa memiliki cerita. Sebagian besar bahasa tidak menguntungkan pembuatnya sepengetahuan saya. Sebagian besar bahasa berputar di sekitar konsep yang sama dan jarang memecahkan masalah nyata atau menyediakan lingkungan yang baik. Saya pikir pada saat mereka membuatnya, mereka merasa papan dan bosan dengan semua hal dan mungkin melihat bagaimana mereka menyia-nyiakan hidup mereka .... Pikirkan ksh atau JavaScript ..... Alat yang mengerikan dan berbahaya.
NoChance

Jawaban:

36

Bahasa pemrograman berkembang

Bahasa pemrograman baru sering belajar dari bahasa yang ada dan menambah, menghapus, dan menggabungkan fitur dengan cara baru. Ada beberapa paradigma yang berbeda seperti berorientasi objek dan fungsional dan banyak bahasa modern mencoba untuk menggabungkan fitur dari keduanya.

Ada juga masalah baru yang perlu dipecahkan, misalnya peningkatan CPU multi-core. Solusi paling umum untuk itu adalah utas, tetapi beberapa bahasa pemrograman mencoba untuk memecahkan masalah konkurensi dengan cara yang berbeda misalnya Model Aktor. Lihat Erlang - Perangkat Lunak untuk Dunia Serentak

Jonas
sumber
10
Yang menarik tentang Erlang adalah bahwa itu adalah "penemuan kembali kamar yang bersih" dari model Aktor. Ketika Armstrong dan kawan-kawan mengembangkan Erlang, mereka tidak tahu tentang karya Hewitt et al pada model Aktor!
Frank Shearar
@ Frank: Itu menarik. Saya tidak tahu itu, terima kasih.
Jonas
2
+1 untuk evolusi. Sebuah pertanyaan analog mungkin adalah "Mengapa ada begitu banyak spesies hewan dan tumbuhan? Mengapa yang baru masih muncul?"
Gyan alias Gary Buyn
1
@GaryBuyn itu hanya "+1 untuk evolusi" jika Anda berlangganan sudut pandang itu. Bagi banyak orang, analogi hewan agak terlalu jauh.
Darknight
@ GaryBuyn, Uhm ... itu sama analognya dengan "dusun" dengan "hamster".
Pacerier
22

Itu adalah sebuah siklus. Anda memulai bahasa baru, dan Anda bebas untuk menjauh dari semua sintaksis buruk dan pilihan buruk dari para pendahulu Anda. Dalam versi 1, bahasanya tampak hebat karena tidak memiliki bagasi apa pun, dan menyelesaikan pekerjaan. Kemudian, dalam versi yang lebih baru, Anda mulai bereksperimen dengan fitur yang mungkin tidak berhasil, atau Anda membawa fitur dari bahasa lain yang lebih baru yang menyebabkan sintaksis Anda sedikit kludgey. Lihatlah, setelah beberapa versi lagi, Anda menyadari bahwa bahasa Anda sekarang sama rumitnya dengan yang Anda ganti, dengan masalah sintaksis yang konyol dan warisan bawaan. Dan tiba-tiba, Anda menyadari bahwa jika Anda membuat bahasa baru , Anda dapat memperbaiki semua itu ...

RasionalGeek
sumber
2
Ini jelas berlaku untuk perpustakaan, kerangka kerja dan perangkat lunak, tetapi saya pribadi tidak tahu bahasa ini berlaku untuk. Apakah Anda punya contoh?
back2dos
16
Yah, saya pikir C # dan Java diperkenalkan setidaknya sebagian untuk mengatasi kompleksitas dengan C ++. Dan sekarang, jika Anda melihat kedua bahasa tersebut beberapa versi kemudian, sintaks dan set fiturnya semakin kompleks di mana orang-orang mulai berbicara tentang mereka "di atas bukit". Hanya saya mengambilnya meskipun saya tidak dapat membuktikan apa pun. :-)
RationalGeek
2
Poin bagus, tapi saya pikir fakta lain sedang bermain dengan C # - ini adalah produk komersial yang tidak ada untuk alasan amal dan untuk penerimaan pasar / menjaga produk pelanggan Anda harus "ditingkatkan" untuk rilis baru dll.
gf
1
Ini benar. Dorongan untuk menambah fitur baru untuk mendapatkan lebih banyak uang dari pasar tentu tidak dapat diabaikan. Namun, itu adalah pedang bermata dua. Anda dapat mengharapkan fitur baru dari produk yang didukung secara komersial untuk alasan yang tepat ini. Tetapi dari produk open source, Anda hanya mendapatkan fitur-fitur baru selama pasukan sukarelawan tetap tertarik, dan ada seseorang yang ahli di pucuk pimpinan untuk menggiring kucing.
RationalGeek
C # memiliki banyak fitur, tetapi masih merupakan bahasa yang lebih bersih daripada C ++. Tambahan baru seperti LINQ memungkinkan Anda untuk melakukan hal-hal bersih yang tidak dapat Anda lakukan dengan mudah di C ++. Saya pikir itu lebih mungkin bahwa ada dua jenis konservasi kompleksitas - satu di mana beberapa kompleksitas yang melekat dalam masalah, dan satu di mana ketika Anda menghilangkan satu jenis kompleksitas yang berlebihan dari program Anda, persyaratan menjadi lebih kompleks - kompleksitas, seperti data, memperluas untuk mengisi "ruang" yang tersedia.
Steve314
11

Untuk alasan yang sama ada palu, obeng, gergaji tangan, gergaji pita, jackhammers, linggis, dan sejumlah alat lainnya: tidak setiap bahasa sempurna untuk setiap tugas. Beberapa bahasa ditargetkan pada domain masalah tertentu: R sangat baik untuk analisis statistik, C sangat baik untuk menulis kernel sistem operasi, Haskell sangat baik untuk perhitungan matematika atau keuangan, Erlang sangat baik dalam pemrograman bersamaan, dll.

Juga, untuk alasan yang sama bahwa kemeja datang dalam berbagai warna: beberapa orang hanya menyukai "gaya" dari satu bahasa ke bahasa lain.

Dan, tentu saja, banyak programmer merasa senang untuk menciptakan bahasa baru, hanya untuk melihat apa yang terjadi, atau mungkin karena mereka memiliki pengetahuan tentang bahasa dan ingin menghilangkan rasa gatal, atau mencoba beberapa ide.

mipadi
sumber
Tidak hanya ada semua alat konstruksi itu, tetapi bahkan ada berbagai jenis palu dan palu yang terlihat serupa tetapi memiliki faktor desain khusus yang membuatnya lebih baik untuk pekerjaan atau pengguna yang berbeda.
Barry Brown
+1 Untuk kesesuaian untuk domain masalah. Para akademisi yang mempelajari alat secara umum mengatakan bahwa alat yang sangat umum kurang kuat daripada alat khusus untuk tugas tertentu. Pikirkan kunci pas yang dapat disesuaikan vs kunci pas ukuran tetap
MarkJ
8

Karena mereka semua payah (dengan satu atau lain cara).

Saat ini, kami telah membuat sekitar 5.000 bahasa untuk menggambarkan masalah alam dan tidak ada satupun dari mereka yang tersedia untuk menulis program (contohnya adalah "Bahasa Inggris").

Sampai seseorang menemukan cara untuk membuat bahasa pemrograman yang dapat mengekspresikan apa yang dapat Anda ungkapkan dalam kalimat dalam bahasa alami, mereka akan terus berdatangan.

Aaron Digulla
sumber
15
Bahkan kemudian, mereka akan terus datang. Hanya bahasa mati yang ditulis dalam batu, maafkan permainan kata-kata itu. Ada alasan mengapa bahasa yang hidup terus berubah.
R. Martinho Fernandes
1
Beberapa orang akan mengklaim bahwa bahasa alami untuk mengekspresikan masalah adalah matematika. Ini menimbulkan pertanyaan mengapa orang terus menambahkan gula sintaksis ke bahasa fungsional daripada menggunakan kalkulus lambda murni. Saya pikir masalah yang harus kita selesaikan secara rutin seringkali tidak mudah diungkapkan dalam Bahasa Inggris atau Matematika.
Steve314
5
Sepakat. Sangat sulit untuk mengekspresikan "Aku lapar" menggunakan matematika murni.
Aaron Digulla
1
@AaronDigulla: lapar = jumlah (perut / makanan) pasti :)
gbjbaanb
@ AaronDigulla itu contoh yang bagus, sering kali Anda ingin mengekspresikan komputasi. Jadi kami mengambil skenario tertentu seperti: Saya lapar, sekarang makan -> baik-baik saja, sekarang tidak makan -> kelaparan. Untuk membangun sistem karena dapat bernegosiasi atau memperluas konteks, saya pikir itulah tujuan AI. Bahasa pemrograman normal hanya mengungkapkan apa yang orang katakan kepada mereka apa yang harus mereka lakukan dan biasanya itu agak spesifik daripada umum. Tetapi karena sebagian besar masalah itu sendiri spesifik, Anda mungkin melihat masalahnya di sini.
AndreasScheinert
6

Jelas satu motivasi penting untuk menciptakan bahasa baru adalah untuk mencapai sesuatu yang lebih baik daripada bahasa yang sudah ada. Dan karena selalu ada ruang untuk perbaikan, akan selalu ada bahasa baru.

Kepentingan komersial adalah alasan besar lainnya. Saya percaya penting bagi Microsoft misalnya bahwa mereka dapat menawarkan bahasa untuk setiap kebutuhan sehingga perusahaan dan pengembang lebih menyukai platform mereka.

Carlos
sumber
6

Kode Warisan. Jika Anda memulai bahasa baru, Anda tidak harus mendengarkan / mempertimbangkan semua keluhan saat Anda mengubah bahasa lama. Bahkan jika semua orang setuju bahwa implementasi baru lebih baik, itu tidak dapat merusak kode lama. Dan ada banyak kode lama di luar sana.

JeffO
sumber
3
Apakah ada kasus yang didokumentasikan dari bahasa yang dirancang untuk menghindari kode warisan? Klaim ini tampaknya sangat tidak mungkin. Saya dapat melihat kasus di mana Anda ingin memulai yang baru (.net datang ke pikiran) tetapi tidak begitu banyak untuk menghindari kode warisan tetapi untuk lebih mengaktifkan kode masa depan.
Bryan Oakley
Saya tidak percaya ini benar. (Biasanya) mungkin untuk melakukan implementasi open source dari bahasa yang ada.
Alternatif
@BryanOakley - .NET awalnya dimaksudkan untuk menjaga kompatibilitas dengan VB6, tetapi mereka memutuskan itu masalah yang terlalu sulit .NET masih memiliki banyak warisan WRT Java / J ++ yang menjadi dasar. Saya pikir D adalah contoh bahasa yang dirancang melawan kode lawas.
gbjbaanb
4

karena itu menyenangkan untuk membuat bahasa baru bahkan jika mereka tidak memiliki kegunaan nyata

Bahasa pemrograman esoterik (terkadang disingkat menjadi esolang) adalah bahasa pemrograman yang dirancang untuk menguji batas-batas desain bahasa pemrograman komputer, sebagai bukti konsep, atau sebagai lelucon.

jk.
sumber
1
Bagi mereka yang tidak membaca catatan kaki di artikel wikipedia, bahasa-bahasa wiki esoterik sangat menyenangkan: esoteric.voxelperfect.net/wiki/Main_Page
David Winslow
maukah Anda menjelaskan lebih lanjut tentang apa yang dilakukannya dan mengapa Anda merekomendasikannya untuk menjawab pertanyaan yang diajukan? "Jawaban khusus tautan" tidak diterima di Stack Exchange
agas
1
@gnat. Sejujurnya saya pikir teks asli bukan hanya tautan jawaban, itu akan berdiri sebagai jawaban pendek tapi valid sempurna tanpa tautan. Tetapi mengingat bahwa tautannya memang menambah rasa, saya telah menyertakan kutipan singkat darinya.
jk.
3

Membuat bahasa pemrograman agak menyenangkan. Sangat dekat dengan karya kreatif murni, karena Anda tidak terbatas pada persyaratan sebelumnya. Ini tidak sulit untuk diimplementasikan lagi, karena Anda selalu dapat mengkompilasi ke C dan mengkompilasi kode C untuk kinerja yang memadai jika Anda menulis kompiler di tempat pertama.

Tentu saja, kebanyakan dari kita memiliki ide-ide bagus yang lebih sedikit daripada yang kita pikirkan, sehingga mereka sering mengecewakan, atau tidak dicintai oleh orang lain selain perancang asli.

Pikirkan tentang bahasa pemrograman yang Anda tahu. Anda dapat dengan mudah menemukan beberapa hal yang tidak Anda sukai, bukan? Anda mungkin memiliki ide bagaimana hal itu dapat diperbaiki. Hanya dengan sedikit dorongan, dengan asumsi Anda tahu banyak tentang pembangunan kompiler (dan banyak orang melakukannya), Anda mungkin mulai merancang dan bahkan menerapkan sendiri.

David Thornley
sumber
2

Jawaban Singkat Cepat

Reinventing The Wheel ... Apa tren saat ini ...

Jawaban Panjang Yang Membosankan

Banyak orang lupa bahwa "bahasa baru lain yang serupa untuk pemrogram lama" adalah "bahasa baru yang jelas untuk pemrogram baru".

Apa yang saya maksud untuk itu?

Nah, untuk programmer "beberapa tahun", Java atau C # dapat menjadi bahasa pemrograman tambahan untuk Cobol yang ada, (OO / Prosedural) Dasar, C / C ++, sedangkan untuk programmer "baru", Java atau C # adalah bahasa baru, sedangkan Cobol, (OO / Prosedural) Dasar, C / C ++ tidak ada untuk mereka, jadi menciptakan kembali roda menjadi hal yang umum ...

Dan, jika ada tren baru dalam teknologi, orang dapat membuat bahasa pemrograman baru berdasarkan tren itu, seperti ecmascript / javascript untuk web dan pemrograman fungsional ...

Tepuk tangan.

umlcat
sumber
+1 untuk menunjukkan aspek reinventing-the-wheel. Seringkali ini dilakukan karena alasan pemasaran: perusahaan atau organisasi yang cukup besar harus memiliki bahasa pemrograman sendiri.
Giorgio
1

bahasa pemrograman baru dibangun karena berbagai alasan, sebagian besar karena ada paradigma pemrograman baru, atau karena kemajuan orang perangkat keras membuat bahasa baru untuk mengambil keuntungan dari fitur perangkat keras baru seperti multitasking, dll.

dalam kasus saya, saya biasanya membangun kompiler kecil (dengan bahasa pemrograman baru), untuk alasan khusus. jika saya membuat banyak game, dan saya percaya bahwa bahasa pemrograman yang khusus dibuat untuk pengembangan game akan menghasilkan kode lebih cepat lebih kecil dan pengembangan lebih cepat berbalik, maka saya membangunnya. dan pada akhirnya ternyata itu juga dapat digunakan untuk pemrograman tujuan umum lainnya.

Saya pikir sebagian besar orang yang membuat bahasa pemrograman memiliki tujuan tertentu dalam pikiran, ada orang yang menciptakannya untuk tujuan umum sejak awal. tetapi kebanyakan tidak.

Omong-omong, saya pikir ada terlalu banyak bahasa pemrograman, tetapi ratusan yang baru akan selalu keluar. beberapa karena kegembiraan, beberapa karena tujuan khusus, sebagai proyek sekolah, atau karena ratusan alasan lainnya. dan cepat atau lambat yang baru akan menjadi populer. Tidak akan pernah berakhir.

Sergio Fernandez
sumber
0

Untuk alasan yang sama, ada begitu banyak <apa saja> dan kami terus membuat <apa saja> baru

Ada selusin kerangka kerja PHP MVC, misalnya, tetapi orang akan selalu membuat yang baru untuk memenuhi kebutuhan spesifik, untuk menghindari ketergantungan pada beberapa tim lain, atau hanya untuk mencoba dan menciptakan sesuatu yang lebih baik. Hal yang sama berlaku pada dasarnya setiap jenis alat atau aplikasi.

Itu adalah hal yang sangat baik, cukup banyak win-win untuk semua orang menurut saya.

Fosco
sumber
Sindrom NIH = umumnya tidak berguna untuk industri TI sama sekali.
gbjbaanb
0

Universitas berkontribusi banyak bahasa pemrograman, dan begitu juga perusahaan yang sangat besar seperti Ericsson (Erlang = bahasa Ericsson), Bell Labs (bahasa B dan C), Google (Bahasa Go beberapa bulan sebelumnya). Banyak dari yang ditulis sebagai bagian dari riset universitas tidak banyak digunakan. Ada beberapa pengecualian penting. Saya kira menulis bahasa Anda sendiri / kompiler membuat topik yang bagus untuk tesis PhD orang yang mempelajari Teori CS atau disiplin ilmu terkait. Itu mengejutkan saya bahwa Python adalah salah satu bahasa pertama yang lahir dari upaya online kolaboratif berbagai programmer di sekitar satu ide.

ixtmixilix
sumber
python-history.blogspot.com/2009/01/... menjelaskan kelahiran Python secara mendetail
Andy Dent
0

Ada beberapa alasan, kebanyakan karena orang berpikir bahwa apa yang ada tidak membuatnya mudah untuk menyelesaikan sejumlah masalah. Beberapa hanya untuk bersenang-senang atau untuk kepentingan akademis.

Saya pikir ada argumen kuat bahwa masalah bagaimana Anda mendesain bahasa yang sempurna belum terpecahkan (dan mungkin tidak akan pernah). Jadi, selama orang memiliki ide-ide baru tentang apa yang akan membuat bahasa yang hebat, orang akan terus berusaha. Beberapa dari percobaan tersebut akan memetakan ruang baru yang keren seperti Erlang dan beberapa akan gagal, tetapi selama ada sesuatu yang dipelajari dari kegagalan itu juga OK.

Zachary K
sumber
-1

Seperti yang dinyatakan sebelumnya, bahasa mencoba menargetkan tugas tertentu tertentu dan bahasa baru mungkin menargetkan area baru. Bahasa-bahasa ini dapat mengambil fitur dari bahasa lain yang saat ini keluar.

Alasan lain untuk bahasa baru adalah mencoba menggabungkan banyak tugas yang berbeda dan menjadi bahasa pilihan untuk berbagai kebutuhan. Beberapa dari bahasa ini mencoba menjadi bahasa yang mencakup semua yang akan selalu Anda gunakan, tidak peduli apa pun kebutuhan Anda.

aneh
sumber
-1

Saya belajar di kelas bahasa pemrograman saya bahwa kebanyakan bahasa diciptakan untuk menghilangkan rasa gatal. Sebagian besar bahasa diciptakan untuk dapat mengekspresikan beberapa set algoritma yang lebih baik. Misalnya, bahasa fungsional diciptakan untuk memberikan algoritma rekursif ruang yang lebih ekspresif.

Bertanya mengapa ada begitu banyak bahasa seperti bertanya mengapa C ++ 0x? :)

Plus, semakin banyak bahasa yang Anda tahu, Anda bisa menjadi lebih ekspresif - ini benar dalam pemrograman dan bahasa alami!

2rs2ts
sumber