Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. |
Mẫu hình lập trình |
---|
|
Lập trình meta hay còn gọi là siêu lập trình là việc tiến hành một trong hai thao tác (hay cả hai) sau:
Trong đa số các trường hợp thì, vận dụng lập trình meta có thể giúp lập trình viên hoàn tất nhiều việc hơn trong cùng một thời gian so với họ làm điều đó bằng tay.
Trong một ý nghĩa riêng biệt, thì đây bao gồm phương pháp tạo ra mã của một ngôn ngữ lập trình một cách tự động thông qua một ngôn ngữ lập trình nào đó.
Một thí dụ đơn giản để minh họa là văn lệnh BASH sau, được dùng trong lập trình tạo mã (generative programming):
#!/bin/bash # metaprogram echo '<HTML>' >metaprogram.htm echo '<head>' >>metaprogram.htm echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' >>metaprogram.htm echo '<meta http-equiv="Content-Language" content="vi">' >>metaprogram.htm echo '<title>My Automatic WEB Page</title>' >>metaprogram.htm echo '</head> ' >>metaprogram.htm echo '<body> ' >>metaprogram.htm echo 'Mã của trang WEB này được tự động tạo ra từ ngôn ngữ BASH' >>metaprogram.htm echo '</body> ' >>metaprogram.htm echo '</html> ' >>metaprogram.htm
Chương trình trên đã dùng ngôn ngữ BASH để viết ra một chương trình khác (dùng ngôn ngữ HTML). Chương trình này được viết trong một tập tin tên là metaprogram.htm
. Khi thực thi thì tập tin metaprogram.htm
sẽ được tạo ra có nội dung là:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Language" content="vi"> </head> <body> Mã của trang WEB này được tự động tạo ra từ ngôn ngữ BASH </body> </html>
Chương trình metaprogram.htm
chỉ đơn giản là một trang mã HTML. Khi thực thi bởi máy truy cập, nó hiển thị dòng chữ Mã của trang WEB này được tự động tạo ra từ ngôn ngữ BASH
. Với phương pháp này, người ta có thể tạo ra hàng loạt trang mã có một số đặc tính chung (về hình thức trình bày hay về một số nội dung chẳng hạn).
Không phải mọi cách lập trình meta đều bao gồm lập trình tạo mã. Nếu các chương trình được điều chỉnh trong thời gian thực thi (như là Lisp, Smalltalk, Ruby, và v.v...) thì các kỹ thuật này có thể được dùng để tiến hành lập trình meta mà không cần tạo ra mã nguồn.