Saya bertanya-tanya mengapa XML memiliki huruf L dalam namanya.
Dengan sendirinya, XML tidak "melakukan" apa pun. Ini hanya format penyimpanan data, bukan bahasa! Bahasa "melakukan" hal-hal.
Cara Anda mendapatkan XML untuk "melakukan" hal-hal, untuk mengubahnya menjadi bahasa yang tepat, adalah dengan menambahkan xmlns
atribut ke elemen rootnya. Baru setelah itu ia memberi tahu lingkungannya tentang lingkungannya.
Salah satu contohnya adalah XHTML. Ini aktif, memiliki tautan, hiperteks, gaya dll, semua dipicu oleh xmlns
. Tanpa itu, file XHTML hanyalah sekelompok data dalam node markup.
Jadi mengapa XML disebut bahasa? Itu tidak menggambarkan apa pun, tidak menafsirkan, hanya saja.
Sunting: Mungkin pertanyaan saya seharusnya lebih luas. Karena jawabannya saat ini "karena XML dinamai SGML, yang dinamai setelah GML, dll" pertanyaannya seharusnya, mengapa bahasa markup (seperti XML) disebut bahasa?
Oh, dan WRT suara dekat: tidak, saya tidak bertanya tentang X. Saya bertanya tentang L!
sumber
Jawaban:
Jawaban sebenarnya adalah XML memiliki huruf L di namanya karena seorang pria bernama Raymond L orie termasuk di antara perancang "bahasa markup" pertama di IBM pada tahun 1970-an. Para pengembang harus menemukan nama untuk bahasa tersebut sehingga mereka memilih GML karena itu adalah inisial dari tiga pengembang (Goldfarb, Mosher dan Lorie). Mereka kemudian menciptakan backronym Generalized Markup Language .
Ini kemudian menjadi standar sebagai SGML ( Standardized General Markup Language ), dan ketika XML dibuat, pengembang ingin mempertahankan ML-postfix untuk menunjukkan hubungan keluarga ke SGML, dan mereka menambahkan X di depan karena mereka pikir itu terlihat keren. (Meskipun itu sebenarnya tidak masuk akal - XML adalah bahasa meta yang memungkinkan Anda untuk mendefinisikan bahasa yang dapat diperluas, tetapi XML tidak benar-benar dapat diperluas sendiri.)
Adapun pertanyaan kedua Anda jika XML dapat secara sah disebut bahasa:
Format teks terstruktur (atau bahkan biner) apa pun yang dapat diproses secara komputasi dapat disebut bahasa. Bahasa tidak "melakukan" apa pun seperti itu, tetapi beberapa perangkat lunak mungkin memproses input dalam bahasa dan "melakukan" sesuatu berdasarkan itu.
Anda perhatikan bahwa XML adalah "format penyimpanan" yang benar, tetapi format penyimpanan tekstual dapat disebut bahasa, istilah ini tidak saling eksklusif.
Bahasa pemrograman adalah bagian dari bahasa. Misalnya HTML dan CSS adalah bahasa tetapi bukan bahasa pemrograman , sedangkan JavaScript adalah bahasa pemrograman nyata. Yang mengatakan, tidak ada definisi formal bahasa pemrograman baik, dan ada zona abu-abu besar bahasa yang bisa disebut format data atau bahasa pemrograman tergantung pada sudut pandang Anda.
Dengan ini, XML jelas merupakan bahasa. hanya bukan bahasa pemrograman - meskipun itu dapat digunakan untuk mendefinisikan bahasa pemrograman seperti XSLT.
Maksud Anda tentang ruang nama tidak relevan. Ruang nama adalah fitur opsional XML dan tidak mengubah semantik kosa kata XML. Hanya diperlukan untuk mendisambiguasikan nama elemen jika formatnya mungkin berisi banyak kosa kata.
Sunting: reinierpost menunjukkan bahwa Anda mungkin memiliki arti berbeda dengan pertanyaan daripada apa yang saya mengerti. Mungkin Anda bermaksud bahwa kosa kata tertentu seperti XHTML, RSS, XSLT dll. Adalah bahasa karena mereka mengaitkan elemen dan atribut dengan semantik tertentu, tetapi standar XML itu sendiri tidak mendefinisikan semantik untuk elemen dan atribut tertentu, sehingga tidak terasa seperti " bahasa asli ".
Jawaban saya ini akan bahwa XML tidak mendefinisikan kedua sintaks dan semantik, itu hanya mendefinisikan pada tingkat yang berbeda. Misalnya, ia mendefinisikan sintaks elemen dan atribut serta aturan tentang cara memprosesnya. XML adalah "metalanguage" yang masih merupakan sejenis bahasa (seperti halnya metadata masih berupa data!). Sebagai contoh, EBNF juga jelas merupakan bahasa, tetapi tujuannya adalah untuk mendefinisikan sintaksis dari bahasa lain, sehingga juga merupakan bahasa logam.
sumber
Karena itu adalah bahasa. Sebuah markup language, bukan bahasa pemrograman.
Perhatikan bahwa bahasa manusia alami seperti Inggris dan Spanyol juga tidak "melakukan" apa pun. Bahkan, secara teknis C ++ dan Java dan sejenisnya tidak "melakukan" apa pun sampai mereka dimasukkan ke dalam kompiler dan hasilnya dieksekusi. Melakukan hal-hal dan menjadi bahasa sebagian besar saling orthogonal.
sumber
</nitpick>
Bagaimanapun, jawaban yang bagus!Biarkan Σ menjadi seperangkat simbol terbatas, yang disebut alfabet . Kemudian Σ * adalah himpunan tak terbatas dari kata-kata terbatas yang dapat dibentuk dengan menyatukan nol atau lebih simbol dari Σ. Setiap subset yang didefinisikan dengan baik L ⊆ Σ * adalah bahasa .
Mari kita terapkan ini pada XML. Alfabetnya adalah set Unicode karakter U , yang tidak kosong dan terbatas. Tidak setiap penggabungan nol atau lebih karakter Unicode adalah dokumen XML yang baik, misalnya string
jelas tidak. Subset XML ⊂ U * yang membentuk dokumen XML yang terbentuk dengan baik dapat dipilih (atau “rekursif”). Ada ada mesin (algoritma atau program komputer) yang mengambil sebagai masukan kata w ∈ U * dan setelah jumlah waktu yang terbatas, output baik 1 jika w ∈ XML dan 0 sebaliknya. Algoritma semacam itu adalah sub-rutin dari setiap perangkat lunak pemrosesan XML. Tidak semua bahasa dapat dipilih. Misalnya, rangkaian program C yang valid yang berakhir dalam jumlah waktu yang terbatas, tidak (ini dikenal sebagai masalah penghentian). Ketika seseorang mendesain bahasa baru, keputusan penting yang harus diambil adalah apakah bahasa itu harus sekuat mungkin atau apakah ekspresifitas akan lebih baik dibatasi demi kesopanan.
Beberapa bahasa dapat didefinisikan dengan menggunakan tata bahasa yang dikatakan menghasilkan bahasa. Tata bahasa terdiri dari
Setiap kata yang secara eksklusif terdiri dari literal dan dapat diturunkan dengan mulai dengan simbol awal dan kemudian menerapkan aturan yang diberikan milik bahasa yang dihasilkan oleh tata bahasa.
Bergantung pada bagaimana aturan rumit yang Anda izinkan dalam tata bahasa Anda, mesin yang berbeda dibutuhkan untuk membuktikan bahwa kata yang diberikan benar-benar dapat dihasilkan oleh tata bahasa. Contoh yang diberikan di atas adalah tata bahasa biasa , yang paling sederhana dan paling tidak kuat. Kelas tata bahasa yang kuat selanjutnya disebut bebas konteks . Tata bahasa ini juga sangat sederhana untuk diverifikasi. XML (kecuali saya mengabaikan beberapa fitur tidak jelas yang tidak saya sadari) dapat dijelaskan oleh tata bahasa bebas konteks. Klasifikasi tata bahasa membentuk Hirarki Tata Bahasa Chomsky (dan karena itu bahasa). Setiap bahasa yang dapat dijelaskan oleh tata bahasa setidaknya semi-decidable(atau "enumerable secara berulang"). Artinya, ada mesin yang, mengingat kata yang sebenarnya milik bahasa tersebut, memperoleh bukti bahwa itu dapat diproduksi oleh tata bahasa dalam waktu yang terbatas, dan tidak akan pernah menghasilkan bukti yang salah. Mesin seperti ini disebut verifier . Perhatikan bahwa mesin mungkin tidak pernah berhenti ketika diberi kata yang sebenarnya bukan milik bahasa tersebut. Jelas, kami ingin bahasa pemrograman kami dideskripsikan oleh tata bahasa yang kurang kuat untuk kepentingan menolak program yang tidak valid dalam waktu yang terbatas.
Schemata adalah tambahan untuk XML yang memungkinkan penyempurnaan set dokumen yang dibentuk dengan baik. Dokumen yang dibentuk dengan baik yang mengikuti skema tertentu disebut sah menurut skema itu. Misalnya, string
adalah dokumen XML yang dibuat dengan baik tetapi bukan dokumen XHTML yang valid. Ada skema untuk XHTML , SVG , XSLT dan apa yang tidak. Validasi skema juga dapat dilakukan dengan algoritma yang dijamin akan berhenti setelah jumlah langkah hingga untuk setiap input. Program semacam itu disebut validator atau parser yang memvalidasi. Skema didefinisikan oleh apa yang disebut bahasa definisi skema , yang merupakan cara untuk secara formal mendefinisikan tata bahasa. XSD adalah bahasa definisi skema resmi untuk XML dan, itu sendiri, berbasis XML. RELAX NG adalah alternatif yang lebih elegan, jauh lebih sederhana dan sedikit kurang kuat untuk XSD.
Karena Anda dapat mendefinisikan skema Anda sendiri, XML disebut sebagai bahasa yang dapat dikembangkan , yang merupakan asal dari "X" dalam "XML".
Anda bisa menetapkan seperangkat aturan yang memberikan interpretasi pada dokumen XML sebagai deskripsi program komputer. XSLT, yang disebutkan sebelumnya, adalah contoh bahasa pemrograman yang dibangun dengan XML. Secara umum, Anda dapat membuat serial pohon sintaksis abstrak dari hampir semua bahasa pemrograman secara alami ke dalam XML, jika ini yang Anda inginkan.
sumber
Dalam ilmu komputer, bahasa formal hanyalah seperangkat string, biasanya tak terbatas dan sering digambarkan menggunakan aturan (dua versi umum dari aturan itu adalah ekspresi reguler dan tata bahasa formal ).
Perhatikan bahwa ini berarti bahwa semua kebutuhan bahasa adalah sintaksis , bahasa tidak perlu menjelaskan apa arti setiap string yang valid (yang disebut semantik ).
Sekarang, ini berarti bahwa bahasa pemrograman adalah bahasa formal yang juga memiliki semantik, yang menjelaskan beberapa perhitungan. Dan misalnya XHTML adalah bahasa formal, yang semantiknya menggambarkan (secara kasar dan informal) bagaimana dokumen hiperteks terlihat dan berperilaku.
XML masih merupakan bahasa, meskipun tidak memiliki semantik itu sendiri (tetapi banyak bahasa yang berasal dari XML, seperti XHTML dan XAML).
Secara teknis, format biner juga bahasa, tetapi tidak disebut demikian. Istilah "bahasa" dicadangkan untuk format yang dapat dibaca manusia.
sumber
Bahasa adalah metode penyampaian informasi.
Bahasa pemrograman adalah metode penyampaian algoritma.
Bahasa markup seperti XML adalah bahasa untuk menyampaikan data.
sumber
XML adalah bahasa meta. Anda menggunakannya untuk menentukan bahasa tertentu. Bahasa tidak pernah melakukan apa-apa, mereka hanya memungkinkan kita untuk mengekspresikan sesuatu. Juga, tidak benar bahwa XML adalah "bahasa penyimpanan". Justru sebaliknya, pada kenyataannya. Anda dapat menyimpan dokumen XML sesuka Anda. XML lebih baik dianggap sebagai bahasa transfer. PS. Jika Anda tidak berpikir XML "melakukan" apa pun, Anda harus menjelaskan bagaimana banyak sistem (mis. Dermaga) menggunakan XML sebagai bahasa pemrograman (buruk). Ini merupakan penyalahgunaan XML yang disesalkan, tetapi ada di alam bebas, dan itu hanya satu dari banyak contoh.
sumber