成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

編程基礎(chǔ)之什么是元編程

開發(fā) 開發(fā)工具
元編程是指某類[計(jì)算機(jī)程序]的編寫,這類計(jì)算機(jī)程序編寫或者操縱其他程序(或者自身)作為它們的數(shù)據(jù),或者在[運(yùn)行時]完成部分本應(yīng)在[編譯時]完成的工作。來看本文。

大家知道元編程么?元編程到底什么呢?下面為你介紹元編程。

元編程是用來產(chǎn)生代碼的程序,操縱代碼的程序,在運(yùn)行時創(chuàng)建和修改代碼而非編程時,這種程序叫做元程序。而編寫這種程序就叫做元編程。比如編譯原理中用來生成詞法分析器和語法分析器的lex和yacc。

元編程技術(shù)在多種編程語言中都可以使用,但更多的還是被應(yīng)用于動態(tài)語言中,因?yàn)閯討B(tài)語言提供了更多的在運(yùn)行時將代碼視為數(shù)據(jù)進(jìn)行操縱的能力。雖然像C#和Java這樣較為靜態(tài)的語言也提供了反射機(jī)制,但是仍然沒有諸如Ruby這樣的更趨動態(tài)性的語言那么透明,這是因?yàn)殪o態(tài)語言在運(yùn)行時其代碼和數(shù)據(jù)是分布在兩個層次上的。

元編程是指某類[計(jì)算機(jī)程序]的編寫,這類計(jì)算機(jī)程序編寫或者操縱其他程序(或者自身)作為它們的數(shù)據(jù),或者在[運(yùn)行時]完成部分本應(yīng)在[編譯時]完成的工作。很多情況下比手工編寫全部代碼相比工作效率更高。編寫元程序的語言稱之為元語言,被操作的語言稱之為目標(biāo)語言。一門語言同時也是自身的元語言的能力稱之為反射。

反射是促進(jìn)元編程的一種很有價(jià)值的語言特性。把編程語言自身作為頭等對象(如Lisp或Rebol)也很有用。支持泛型編程的語言也使用元編程能力。

元編程通常有兩種方式起作用。一種方式是通過應(yīng)用程序接口(API)來暴露運(yùn)行時引擎的內(nèi)部信息。另一種方法是動態(tài)執(zhí)行包含編程命令的字符串。因此,“程序能編寫程序”。雖然兩種方法都能用,但大多數(shù)方法主要靠其中一種。

使用示例一個簡單元編程的例子是使用bash腳本的產(chǎn)生式編程示例:

 

  1. #!/bin/bash  
  2. # metaprogram  
  3. echo '#!/bin/bash' >program  
  4. for ((I=1; I<=992; I++)) do 
  5. echo "echo $I" >>program  
  6. done  
  7. chmod +x program 

 

這個腳本(或程序)生成了一個新的993行程序來打印1至992。這只是演示用代碼來寫更多代碼,并不是打印數(shù)字的最有效方法。然而,一個程序員可以幾分鐘內(nèi)編寫和執(zhí)行元程序,卻生成了近1000行代碼。

不是所有的元編程都用產(chǎn)生式編程。如果程序可以在運(yùn)行時改變(如Lisp、Python、REBOL、Smalltalk、Ruby、PHP、Perl, Tcl、Lua、Groovy和JavaScript),這種技術(shù)可以不實(shí)際生成源代碼就使用元編程。

最常用的元編程工具是編譯器,把高級語言轉(zhuǎn)換為匯編語言或機(jī)器語言。更靈活的方法是在程序中嵌入解釋器直接處理程序數(shù)據(jù)。有一些實(shí)現(xiàn)例如為Object Pascal編寫的RemObject's Pascal Script。

另一個很常用的元編程例子是lex和yacc,用來生成詞法分析器和語法分析器。Yacc通常用作編譯器的編譯器,生成一個把高級語言轉(zhuǎn)換為機(jī)器語言的工具。

quine是一種源代碼等于輸出的特殊的元程序。

面向語言的程序設(shè)計(jì)是一種強(qiáng)烈關(guān)注元編程的編程風(fēng)格,通過領(lǐng)域特定語言來實(shí)現(xiàn)。

希望通過本文的對于元編程的介紹,能給你帶來幫助。

【編輯推薦】

  1. 基于Ruby的元編程技術(shù)
  2. 用Ajax、元編程和Ruby on Rails框架進(jìn)行企業(yè)級搭建
  3. 8.4.1 元編程的思想
  4. 8.4.2 元編程的應(yīng)用
責(zé)任編輯:于鐵 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2009-07-20 15:42:59

JDBC是什么

2011-11-11 15:47:22

JavaScript

2020-07-23 17:29:47

接口編程代碼

2011-08-04 10:18:45

數(shù)據(jù)驅(qū)動編程

2021-02-26 13:08:27

Java高并發(fā)AQS

2011-07-05 14:42:46

java

2021-09-15 09:12:56

Python元編程元數(shù)據(jù)

2024-07-30 14:46:55

2021-01-26 13:45:03

網(wǎng)絡(luò)安全Winsock編程

2024-01-10 09:26:52

Rust所有權(quán)編程

2010-06-04 09:11:10

.NET并行編程

2011-06-13 10:41:17

JAVA

2011-07-14 15:05:54

PHP

2011-08-18 10:02:47

iPhone SDKOpenFlow

2011-08-18 09:52:13

iPhone SDKUIPageContr

2011-09-27 13:52:41

2024-11-08 09:48:38

異步編程I/O密集

2023-11-02 18:45:00

Rust編程表達(dá)式

2025-02-03 00:40:00

線程組Java并發(fā)編程

2014-09-17 11:45:20

iOS編程App運(yùn)作
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 免费一区 | 偷拍自拍在线观看 | 岛国毛片在线观看 | 日韩精品视频在线观看一区二区三区 | 久久久精品久 | 成人午夜黄色 | 一区二区三区亚洲 | 国产在线精品一区二区 | 久久久女| 欧美日韩三级 | 国产黄色在线观看 | 欧美激情网站 | 日韩小视频 | 亚洲永久 | 九九热这里只有精品6 | 天堂在线中文字幕 | 精品一区av| 黄色大片网| 亚洲黄色高清视频 | 精品视频久久久久久 | 久久99国产精一区二区三区 | 亚洲乱码一区二区三区在线观看 | 午夜免费影视 | 91极品视频| 免费成人高清在线视频 | 亚洲一区二区三区在线播放 | 欧美在线a | 日韩中文字幕免费在线 | 国产一区三区视频 | 欧美性生活一区二区三区 | 一区二区在线免费播放 | 欧美日韩一区二区三区视频 | 国产精品波多野结衣 | 欧美一级欧美三级在线观看 | 91久久综合| 国产欧美一区二区三区在线看 | 九九视频在线观看视频6 | 中国三级黄色录像 | 毛片免费视频 | 亚洲一区二区在线 | av在线视 |