Apa itu bahasa "kuat"?

22

Saya sering melihat orang-orang berebut bahwa bahasa favorit mereka lebih "kuat" daripada yang lain. Ketika datang untuk menggambarkan bahasa pemrograman, saya bisa mengerti apa bahasa berorientasi objek atau apa bahasa yang dinamis, tapi saya masih tidak tahu apa sebenarnya bahasa "kuat" itu. Apa yang kamu pikirkan?

tukang
sumber
5
Bahasa sekuat penggunanya.
ysolik
6
@ysolik belum tentu benar. saya bisa memberi seseorang bahasa yang jelek dan melihat seberapa jauh mereka mendapatkan. ia memiliki satu operasi, TIDAK! =)
Mark Canlas
2
@ Mark jika kita berbicara ekstrem, maka Anda benar. Namun, jika Anda menganggap bahasa saat ini kurang lebih banyak digunakan, maka pengguna adalah bagian besar dari itu.
ysolik
1
PowerBASIC: Tidak bisa lebih kuat dari itu. ^^
gablin
1
@ysolik: akan lebih akurat untuk mengatakan "sebuah bahasa tidak lebih kuat dari penggunanya."
Duncan Bayne

Jawaban:

32

Kita tidak dapat mendefinisikan apa bahasa "kuat" tanpa terlebih dahulu mendefinisikan kata "kuat."

The literal definisi listrik akan "potensi", dan saya pikir kita semua bisa sepakat bahwa sebagian besar kompiler - dan bahkan banyak penafsir yang tidak Turing-lengkap - melakukan pekerjaan yang sama baik untuk mendapatkan prosesor untuk mengeksekusi instruksi mereka . Jadi sejauh definisi literal, jawaban untuk pertanyaan itu adalah "hampir semua bahasa."

Secara praktis, kita benar-benar harus berhenti di sana; mendefinisikan "bahasa yang kuat" sama seperti mendefinisikan "orang yang baik" atau "produk yang berkualitas." Sama sekali tidak ada definisi obyektif dari kata-kata ini yang dapat Anda setujui oleh semua orang, atau bahkan mayoritas pakar, dan sebagian besar definisi berakhir dengan mengajukan pertanyaan . Bergantung pada siapa Anda berbicara, kekuatan bisa berupa hal-hal berikut:

  • Kerangka kerja tujuan umum yang kaya atau pustaka untuk melakukan berbagai tugas umum
  • Sintaks khusus domain canggih yang "melakukan satu hal dan melakukannya dengan baik"
  • Akses langsung ke fungsi mesin, yaitu kemampuan untuk menulis kode tingkat rendah
  • Mengabstraksi konsep tingkat mesin, yaitu kemampuan untuk menulis kode tingkat tinggi
  • Jenis sistem yang sangat kaya memungkinkan strategi lanjutan seperti refleksi, DI, dan analisis statis
  • Jenis sistem yang sangat longgar yang memungkinkan pemrogram untuk menyelesaikannya (ketik paksaan, dll.)
  • Kemampuan untuk memperlakukan segala sesuatu sebagai objek , yang menawarkan verifikasi konseptual
  • Kemampuan untuk memperlakukan segala sesuatu sebagai fungsi , yang menawarkan verifikasi matematis
  • Memori dan manajemen sumber daya otomatis (GC, RAII) mengarah ke lebih sedikit bug
  • Memori manual dan manajemen sumber daya, berpotensi mengarah pada kinerja yang dioptimalkan
  • Jumlah minimum kebisingan sintaksis , yang mengarah ke peningkatan keterbacaan
  • Sintaks yang lebih mirip bahasa Inggris , yang menawarkan kurva pembelajaran yang lebih dangkal
  • Kemampuan untuk menulis kode yang sangat ringkas (mis. Operator ternary, null-coalescing, null-extension)
  • The ketidakmampuan untuk menulis berpotensi membingungkan kode (yaitu tidak ada operator ternary, dll)

Apakah semua orang melihat apa yang terjadi di sini? Hampir setiap fitur poin-peluru dapat diartikan sebagai tanda "kekuatan", dan begitu juga sebaliknya!

Seseorang, di suatu tempat, jelas berpikir bahwa variabel variabel adalah ide yang luar biasa yang akan membuat bahasa tersebut sangat kuat . Saya tidak akan menghakimi; Saya bukan orang PHP.

Saya mengusulkan bahwa alih-alih semua omong kosong perang suci ini, kita semua menggunakan Definisi Sungguh Sederhana ini:

Bahasa yang paling kuat adalah bahasa yang memungkinkan Anda mengirimkan produk dengan kualitas terbaik dengan biaya terendah dalam waktu sesingkat mungkin.

Kabur? Anda betcha. Itu sebabnya siapa pun yang ingin memanggilnya seorang profesional harus memahami konsep pemrograman dan domain proyek. Itulah satu-satunya cara Anda dapat memutuskan apa yang "kuat" untuk Anda.

Jika tidak, Anda mungkin hanya membawa pisau yang sangat besar untuk pertarungan senjata.

Aaronaught
sumber
1
+1 Ini adalah satu-satunya definisi yang mencoba memasukkan semua berbagai konsep kekuatan bahasa. Saya terutama menyukai cara Anda menunjukkan bahwa fitur yang saling bertentangan dapat dianggap kuat. Ilmu Komputer adalah ilmu pertukaran, bahkan dalam pilihan bahasa.
CodexArcanum
11

Saya mungkin bias karena saya seorang programmer sistem. Saya akan berpikir bahasa pemrograman yang digunakan untuk semua pemrograman kernel, sistem, server dan aplikasi, atau mendukung beberapa paradigma pemrograman, atau keduanya dapat disebut "kuat".

C, C ++, D sangat kuat, tapi jelas ini hanya pendapat saya yang sederhana.

grokus
sumber
Anda akan menggunakan Java untuk pemrograman level kernel atau saya salah paham dengan Anda?
Davy8
@ Davy8, Anda benar, menurut definisi saya sendiri, saya seharusnya tidak memasukkan Java.
grokus
5

Ada beberapa definisi kekuatan di luar kelengkapan Turing. Markus mengutip apa yang saya cenderung anggap sebagai "definisi Paul Graham." Itu definisi yang cukup bagus, dengan satu kelemahan serius: itu salah. Secara teori ini adalah definisi yang sangat baik tentang kekuatan bahasa, tetapi Anda tahu apa yang mereka katakan tentang perbedaan antara teori dan praktik ...

Jika setiap orang mampu menulis kode yang sempurna, tidak hanya sempurna bebas bug tetapi juga sempurna di masa depan, secara konsisten, maka definisi Paul Graham akan benar. Tapi jelas bukan itu masalahnya. Di dunia nyata, sebagian besar waktu dan upaya yang digunakan untuk rekayasa perangkat lunak tidak diambil oleh penciptaan awal produk, tetapi dengan pemeliharaan setelahnya. Bergantung pada statistik yang Anda dengarkan, (dan mungkin sedikit berbeda dari proyek ke proyek), pemeliharaan dapat mencapai 60% hingga 90% dari total upaya yang dilakukan dalam suatu program.

Pemeliharaan sering dilakukan oleh orang-orang selain orang yang menulis kode pada awalnya, dan seringkali berbulan-bulan atau bahkan bertahun-tahun setelah penulisan awal kode, yang berarti bahwa bahkan bagi pembuat kode asli juga dapat menjadi "kode orang lain" dengan itu titik. Jika Anda ingin menjadi produktif selama pemeliharaan, Anda harus dapat dengan cepat memastikan maksud asli kode dengan membacanya.

Oleh karena itu, bahasa yang lebih kuat adalah bahasa yang membuat kode lebih mudah dibaca dengan cepat, bukan bahasa yang membuat kode lebih mudah untuk ditulis dengan cepat. Cenderung ada banyak tumpang tindih di antara keduanya, tetapi konsep-konsep tersebut sering juga saling bertentangan, karena sintaks singkat sering kali menghilangkan detail yang dapat disimpulkan oleh kompiler / juru bahasa dengan jauh lebih mudah daripada programmer pemeliharaan.

EDIT: Ada poin penting lain dalam menggambarkan kekuatan bahasa: rentang konsep yang bisa Anda ungkapkan, dan seberapa mudah Anda bisa mencapai kedua ujungnya. Paul Graham suka mengevaluasi yang ini tentang seberapa tinggi tingkat abstraksi yang bisa Anda capai, tetapi itu hanya setengahnya. Bahasa apa pun yang memaksakan batas abstraksi yang lebih rendah, di mana Anda tidak bisa pergi ketika diperlukan, akan lumpuh karena detail yang sedang disarikan ada karena suatu alasan. Ini adalah perbedaan antara bahasa mainan yang mudah dibaca seperti COBOL dan bahasa kuat yang mudah dibaca: COBOL tidak memiliki petunjuk dan tidak memiliki akses ke perakitan inline, di mana Anda dapat mengekspresikan perhitungan apa pun, bahkan yang tidak cocok dengan COBOL.

COBOL juga tidak pandai memukul spektrum abstraksi kelas atas. Menurut Wikipedia ia memiliki "tidak ada tipe yang ditentukan pengguna, dan tidak ada fungsi yang ditentukan pengguna," yang membuatnya sangat sulit untuk membuat algoritma dan struktur data.

Mason Wheeler
sumber
1
Masalah yang saya miliki dengan ini adalah bahwa sepertinya menunjuk ke COBOL sebagai bahasa yang sangat kuat.
David Thornley
2
Saya kira Anda tidak tahu Lisp? :)
dash-tom-bang
1
@ Matt: Itu masalahnya. Untuk apa suatu bahasa digunakan dibatasi oleh untuk apa suatu bahasa dapat digunakan, dan ada jauh lebih sedikit yang dapat Anda lakukan dengan Python dibandingkan dengan bahasa yang tidak mengaburkan detail terkait memori.
Mason Wheeler
3
-1 Karena gagasan tersirat yang lebih pendek, kode yang lebih ekspresif agak sulit dipertahankan. Anda telah menggunakan kedua arti umum dari kekuatan bahasa (ekspresifitas vs keterbukaan) dan menggabungkannya ke dalam satu konsep yang hanya setengahnya mengekspresikan salah satu dari dua ide asli.
CodexArcanum
1
@ Jörg W Mittag: Anda benar, tapi saya pikir kalimat yang saya kutip merujuk pada kontrol langsung dari sumber daya perangkat keras (misalnya memori): C ++ memberi Anda lebih banyak kontrol. Tentu saja, jika Anda menerapkan mesin virtual Anda memiliki kontrol penuh, tapi saya pikir Mason Wheeler disebut memiliki kendali mesin yang sebenarnya.
Giorgio
4

Ini telah diperdebatkan berulang kali secara panjang lebar (misalnya, di comp.lang.lisp, beberapa kali). Saya tidak berpikir ada yang datang dengan jawaban yang "benar" tetapi banyak orang yang datang dengan jawaban yang menurut saya salah.

Dalam jawaban yang saya lihat di sini, izinkan saya memilih jawaban Mason Wheeler. Di satu sisi, masalah dia selimut yang penting - tetapi di sisi lain, aku tak bisa membayangkan memanggil mereka sama sekali terkait dengan "kekuasaan." Agak seperti yang dikatakannya bahwa mini-van Honda-nya lebih kuat daripada dragster berbahan bakar tinggi karena lebih aman, lebih tenang, memiliki penanganan yang lebih baik, lebih banyak ruang penumpang, dan perjalanan yang jauh lebih nyaman. Semua ini benar, dan itu semua penting. Faktor-faktor tersebut (di antara banyak lainnya) membuat minivan jauh lebih praktis dan masuk akal bagi kebanyakan orang - tetapi mereka tidak mengubah fakta bahwa mesin minivan hanya memproduksi sekitar 250 HP sedangkan dragster memproduksi sekitar 8000 HP.

Masalahnya, tentu saja, adalah bahwa dengan kendaraan ada definisi yang jelas tentang apa yang merupakan "kekuatan" dan apa yang tidak. Dengan bahasa pemrograman, menurut saya diskusi akhirnya setara dengan penanganan penanganan, kenyamanan, kecepatan, kapasitas kargo, dan jarak jelajah karena semuanya merupakan bagian dari "kekuatan". Hasilnya cenderung berupa benang yang berjalan tanpa henti, menghasilkan lebih banyak panas daripada cahaya. Sebagian besar pertanyaan yang muncul pada dasarnya turun ke tingkat kepentingan Anda lampirkan ke fitur yang sama sekali tidak terkait dan ortogonal - misalnya, adalah kemampuan untuk memprogram MMU dalam bahasa assembly lebih atau kurang "kuat" daripada kemampuan untuk membuat fungsi tingkat yang lebih tinggi di Haskell? Setidaknya IMO, tidak ada cara yang berarti untuk membandingkan keduanya, dan tidak ada jawaban yang bermakna yang "

Dengan demikian, sebanyak yang saya benci, saya harus mengatakan bahwa dalam kasus ini, satu-satunya jawaban yang bermakna pada dasarnya adalah jawaban yang relatif - bahasa yang kuat adalah yang Anda temukan membantu Anda mencapai apa yang Anda inginkan. Perbedaan dalam tujuan orang membuat pengukuran kekuasaan "absolut" paling tidak berarti.

Jerry Coffin
sumber
3

Keseimbangan singkat dan fleksibilitas yang tepat.

Pertanyaan bagus Mengingat bahwa banyak bahasa "Turing selesai", kita dapat menempatkan mereka semua dengan alasan yang sama sehubungan dengan apa yang secara teoritis mereka mampu. Tetapi kami tidak melakukan itu karena bahasa jelas berbeda satu sama lain. Dan apa bedanya?

Perbedaannya adalah kemampuan untuk mengatakan banyak hal berbeda dengan sangat sedikit . Jika kita dapat melompat ke ekstrem, saya dapat membuat bahasa yang merupakan bahasa terbaik untuk secara otomatis menginisialisasi sistem manajemen konten menggunakan hanya satu karakter, 'c'. Tapi apa gunanya itu? Tentu, itu kuat dalam arti sangat singkat, tetapi tidak fleksibel. Apa yang Anda inginkan adalah bahasa yang memungkinkan Anda mengatakan banyak hal rumit tanpa terlalu bertele-tele. Tanpa menjadi seperti perakitan, mampu melakukan segalanya di bawah matahari, sangat fleksibel tetapi sangat bertele-tele.

Bahasa yang kuat adalah bahasa yang memungkinkan Anda untuk mengatakan banyak hal berbeda dengan jumlah panjang sesedikit mungkin.

Mark Canlas
sumber
1
-1. Maaf, tapi itu bukan hanya kesalahpahaman, tapi juga berbahaya, karena bisa sangat menghambat produktivitas.
Mason Wheeler
@Mason Wheeler: Bisakah Anda menguraikan?
Joey Adams
@ Joey: Lihat jawaban saya untuk pertanyaan ini.
Mason Wheeler
1

Setelah Anda menekan Turing lengkap (dan mudah bagi bahasa untuk melakukan ini), "kekuatan" tidak berarti banyak, dalam arti bahwa apa pun yang dapat Anda katakan dalam satu bahasa lengkap Turing dapat Anda katakan dalam bahasa lain. Jawaban Mark Canlas menjawabnya : singkat dan fleksibel membuat perbedaan.

Karena itu, makalah Matthias Felleisen Pada Kekuatan Ekspresif Bahasa Pemrograman membuat bacaan yang menarik. Di dalamnya ia berusaha memformalisasikan gagasan ekspresif dalam bahasa.

Frank Shearar
sumber
Ngomong-ngomong, ini sebenarnya tidak benar. Saya telah melihat bahasa yang Turing lengkap tetapi kurang kuat dari bahasa lain. Contoh sederhana: pertimbangkan bahasa yang hanya memiliki bilangan bulat dan string sebagai tipe datanya, tidak ada cara untuk mengkonversi di antara mereka, perhitungan sewenang-wenang pada bilangan bulat, dan hanya penggabungan string dan perbandingan pada string. (Saya telah bekerja dengan bahasa seperti itu.) Ini adalah Turing yang lengkap, tetapi tidak dapat mengekspresikan fungsi arbitrer pada string, jadi menambahkan lebih banyak fungsi akan meningkatkan daya komputasinya.
reinierpost
@reinerpost - kata bahasa lengkap Turing masih dapat menghitung fungsi arbitrer pada string, hanya saja harus mewakili mereka dengan cara yang berbeda. Kelengkapan Turing cukup ortogonal untuk pertanyaan jenis data apa yang Anda miliki. Sebagai contoh, beberapa turing bahasa lengkap tidak memiliki tipe data dan hanya mewakili semuanya dengan fungsi - dan harus menggunakan hal-hal seperti Church Encoding untuk aritmatika.
mikera
1

Tampaknya ada banyak ketidaksepakatan tentang apa yang merupakan kekuatan linguistik. Apakah itu kesederhanaan, keterbacaan, kemampuan beradaptasi, atau sekadar kelengkapan Turing? Saya pikir semua faktor ini berperan, jadi mungkin cara terbaik untuk melihatnya adalah dalam hal poin stat. Ya, saya sedang berbicara RPG pena-dan-kertas, di sini.

Idenya adalah bahwa setiap bahasa memiliki (kira-kira) jumlah "titik" yang sama, yang dapat didistribusikan secara sewenang-wenang di sejumlah kategori. Untuk keperluan diskusi, katakan satu-satunya faktor adalah singkatnya, keterbacaan, dan fleksibilitas. Suatu bahasa mungkin sangat singkat dan fleksibel, tetapi akibatnya sangat sulit dibaca; atau sangat terbaca dan fleksibel, tetapi sangat bertele-tele.

(Dapat diperdebatkan, jumlah poin yang harus didistribusikan oleh suatu bahasa ditentukan oleh keterampilan perancang dan pelaksana, tetapi mari kita berpura-pura bahwa semua perancang bahasa sama baiknya dalam hal apa yang mereka lakukan.)

Ketika seorang perancang bahasa memutuskan untuk meningkatkan kekuatan suatu bahasa dalam satu kategori, mereka secara logis menghilangkan sebagian dari kekuatan potensial itu dari setiap kategori lainnya. Inilah sebabnya mengapa sering dikatakan bahwa desain bahasa pemrograman adalah tentang pertukaran. Dari sudut pandang ini, kekuatan keseluruhan bahasa masih belum dapat ditentukan, dan kita harus kembali ke metode mengkategorikan bahasa berdasarkan kekuatan relatifnya. Tidak memuaskan? Sangat buruk.

Anda dapat memperdebatkan dua cara: bahwa bahasa yang kuat adalah bahasa dengan distribusi poin yang relatif merata (jack of all trades, master of none), atau dengan poin sebanyak mungkin di satu area tanpa meninggalkan yang lain tanpa pengawasan (spesialis). Tidak ada yang namanya bahasa "manusia renaisans", dengan penguasaan sempurna di berbagai bidang. Dan jika itu definisi Anda tentang bahasa yang paling kuat, maka Anda tidak beruntung.

Untuk bacaan lebih lanjut, artikel ini (kebetulan juga oleh Paul Graham, yang tampaknya memiliki pendapat yang beragam) menyentuh gagasan bahwa, walaupun sulit untuk menentukan bagaimana , bahasa pemrograman memang memiliki kekuatan yang berbeda. Dia berargumen dengan agak persuasif bahwa sangat mudah untuk melihat bagaimana suatu bahasa kurang kuat daripada yang Anda sukai — fitur yang hilang X — tetapi sangat sulit untuk melihat bagaimana bahasa yang benar-benar lebih kuat sebenarnya begitu — itu pada dasarnya setara dengan bahasa X, tetapi dengan banyak barang lainnya dilemparkan. Saya meninggalkan Anda dengan kutipan dari kertas itu:

Dengan induksi, satu-satunya programmer dalam posisi untuk melihat semua perbedaan kekuatan antara berbagai bahasa adalah mereka yang mengerti yang paling kuat. (Ini mungkin apa yang Eric Raymond maksudkan tentang Lisp menjadikan Anda seorang programmer yang lebih baik.) Anda tidak dapat mempercayai pendapat orang lain, karena paradoks Blub: mereka puas dengan bahasa apa pun yang mereka gunakan, karena itu menentukan cara mereka berpikir tentang program.
Jon Purdy
sumber
Saya tidak setuju dengan model Anda bahwa semua bahasa harus memiliki jumlah poin yang sama dalam distribusi mereka. Mari kita ambil contoh ekstrim dari brainf * ck dan kita dapat dengan mudah mengatakan bahwa itu tidak dapat dibandingkan dengan bahasa modern mana pun, bahkan jika hanya dengan jumlah poin total. yaitu itu bukan permainan zero-sum dalam bahasa pemrograman - bahasa tidak dimulai dengan poin x dan mendistribusikannya, mereka mulai dengan 0 dan mendapatkan poin tergantung pada fitur. Bahwa ada beberapa kompromi yang perlu diambil tentu saja alami tetapi semua pilihan tidak sama (setidaknya pendapat saya).
n1ckp
Saya tidak mengatakan bahwa semua bahasa memiliki jumlah poin yang sama. Saya mengatakan bahwa semua bahasa yang dipertimbangkan (yaitu, bahasa yang dirancang untuk penggunaan nyata) kira - kira memiliki jumlah yang sama. Bahasa Esoterik adalah kasus patologis karena mereka tidak dirancang untuk berguna sejak awal. Saya menyederhanakan demi argumen, karena tidak berguna untuk mencoba membedakan antara bahasa berdasarkan "jumlah fitur", jika fitur sebenarnya dapat dihitung.
Jon Purdy
maaf saya membaca ulang posting Anda dan saya harus setuju saya membaca sedikit terlalu cepat .. tapi saya masih tidak setuju bahwa setiap bahasa (umum) memiliki kira-kira poin yang sama. Mari kita ambil Java dan c ++ karena mereka adalah bahasa yang saya tahu agak bagus. Saya cukup yakin saya dapat menegaskan bahwa c ++ lebih kuat daripada Java hanya karena c ++ mematikan semua yang dilakukan Java (kecuali gc - tapi kemudian java tidak menawarkan manajemen memori manual juga) PLUS lebih banyak (template nyata FTW). Bahwa apa yang agak ingin saya sampaikan adalah saya pikir: Tidak, tidak semua bahasa kira-kira sama dalam pemrograman negeri peri, bahkan
n1ckp
saat membandingkan hanya bahasa umum.
n1ckp
0

Bahasa pemrograman adalah alat - tidak lebih, tidak kurang. Beberapa alat sangat khusus dan sangat cocok untuk tujuan tertentu; yang lain digeneralisasikan dan disederhanakan sampai hampir tidak berguna.

Saya berpendapat bahwa bahasa yang paling "kuat" adalah bahasa yang memungkinkan Anda mencapai tujuan Anda dengan investasi waktu, energi, dan penelitian lain yang minimal; yaitu, bahasa yang memberikan ROI terbesar. Dalam beberapa situasi bisa jadi C; di tempat lain, Jawa; di yang lain lagi, Haskell.

Hal terbaik yang harus dilakukan adalah membiasakan diri dengan berbagai bahasa dan apa yang berguna bagi mereka. Kemudian, ketika tiba saatnya untuk memulai proyek baru, Anda dapat membuat keputusan tentang mana yang paling tepat.

Benjamin Chambers
sumber
-1

Diskusi tentang bahasa pemrograman - IMHO - seperti diskusi tentang klien email di beberapa newsgroup Linux: mereka cenderung perang api. Saya dapat mengingat saat-saat ketika VB6 populer. Ada orang yang bahkan berpendapat bahwa itu bukan bahasa pemrograman sama sekali, sementara yang lain membuat aplikasi yang menakjubkan dengan itu.

Saya pikir bahasa pemrograman sudah berbeda dalam konsep sebagai pencipta memiliki hal-hal yang berbeda dalam pikiran ketika mereka menciptakan / mendesain bahasa. Jadi bahasa yang sesuai dengan satu tujuan - dan di bawah keadaan yang kuat - mungkin tidak cocok dengan yang lain. Penamaan bahasa yang kuat atau tidak itu murni subjektif. Yang mengatakan, saya tidak berpikir bahwa ada metrik yang bisa diterapkan.

Sascha
sumber
+1 untuk melawan downvote yang tidak dapat dijelaskan, dan karena saya umumnya setuju dengannya. Gunakan bahasa untuk tugas yang dirancang untuknya. Jangan menulis GUI kompleks dalam C, jangan menulis algoritma atau OS kompleks di VB6
Gerry
-1

Mereka semua adalah alat di peti alat Anda. Palu bisa jadi kuat, tetapi tidak jika Anda membutuhkan kunci pas. C / C ++ bagus jika Anda seorang programmer sistem, tetapi Adobe Flash mungkin lebih cocok untuk situs web game yang ingin Anda bangun.

bigtang
sumber
-1

Bahasa pemrograman yang paling kuat adalah yang memecahkan masalah pemrograman linier berikut :

Maksimalkan

      Kecepatan pengembangan
    + Kemudahan membaca kode
    + Kemudahan debugging
    + Singkat / singkatnya ekspresi
    + Kemudahan belajar / mengajar
    - Penggunaan CPU
    - Persyaratan memori

Tunduk pada

  • Itu harus Turing Lengkap.
  • Itu harus multi-paradigmatik : fungsional, berorientasi objek, pemrograman logika, pemrograman kendala, konkurensi, komputasi terdistribusi, dll.
  • Itu harus serbaguna , memungkinkan pembuatan antarmuka baris perintah, pustaka komponen, server, GUI, dan aplikasi web.
  • Itu harus portabel , yaitu mudah untuk port dan memelihara dalam pengaturan lintas platform.
  • Itu harus dapat diadaptasi , yaitu, terbuka untuk berubah dan dapat berkembang sebagai perangkat keras baru (chip kuantum), paradigma baru, dan inovasi lainnya dalam teknologi terjadi.
  • Ini harus mendorong pengembangan perpustakaan (seperti CPAN, CTAN, dan CRAN).
  • Itu harus gratis dan open source .

(Dan ya, saya tahu, saya sudah memposting jawaban yang sepenuhnya kontradiktif. Itu karena saya adalah seorang dialek.)

AN Lainnya
sumber
-2

Ini ditulis sehubungan dengan bahasa alami, tapi saya pikir itu sesuai untuk bahasa pemrograman juga:

Kepercayaan bahwa beberapa bahasa secara intrinsik lebih unggul daripada yang lain tersebar luas, tetapi tidak memiliki dasar dalam fakta linguistik. Beberapa bahasa tentu saja lebih bermanfaat atau bergengsi daripada yang lain, pada periode sejarah tertentu, tetapi ini disebabkan oleh keunggulan penutur pada waktu itu, dan bukan karena karakteristik linguistik yang melekat.
--David Crystal (ed.). The Cambridge Encyclopedia of Language 2 / e (1997). hal.7

"Kekuatan" tidak disebabkan oleh satu bahasa di atas yang lain. Bodoh mengatakan, "Bahasa Cina lebih kuat daripada bahasa Korea." Demikian juga, konyol untuk mengatakan "APL adalah bahasa yang lebih kuat daripada COBOL."

Ada beberapa upaya untuk menyamakan kekuatan linguistik dengan beberapa ukuran objektif. Saya yakin upaya ini gagal:

  • Mungkin lebih mudah untuk mendapatkan pekerjaan di AS jika Anda berbicara bahasa Inggris Amerika daripada mengatakan Maori. Demikian juga, tidak diragukan lagi lebih mudah untuk mendapatkan pekerjaan pemrograman Java atau C, daripada LISP atau J. Tetapi keuntungan ekonomi ini tentu saja tidak mencerminkan semacam kekuatan bawaan dari bahasa tersebut. Ini tentang kekuatan penutur bahasa.
  • "Hai" tidak lebih baik dari "ni hao" atau "shalom" karena lebih pendek. Demikian pula, sementara fungsi dapat diekspresikan lebih ringkas di APL daripada COBOL, ini juga tidak mencerminkan semacam kekuatan bawaan dari bahasa.

Pendapat saya adalah bahwa diskusi tentang "kekuatan satu bahasa atas yang lain" adalah ekspresi terselubung dari perasaan superioritas pembicara atas beberapa kelompok lain. Singkatnya, prasangka dan stereotipnya. Tentu saja, orang-orang yang berprasangka benar-benar percaya stereotip mereka dengan sangat kuat, dan tidak mungkin Anda bisa membujuk mereka untuk berubah pikiran.

AN Lainnya
sumber
Saya tidak setuju. Sebagai contoh yang mudah saya pikir tidak ada yang akan mengatakan sebaliknya daripada mengatakan daripada ada bahasa yang lebih kuat daripada brainf * ck (katakanlah) bahkan jika secara teoritis itu turing lengkap (saya pikir). Intinya adalah bahwa 'kuat' adalah kualitas tertentu yang tidak ada hubungannya dengan kenyataan bahwa mereka semua 'lengkap'. Saya setuju bahwa itu bisa agak subyektif tetapi untuk mengatakan bahwa semua bahasa adalah sama sehubungan dengan 'kekuatan' tampaknya cukup jauh diambil.
n1ckp
1
@ n1ck: Apakah Anda mengatakan Power = Keterbacaan? Dan: Kurangnya keterbacaan BF menyiratkan kurangnya kekuatannya? APL dan J juga memiliki keterbacaan yang sangat rendah, namun mereka sangat berguna dan ringkas (meskipun saya jelas tidak menyamakan kegunaan atau kesederhanaan dengan kekuatan juga). Pergi ke arah yang berlawanan, COBOL sangat mudah dibaca; itu benar-benar bertele-tele; tetapi sekali lagi, ini hampir tidak membuatnya lebih kuat daripada APL atau BF. BF sangat menghibur; ia memiliki kekuatan untuk menghibur; tapi itu bukan Daya qua Daya. Masalahnya adalah bahwa tidak ada seorang pun yang tampaknya memiliki teori Kekuasaan yang baik di mana mereka dapat menjalankan konsensus.
AN Lainnya
1
Tidak, saya tidak bermaksud bahwa kekuatan = keterbacaan. Saya hanya tidak setuju tentang pandangan Anda bahwa semua bahasa adalah sama dan bahwa kami tidak dapat membandingkan bahasa pada 'kekuatan', namun Anda mendefinisikannya. Menurut pendapat saya, dasar keterbacaan diperlukan untuk memberikan kekuatan pada bahasa tersebut tetapi sebenarnya bukan pertanyaan. Jika kita ingin benar-benar menjawab pertanyaan, tentu saja kita perlu mendefinisikan kekuatan terlebih dahulu tetapi dalam pandangan saya ini tidak sama dengan 'terbaik dalam setiap situasi' yang jawaban Anda tampaknya mengisyaratkan bahwa Anda menafsirkannya seperti itu (yaitu tidak ada yang terbaik bahasa untuk semuanya, yang agak saya setujui).
n1ckp