Saya melewati garis agak seperti ini "PHP tidak memiliki dukungan asli untuk Unicode". Saya juga membaca bahwa Python memiliki dukungan asli untuk Unicode. Sekarang Anda dapat memanggil fungsi utf8_encode()
dalam PHP untuk menyandikan string ke Unicode dan Anda dapat menggunakan fungsi unicode()
dalam Python untuk mengubah string menjadi unicode. Jadi apa artinya mendukung Unicode secara asli? Juga beberapa bahasa memiliki dukungan asli untuk konkurensi sementara beberapa tidak memiliki dukungan asli. Jadi apa yang dimaksud dengan
Bahasa X secara native mendukung fitur Y
programming-languages
lovesh
sumber
sumber
Jawaban:
Ini berarti bahwa untuk mendukung fitur yang diberikan, pengembang tidak perlu menggunakan komponen yang tidak tertanam dalam bahasa itu sendiri, seperti ekstensi atau produk pihak ketiga.
Misalnya, PHP tidak memiliki dukungan asli untuk unicode, karena setiap fungsi yang berkaitan dengan string dalam PHP itu sendiri tidak mendukung unicode. Misalnya, untuk mendapatkan substring, Anda tidak dapat menggunakan
substr
, tetapi harus menggunakanmb_substr
, yang mengharuskan untuk menggunakan ekstensi String Multibyte.Untuk mendapatkan dukungan asli dari fitur yang diberikan, tidak cukup hanya dengan memasukkan ekstensi di trunk kode sumber. Sebaliknya, PHP akan memiliki dukungan asli untuk unicode jika unicode akan menjadi pengkodean default, seperti di C # atau Java.
sumber
mb_string
fungsionalitas dalam sumber PHP itu akan menjadi asli?s = "Müsliriegel"mb;
bukannya sesuatu sepertis = toMb("Müsliriegel");
(ini, tentu saja, sepele dipenuhi oleh semua bahasa yang menggunakan UTF8 sebagai penyandian default)"Bahasa X mendukung fitur Y" berarti Anda dapat menggunakan fitur Y tanpa ekstensi apa pun atau upaya lain untuk membuatnya berfungsi. Secara langsung dapat digunakan dari bahasa itu sendiri.
Misalnya Anda bisa mengatakan itu,
"Bahasa C ++ secara alami mendukung overloading operator."
"Bahasa Jawa secara alami mendukung pengumpulan sampah otomatis", karena Anda tidak perlu menggunakan perpustakaan atau alat lain yang melakukan pengumpulan sampah otomatis. Muncul dengan langauge (dan platform) itu sendiri.
sumber
Saya telah membaca yang asli dalam konteks yang Anda sebutkan sebagai bawaan . Jika suatu bahasa tidak menyediakan dukungan asli untuk beberapa fitur, Anda harus mengimplementasikannya sendiri atau menemukan beberapa perpustakaan atau modul yang menyediakannya.
Konteks lain di mana Anda akan melihat asli banyak yang sehubungan dengan aplikasi pada beberapa platform yang atau lainnya. Dalam kasus-kasus itu, itu berarti dikompilasi untuk platform yang bertentangan dengan entah bagaimana ditafsirkan atau diterjemahkan. Sebuah aplikasi asli iOS adalah salah satu yang ditulis dalam bahasa seperti Objective-C dan dikompilasi ke kode yang berjalan langsung pada keluarga prosesor ARM (yang adalah apa yang Anda temukan di perangkat iOS).
sumber
Saya menganggap itu sebagai penyalahgunaan istilah. Untuk sesuatu yang menjadi "asli" dari suatu bahasa perlu dibangun fasilitas untuk itu. Dukungan asli untuk sesuatu seperti unicode akan memiliki tipe mentah dalam bahasa yang mengimplementasikan unicode dalam beberapa cara. Biasanya meskipun ini bukan bagian dari bahasa tetapi bagian dari perpustakaan.
IMHO memanggil sesuatu yang muncul di perpustakaan default bahasa atau tidak tidak membuat sesuatu yang asli atau tidak.
Beberapa contoh:
C ++ memiliki dukungan asli untuk kelas. C tidak. Tidak ada kata kunci bahasa atau jenis fasilitas yang memungkinkan penulisan dan penggunaan kelas, Anda harus kode mereka dengan tangan.
Saya akan mengatakan bahwa C ++ tidak lebih memiliki tipe string asli daripada C. Ada template basic_string di pustaka standar, tetapi ini bukan fasilitas bahasa.
C ++ 11 tampaknya akan benar-benar telah menambahkan dukungan Unicode karena kata kunci baru dan jenis mentah ditambahkan ke bahasa itu sendiri untuk memudahkan bekerja dengan nilai-nilai Unicode.
Harapan yang menjelaskan perbedaan yang saya lihat.
sumber
bytes
jenis yang terpisah ), jadi saya pikir adil untuk mengatakan Python mendukung unicode secara asli.unicode
tipe, meskipun lebih menyakitkan untuk digunakan daripada Python 3. C ++ adalah binatang aneh karena begitu banyak dari apa yang biasanya merupakan bagian dari bahasa di perpustakaan.char[]
), dan bahkan string literal. Tidak semua "tipe mentah" perlu memiliki literal yang cocok, pointer di C misalnya tidak. (NULL
hanya dapat dikonversi keint*
)"Dukungan asli" setidaknya dalam bahasa yang ditafsirkan atau dikompilasi JIT biasanya berarti kode yang pada dasarnya hanya tautan ke fungsionalitas yang dikompilasi yang berada di bawah juru bahasa.
Dalam JavaScript, misalnya, jika Anda mengingatkan window.open di Firefox, Anda mungkin akan melihat fungsi yang jeroan mengatakan sesuatu seperti "[kode asli]." Sementara semua referensi dimasukkan ke penerjemah dan langkah-langkah perlu diambil untuk membangun konteks dan ruang lingkup, jeroan pada dasarnya di-cache dan siap untuk pergi. window.open misalnya, mungkin memanggil sesuatu dari lingkungan run-time browser.
Ini berbeda dari objek dan metode non-pribumi yang Anda atau orang lain tulis, karena dalam kasus-kasus itu semua pernyataan Anda perlu ditafsirkan / dievaluasi.
Jika seseorang menggunakan istilah yang merujuk pada bahasa yang melakukan pra-kompilasi, saya akan berasumsi mereka hanya bermaksud semua hal-hal inti bahasa bahwa kompilator sebenarnya tokenizes dan dikonversi ke kode mesin vs hal-hal yang Anda tentukan sendiri yang lebih tentang struktur dan referensi yang digunakan untuk menghubungkan semuanya.
sumber