Saya pribadi menemukan membaca kode yang penuh dengan pengidentifikasi Unicode membingungkan. Menurut pendapat saya, ini juga mencegah agar kode tidak mudah dipelihara. Belum lagi semua upaya yang diperlukan untuk penulis dari berbagai penerjemah untuk mengimplementasikan dukungan tersebut. Saya juga terus-menerus memperhatikan kurangnya (atau keberadaan) dukungan pengidentifikasi Unicode dalam daftar (dis) keuntungan dari berbagai implementasi bahasa (seperti itu benar-benar penting). Saya tidak mengerti: mengapa begitu banyak perhatian?
14
größe
. Yang mengatakan, saya tidak pernah melakukan itu dan saya sangat tidak menyarankan melakukan itu. Karena itu, pertanyaannya sangat valid.Jawaban:
Ketika Anda berpikir unicode, Anda berpikir karakter Cina atau Rusia, yang membuat Anda memikirkan beberapa kode sumber yang ditulis dalam bahasa Rusia yang Anda lihat di internet, dan yang tidak dapat digunakan (kecuali Anda tahu bahasa Rusia).
Tetapi jika unicode dapat digunakan dengan cara yang salah, itu tidak berarti itu buruk dengan sendirinya dalam kode sumber.
Saat menulis kode untuk bidang tertentu, dengan unicode, Anda dapat mempersingkat kode Anda dan membuatnya lebih mudah dibaca . Dari pada:
kamu bisa menulis:
yang mungkin tidak mudah dibaca untuk pengembang biasa, tetapi masih mudah dibaca untuk orang yang menggunakan simbol matematika setiap hari .
Atau, saat melakukan aplikasi yang terkait dengan fotografi SLR, alih-alih:
Anda dapat mengganti aperture dengan simbolnya ƒ, dengan tulisan yang lebih dekat ke
ƒ/1.8
:Ini mungkin tidak nyaman : ketika mengetik kode C # umum, saya lebih suka menulis:
daripada:
karena dalam kasus pertama, IntelliSense membantu saya untuk menulis seluruh kode hampir tanpa mengetik dan terutama tanpa menggunakan mouse saya, sedangkan dalam kasus kedua, saya tidak tahu di mana menemukan simbol-simbol itu dan akan dipaksa mengandalkan mouse untuk pergi dan cari di daftar penyelesaian otomatis.
Ini dikatakan, itu masih berguna dalam beberapa kasus.
currentLens.GetMaximumƒ();
contoh saya sebelumnya bisa mengandalkan IntelliSense dan mudah diketikGetMaximumAperture
, lebih pendek dan lebih mudah dibaca. Juga, untuk domain tertentu dengan banyak simbol, pintasan keyboard dapat membantu mengetik simbol lebih cepat dari padanan literalnya dalam kode sumber.Hal yang sama, omong-omong, berlaku untuk komentar. Tidak ada yang mau membaca kode yang berisi komentar dalam bahasa Mandarin (kecuali jika Anda sendiri tahu bahasa Mandarin) Namun dalam beberapa bahasa pemrograman, simbol unicode masih bisa bermanfaat. Salah satu contohnya adalah catatan kaki¹.
¹ Saya pasti tidak akan menikmati catatan kaki dalam kode C # di mana ada seperangkat aturan gaya yang ketat tentang cara menulis komentar. Di PHP di sisi lain, jika ada banyak hal untuk dijelaskan, tetapi hal-hal itu tidak terlalu penting, mengapa tidak meletakkannya di bagian bawah file, dan membuat catatan kaki di PHPDoc dari metode ini?
sumber
Δx
atau penggunaan-∞
yang valid (dengan beberapa kelemahan saya jelaskan dalam jawaban saya).Ф
/Φ
di sisi lain hanya tanda-tanda bahwa programmer tidak mengerti bagaimana menamai variabel dengan benar.cumulativeDistributionFunction
terlalu panjangCDF
kurang terbaca dari Φ.cumDistFunc
jelek. Ini juga berarti bahwa jika programmer menggunakan huruf kecil Cyrillic EF (Ф) sebagai gantinya dalam konteks ini, itu hanyalah kesalahan. Dengan cara yang sama, seorang programmer bisa menggunakan istilah yang salah atau singkatan yang salah.Saya akan mengatakan:
untuk memudahkan non-profesional dan pemula yang belajar pemrograman (misalnya di sekolah) dan tidak tahu bahasa Inggris. Mereka tidak menulis kode produksi. Saya telah melihat kode berkali-kali seperti:
Biarkan orang miskin menulisnya dalam bahasanya:
Apakah kamu tidak menyukainya?
sumber
Tentu saja, setiap kompiler modern harus berurusan dengan kode sumber Unicode hari ini. Misalnya, konstanta string mungkin perlu mengandung karakter Unicode. Tapi begitu ini tercapai, mengapa tidak mengizinkan pengidentifikasi unicode juga? Ini bukan masalah besar kecuali kode kompiler Anda tergantung pada karakter menjadi kode 7-bit.
Tetapi OP benar sejauh: Sekarang mungkin bahwa seorang India berbahasa Hindi harus menjaga kode dengan pengidentifikasi Rusia dan komentar Arab. Sungguh mimpi buruk bagi orang Tionghoa miskin yang seharusnya melakukan pemeriksaan kualitas dan yang tidak dapat membaca salah satu dari 3 huruf di atas!
Oleh karena itu, sekarang merupakan tugas organisasi untuk memastikan program pengidentifikasi dan komentar ditulis dalam bahasa yang sama. Saya tidak dapat menahannya tetapi saya pikir ini akan menjadi bahasa Inggris untuk beberapa waktu mendatang.
sumber
А
, konstruktornya menerima parameterΑ
, dan pernyataan dalam konstruktor mengatakanvar x = A.boz();
, akanA
merujuk pada field, parameter, atau mungkin sesuatu yang lain? Bagaimana orang bisa tahu?Saya pikir itu masuk akal untuk memungkinkan karakter unicode di string dan komentar. Dan jika lexer & parser harus mendukung unicode untuk itu, penulis kompiler mungkin mendapatkan dukungan karakter unicode secara gratis, jadi sepertinya pembatasan sewenang-wenang untuk hanya mengizinkan karakter ASCII dalam pengidentifikasi.
sumber
vár
Sama denganvár
?)Sejauh yang saya ketahui, ini murni untuk alasan pemasaran . Dan juga dapat membuat hidup kita lebih sulit.
Argumen pemasaran
Anda tahu daftar fitur gila yang dibanggakan sebagian besar bahasa ini? Secara umum ini sangat tidak berguna, karena sangat jauh dari bahasa sehingga tidak memberikan banyak informasi spesifik, tetapi memungkinkan seseorang untuk dengan cepat berpakaian meja dengan kutu dan tanda silang dan secara tepat menyimpulkan bahwa karena X memiliki lebih banyak kutu daripada Y, itu harus Jadi lebih baik.
Nah, dukungan Unicode untuk pengidentifikasi adalah salah satu dari itu. Tidak masalah jika dibandingkan dengan dukungan Lambda, dukungan pemrograman Generik, dll ... mungkin tidak banyak, orang yang menggambar tabel tidak peduli dengan kualitas setiap baris, hanya tentang jumlah mereka.
Dan dengan demikian mereka dapat menyombongkan diri: "Ah, dengan Y Anda tidak memiliki dukungan Unicode untuk pengidentifikasi Anda! Di X kami melakukannya, jadi bagi siswa itu jauh lebih mudah!"
Kekeliruan aksesibilitas
Sayangnya, argumen aksesibilitas keliru.
Oh, saya mengerti bahwa bisa menulis "résultatDuJetDeDé" alih-alih "daduThrowResult" (ya saya orang Prancis) mungkin tampak seperti kemenangan dalam jangka pendek ... namun ada kekurangannya!
Pemrograman adalah tentang berkomunikasi
Program Anda tidak hanya ditujukan untuk kompiler (yang tidak terlalu peduli dengan pengidentifikasi yang Anda gunakan), tetapi juga ditujukan untuk rekan Anda. Mereka harus bisa membacanya, dan memahaminya.
Tentu saja, teman sekelas Anda mungkin berbicara dengan bahasa yang sama seperti yang Anda lakukan (tidak jelas, saya memiliki kelas pemrograman dengan Jerman, Spanyol, Libanes dan Cina), dan mungkin juga guru Anda ... tetapi anggaplah bahwa entah bagaimana Anda mengerjakannya di rumah dan tiba-tiba butuh bantuan: Internet itu hebat, Anda bisa berbicara dengan ribuan ribu orang yang tahu solusinya, mereka hanya akan menjawab jika mereka mengerti pertanyaan Anda. Dan Anda perlu memahami jawaban mereka juga.
Pemrograman membutuhkan pemahaman
Aksesibilitas dan inisiasi mengharuskan Anda mendasarkan diri pada perpustakaan untuk melakukan pengubahan ketinggian untuk Anda: Anda tidak ingin menemukan kembali lapisan IO untuk membaca dari / menulis ke konsol pada tugas pertama Anda.
Jika Anda menjawab bahasa Arab Morrocan, saya akan terkejut.
Kecuali Anda hanya mengandalkan ceramah Anda membantu untuk, dan mereka dokumentasi yang komprehensif hadir pada setiap fitur perpustakaan Anda akan perlu digunakan (dan bahkan mungkin diterjemahkan perpustakaan), maka Anda akan harus belajar modicrum dari bahasa Inggris. Namun, Anda mungkin sudah melakukannya jauh sebelum memulai kursus pemrograman ini.
Bahasa Inggris adalah...
... lingua franca programmer (dan sebagian besar ilmuwan).
Semakin cepat dia mengakuinya, dan menyertainya alih-alih melawannya, semakin cepat dia bisa benar-benar belajar dan maju.
Beberapa orang pasti akan menentang hal ini, dan dengan benar mempertahankan hak mereka untuk berbicara bahasa pilihan mereka (bahasa ibu mereka biasanya), namun, seperti yang ditunjukkan Babel, semakin banyak bahasa digunakan, semakin sulit komunikasi yang didapat.
Masih...
Ya, seperti yang telah diperdebatkan berulang kali, beberapa dukungan Unicode (terutama simbol) dapat sangat memudahkan pemahaman bagi orang-orang yang harus menerjemahkan rumus matematika atau fisika, misalnya, ke dalam kode. Ada kekurangan beberapa simbol kelebihan beban, tetapi masih bisa membantu.
Jadi kenapa ?
Yah, seperti yang dikatakan, ini bukan tentang kenyamanan pengguna, melainkan tentang klaim pemasaran. Itu mati mudah juga, karena parser sudah Unicode sadar akan string dan komentar, jadi sebagian besar mengambil lompatan.
Dan mungkin ada manfaatnya bagi pengguna tertentu.
Tapi saya pribadi hanya akan berurusan dengan kode yang ditulis dengan pengidentifikasi bahasa Inggris. Saya tidak peduli jika Anda membutuhkan bantuan saya dengan sepotong kode Anda atau jika perpustakaan Anda hanya luar biasa dan saya bisa mendapatkan banyak dengan menggunakannya: jika saya tidak dapat memahaminya, saya hanya harus mengabaikannya.
sumber
Bagaimana Anda akan mengetik pengidentifikasi ASCII pada keyboard Cina? Beberapa kata kunci bahasa adalah satu hal, dan harus melakukan seluruh kode Anda dengan cara lain.
Pemrogram harus memiliki hak dan kemampuan untuk memanggil variabel mereka apa pun yang mereka inginkan. Bukan urusan Anda bahasa apa yang ada di dalamnya.
Jika Anda merasa begitu bingung kode dengan pengidentifikasi yang memiliki simbol dari bahasa orang lain di dalamnya membaca, maka saya yakin bahwa Anda persis memahami bagaimana bingung mereka rasakan ketika mereka harus menggunakan pengenal dengan simbol dari Anda bahasa dalam.
sumber
Menurut PEP 3131 - Pendukung Non-ASCII tanggal 2007, bagian pertama dari Rationale menyatakan:
Saya belum menyelidiki bahasa lain, tetapi itu harus menjadi salah satu alasan mereka menambahkan dukungan.
sumber
Itu akan benar-benar membuat hidup lebih mudah (bagi sebagian dari kita, bagaimanapun) jika kompiler tidak akan mendukung Unicode. Pengidentifikasi dari kanan ke kiri sangat buruk. Gabungan alfabet Romawi dan pengidentifikasi Unicode kanan-ke-kiri bahkan lebih buruk.
Hal buruk tentang non-dukungan adalah bahwa penyihir GUI tertentu mengambil teks yang Anda masukkan untuk item dan secara otomatis menggunakan teks itu sebagai pengidentifikasi item. Jadi apa yang akan mereka lakukan dengan teks Unicode pada item-item itu? Tidak ada jawaban yang mudah, saya takut.
Komentar Unicode dari kanan ke kiri juga bisa lucu. Misalnya, dalam VS 2010, komentar XML ditampilkan (dengan benar) sebagai RTL dalam kode ... tetapi ketika Anda menggunakan Intellisense untuk menarik pengidentifikasi di tempat lain dalam kode, tooltip menampilkan (salah) LTR. Lebih baik, mungkin, jika tidak ada dukungan sejak awal? Sekali lagi, bukan panggilan yang mudah.
sumber