Tôi đã xem wikipedia - Thể loại: Ngôn ngữ lập trình dựa trên XML .
Tại sao ai đó sẽ sử dụng phương pháp này để thiết kế một ngôn ngữ?
Những lợi thế của nó là gì?
Tôi chỉ có thể nghĩ về những bất lợi.
- khó duy trì
- khó để đọc
- khó viết
Tôi đã xem wikipedia - Thể loại: Ngôn ngữ lập trình dựa trên XML .
Tại sao ai đó sẽ sử dụng phương pháp này để thiết kế một ngôn ngữ?
Những lợi thế của nó là gì?
Tôi chỉ có thể nghĩ về những bất lợi.
Câu trả lời:
một trong những lợi thế lớn nhất của ngôn ngữ dựa trên XML là nó có vẻ dễ thực hiện
thực sự không có, có rất nhiều trình phân tích cú pháp xác thực có sẵn để chẩn đoán các lỗi biên dịch liên quan đến cú pháp và cung cấp cho bạn AST miễn phí
việc thực thi cũng chỉ đơn giản là lặp đi lặp lại qua AST đã nói và giữ một bản đồ về các hàm và biến
Hay đúng hơn, các chương trình là dữ liệu. Một tập tin nguồn chỉ là một tuần tự cụ thể của chương trình này. Ý tưởng này là ví dụ phổ biến trong các ngôn ngữ đồng âm như Lisp. Một ngôn ngữ như vậy phá bỏ các rào cản giữa mã chương trình và dữ liệu mà nó đang hoạt động. Điều này có thể cực kỳ mạnh mẽ và biểu cảm, mặc dù tôi sẽ không gọi sự xuất hiện của mã Lisp là Đẹp đẹp hay hay dễ đọc.
XML là các cấu trúc định dạng dữ liệu tuần tự để các lập trình viên doanh nghiệp hiện nay ngày. Có các bộ công cụ lớn được thiết lập xung quanh xử lý XML.
Điều thú vị là, các tài liệu XML đôi khi được sử dụng để tạo mã khuôn mẫu * shudder * (nội xạ phụ thuộc). Tôi gán điều này cho tính phổ biến của XML trong một số bộ công cụ / XML mindshare có định dạng dữ liệu có cấu trúc.
rwx
tập lệnh mà tôi có, đó là dữ liệu cho trình soạn thảo của tôi, nhưng mã thực thi cho trình bao của tôi.
(eval `(foo (quote ,data)))
. Đối số của bạn về các tham số so với thoát có thể đúng, nhưng bạn đã bỏ lỡ điểm.
Tôi sẽ tập trung vào XSLT thay vì các ngôn ngữ dựa trên XML nói chung.
Có một lịch sử ở đây, tất nhiên. XSLT được hình thành như một sự kế thừa cho DSSSL, ngôn ngữ tạo kiểu cho SGML và đã cố gắng hiểu đúng những gì DSSSL đã sai. Một trong những vấn đề lớn với DSSSL được coi là cú pháp (giống như lược đồ) của nó và có một cảm giác rộng rãi rằng giải pháp nằm trong việc sử dụng cùng một cú pháp cho biểu định kiểu và dữ liệu; xét cho cùng, ý tưởng là một bản định kiểu nên bao gồm phần lớn dữ liệu có cấu trúc chứ không phải logic chương trình và phần lớn dữ liệu đó sẽ bao gồm dữ liệu proforma ("mẫu") để thêm vào cây kết quả, với một số tham số hóa.
XSLT thường được coi là quá dài dòng. Đối với XSLT 1.0, điều mà nhiều người không may vẫn sử dụng, điều đó có thể đúng, nhưng vấn đề đã được giải quyết phần lớn với XSLT 2.0, điều này thường ngắn gọn hơn rất nhiều so với các cách giải quyết vấn đề tương tự khác.
Chắc chắn có nhược điểm. Bạn khá bắt buộc phải sử dụng một trình soạn thảo được thiết kế có mục đích (nhưng sau đó, hầu hết các lập trình viên sử dụng các trình soạn thảo hướng cú pháp cho mọi ngôn ngữ, phải không?). Ngôn ngữ không hoàn toàn có thể ghép được như có thể (mặc dù một lần nữa, XSLT 2.0 phần lớn sửa lỗi đó). Nhưng cũng có những lợi thế đáng kể:
XSLT được sử dụng rộng rãi bởi những người không phải là lập trình viên và đối với họ, đó là một điểm cộng rất lớn khi họ chỉ phải học một cú pháp chứ không phải hai. Hãy nhớ rằng, đó là tất cả các chi tiết nhỏ như cách xử lý mã hóa ký tự và thoát các ký tự đặc biệt.
Khả năng xử lý mã XSLT bằng XSLT hữu ích hơn nhiều so với bạn tưởng tượng. Gần như tất cả các dự án XSLT lớn đều tận dụng khả năng này và nó có thể mang lại lợi ích rất lớn. Ví dụ: tôi thấy một hệ thống ngân hàng trực tuyến có vài trăm biểu mẫu trong giao diện người dùng, mỗi biểu mẫu được tạo bởi biểu định kiểu riêng của nó, nhưng các biểu định kiểu được tạo từ một thư viện mã chung mang lại khả năng sử dụng lại và tính nhất quán của giao diện.
Có một lợi ích mà tôi không thể ngờ tới, đó là việc sử dụng khung cú pháp bị ràng buộc như XML buộc các nhà thiết kế ngôn ngữ phải duy trì mức độ nhất quán từ vựng khi ngôn ngữ phát triển và đồng thời mang lại khả năng mở rộng tuyệt vời. XQuery WG luôn tranh luận về cách mở rộng ngôn ngữ mà không phá vỡ tính tương thích hoặc giới thiệu các quirks; XSLT không có vấn đề như vậy, vì về cơ bản, đây là câu hỏi xác định các yếu tố và thuộc tính mới.
Tôi có thể thấy một cái gì đó giống như tiện dụng trong môi trường nặng XML (nghĩ là XSLT), nơi bạn có lẽ đã có các trình soạn thảo XML phong nha và có thể hữu ích khi có thể tạo mã bằng cùng một bộ công cụ. Nó cũng có thể giúp viết các trình xác minh tính chính xác hoặc các công cụ khác dễ dàng hơn để đảm bảo mã tuân theo các tiêu chuẩn hoặc quy tắc nhất định (ví dụ: lược đồ xác định nơi logic nghiệp vụ phải đi và / hoặc đảm bảo rằng tất cả các biến được khởi tạo theo kiểu nhất quán ).
XSLT là ngôn ngữ lập trình XML duy nhất mà tôi đã sử dụng, tôi chưa có cơ hội / cơ hội để tiếp cận với những ngôn ngữ khác.
chúng tôi có một Ứng dụng chính bắn ra một tệp XML vào Cơ sở dữ liệu và một số Ứng dụng khác có thể lấy tệp đó và áp dụng tệp XSLT cho nó để trích xuất dữ liệu mà các ứng dụng khác cần, điều này làm giảm nhu cầu xuất một bộ mới Dữ liệu cho mỗi ứng dụng mới đi kèm. Tôi nghĩ rằng đó là một điểm cộng lớn. bạn chỉ phải mã một tệp XSLT cho ứng dụng mới để giải mã thông tin đã được tạo chứ không phải tạo thông tin mới cho ứng dụng mới.
Tôi nhận ra rằng tôi đã không đụng đến bất kỳ ngôn ngữ nào khác mà bạn đã liệt kê, nhưng tôi đã cho bạn ý tưởng về một nơi tốt để sử dụng ngôn ngữ đó. vẫn không chắc chắn nếu tôi hoàn toàn trả lời hoặc thậm chí trả lời một phần câu hỏi của bạn. nhưng hy vọng tôi đã đưa ra một số hiểu biết.
XML làm cho hầu như không có ý nghĩa vắng mặt bối cảnh lịch sử và chính trị. SGML thậm chí còn khó hơn để viết, đọc và duy trì, nhưng nó đã được đóng dấu phê duyệt ISO vào năm 1986, điều này có lẽ là ngôn ngữ khai báo dữ liệu đầu tiên có sự thiếu chính xác như vậy.
Nó đủ hữu ích và được ghi lại để truyền cảm hứng cho Tim Berners-Lee sử dụng nó làm nền tảng của HTML vào đầu những năm 1990. Hãy nhớ rằng, anh ta đang có ý định tạo ra một trang web trên toàn thế giới và dựa trên tiêu chuẩn ISO còn tồn tại sẽ giúp ích đáng kể hơn nữa.
Sau đó, vào cuối những năm 1990 với web cố thủ khá tốt, World Wide Web Consortium đã bắt đầu một sáng kiến về đánh dấu cấu trúc tiêu chuẩn để trao đổi dữ liệu. Yếu tố cường điệu xung quanh XML đạt đến mức độ chưa từng thấy "chúng tôi không chắc phải làm gì với điều này, nhưng tôi cá là nó sẽ rất tuyệt".
Như hiện tại, những gì XML chủ yếu là tốt cho việc trao đổi dữ liệu có cấu trúc giữa các hệ thống khác nhau. Như amon đã lưu ý, có một số miền cụ thể nơi nó có tiện ích rộng hơn. Tôi chỉ vui mừng vì giờ đây có thể mã hóa graffiti trong một đánh dấu được tiêu chuẩn hóa để trong tương lai, trẻ em sẽ không phải mạo hiểm cuộc sống và truy tố mà thay vào đó hãy gắn thẻ với máy bay không người lái điều khiển từ xa bằng sơn.