Daya Ekspresif didefinisikan oleh Wikipedia sebagai:
Mari kita baca kembali halaman itu. Salah satu hal pertama yang perlu diperhatikan adalah bahwa ia mengatakan "bahasa", bukan "bahasa pemrograman", dan sebagian besar contohnya bukan bahasa pemrograman, misalnya contoh pertama yang diberikan adalah perbandingan antara OWL2 EL dan OWL2 RL, yang keduanya ontologi bahasa.
Seseorang dapat menerapkan konsep ini ke bahasa pemrograman, tetapi juga bahasa yang cocok dengan pola, bahasa markup, bahasa permintaan, bahasa visual stylesheet, ekspresi reguler (dan semua bahasa reguler yang mereka tuju) dan seterusnya. Seseorang bahkan dapat merujuk pada kekuatan ekspresif bahasa alami seperti bahasa Inggris, yang sering dilakukan secara sangat informal, tetapi dengan lebih serius ketika mempertimbangkan masalah yang berkaitan dengan pemrosesan bahasa alami.
Apakah "ide" merujuk pada hal-hal (operasi, struktur, algoritma, dll?) Yang dapat kita komunikasikan ke mesin? Atau apakah itu merujuk pada konsep "manusia" yang dapat ditangkap dan dikomunikasikan dengan bahasa kepada manusia lain?
Ini merujuk pada apa yang dapat diekspresikan dalam bahasa itu, yang dianggap murni sebagai sesuatu dalam dirinya sendiri.
Misalnya, (saya akan menggunakan javascript secara keseluruhan untuk contoh saya, karena pertanyaan Anda menunjukkan bahwa itu salah satu dari bahasa yang Anda tahu) pertimbangkan pernyataan javascript:
var x = 3 + 4;
Ini menyatakan bahwa jumlah nilai 3 dan 4 dihitung dan nilai yang terkait dengan label x
dalam lingkup namespace yang diberikan.
Jika kita menghancurkan semua komputer di dunia dan menulis kode itu di selembar kertas, itu akan tetap bahwa dalam javascript masih memiliki makna yang sama; kami tidak akan dapat menjalankan kode seperti itu pada apa pun, tetapi definisi abstrak dari bahasa tersebut masih merupakan sesuatu yang dapat kami bicarakan.
Ini mungkin terlihat sangat bagus, tetapi sebenarnya cukup penting bahwa bahasa adalah hal-hal yang dapat dipertimbangkan secara abstrak tanpa mempertimbangkan komputer nyata. Untuk satu hal, orang-orang yang berargumen tentang poin-poin teoretis dari bahasa komputer yang belum layak dalam praktiknya adalah salah satu hal yang telah membawa kita ke tempat kita sekarang; komputer membutuhkan ilmu komputer, tetapi ilmu komputer tidak membutuhkan komputer, hanya gagasan komputasi.
Tentu saja, kami memang menggunakan komputer di dunia nyata, dan hari ini ada banyak orang yang menggunakannya dalam praktik daripada beberapa spesialis yang membahasnya secara teori. Halaman yang Anda tautkan mengatakan:
Istilah kekuatan ekspresif dapat digunakan dengan berbagai makna. Ini bisa berarti ukuran dari ide-ide yang dapat diungkapkan dalam bahasa itu:
Pengertian pertama mendominasi dalam bidang matematika dan logika yang berhubungan dengan deskripsi formal bahasa dan artinya, seperti teori bahasa formal, logika matematika dan proses aljabar.
Dalam diskusi informal, istilah ini sering merujuk pada pengertian kedua, atau keduanya. Ini sering terjadi ketika membahas bahasa pemrograman. Upaya telah dilakukan untuk memformalkan penggunaan istilah ini secara informal
Dari dua penggunaan istilah ini, dampak praktis pertama hanya berkaitan dengan apa yang dapat disampaikan ke komputer.
Yang kedua lebih berkaitan dengan pemahaman manusia dalam membaca dan menulis, meskipun sejauh mana hal itu dilakukan, sangat berbeda antara penggunaan, karena mereka bersifat informal dan karena itu tidak didefinisikan dengan ketat.
Misalnya, jika kita mengambil bahasa seperti JavaScript dan memberlakukan batasan aneh pada nama variabel, seperti variabel harus berupa angka 8 digit yang diawali dengan garis bawah, yang cocok /^_[0-9]{8}$/
, apakah kita akan kehilangan kekuatan ekspresif?
Menurut definisi formal, kita tidak kehilangan kekuatan ekspresif: Kita dibatasi hingga 100.000.000 variabel, tetapi jika kita benar-benar perlu kita dapat menyiasatinya dengan membuat objek untuk menahan lebih banyak variabel dalam namespace yang baru dibuat. Dengan demikian program apa pun yang ditulis dalam javascript hari ini dapat ditulis ulang dalam bentuk baru ini, sehingga keduanya sama-sama ekspresif.
Menurut definisi informal, kita telah kehilangan sebagian, tetapi seberapa banyak tergantung pada seberapa informal kita, yang akan bervariasi karena sekali lagi Anda tidak dapat mengatakan apa "aturan" tentang penggunaan informasi. Kita bisa mengatakan kita kehilangan sejumlah kecil, karena program dengan lebih dari 100.000.000 variabel dalam ruang nama yang sama harus ditulis ulang di luar substitusi sederhana. Penggunaan yang bahkan lebih informal lagi akan merujuk pada dampak mental dari nama-nama variabel canggung pada manusia komprehensif.
Juga patut dicatat bahwa orang akan secara informal mempertimbangkan hal-hal yang tidak sepenuhnya merupakan bagian dari bahasa sama sekali. Pertimbangkan perubahan dalam Javascript dari pembuatannya hingga hari ini.
Menurut definisi paling formal, ada cukup tidak berubah dalam ekspresif; Bagaimanapun, itu Turing yang lengkap untuk memulai.
Dengan definisi yang lebih informal, telah menjadi jauh lebih ekspresif dalam hal-hal tertentu seperti manipulasi array, penanganan pengecualian dan (mungkin yang paling penting) dalam dimasukkannya ekspresi reguler. Ini tidak melakukan apa pun yang tidak dapat dilakukan dalam javascript sebelumnya, meskipun mereka sering dapat melakukan sesuatu dalam beberapa baris dan waktu eksekusi subsecond yang akan membutuhkan kilobyte kode untuk ditulis dalam javascript1.0 dan waktu yang lama untuk dijalankan.
Dengan definisi yang jauh lebih informal lagi, perubahan dari penggunaan pertama javascript di browser (dapat mengubah nilai input formulir, document.write
sementara halaman pertama diurai dan pindah ke lokasi baru atau kembali atau maju dalam sejarah, tapi cukup tidak ada yang lain) untuk hari ini (dapat mengubah apa saja di halaman, termasuk berdasarkan data dari panggilan server) benar-benar luar biasa, meskipun sebagian besar tidak berhubungan dengan javascript tetapi dengan model objek dan API yang dibuat tersedia, daripada bahasa (mis. vbscript di IE diuntungkan dari perubahan tersebut secara merata).
Menurut saya, penggunaan terakhir itu sangat informal sehingga tidak benar, tetapi itulah masalah dengan definisi informal.
Dengan definisi formal, itu benar-benar tidak menjadi lebih ekspresif sama sekali.