Lập trình meta

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 | sửa mã nguồn]

Tham khảo

[sửa | sửa mã nguồn]

Liên kết ngoài

[sửa | sửa mã nguồn]
Chúng tôi bán
Bài viết liên quan
Nhân vật Shigeo Kageyama - Mob Psycho 100
Nhân vật Shigeo Kageyama - Mob Psycho 100
Shigeo Kageyama (影山茂夫) có biệt danh là Mob (モブ) là nhân vật chính của series Mob Psycho 100. Cậu là người sở hữu siêu năng lực tâm linh, đệ tử của thầy trừ tà Arataka Reigen
KLAUS (2019) - Khi phim hoạt hình không chỉ dành cho trẻ em
KLAUS (2019) - Khi phim hoạt hình không chỉ dành cho trẻ em
Ngay từ đầu mục đích của Jesper chỉ là lợi dụng việc những đứa trẻ luôn thích đồ chơi, dụ dỗ chúng viết thư cho ông già Noel còn mình thì nhanh chóng đạt được mục tiêu bố đề ra và trở lại cuộc sống vô lo vô nghĩ ngày nào
Cùng chiêm ngưỡng vẻ đẹp của “Sao Băng” Uraume
Cùng chiêm ngưỡng vẻ đẹp của “Sao Băng” Uraume
Là người thân cận nhất với Ryomen Sukuna đến từ một nghìn năm trước. Mặc dù vẫn có khoảng cách nhất định giữa chủ - tớ, ta có thể thấy trong nhiều cảnh truyện tương tác giữa hai người
Ethereum, Cosmos, Polkadot và Solana, hệ sinh thái nhà phát triển của ai là hoạt động tích cực nhất?
Ethereum, Cosmos, Polkadot và Solana, hệ sinh thái nhà phát triển của ai là hoạt động tích cực nhất?
Làm thế nào các nền tảng công nghệ có thể đạt được và tăng giá trị của nó trong dài hạn?