Menurut saya, bahasa pemrograman yang dimaksudkan untuk digunakan dalam sains dan teknik secara konsisten aneh dibandingkan dengan bahasa tujuan umum. Beberapa contoh di atas kepala saya:
- Di Matlab, setiap fungsi harus ditempatkan dalam file terpisah
- Dalam R, <- adalah operator assigment, yang bertentangan dengan = dalam hampir setiap bahasa lainnya
- Matlab, R, Julia dan yang lainnya semuanya terindeks 1
- Matlab menggunakan% untuk komentar, dan bukan standar # atau //
Tentu saja, semua bahasa ini memiliki beberapa fitur desain yang sebenarnya membuatnya lebih mudah digunakan untuk aplikasi ilmiah, seperti notasi matriks yang lebih alami. Namun, mereka semua secara tak terduga membuat semua pilihan aneh yang tidak membuat apa pun lebih mudah dan bisa dengan mudah dihindari jika perancang bahasa baru saja memilih untuk melakukan apa yang dilakukan 99% dari bahasa lain. Apakah alasan vendor terkunci? Kurangnya kontak dengan komunitas pengembangan perangkat lunak yang lebih luas? Sesuatu yang lain
Saya membaca utas ini dan tidak menemukan penjelasan yang memuaskan. Hanya karena R dirancang sebagai bahasa ilmiah, bukan berarti ia harus sepenuhnya mengabaikan konvensi dan menggunakan <- alih-alih =.
sumber
Jawaban:
Dan bahkan jika kita menilai hanya berdasarkan standar IT ... Maaf, standar apa yang Anda maksud? Sudahkah Anda mencoba menulis prog di APL atau SNOBOL? Kedua bahasa ini, IMHO, PALING kuat di bidang yang sesuai (penghitungan dan string). Tetapi sintaksnya adalah sesuatu yang SANGAT aneh (dan efektif) Membaca satu baris kode APL bisa memakan waktu berhari-hari. Di sisi lain, garis seperti itu adalah SW yang serius. Anda akan kembali ke Mathlab dengan air mata lega.
Adapun "=", banyak orang memiliki masalah untuk terbiasa bahwa itu bukan kesetaraan, tetapi tugas. BTW, dalam Pascal IS IS equality and assignment adalah ": =".
Dan Anda benar-benar berpikir bahwa == untuk kesetaraan lebih alami? Sebaliknya, mencampur = dan == adalah kesalahan paling umum dalam pemrograman C, itu terjadi sangat sering bahkan dalam IDE kontemporer, dengan kontrol otomatisnya.
Tentang pengindeksan dari 1 - itu adalah satu-satunya yang alami. Ketika Anda masih kecil, Anda telah belajar puisi dan lagu, di mana Anda menghitung: satu, dua, tiga ... Dan bukan 0,1,2 ... Dalam matematika sekolah kami mempelajari bahwa penghitungan dimulai dari 1, dan bahwa 0 bukan milik nomor alami / menghitung. Hanya dengan definisi fungsi indeks non-alami datang. Bagaimanapun, 0 ditemukan ribuan tahun setelah nenek moyang kita mengangkat jari.
0-start lebih mudah disadari dan langsung masuk ke praktik IT setelah penampilan C. Namun dalam bahasa Fortran, bahasa pertama, indeks-1 digunakan. Sama dengan bahasa lain dari zaman pra-industri.
Dan ya, saya telah membaca artikel Dyjkstra tentang kealamian penghitungan berbasis 0. Dan sama sekali tidak setuju dengan argumentasinya. Itu wajar bagi musisi ony. Dan bahkan 0 penggemar yang membuat kompiler C dan Java, menghitung baris kode MULAI DARI 1!
sumber
Pengindeksan dari 1 tidak aneh, itu sepenuhnya normal dan diharapkan kecuali untuk programmer , karena mereka telah dikondisikan untuk mengharapkan penghitungan berbasis 0 oleh C (yang dikondisikan dari properti arsitektur prosesor).
Komentar dilambangkan dalam banyak, banyak cara berbeda dalam bahasa yang berbeda; ada ada cara standar, setiap bahasa memilih simbol atau digraf yang belum diambil.
Tugas juga merupakan konsep yang aneh dan tidak bisa dipahami, kecuali untuk programmer ; kebanyakan orang tidak peduli apakah itu
=
atau:=
atau<-
, mereka berjuang untuk memahami maknanya (dan bagi mereka, itu sebenarnya lebih baik tidak digunakan=
, karena ini menekankan bahwa penugasan bukanlah kesetaraan - rintangan yang paling umum bagi non-programmer untuk mengerti kode).Singkatnya, bahasa pemrograman yang ditujukan untuk orang selain programmer profesional terlihat berbeda karena orang yang menggunakannya paling menginginkannya.
sumber
Ada tiga masalah:
Sekarang ke poin spesifik Anda:
Saya tidak tahu Matlab, jadi saya tidak bisa mengomentari persyaratan organisasi file. Perhatikan bahwa Java ingin Anda menggunakan satu file per kelas publik.
Dalam R,
=
dapat digunakan sebagai operator penugasan juga. Perhatikan bahwa diperlukan beberapa operator penugasan<-
dan<<-
untuk menangani konsep pelingkupannya (<<-
ditugaskan untuk simbol dalam lingkup luar alih-alih membuat simbol baru di dalam fungsi). Panah dapat digunakan ke arah lain juga, berpotensi membuat kode bersih:complex_calculation() -> x
.Pengindeksan berbasis 1 adalah standar dalam matematika, yang membuat pengguna Matlab dan R lebih nyaman daripada C. Julia mengikuti Matlab agar memiliki kurva belajar yang lebih baik.
%
untuk komentar juga digunakan di TeX / LaTeX. Ini#
hanya konvensi dari bahasa scripting Unix, dan turunannya.Anda juga mengabaikan bahwa bahasa pemrograman "nyata" memiliki banyak bagian aneh. Mengapa Skema tidak digunakan
=
? Sebagai gantinya:Mengapa C digunakan
*
untuk dereferencing, padahal jelas sebuah caret^x
lebih umum dalam tradisi lain?sumber
Saya kira itu tergantung pada paparan Anda ke bahasa lain. Dari atas kepala saya:
sumber
<!-- ... -->
. Tanda persen digunakan untuk penyandian URL:http://example.com/()
menjadihttp://example.com/%28%29
.