| Mẫu hình lập trình |
| --- |
| * Action language
* Hướng tác tử
* Hướng mảng
* Automata-based programming
* Concurrent computing
	+ Relativistic programming
* Data-driven programming
* Khai báo (ngược với: Mệnh lệnh)
	+ Hàm
		- Logic hàm
		- Purely functional
	+ Logic
		- Abductive logic
		- Answer set
		- Concurrent logic
		- Logic hàm
		- Inductive logic
	+ Ràng buộc
		- Constraint logic
			* Concurrent constraint logic
	+ Dataflow
		- Flow-based
		- Phản ứng
* Dynamic/scripting
* Hướng sự kiện
* Function-level (ngược với: Value-level)
	+ Point-free style
		- Concatenative
* Tổng quát
* Mệnh lệnh (ngược với: Khai báo)
	+ Thủ tục
	+ Hướng đối tượng
* Literate
* Language-oriented
	+ Natural-language programming
	+ Discipline-specific
	+ Ngôn ngữ miền chuyên biệt
	+ Grammar-oriented
	+ Intentional
* Lập trình meta
	+ Automatic
		- Inductive programming
	+ Reflective
		- Attribute-oriented
	+ Macro
	+ Template
* Non-structured (ngược với: Cấu trúc)
	+ Array
* Nondeterministic
* Tính toán song song
	+ Process-oriented
* Probabilistic
* Stack-based
* Structured (ngược với: Non-structured)
	+ Block-structured
	+ Hướng đối tượng
		- Actor-based
		- Dựa trên lớp
		- Đồng thời
		- Dựa trên nguyên mẫu
		- By separation of concerns:
			* Hướng khía cạnh
			* Role-oriented
			* Subject-oriented
	+ Đệ quy
* Ký hiệu
* Value-level (ngược với: Function-level)
* Lập trình lượng tử
 |
| * x
* t
* s
 |

 Trình chỉnh sửa macro của jEdit 
**Macro** (viết tắt của "**macroinstruction**", từ tiếng Hy Lạp μακρός 'dài') trong khoa học máy tính là một quy tắc hoặc mẫu xác định cách thức một chuỗi đầu vào nhất định (thường là một chuỗi ký tự) nên được ánh xạ tới một chuỗi đầu ra thay thế (cũng thường là một chuỗi các ký tự) theo một quy trình được xác định. Quá trình ánh xạ khởi tạo (biến đổi) việc sử dụng macro thành một chuỗi cụ thể được gọi là *mở rộng macro*. Một tiện ích viết macro có thể được cung cấp như một phần của ứng dụng phần mềm hoặc là một phần của ngôn ngữ lập trình. Trong trường hợp trước, macro được sử dụng để thực hiện các tác vụ sử dụng ứng dụng ít lặp lại. Trong trường hợp sau, chúng là một công cụ cho phép lập trình viên cho phép tái sử dụng mã hoặc thậm chí để thiết kế các ngôn ngữ dành riêng cho miền.

Macro được sử dụng để tạo một chuỗi các hướng dẫn tính toán có sẵn cho lập trình viên dưới dạng một câu lệnh chương trình duy nhất, làm cho tác vụ lập trình bớt tẻ nhạt và ít bị lỗi hơn. (Do đó, chúng được gọi là "macro" vì một khối mã "lớn" có thể được mở rộng từ một chuỗi ký tự "nhỏ".) Macro thường cho phép các tham số vị trí hoặc từ khóa chỉ ra những gì chương trình trình biên dịch có điều kiện tạo ra và đã được sử dụng để tạo toàn bộ chương trình hoặc bộ chương trình theo các biến như hệ điều hành, nền tảng máy tính hoặc các yếu tố khác. Thuật ngữ này xuất phát từ "hướng dẫn vĩ mô" và các mở rộng như vậy ban đầu được sử dụng để tạo mã hợp ngữ.

Macro bàn phím và chuột
-----------------------

**Các macro bàn phím** và **macro** **chuột** cho phép các chuỗi phím ngắn và hành động chuột chuyển đổi thành các chuỗi phím và hành động chuột khác, thường tốn nhiều thời gian hơn. Theo cách này, các chuỗi phím được sử dụng thường xuyên hoặc lặp đi lặp lại có thể được tự động hóa. Các chương trình riêng biệt để tạo các macro này được gọi là chương trình ghi macro.

Trong những năm 1980, các chương trình macro   - ban đầu là SmartKey, sau đó là SuperKey, KeyWorks, Prokey   - rất phổ biến, đầu tiên là phương tiện để tự động định dạng các màn hình, sau đó cho nhiều tác vụ đầu vào của người dùng. Các chương trình này dựa trên chế độ hoạt động TSR (chấm dứt và cư trú) và được áp dụng cho tất cả các đầu vào bàn phím, bất kể nó xảy ra trong bối cảnh nào. Ở một mức độ nào đó, chúng đã rơi vào tình trạng lỗi thời sau sự ra đời của giao diện người dùng điều khiển bằng chuột và sự sẵn có của macro bàn phím và chuột trong các ứng dụng như bộ xử lý văn bản và bảng tính, giúp tạo ra các macro bàn phím nhạy với ứng dụng.

Các macro bàn phím trong thời gian gần đây trở nên sống động như một phương pháp khai thác nền kinh tế của các trò chơi nhập vai trực tuyến nhiều người chơi (MMORPG). Bằng cách thực hiện không mệt mỏi một hành động nhàm chán, lặp đi lặp lại, nhưng rủi ro thấp, người chơi chạy macro có thể kiếm được một lượng lớn tiền tệ hoặc tài nguyên của trò chơi. Hiệu ứng này thậm chí còn lớn hơn khi một người chơi sử dụng macro vận hành đồng thời nhiều tài khoản hoặc vận hành các tài khoản trong một khoảng thời gian lớn mỗi ngày. Vì số tiền này được tạo ra mà không có sự can thiệp của con người, nó có thể làm đảo lộn đáng kể nền kinh tế của trò chơi. Vì lý do này, việc sử dụng macro là vi phạm TOS hoặc EULA của hầu hết các MMORPG và quản trị viên của MMORPG chiến đấu liên tục để xác định và trừng phạt những người dùng macro.

Tham khảo
---------

1. ↑  Greenwald, Irwin D.; Maureen Kane (tháng 4 năm 1959). "The Share 709 System: Programming and Modification". *Journal of the ACM*. New York, NY, USA: ACM. **6** (2): 128–133. doi:10.1145/320964.320967. One of the important uses of programmer macros is to save time and clerical-type errors in writing sequence of instructions which are often repeated in the course of a program.
2. ↑  Strachey, Christopher (tháng 10 năm 1965). "A General Purpose Macrogenerator". *Computer Journal*. **8** (3): 225–241. doi:10.1093/comjnl/8.3.225.
3. ↑  "Runescape: The Massive Online Adventure Game by Jagex Ltd". Truy cập ngày 3 tháng 4 năm 2008.