宏

計算機術語
宏(英語:Macro),計算機術語,是一種批量處理的稱謂。計算機科學裡的宏是一種抽象(Abstraction),它根據一系列預定義的規則替換一定的文本模式。解釋器或編譯器在遇到宏時會自動進行這一模式替換。對于編譯語言,宏展開在編譯時發生,進行宏展開的工具常被稱為宏展開器。宏這一術語也常常被用于許多類似的環境中,它們是源自宏展開的概念,這包括鍵盤宏和宏語言。絕大多數情況下,“宏”這個詞的使用暗示着将小命令或動作轉化為一系列指令。[1]
  • 中文名:宏
  • 外文名:Macro
  • 用途:自動化頻繁使用的序列
  • 性質:批量批處理的稱謂

宏的定義

所謂宏,就是一些命令組織在一起,作為一個單獨命令完成一個特定任務。Microsoft Word中對宏定義為:“宏就是能組織到一起作為一獨立的命令使用的一系列word命令,它能使日常工作變得更容易”。Word使用宏語言Visual Basic将宏作為一系列指令來編寫。

計算機科學裡的宏是一種抽象的,根據一系列預定義的規則替換一定的文本模式。Excel辦公軟件自動集成了“VBA”高級程序語言,用此語言編制出的程序就叫“宏”。使用“VBA”需要有一定的編程基礎,并且還會耗費大量的時間,因此,絕大多數的使用者僅使用了Excel的一般制表功能,很少使用到“VBA”。

解釋器或編譯器在遇到宏時會自動進行這一模式替換。對于編譯語言,宏展開在編譯時發生,進行宏展的工具常被稱為宏展開器。

宏的用途在于自動化頻繁使用的序列或者是獲得一種更強大的抽象能力--但這常常是一回事。

計算機語言如C或彙編語言有簡單的宏系統,由編譯器或彙編器的預處理器實現。C的宏預處理器的工作隻是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C 程序員可以獲得更精巧的宏。

宏[計算機術語]

Lisp類語言如Common Lisp和Scheme有更精巧的宏系統: 宏的行為如同是函數對自身程序文本的變形,并且可以應用全部語言來表達這種變形。一個C宏可以定義一段語法的替換,然而一個Lisp的宏卻可以控制一節代碼的計算。獲得了控制代碼的執行順序(見惰性計算和非限制函數)的能力,使得新創建的語法結構與語言内建的語法結構不可區分。例如,一種Lisp 方言有 cond 而沒有if ,就可以使用宏由前者定義後者。Lisp 語法的去部主要擴展,比如面向對象的CLOS 系統,可以由宏來定義。[1]

典型應用

加速日常編輯和格式設置 組合多個命令 使對話框中的選項更易于訪問 使一系列複雜的任務自動執行

應用程序也可以使用一種和宏類似機理的系統來允許用戶将一系列(一般是最常使用到的操作)自定義為一個步驟。也就是用戶執行一系列操作,并且讓應用程序來“記住”這些操作以及順序。更高級的用戶可以通過内建的宏編程來直接使用那些應用程序的功能。當使用一種不熟悉的宏語言來編程時,比較有效的方法就是記錄用戶希望得到的一連串操作,然後通過閱讀應用程序記錄下來的宏文件來理解宏命令的結構組成。

編程術語

在用一種不熟悉的宏語言進行宏編程時,可以這樣做,首先記錄下用戶想要宏完成什麼,然後打開宏文件并嘗試理解命令結構如何工作。也可以修改命令以調整宏。一些宏語言,比如Great Plains賬務(?accounting)軟件的 Dexterity 運行時引擎,不能從其它數據源(如由逗号分隔的文本文件)導入數據。這一限制可以通過用更強大的編程語言,如 VBA 來創建一個計算機程序在此弱編程語言裡生成一個特别的宏來解決。例如,可以對 Microsoft Excel 宏編程從擴展樣式表或文本文件中讀取數據并創建 Great Plains .mac 文件,這一文件被用于将特定的數據導入 Great Plains. 需要針對每一個新的數據集合生成新的 .mac 文件。

鍵盤宏

鍵盤宏和編輯器宏分别在圖形用戶界面和編輯器中被交互式地使用。使用它們可以用簡短的擊鍵代替冗長的命令序列,并為重複性任務提供了一個簡單的自動化形式。

程序員的文本編輯器 Emacs (“編輯宏”[Editing MACroS]的簡稱)是沿用這一思想的産物。事實上,大多數編輯器是由宏組成的,Emacs 最初被設計為編輯語言 TECO 的宏集,後被移植為 Lisp 的一種方言 Emacs Lisp。

宏語言

宏語言是一類編程語言,其全部或多數計算是由擴展宏完成的。宏語言并未在通用編程中廣泛使用,但在文本處理程序中應用普遍。例如, C preprocessor C預處理器Internet Macros(iOpus) M4(如前所述,源于AT&T,捆綁于Unix)

宏定義

c程序提供的預處理功能之一。包括帶參數的宏定義和不帶參數的宏定義。具體是指用一個指定的标志符來進行簡單的字符串替換或者進行闡述替換。形式為:

#define标志符[(參數表)] 字符串

宏名

在上定義中的标志符被稱為“宏名”。

宏展開

在c程序編譯時将宏名替換成字符串的過程稱為“宏展開”。

例如:

C preprocessorC 預處理器

Internet Macros(iOpus)

M4(如前所述,源于AT&T,捆綁于Unix)

微軟Word和宏病毒

Visual Basic for Applications (VBA),是 Microsoft Office 裡的一種編程語言. 但由上面的定義,它完全不是一種宏語言。然而,它的功能已經從中發展并最終替代了用戶應用程序的宏思想,所以它被廣泛地錯誤地稱為是一種宏語言。

VBA 可以訪問許多操作系統函數并支持文檔打開時自動執行宏。這使得用這種語言寫計算機病毒成為可能。1990年代中後期,宏病毒成為了最流行的計算機病毒類型之一。其它的包括宏語言的項目,如openoffice.org,故意從其宏語言中排除了一些功能(如:自動執行)以避免破壞程序。然而,這一特性在很多事務中受到歡迎。

遊戲術語

例如在《魔獸世界》這款遊戲中,由于遊戲的多樣性,使得遊戲中虛構的13個種族12大職業以及各種表情動作都十分繁雜,由此以來進行複雜的操作将是十分困難的事情,例如同時激活2種以上的法術,施法的同時用遊戲中的聊天系統發送信息等。這時候宏命令就顯得非常重要了,wow中的宏命令自遊戲運營到現在已經發展出了很多類型的宏命令,小到輸入指令就能用一個按鍵喊話,大到各種技能和狀态下的配合運用。

魔獸世界中的宏命令已經成為玩家們日常遊戲中不可缺少的一項既有趣又能簡化操作的一項重要技術

參考資料

[1] 方文英 . EXCEL宏編程的應用 : 綜合月刊 ,2008 . 44-46 .

相關詞條

相關搜索

其它詞條