Mengapa tidak ada bahasa pemrograman “universal” yang melayani semua tujuan? [Tutup]


57

mengapa tidak menggabungkan fitur terbaik dari semua bahasa pemrograman yang ada dan cocok dalam bahasa pemrograman universal?


23
Istilah 'terbaik' adalah subyektif, sehingga Anda tidak akan pernah memiliki yang terbaik yang diterima secara universal. Tentu saja ada beberapa bahasa yang cocok untuk rentang pengembangan luas di semua platform. C ++ dan Java menjadi dua utama.
GrandmasterB

5
@GrandmasterB Anda lupa C #
Daniel Little

15
Ada, namanya 'C'
Martin Beckett

9
kita sebagai spesies memiliki kemampuan bawaan untuk tidak setuju (berdasarkan individualitas kita), oleh karena itu kita tidak akan pernah menyetujui apa yang secara universal diperlukan, dan karenanya tidak akan pernah ada satu (setidaknya tidak ada yang diciptakan oleh manusia!)
Nim

9
Bahasa pemrograman universal? Maksud Anda, analog dengan bahasa manusia universal yang diubah oleh semua orang bertahun-tahun yang lalu?
Kyralessa

Jawaban:


116

Untuk alasan yang sama Anda tidak menggunakan pisau tentara Swiss untuk mengukir ayam ...

http://upload.wikimedia.org/wikipedia/commons/thumb/4/48/My_swiss_army_knife.JPG/800px-My_swiss_army_knife.JPG

Pisau Swiss Army umumnya memiliki pisau, serta berbagai alat, seperti obeng dan pembuka kaleng dan banyak lainnya. Lampiran ini disimpan di dalam gagang pisau melalui mekanisme pivot point ...

Desain pisau dan fleksibilitasnya telah menyebabkan pengakuan di seluruh dunia ...


26
Untuk alasan yang sama Anda tidak membawa minivan ke balap drag. Untuk alasan yang sama Anda tidak membawa pistol air ke duel.
Chris

20
@ Chris Bagaimana jika itu adalah duel pistol air?
Rusty

44
Untuk alasan yang sama Anda tidak pernah pergi dengan seorang Sisilia ketika kematian ada di telepon.
Rusty

6
Jika Anda memiliki pisau tentara swiss yang melakukan semua hal yang Anda butuhkan untuk membangun rumah, apakah akan ada gunanya bagi mereka?
Brad Mace

4
Jawaban ini adalah analogi yang mengerikan. Mungkin jika Anda telah menulis: karena bahasa Perancis memungkinkan kesetiaan ekspresi yang berbeda dari bahasa Inggris, saya mungkin lebih menyukai analoginya. Tetapi bahasa komputer bukanlah 'benda', atau bahasa manusia. Jawaban yang benar adalah: kita tidak tahu. Ini akan membutuhkan lebih banyak wawasan tentang bagaimana manusia mengekspresikan logika dan bagaimana mereka sampai pada titik ini. Selain itu, beberapa bahasa adalah 'meta-language', dapat mengekspresikan DSL lainnya. Haruskah kami memasukkan ini dalam pertanyaan Anda?
Dibbeke

80

Karena

  1. tidak ada yang ingin menulis ulang semua kode warisan.
  2. Sulit untuk menyetujui semua tujuan
  3. Setelah Anda menyusun daftar tujuan yang komprehensif, mereka akan berubah sebelum Anda bisa membuatnya dibangun.
  4. Seseorang akan memulai bahasa yang sama sekali berbeda karena tujuan baru.
  5. Microsoft
  6. apel
  7. Sumber Terbuka
  8. Apa yang akan kita lakukan dengan semua Ikan Babel?
  9. Bahkan tidak bisa membuat SQL universal.

Anda berhenti pendek. Saya mengharapkan salah satu dari daftar "Top 10" yang ha-ha-hanya-serius ini.
Jeffrey Hantin

4
+1 untuk mencegah, setidaknya untuk sekarang, kampanye "Save the Babel Fish". Hippies sialan.
Rusty

2
Adapun Ikan Babel, buat sushi!
Muad'Dib

1
Mengenai poin 1, semua kode warisan akan akhirnya baik harus ditulis ulang pula menggunakan mode terbaru dalam kode / perpustakaan atau tidak akan dapat berjalan efektif tanpa jumlah yang konyol biaya dukungan.
Michael

38

Apa yang Anda miliki dalam pemrograman adalah domain masalah yang sangat besar. Domain ini sangat beragam dan dalam berbagai arah.

Inilah sebabnya mengapa pengontrol penerbangan tertanam ditulis dalam C dan situs web ditulis dalam PHP, Java, Rails, .NET, dan sejumlah lainnya.

Untuk pengendali penerbangan tertanam, saya memiliki sekitar 128 ribu memori untuk digunakan dan di atas itu, jika kode saya mendapat perkecualian, pesawat jatuh, 200 orang meninggal dan saya dituntut untuk menyetel $ 1 miliar, dan harus mengirim insinyur ke setiap bandara di dunia untuk memperbaiki pesawat yang grounded kehilangan pelanggan saya $ 10 juta / hari. Saya harus bekerja dengan bahasa yang sangat ketat dan memiliki sejumlah kecil bagian yang bergerak yang bisa salah.

Untuk aplikasi web saya, saya memiliki beberapa GB memori untuk bekerja, tetapi kecepatan jaringan terbatas (pada tingkat yang lebih rendah setiap hari, tetapi ini mungkin merupakan batas web terbesar). Saya akan melihat bahasa yang memberi saya banyak fitur dan menghasilkan output yang dapat ditransmisikan secepat mungkin. Saya tidak terlalu peduli jika situs saya turun, saya mungkin akan kehilangan beberapa penjualan ($ 100) dan harus menambal kasus penggunaan yang dibom, bukan masalah besar.

Situs web belum ditulis dalam C selama lebih dari 15 tahun (ada yang melakukan skrip cgi?) Dan sejauh yang saya tahu pengendali penerbangan sekarang mulai melihat C ++, tetapi bahkan dengan cara yang sangat terbatas.


3
Sebagian besar situs yang benar-benar menghasilkan uang akan kehilangan lebih dari $ 100 jika mereka mengalami downtime yang signifikan. Bukan untuk mengatakan bahwa itu sebanding dengan situasi hidup atau mati, tetapi tetap saja, ini mengecilkan risiko lebih dari sedikit.
Aaronaught

3
Apakah Anda tahu betapa seramnya Facebook. Baru-baru ini mereka memposting kode push setiap 37 menit. Situs mereka terus-menerus borked dalam beberapa cara dan lainnya dan mereka memiliki satu juta tiket di jaminan mereka. Intinya adalah dengan tidak ada web yang akan mati, Anda "mungkin" kehilangan beberapa penjualan, tetapi semuanya tidak terlalu banyak risiko. Sebagian besar masalah yang Anda hadapi hanya akan mempengaruhi beberapa pelanggan, bukan seluruh basis
Bill Leeper

24
  1. Pergi ke garasi Anda (atau garasi orang tua Anda).
  2. Buka kotak alat.
  3. Jika Anda melihat lebih dari satu alat, pikirkan bagaimana itu berlaku untuk pertanyaan Anda.

Jika Anda tidak memiliki kotak peralatan, atau hanya memiliki salah satu palu kecil dengan bit obeng di pegangan berongga, maka saya memiliki simpati yang besar untuk Anda.

Serius. Jika Anda pergi ke bengkel mobil, apakah mekanik Anda hanya memiliki satu alat do-it-all di toolchest-nya? Dia (atau dia) adalah seorang profesional, dengan alat kelas profesional yang dirancang khusus untuk melakukan berbagai tugas perbaikan mobil.

Demikian pula, pengembang perangkat lunak profesional harus memiliki seperangkat alat yang memadai untuk melakukan perdagangannya. Jika Anda membuka kotak peralatan dan hanya melihat [perangkat lunak yang setara dengan] obeng Philips, maka Anda tidak dapat menganggap diri Anda sebagai seorang profesional.

Anda dapat memutar baut dengan kunci pas ujung terbuka, kunci pas ujung kotak, kunci ratchet, atau kunci pas yang bisa disesuaikan. Anda bahkan dapat memutar baut dalam keadaan darurat dengan tang slip-joint, dengan canggung, dengan kerusakan ringan hingga berat. Tetapi cukup sulit untuk memutar baut dengan palu godam.


Itu termasuk "garasi orangtua." Itu benar-benar membuatnya lebih jelas, karena saya tidak punya garasi.
Dan Rosenstark

5
Analogi yang lebih baik adalah bahasa seperti kotak alat daripada beberapa alat individu.
Tom Hawtin - tackline

4
Mungkin ada 20 alat berbeda di dalam kotak. Tapi saya yakin Anda hanya perlu satu bahasa untuk menggambarkannya.
ThomasX

2
Saat ini kotak alat lebih seperti perpustakaan yang tersedia untuk bahasa yang bersangkutan.
Michael

18

Jenis jawaban yang berbeda dengan yang lain - saya benar-benar berpikir ada potensi bagi bahasa untuk menjadi bahasa "universal", memungkinkan fitur dan paradigma banyak bahasa lain, meskipun mungkin bukan bahasa yang dirancang dengan ketat yang mungkin Anda pikirkan.

Untuk menggunakan analogi brettmjohnson di atas, gagasan bahwa setiap bahasa pemrograman adalah alat di dalam kotak (atau pada pisau tentara swiss) adalah asumsi yang dibuat oleh setiap orang, tetapi benar-benar merupakan asumsi yang cacat.

Bagaimana jika bahasa pemrogramannya adalah kotak alat?

Maksud saya, bagaimana jika Anda dapat menambah dan menghapus fitur dari bahasa sesuka Anda, dan memiliki kotak peralatan Anda sendiri dengan alat yang Anda butuhkan di dalamnya - bahkan jika alat itu untuk tujuan yang berbeda.

Konsepnya sudah ada sebagian. Misalnya, bahasa seperti Nemerle memungkinkan Anda untuk menambahkan sintaks ke bahasa tersebut , dan dengan demikian, Anda mungkin dapat mengambil "fitur terbaik dari bahasa X", dan menambahkannya ke Nemerle (atau milik Anda sendiri). Ini tidak selalu berarti menulis makro Anda sendiri setiap saat - setiap bahasa (atau paradigma) dapat didefinisikan di dalam makro di perpustakaan standar - sedemikian rupa sehingga Anda dapat import Haskell; import Prolog;, dan mulai menulis dua bahasa seolah-olah itu adalah bagian dari bahasa Anda?

Pertanyaannya kemudian adalah - bagaimana Anda mendapatkan fitur dari bahasa / paradigma yang berbeda untuk saling bekerja sama? Meskipun saya tidak bisa menjawabnya, kerangka kerja seperti .Net dan JVM menawarkan beberapa solusi - bahasa setidaknya sebagian kompatibel karena cara mereka dikompilasi. Anda dapat mengambil kode apa pun yang ditulis dalam C #, dan menggunakannya dari F # tanpa keluhan.

'Masalah' dengan solusinya seperti saat ini, adalah bahwa menggunakan bahasa-bahasa ini bersama-sama mengharuskan Anda untuk membuatnya sebagai proyek yang terpisah, yang tidak dapat saling rujukan - Anda hanya dapat memiliki referensi 1 arah. Hambatan bahasa adalah bahwa setiap proyek mengkompilasi semua file itu secara terpisah ke Common Intermediate Language sebelum proyek lain dapat mengaksesnya.

Batu loncatan untuk menghilangkan penghalang itu adalah untuk memungkinkan kode bahasa yang berbeda (misalnya, C # dan F #) dikompilasi di dalam proyek yang sama. Secara teori Anda dapat mengkompilasi setiap file secara terpisah (atau dalam kelompok - jika mereka memiliki tipe parsial atau referensi melingkar), dan kemudian mengkompilasi file dari bahasa yang berbeda yang dapat mengakses objek yang sudah dikompilasi (CIL). Anda perlu mendefinisikan secara ketat urutan kompilasi agar ini berfungsi - tetapi urutan kompilasi sudah diperlukan dalam kasus F #.

Lagi pula, saya tidak mengatakan "pasti ada bahasa universal". Saya menyarankan bahwa ada potensi interoperabilitas yang jauh lebih baik antara bahasa yang ada saat ini. Pada kenyataannya, itu tidak mungkin untuk meningkatkan sangat segera, hanya karena sejumlah besar pekerjaan itu adalah untuk mengimplementasikan bahasa dan perpustakaan, alat dll yang dibutuhkan untuk menggunakannya.


4
Seluruh dunia bukan PC. Mayoritas prosesor di planet ini memiliki kurang dari 64K byte total ruang memori. Bahasa yang dapat digunakan pada prosesor ini harus direduksi jauh dari yang kebanyakan di forum ini tampaknya menggunakan bahasa universal Anda akan berakhir sebagai bahasa assembly yang ditingkatkan. Saya pikir itu akan disebut "C".
u

10

Fitur terbaik dari beberapa bahasa bertentangan dengan fitur terbaik dari yang lain.

Sebagai contoh: Ketik refleksi sadar adalah fitur yang sangat bagus, tetapi itu tidak akan bernilai banyak dalam bahasa yang diketik secara longgar, tetapi pengetikan yang longgar bisa menjadi manfaat nyata di saat-saat juga.

Bahkan dalam satu bahasa Anda tidak dapat selalu menggunakan semua fitur terbaik pada saat yang sama karena mereka saling bertentangan.


tetapi jika fitur ini diaktifkan / dinonaktifkan sesuai dengan kebutuhan misalnya: Anda dapat mengaktifkan jenis refleksi sadar dan menonaktifkan kemampuan bahasa yang diketik longgar dan sebagainya ...
killown

2
dan jika Anda mencoba dan menggabungkan banyak fitur bahasa ke dalam satu bahasa yang dapat melakukan apa saja, Anda akan mendapatkan banyak redundansi, kebingungan, bug dari semua cara berbeda untuk menggunakan kombinasi fitur yang berbeda, dan banyak usaha yang sia-sia menentukan paradigma yang Anda gunakan pada baris ini.

Killown Anda benar, tetapi menyelesaikan masalah dengan membuat bahasa sangat dapat dikonfigurasi membuat bahasa tersebut sulit digunakan seperti yang dijelaskan oleh si fennic. Saya suka bahasa yang fleksibel yang memungkinkan banyak hal meskipun berbahaya dalam beberapa kasus, tetapi tingkat konfigurasi yang Anda perlukan untuk menggabungkan beberapa konsep akan membuatnya lebih kompleks daripada hanya mundur dan menulis solusi dalam C tingkat rendah atau sesuatu .
Bill

1
+1 untuk fitur yang bertentangan
Frank Shearar

Saya pikir masalahnya bukan hanya bahwa fitur bahasa konflik, tetapi lebih dari itu banyak bahasa mengasumsikan kerangka kerja mendasar yang mencakup fitur yang memaksakan tingkat overhead tertentu, tetapi memungkinkan operasi tertentu untuk disederhanakan. Bahasa juga biasanya memiliki 'pola penggunaan khusus' tertentu yang terkait dengannya. Pemilihan fitur apa yang harus dimasukkan dalam suatu kerangka kerja, dan pola pengkodean apa yang harus digunakan, melibatkan pertukaran; dan kombinasi berbagai fitur dan pola lebih baik untuk aplikasi yang berbeda.
supercat

7

"Jack dari semua perdagangan - master of none." muncul dalam pikiran.

Beberapa program memerlukan kecepatan, yang lain banyak memori atau akses cepat ke disk. Beberapa bahasa bagus di satu, tetapi buruk di lain - saya tidak berpikir Anda akan mendapatkan bahasa yang bagus sama sekali.

Jadi, selagi Anda bisa menulis hampir semua program dalam bahasa apa pun, apa yang Anda dapatkan tidak dijamin menjadi program "terbaik" yang bisa Anda tulis untuk menyelesaikan masalah itu.


4

Ada. Tidak ada alat yang terbaik untuk semuanya, tetapi beberapa alat seperti banyak bahasa pemrograman berfungsi untuk semua tujuan, bukan yang terbaik untuk semua.

Anda dapat memilih alat terbaik untuk pekerjaan itu tetapi ada bahasa pemrograman yang dapat digunakan pada semua tujuan dan Anda dapat memilihnya. Saya tidak merekomendasikannya tetapi itu mungkin.


4

Karena sesuatu yang saya sebut "paradoks generalisasi / spesialisasi", yang mungkin memiliki nama lain dan sebenarnya bukan paradoks

Semakin umum bahasa pemrograman, semakin banyak kode yang diperlukan untuk mencapai sesuatu. Semakin khusus bahasa, semakin sedikit yang dapat Anda capai dengan bahasa itu.


2
Saya setuju dengan Anda kecuali bahwa mungkin untuk memiliki perpustakaan khusus dalam bahasa umum.
dan_waterworth

@dan: Setuju, tetapi hanya jika bahasa berfokus pada penyediaan fitur untuk penulis perpustakaan. Dua bahasa favorit saya adalah D dan Python. Keduanya adalah bahasa yang cukup umum (terutama D) tetapi keduanya memiliki banyak fitur untuk penulis perpustakaan, sehingga Anda dapat membangun perpustakaan Anda sendiri untuk menangani hal-hal khusus. Saya benci bahasa super domain khusus seperti Matlab dan R.
dsimcha

4

Bahasa membentuk cara orang berpikir. Ini berlaku untuk bahasa alami. Jika seorang anak hanya tahu satu bahasa dengan angka "satu, dua, banyak", mengajar matematika anak itu ... sulit. (Maaf, saya tidak memiliki tautannya) Dalam bahasa Inggris kita berbicara tentang waktu yang berbeda seolah-olah itu adalah tempat - maka konsep perjalanan waktu dimungkinkan untuk dibayangkan. Dalam beberapa bahasa lain, gagasan perjalanan waktu tidak akan pernah terjadi pada penuturnya.

Ini juga berlaku untuk bahasa pemrograman.

Karenanya jika kita memiliki satu bahasa pemrograman, semua orang akan berpikir tentang semua tugas komputasi yang sama persis. Dengan demikian kami tidak akan mengeksplorasi alternatif, dan cara terbaik untuk melakukan sesuatu akan tetap belum ditemukan.

Hal terdekat yang kita miliki dengan bahasa universal adalah C. C memetakan sangat dekat dengan konsep perangkat keras yang mendasari (bagaimana hal-hal sebenarnya dilakukan dalam perangkat keras) dan program dalam setiap * bahasa dapat dikonversi menjadi C. (Lihat bagaimana CFront menggunakan kompiler C untuk assembler tugas) Masalah dengan C pada dasarnya adalah bahwa konversi yang disebutkan di atas tidak masuk akal dari perspektif programmer C.

"Lambdas" selalu mungkin dalam C. Sintaks tidak aktif, termasuk penyebaran kode di seluruh proyek / file, maka itu bukan solusi yang disukai. Dengan versi tanpa-tangkap / naikkan nilai / dll, tentukan fungsi di tempat lain, dan berikan pointer ke fungsi tersebut. (lihat qsort () ) Untuk menggunakan lambdas dengan nilai yang diambil, jumlah dan kompleksitas kode yang harus Anda tulis meningkat banyak - sejauh yang saya tahu tidak seorang pun pernah benar-benar menulis kode untuk menggunakan metode pemrograman ini dalam C. Berbeda dengan bahasa di mana lambda adalah bagian dari bahasa, dan pada dasarnya digunakan di mana-mana.

Perbedaan utama antara C dan C ++ adalah bagaimana Anda bisa meminta C ++ untuk mengurus barang - barang untuk Anda; tetapi kemudian Anda tidak dapat lagi melihat, dari hanya satu baris kode, seberapa banyak Anda benar-benar memintanya. Jawabannya menjadi: itu tergantung (pada semua kode lain ini).

Beberapa bahasa pemrograman sangat baik untuk tugas-tugas tertentu, tetapi di mana sebagian besar program saat ini digunakan di seluruh dunia tidak akan masuk akal jika diprogram dalam bahasa itu. Artinya, jika bahasa dapat digunakan untuk mengimplementasikan program itu untuk memulai, yang tidak diberikan.


2
"Dalam beberapa bahasa lain, gagasan perjalanan waktu tidak akan pernah terjadi pada penuturnya." Kutipan diperlukan. Hipotesis Sapir-Whorf tidak dengan cara apa pun diterima secara luas khususnya dalam bentuknya yang kuat.
Muhammad Alkarouri

4

Ketidakmungkinan pada manfaat teknis memiliki Bahasa Universal? Itu omong kosong. Kamu bisamemiliki bahasa universal yang mencakup semua pangkalan. Masalahnya sebagian besar historis: bahasa yang berbeda diciptakan untuk melakukan hal yang berbeda dan digunakan di komunitas yang berbeda. Banyak dari mereka terjebak. Tambahkan ke preferensi itu (vi! Emacs! Tunggu, maksudku Java! C #, tunggu maksudku Microsoft, Open Source, dll. Dll.) Dan penanaman umum kecelakaan sejarah ... Lihatlah bahasa-bahasa alami di tanah kecil massa seperti beberapa negara Eropa untuk melihat betapa gilanya topik ini. Beberapa kota memiliki kebanggaan dan kegembiraan sendiri, sedikit dialek yang hanya mereka yang berbicara. Bangsa dan komunitas pemrograman tidak begitu berbeda, juga komunitas pemrograman tidak lebih rasional. Jika ya, kita semua akan berbicara esperanto dan program di Universal tentang sesuatu ...


1
Masalahnya lebih dalam dari itu. Semakin banyak opsi yang Anda sediakan, semakin banyak yang harus ditentukan secara eksplisit alih-alih menjadi satu-satunya cara tersirat dalam bahasa itu. Masalah menjadi lebih jelas jika, alih-alih membandingkan Java dengan C #, Anda membandingkan Java dengan Prolog. Untuk memiliki fitur keduanya dalam satu bahasa akan mempersulit sintaksis dari bahasa majemuk. Pilihan yang lebih masuk akal adalah mengurangi sintaks seminimal mungkin, dan memungkinkan fitur apa pun diimplementasikan sebagai pustaka pemrograman metap. Pada dasarnya itulah yang dilakukan Lisp, meskipun intinya tidak cukup rendah untuk beberapa pekerjaan.
Steve314

4

Adalah suatu kesalahan untuk berpikir bahwa "menggabungkan semua fitur" akan membuat bahasa yang lebih baik.

Anda cenderung berakhir dengan kekacauan yang membengkak, kompleks, dan tidak dapat dibaca.

Desain bahasa yang baik membutuhkan pilihan dan pertukaran yang harus dilakukan. Boleh dibilang bahasa terbaik / paling revolusioner / paling sukses adalah bahasa yang mengambil sesuatu dan memberikan alternatif yang lebih baik daripada menambahkan hal-hal baru. Misalnya

  • Bahasa pemrograman terstruktur (C, Pascal) - mengeluarkan "goto", menggantikan dengan prosedur dan loop terstruktur dll.
  • Java - mengeluarkan "manajemen memori manual", menggantikan dengan GC / memori yang dikelola
  • Haskell / Clojure - mengeluarkan "keadaan berubah-ubah yang tidak dapat dikendalikan"
  • Lisp - menghapus sebagian besar "sintaks bahasa", menggantikannya dengan pohon ekspresi homoikonik yang fleksibel

Ada pembicaraan hebat di atas ini oleh Paman Bob Martin - Bahasa Pemrograman Terakhir


"Bahasa pemrograman terstruktur (C, Pascal) - mengeluarkan" goto ", menggantikan dengan prosedur dan loop terstruktur dll." - Maaf, Anda salah di sana: C punya goto. Tapi saya suka jawabannya. Hal utama yang C lakukan adalah membiarkan Anda tidak peduli di mana tepatnya di memori semuanya berada dan apa yang ada di register apa pada jam berapa, dan menyembunyikan program counter (dalam hal alamat tepatnya di mana ia duduk, lagi. Anda dapat memindahkannya di hampir tingkat perakitan presisi dengan kebagian).
Wyatt8740

0

Tidak ada alat yang memiliki semua fitur terbaik. Misalnya, fitur Javascript dan Skema yang bagus adalah fitur-fiturnya kecil, jadi jika Anda mulai mengemas fitur, Anda telah kehilangan yang ini.

Namun Cobra terlihat menjanjikan ke arah memiliki semua fitur bagus dari bahasa lain. :-)


0

Karena jika Anda membuat bahasa seperti itu, itu akan menjadi bahasa baru. Anda mungkin mendapatkan basis penggemar yang besar, tetapi semua bahasa lain masih ada.

C masih ada meskipun banyak bahasa baru diciptakan sejak itu.

Anda bisa mengatakan bahwa python adalah bahasa universal, tetapi kemudian ada juga ruby.

Alasannya ada banyak bahasa hanya karena ada banyak programmer dan beberapa dari mereka suka membuat bahasa baru.

Alasan tidak ada satu bahasa universal yang disetujui semua orang adalah bahwa pemrograman sebagai keahlian tidak ditentukan oleh beberapa institusi yang membuat semua keputusan. Setiap orang bebas melakukan apa yang mereka inginkan.

Itu hal yang baik.


Saya juga berpendapat bahwa itu tidak baik atau buruk tetapi lebih merupakan artefak dari fakta bahwa rekayasa perangkat lunak bahkan belum berusia seratus tahun, dan sangat tidak matang dibandingkan dengan setiap jenis teknik lain yang ada.
Michael

0

Dengan semua yang ditulis sejauh ini, sulit untuk menambahkan banyak alasan baru, tetapi saya akan memberikan beberapa.

  • Evolusi: Bukan hanya sistem biologis yang diperkenalkan, bermutasi, dan menjalani kompetisi survival of the fittest untuk sumber daya dan ceruk untuk memanggil mereka sendiri. Kompetisi itu bagus dan mendorong banyak hal.

  • Kedewasaan: Kami telah membuat bahasa komputer mungkin kurang dari satu abad. Kami belum bisa mendapatkan jawabannya karena kami belum tahu semua pertanyaannya.

  • Pisahkan genesis: Tidak yakin kata yang tepat untuk ini, tetapi di dunia mereka banyak sistem penulisan yang dimulai di banyak wilayah geografis. Pikirkan tentang Cuneiform yang didiktekan sebagian oleh tuntutan ukiran ke tablet tanah liat. Pikirkan tentang huruf Sanskerta, Yunani, Ibrani, Romawi, Arab. Hieroglyphics, metode tulisan China yang indah dengan 6000+ simbol yang digunakan bersama di banyak negara Asia Timur. Pikirkan huruf campuran yang lebih modern dengan basis fonetik seperti Cyrillic, Katakana, dan Hirigana. Saya bukan ahli bahasa jadi jangan nyalakan ketidakakuratan terlalu keras, tetapi ketika budaya di seluruh dunia membutuhkan sesuatu, mereka akan membuatnya dan membuatnya sendiri karena kebutuhan. Bahasa komputer muncul ketika ada banyak komunikasi di seluruh dunia dan seperti sistem Imperial dan Metric, datang dari tempat-tempat dengan kepemimpinan ide yang kuat. Tetapi bahasa pemrograman melayani banyak budaya yang berbeda (beberapa di antaranya budaya perusahaan), sehingga mereka mencerminkan orang-orang yang membuatnya. Bahasa komputer hadir dengan warisan budaya yang membentuk desain dan penggunaannya. Dalam kultur kernel OS, C dan C ++ sepertinya tidak akan segera ditinggalkan untuk Java (atau sebaliknya) karena mereka mengizinkan pembuatan kode asli, penggabungan yang dekat / efisien dengan perangkat keras untuk membuat lapisan abstraksi perangkat keras, dan memiliki basis instalasi yang cukup besar.

  • Desain Desain: Bahasa pemrograman muncul dengan menggunakan berbagai paradigma organisasi. COBOL dan Ada berasal dari komite yang merupakan bagian dari DOD yang memiliki banyak hierarki. Jika saya ingat dengan benar C, C ++, Java, dan mungkin banyak lainnya berasal dari satu atau sejumlah kecil desainer. Fred Brooks membandingkan hasil komite vs pendekatan berbasis visioner dalam makalahnya, Desain Desain (http://www.youtube.com/watch?v=pC-DlX-PaF4). Jika kita duduk hari ini untuk memilih Da Vinci atau komite untuk menentukan bahasa pemrograman universal, apakah kita tahu siapa atau apa dengan metode apa yang harus dirancang?


0

Mungkin sedikit berbeda pandangan tentang ini:

Apa itu bahasa? Sederhananya, itu adalah kosa kata, sintaksis, dan semantik.

Apa hal pertama yang Anda lakukan dengan bahasa pemrograman?
Anda mendefinisikan hal-hal - kelas, variabel, metode - Anda memperluas kosakata dan semantik.

Mengapa? Jadi sekarang Anda bisa mengatakan hal-hal di dalamnya yang tidak bisa Anda katakan sebelumnya.
Suka atau tidak, Anda telah membuat bahasa tujuan khusus yang baru.

IMHO, hal yang harus dicari dalam bahasa tujuan umum adalah jika membuatnya mudah untuk membuat bahasa tujuan khusus.


0

Selain dari argumen swiss-army-knife (yang ada benarnya - lebih sulit untuk merancang bahasa spektrum luas yang baik daripada yang spesifik domain - tapi itu tidak berarti bahasa seperti itu tidak akan menjadi keduanya mungkin dan ide yang bagus), ada masalah dengan "menggabungkan fitur terbaik":

  • Untuk fitur bahasa, "terbaik" adalah subyektif, atau setidaknya (tanpa henti) dapat diperdebatkan.
  • Beberapa fitur tidak kompatibel; fitur yang baik dari satu bahasa dapat meledak ketika dikombinasikan dengan fitur yang baik dari yang lain.
  • Kami belum selesai dengan fitur baru.

Singkatnya, desain bahasa lebih sulit dan lebih rumit dari itu. Meskipun, Anda mungkin ingin melihat Scala .



-2

Ada bahasa pemrograman universal. Ini disebut "bahasa mesin" dan segala sesuatu dalam bahasa komputer lainnya akhirnya dieksekusi sebagai bahasa mesin.

Seperti apa bentuknya? String 0-9 dan AF.

Tapi itu menyebalkan untuk digunakan. Jadi Alan menciptakan bahasa yang dapat diterjemahkan ke dalam bahasa mesin dan lebih sesuai dengan apa yang ingin dilakukan Alan. Bill menciptakan bahasa yang berbeda untuk apa yang ingin dilakukan Bill. Tak lama, Anda punya Cobol dan Fortran dan Lisp dan Jawa. Semuanya hanyalah versi sederhana dari bahasa mesin, lebih mudah untuk menulis beberapa jenis program tetapi lebih sulit, atau tidak mungkin, untuk menulis jenis program lainnya. Yang satu bagus untuk akuntansi, yang lain bagus untuk mengendalikan pesawat ulang-alik.


6
Bahasa mesin tidak universal; bahkan tidak dekat. Setiap mesin memiliki bahasa sendiri.
Hasen

3
Juga, ini bukan string 0-9 dan AF. Ini 1 dan 0.
David Conrad

@hasen @ David jelas tidak masuk akal untuk menyarankan seperti @Andy memiliki bahwa setiap bahasa, dari satu sudut pandang bahasa khusus domain, dibangun pada bahasa lain?
Armand

Saya katakan 0-9 dan AF karena itulah yang harus Anda ketahui untuk menggunakan kode multi-punch pada mesin keypunch. Sepertinya 0-1 atau 0-15 atau 0-255 jika Anda menganggapnya sebagai angka, tergantung pada seberapa besar potongan pada suatu waktu. Dan hansen benar; setiap JENIS mesin memiliki bahasa sendiri. Hampir semua PC saat ini menerima 80386 kode; bahkan telepon saya akan! Tetapi iPad tidak mau.
Andy Canfield

@enjas dan dengan karakteristik yang sangat berbeda. Pola pikir yang diperlukan untuk pemrograman 6502 berbeda dari pemrograman x86 dan pada gilirannya berbeda dari chip RISC. Sangat jauh dari universal.

-2

Hanya karena,

tidak ada komputer UNIVERSAL.

bukan bentuk plat UNIVERSAL.

bukan programmer UNIVERSAL.

dan bahkan bukan klien UNIVERSAL.

: P

Jadi sederhananya kita membutuhkan yang berbeda untuk yang berbeda. ;)


-2

Sebagian besar jawaban di sini fokus pada penggunaan alat terbaik untuk setiap masalah. Saya tidak percaya ini alasan yang cukup bagus.

Jika Anda melihat perusahaan besar maka biasanya perusahaan akan cenderung menggunakan satu (atau sejumlah kecil) bahasa dan teknologi, bahkan jika untuk proyek tertentu ada bahasa yang lebih baik.

Hal ini dilakukan karena manfaat yang timbul dari peningkatan standardisasi, dukungan yang lebih mudah, pembagian kode, dll. (Paling sering) lebih besar daripada nilai tambah dari bahasa tertentu.


1
Saya belum pernah melihat proyek perusahaan yang layak menggunakan kurang dari 4 bahasa yang berbeda. Dan saya tidak percaya pada "manfaat" apa pun dari memilih alat yang tidak layak. Tidak pernah berhasil.
SK-logic

-3

Saya pikir semua jawaban "karena Anda tidak mengukir patung dengan pensil" tidak ada gunanya.

Siapa di sini, BENAR-BENAR memilih bahasa sebelum setiap proyek baru?

Yang benar adalah, kita hanya perlu bahasa pemrograman beberapa, dan dunia pemrograman akan lebih baik seperti itu: orang akan fokus pada pembuatan yang bahasa scripting yang lebih baik bukannya tersebar di seluruh python / ruby / perl / younameit misalnya.

C # diprogram di / untuk windows (baik-baik saja, ada Mono, ada orang di sini menjalankan aplikasi C # di bawah Mono setiap hari?) Dan itu membuat pengguna membeli Windows7 / 8, dan itu menghasilkan uang untuk Microsoft.
Perusahaan lain melakukan hal yang sama, kemudian open source lebih tahu, kemudian tuan jenius juga ... dan kami memiliki banyak bahasa yang mirip, itu hanya sifat manusia yang mementingkan diri sendiri.


Setuju - kita kebanyakan hanya benar-benar membutuhkan bahasa "aman" tingkat tinggi, bahasa pemrograman sistem "tidak aman" tingkat rendah, semua bahasa rakitan (satu per CPU, tidak dapat dihindari tetapi disembunyikan), ditambah beberapa tujuan khusus (khusus domain) bahasa (misalnya SQL). Masalah sebenarnya adalah bahwa tidak mungkin bagi siapa pun untuk mendeklarasikan bahasa "usang" (bahkan ketika perancang bahasa mencoba melakukannya - misalnya Python 2 vs. Python 3). Lebih banyak bahasa baru setiap tahun dan tidak ada bahasa lama yang dibuang berarti bahwa pada akhirnya akan ada lebih banyak bahasa yang digunakan daripada pemrogram untuk menggunakannya. ;-)
Brendan

-5

Kita harus melihat ke ekonomi untuk menjawab pertanyaan ini. Jika itu menghemat uang bisnis hanya untuk satu bahasa, kami akan memilikinya. Mereka akan membakukannya dan meminta semua orang untuk menggunakannya. Bahasa-bahasa lain akan merana di gedung-gedung akademis yang berdebu dan ruang bawah tanah para penggemar bermata liar. Ini belum terjadi, jadi mereka pasti bukan insentif keuntungan dalam bahasa pemrograman universal atau orang akan secara alami berkembang sekarang.


1
"Uang simpanan" adalah (meskipun usaha terbaik akuntan) konsep yang kabur dan samar-samar selama siklus hidup. Seperti halnya mekanika yang gagal melakukan standarisasi pada ukuran spanner tunggal, apalagi toolkit keseluruhan, rekayasa perangkat lunak gagal melakukan standarisasi karena ada begitu banyak kriteria untuk memilih alat (bahasa) atau bahkan prosesor / OS / lingkungan
Andrew
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.