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:

  • Công việc viết một chương trình máy tính mà chương trình này lại điều chỉnh hay soạn thảo một chương trình khác (hay điều chỉnh chính nó) như là dữ liệu của lập trình meta
  • Công việc viết một chương trình máy tính mà một phần của công việc này chỉ hoàn tất trong thời gian dịch mã.

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.

Ứng dụng sửa

Xem thêm sửa

Tham khảo sửa

Liên kết ngoài sửa