Di belakang, apakah mendasarkan XAML pada XML kesalahan atau pendekatan yang baik?

16

XAML pada dasarnya adalah subset dari XML. Salah satu manfaat utama mendasarkan XAML pada XML dikatakan bahwa ia dapat diurai dengan alat yang ada. Dan itu bisa, sebagian besar, meskipun nilai atribut (secara sintaksis non-sepele) akan tetap dalam bentuk teks dan membutuhkan penguraian lebih lanjut.

Ada dua alternatif utama untuk menggambarkan GUI dalam bahasa yang diturunkan XML. Salah satunya adalah melakukan apa yang WinForms lakukan, dan menggambarkannya dalam kode nyata. Ada banyak masalah dengan ini, meskipun tidak sepenuhnya bebas keuntungan ( pertanyaan untuk membandingkan XAML dengan pendekatan ini ). Alternatif utama lainnya adalah merancang sintaks yang benar - benar baru yang secara khusus dirancang untuk tugas yang dihadapi. Ini umumnya dikenal sebagai bahasa khusus domain .

Jadi, jika dipikir-pikir, dan sebagai pelajaran bagi generasi mendatang, apakah ide yang baik untuk mendasarkan XAML pada XML, atau akankah lebih baik sebagai bahasa khusus domain yang dirancang khusus? Jika kami merancang kerangka UI yang lebih baik, haruskah kita memilih XML atau DSL khusus?

Karena itu jauh lebih mudah untuk berpikir positif tentang status quo, terutama yang cukup disukai oleh masyarakat, saya akan memberikan beberapa contoh alasan mengapa membangun di atas XML mungkin dianggap kesalahan.

Mendasarkan sebuah bahasa dari XML memiliki satu hal untuk itu: jauh lebih mudah untuk mengurai (parser inti sudah tersedia), membutuhkan jauh lebih banyak pekerjaan desain, dan pengurai alternatif juga jauh lebih mudah untuk menulis untuk pengembang pihak ke-3.

Tetapi bahasa yang dihasilkan bisa tidak memuaskan dalam berbagai cara. Itu agak bertele-tele. Jika Anda mengubah jenis sesuatu, Anda perlu mengubahnya di tag penutup. Ini memiliki dukungan yang sangat buruk untuk komentar; tidak mungkin untuk berkomentar atribut. Ada batasan yang ditempatkan pada konten atribut oleh XML. Ekstensi markup harus dibangun "di atas" sintaks XML, tidak terintegrasi secara mendalam dan baik ke dalamnya. Dan, favorit pribadi saya, jika Anda menetapkan sesuatu melalui atribut, Anda menggunakan sintaks yang sama sekali berbeda daripada jika Anda menetapkan hal yang sama persis dengan properti konten.

Dikatakan juga bahwa karena semua orang tahu XML, XAML membutuhkan lebih sedikit pembelajaran. Sebenarnya ini adalah benar, tetapi mempelajari sintaksis adalah sebagian kecil dari waktu yang dihabiskan untuk belajar kerangka UI baru; konsep kerangka kerja itulah yang membuat kurva curam. Selain itu, kekhasan bahasa berbasis XML sebenarnya bisa menambah keranjang "kebutuhan belajar".

Apakah kerugian ini kalah berat karena kemudahan penguraian? Haruskah kerangka kerja keren berikutnya melanjutkan tradisi, atau menginvestasikan waktu untuk merancang DSL yang mengagumkan yang tidak dapat diuraikan oleh alat yang ada dan sintaks siapa yang perlu dipelajari oleh semua orang?

PS Tidak semua orang bingung XAML dan WPF , tetapi beberapa melakukannya. XAML adalah hal yang mirip XML. WPF adalah kerangka kerja dengan dukungan untuk binding, theming, akselerasi perangkat keras dan banyak hal keren lainnya.

Roman Starkov
sumber
3
Ya, itu dapat diuraikan oleh parser XML, tetapi tidak bermakna / sepenuhnya. Misalnya, menggunakan atribut string untuk menentukan sumber data dan pemetaan properti.
Konrad Rudolph
5
Apa yang Anda usulkan sebagai alternatif? Setiap diskusi tentang kesesuaian teknologi tertentu harus membahas teknologi pengganti yang sesuai.
Robert Harvey
2
XAML bukan tanpa rekan, Anda tahu. XUL, Glade dan QML semuanya didasarkan pada ide yang sama. Saya pikir Anda memilih XAML dengan tidak adil.
user16764
3
Saya pikir bahwa manfaat terbesar XAML adalah tidak dapat diuraikan oleh parser XML. Justru XAML mirip dengan XML, dan sebagian besar pengembang sudah tahu cara bekerja dengan XML, dan kurva belajar jauh lebih curam.
Juozas Kontvainis
2
@ JoozasKontvainis Jika dengan "kerja" maksudmu "parsing di alat mereka" maka ya. Jika Anda bermaksud "menulis UI yang dijelaskan olehnya" maka sintaks yang sudah dikenal mungkin terlihat membantu, tetapi secara realistis, Anda masih perlu mempelajari apa yang harus dimasukkan ke dalam atribut (karena itu bukan XML), dan sejauh ini yang paling sulit adalah hal, dalam pengalaman pribadi saya. Mempelajari sintaks baru, terutama jika itu sederhana dan dirancang dengan baik, sepele, menurut saya.
Roman Starkov

Jawaban:

4

Satu-satunya alasan kuat untuk menggunakan XML adalah untuk menetapkan standar data terbuka. XAML adalah bahasa tampilan yang sama yang digunakan di Silverlight dan WPF; vendor mana pun dapat menggunakan standar markup yang sama untuk membuat definisi tampilan untuk platform mereka sendiri, dan itu dapat digunakan kembali di Silverlight atau WPF.

Dalam industri dirgantara, kami memiliki ruang kontrol yang, berkat kemajuan teknologi komputer, sekarang cukup fleksibel. Di masa lalu, semua perangkat keras itu khusus, unik, dan sangat mahal; hari ini semuanya dijalankan dengan PC yang murah, tersedia secara umum, dan tidak tersedia. Ini sangat mengurangi kunci vendor. Namun, widget display masih ditulis menggunakan ActiveX, karena itulah yang selalu dilakukan.

ActiveX memerlukan akses ke alat Microsoft yang, sudah usang. Jadi Angkatan Udara dan Grup Instrumentasi Antar-Jajaran datang dengan Bahasa Tampilan Data Markup, yang berbasis XML. Ini akan memungkinkan para praktisi untuk merancang tampilan menggunakan markup XML, di editor pilihan mereka. Terdengar akrab?

Tidak ada yang berpendapat bahwa XML bukan tanpa kesalahannya. Tetapi itu adalah hal terbaik yang tersedia untuk apa yang dirancang untuk dilakukan, sampai sesuatu yang lebih baik datang.

Lihat Juga
Mengapa XML Tidak Mengisap

Robert Harvey
sumber
3
Apakah Anda setuju bahwa alasan yang sama berlaku juga untuk hal-hal seperti, katakanlah, deskripsi tata bahasa YACC, TeX, regexes, Verilog dan bahkan mungkin LISP? Kami datang dengan sintaks khusus untuk masing-masing. Mereka akan mendapat manfaat dengan cara yang sama seperti Anda membuat daftar di paragraf pertama. Maka tidakkah berarti menggunakan XML untuk mereka akan menjadi hal yang benar, karena XML memenuhi tujuan yang Anda sebutkan?
Roman Starkov
Hanya XML yang secara luas diakui sebagai meta-standar data universal, yang darinya Anda dapat membuat sebanyak mungkin standar data individual. Untuk menghindari berlumpurnya perairan, saya telah menghapus paragraf pertama.
Robert Harvey
Ekspresi S tidak pernah dianggap sebagai standar metadata, mungkin karena tidak ada yang menyukai semua kurung konyol itu. Ubiquity adalah faktor pemikat di sini; semua sintaks alternatif yang Anda sebutkan dapat direpresentasikan dalam XML, jika Anda cenderung.
Robert Harvey
2
Semuanya dapat diwakili dalam YAML dan JSON juga (dan sebaliknya).
Timwi
2
Satu masalah besar yang saya lihat di seluruh argumen ini adalah bahwa XAML tidak benar-benar data. Tentu, itu bisa diperlakukan hanya sebagai grafik objek, tetapi pemikiran seperti ini mungkin mengapa banyak orang tidak menyukainya dan mengapa ia memiliki kurva belajar yang demikian. "Hei, mari kita buat objek grafik, eh, maksud saya antarmuka pengguna". Saya tidak tahu bagaimana itu bisa dibuat lebih baik, tetapi saya yakin bisa.
Earlz
2

Keberatan Anda terhadap XML tidak ada hubungannya dengan menggunakannya sebagai bahasa deskripsi GUI; mereka semua keluhan tentang bekerja dengan sintaks XML yang berlaku sama untuk segala bentuk XML.

Jadi sepertinya Anda tidak suka XML.

Anda benar, ini mungkin bukan pilihan optimal untuk mengedit dengan tangan, tetapi untuk bahasa deskripsi GUI saya akan membuat beberapa argumen balasan:

  1. (IMHO,) GUI grafis dan harus ditata secara grafis. Format file tidak terlalu penting, karena Anda tidak boleh mengeditnya dengan tangan. (Berbasis teks bagus untuk kontrol sumber, tetapi verbositas tidak menjadi masalah.)

  2. Selain parser yang tersedia, XML juga mudah divalidasi: Anda dapat menulis Skema DTD atau XML dan kemudian menggunakan alat generik untuk memberi tahu Anda apakah file Anda legal. Ini akan sangat berguna untuk bahasa deskripsi GUI. Melakukan hal yang sama di JSON atau YAML tidak semudah itu.

  3. Jika Anda benar-benar tidak senang menulis XAML secara langsung, tidak ada yang mencegah Anda mengembangkan format baru dan kemudian mengompilasinya menjadi XAML. Misalnya, Anda bisa membuat pemetaan langsung dari JSON ke XAML, sehingga Anda dapat memiliki sintaks JSON yang lebih ringan (dan kemampuan untuk mengomentari atribut), dan kemudian menghasilkan XAML saat Anda membangun aplikasi. Orang jarang menulis HTML secara langsung lagi, tetapi HTML masih merupakan format yang hebat.

benzado
sumber
1
Saya suka XML; Saya hanya tidak suka menulis dengan tangan. 1. Ya, memang seharusnya begitu, tetapi sayangnya kenyataannya adalah Visual Studio tidak bisa melakukan itu. 3. Ini adalah ortogonal untuk diskusi apakah XAML adalah, di belakang, ide yang buruk. Ya, kita bisa, tetapi mengapa kita perlu jika XAML bukan pilihan yang buruk?
Roman Starkov
1
Maksud saya adalah bahwa Anda menghakimi sepenuhnya terhadap kriteria penulisan itu; keprihatinan Anda harus seimbang terhadap validasi dan menafsirkannya juga. DSL yang lebih baik untuk ditulis hampir pasti akan lebih sulit untuk diuraikan. Tapi langkah kompilasi menengah bisa memberikan yang terbaik dari kedua dunia.
benzado
0

Pertanyaan ini subyektif, jadi saya pikir adil untuk mengirim jawaban yang didasarkan pada preferensi pribadi saya.

XML sulit dibaca. Misalnya, buka tautan ini dan klik "Contoh" untuk membandingkan XML dan YAML berdampingan. Yang terakhir ini jelas jauh lebih dapat dibaca manusia.

Jika Anda ingin menggunakan XML untuk menggambarkan GUI, maka sebaiknya Anda yakin bahwa Anda menyediakan alat yang cukup sehingga manusia tidak perlu melihat XML.

Jelas XPF telah gagal dalam hal itu.

John Henckel
sumber