Apakah sudah ada penelitian tentang linguistik pemrograman?

18

Bahasa pemrograman adalah bahasa formal , tetapi tidak seperti banyak formalisme, mereka juga memiliki makna inheren tertentu yang ditentukan oleh semantik operasional mereka , atau, dalam hal bahasa markup, semantik presentasi . Dan bahasa pemrograman, meskipun memang formal, sangat mirip dengan bahasa alami, dalam hal komunikasi yang mereka izinkan.

Sementara pengembangan bahasa pemrograman adalah artifisial, proses evolusi, peminjaman, pencampuran, dan mutasi bahasa alami semuanya memiliki rekanan buatan yang cukup jelas. Jadi saya bertanya-tanya: apakah pernah ada penelitian berskala besar dan mendalam mengenai evolusi dan perilaku bahasa pemrograman dari sudut pandang seorang ahli bahasa  ?

Jon Purdy
sumber
6
Perl dibuat oleh ahli bahasa, dan lebih berantakan daripada bahasa Inggris itu sendiri.
Pekerjaan
1
@Job: Dan sudah ada selama lebih dari 23 tahun, diinstal secara default pada platform Unix-like yang tak terhitung jumlahnya, dan masih digunakan secara teratur untuk semuanya mulai dari otomatisasi (yang caranya lebih bersih daripada skrip shell) hingga pengembangan Web (yang memang demikian caranya lebih bersih daripada PHP) ke tujuan awalnya yaitu pemrosesan teks dengan ekspresi reguler (yang telah menetapkan standar industri de facto). Tentu itu berantakan, tetapi dengan cara yang bekerja dengan baik untuk orang-orang, dan di situlah dalam perkembangan Perl latar belakang linguistik Larry adalah anugerah.
Jon Purdy
@Job efeknya disebut "Worse is Better" en.wikipedia.org/wiki/Worse_is_better .
Apalala
@Aplala: Itu tidak berhubungan. Jika ada, Perl adalah counterexample, karena itu kaya fitur dan kompleks dan populer.
Jon Purdy

Jawaban:

6

Ingat bahwa tata bahasa formal, yang tanpanya pemrograman modern tidak bisa, adalah produk dari penelitian ahli bahasa Noam Chomsky .

Kecelakaan mobil membuat saya tidak bisa menyelesaikan tesis kelulusan tentang topik yang Anda tanyakan, jadi tidak ada referensi yang bisa saya berikan kepada Anda, hanya pendapat.

Bahasa yang diucapkan berkembang dengan kecepatan apa pun tergantung pada konteksnya, dan mereka melakukannya dengan cara yang tidak dapat diprediksi sebagai konteks manusia yang tidak dapat diprediksi. Hasil WW2 memiliki efek besar pada bahasa Jepang. Inggris, Australia, Afrika Selatan, dan Amerika Utara tidak cukup berbicara bahasa yang sama. Penggunaan deklinasi kata kerja di antara apa yang dulunya merupakan koloni Spanyol telah menjadi sangat berbeda setelah dua ratus tahun kemerdekaan (para mantan koloni berpikir bahwa Spanyol Spanyol adalah kuno ).

Hanya kekuatan efisiensi atas fonetik membuat kata-kata yang berbeda digunakan dengan frekuensi yang berbeda di daerah yang berbeda diucapkan secara berbeda: kata-kata yang sangat umum di-skim, atau salah eja, dan kata-kata yang kurang umum dinyatakan seakurat mungkin.

Bahasa alami, dengan variasi, nuansa, dan evolusi tidak sesuai untuk determinisme yang kami tuntut dari komputer. (Ya ampun! Mengingat kesamaan misinterpretasi dan interpretasi kedua, tampaknya mereka tidak cocok bahkan untuk interaksi paling sederhana di antara manusia [menahan diri dari mengutip lelucon tentang apa kata gadis / teman laki-laki dan apa artinya sebenarnya))

Apalala
sumber
Dalam penelitian kami (saya memiliki seorang tutor), kami melihat bahasa Yunani dan Latin karena mereka memiliki tata bahasa yang jelas yang mencakup setiap peran yang dapat dimiliki sebuah kata dalam kalimat berdasarkan deklinasi mereka. Itu tidak cukup baik, dan catatan tentang bagaimana orang benar-benar berbicara bahasa-bahasa itu mengatakan bahwa itu sangat berbeda dari apa yang ditunjukkan oleh tata bahasa mereka, seperti yang terjadi dengan bahasa modern.
Apalala
4
Mengenai bahasa Yunani dan Latin kuno - bagian dari masalah di sini adalah bahwa teks-teks yang bertahan cenderung bersifat formal - esai, kontrak, putusan hukum, dll. Jika Anda memikirkan pesan yang kami kirim sehari-hari - "Hai, Mohon susu dalam perjalanan pulang "dan" Jim - ingat laporan Casey untuk jam 9 "- sebagian besar pesan sementara di Roma kuno ini akan hilang selamanya.
HorusKol
2
Itu tidak sepenuhnya benar. Ibuku sesekali berbicara tentang kelas-kelas Latin sekolah menengahnya, dan menyebutkan satu karya yang mereka terjemahkan, sebuah memo dari seorang ningrat Romawi ke sopir kereta. Intinya adalah "Tolong, selama jam sibuk, JANGAN terjebak di belakang kereta ini-dan-begitu. Aku tidak tahu apa yang dia memberi makan kudanya, tetapi bau busuk itu MENGERIKAN."
John R. Strohm
4

Saya membaca kembali pertanyaan itu, dan saya pikir jawaban asli saya tidak menjawabnya. Ini percobaan lain.

Tidak, belum ada penelitian serius tentang linguistik bahasa pemrograman yang saya ketahui. Ada beberapa garis keturunan bahasa yang dilacak untuk dua cabang utama dan satu cabang:

  • Prosedural. Von Neuman . Dijkstra . Fortran, Pascal, C.
    • Berorientasi pada objek. Simula. Smalltalk.
  • Fungsional McArthy . PELAT.

Bagi kita dengan puluhan tahun di lapangan, jelas bahwa bahasa pemrograman telah kawin, dan dengan demikian kita menemukan sebagian besar aspek dari paradigma murni dalam kebanyakan bahasa pemrograman modern, yang sekarang disebut bahasa pemrograman multi- paradigma : C #, Python, Java, .. .. Bahkan bahasa fungsional yang sebelumnya murni seperti OCaml dan Haskell menyertakan cukup prosedural (melalui monads ) dan fitur OO untuk memungkinkan Anda melakukan apa saja.

Apa yang terjadi, saya pikir, adalah menjadi jelas bahwa mahal (bila tidak konyol) harus beralih bahasa pemrograman hanya untuk dapat menerapkan paradigma yang tepat untuk subproblem yang diberikan.

Masih ada pengecualian untuk tren di bidang sistem yang sangat paralel dan asinkron. Di sana bahasa yang diutamakan benar-benar fungsional, seperti Erlang , mungkin karena lebih mudah untuk berpikir tentang sistem yang sedemikian kompleks secara fungsional.

Bagian non-paradigmatik dari evolusi adalah sintaksis. Bahasa-bahasa yang mendorong atau bahkan mengizinkan program-program cryptic menjadi semakin jarang digunakan ( APL , AWK , dan bahkan Perl dan LISP). Sintaks yang mendominasi saat ini adalah bahasa-bahasa yang lebih mudah dibaca (tidak mudah ditulis) seperti C (C ++, C #, Java, Objective-C, Scala, Go, IML, CSS, JavaScript, dan juga Python), Pascal (Fortran 90+ x), Smalltalk (Ruby), ML / Miranda (OCaml, Haskell, Erlang), dan SGML (HTML, XML).

Diagram ini tidak sepenuhnya akurat, dan tidak up to date, tetapi memberikan gambaran yang bagus tentang berapa banyak bahasa pemrograman yang terkonvergensi sejak era bahasa per situs tahun 1970-an.

evolusi bahasa pemrograman

Apalala
sumber
1
Ini jauh lebih seperti apa yang saya cari. Saya kira saya juga mencari korelasi langsung dengan morfologi dan fonologi, di atas hubungan yang jelas dengan sintaksis yang berasal dari bekerja dengan tata bahasa formal.
Jon Purdy
@ Jon Yah, tren lain yang jelas adalah bahwa bahasa Inggris adalah dan merupakan bahasa alami yang mendominasi semua bahasa pemrograman, baik secara sintaksis maupun tata bahasa. Bahasa pemrograman dari kiri ke kanan, kata kerja-pertama. Bahasa Jepang, misalnya, sangat berbeda, tetapi saya tahu tidak ada upaya untuk mengembangkan bahasa pemrograman gaya Jepang. en.wikipedia.org/wiki/Japanese_language#Sentence_structure
Apalala
@Aplala: Urutan SOV adalah umum dalam bahasa berorientasi stack, operator infiks dihitung sebagai SVO, dan fungsi (Lisp menjadi contoh patologis) adalah VSO. Bahasa Inggris jelas memiliki pengaruh yang kuat, tetapi saya pikir ada faktor-faktor lain di tempat kerja ... Saya mungkin harus melakukan penelitian ini sendiri. : P
Jon Purdy
@ Jon Ya, saya lupa tentang Forth dan Postcript, yang keduanya berbasis stack dan SOV. Tolong beri tahu saya jika Anda memulai penelitian. Saya berspesialisasi dalam teori bahasa di universitas, dan bahasa pemrograman masih menjadi hobi saya. Saya memiliki ingatan langsung dari banyak dari mereka (Simula, Prolog, LISP).
Apalala
@ Jon Anda mungkin merasa menarik bahwa banyak programmer berbahasa Spanyol akan lebih suka menggunakan pengidentifikasi dalam bahasa Spanyol meskipun mereka sangat tidak cocok dengan bahasa pemrograman, perpustakaan, kerangka kerja, standar, dan alat yang mereka gunakan. Program mereka berakhir di "Spanglish". Saya telah melihat suka dengan programmer dengan bahasa asli dalam bahasa lain dengan warisan Romawi / Latin, seperti Eropa-Timur. Saya tidak tahu apa yang ingin dilakukan oleh programmer Timur-Timur (Cina, Jepang, Korea), Rusia, atau Arab.
Apalala
1

Saya suka jawaban @ Apalala, yang tampaknya menunjukkan konvergensi ke beberapa bahasa tujuan umum utama. Itu hanya masuk akal, karena ide yang baik di satu dapat cepat atau lambat diambil oleh yang lain.

Apa yang akan saya tambahkan adalah bahwa setiap kali seseorang menggunakan bahasa, mereka perlu memperluasnya, dengan menambahkan istilah, mengubahnya menjadi bahasa yang lebih berorientasi pada domain yang ada. Terkadang ini cukup mudah, kadang tidak. Berikut ini contoh yang tidak mudah.

Properti yang saya hargai dalam bahasa tujuan umum adalah sejauh mana ia membantu dalam definisi bahasa khusus domain baru.

Mike Dunlavey
sumber