`
cloudtech
  • 浏览: 4577739 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

元编程的思想是一种新的编程细想吗

 
阅读更多

元编程的思想

当我读到上一节函数式编程觉得有点落后时,接着看到了作者讲到的另外一种编程编程的想法,称为元编程思想。
觉得这个词很有意思的,刚开始还以为是作者弄错了,应该是“源”编程思想,在仔细阅读下去以后,内容是这样的:
根据自由百科全书(http://www.wikipedia.org)的定义:编写一些程序来提前生成一些数据或代码供运行时使用,用来生成这些数据信息或代码的程序称为元程序(MetaProgram),编写这种程序就称为元编程(MetaProgramming)。
元编程在计算机编程中运用得非常广泛。如果你有一个很大的应用程序,这个程序有很多函数都包括了同样的代码,那么就可以创建一个小型的程序(如C语言的宏定义),使用它来生成这些具有共同功能的代码,剩余更多的时间来实现重要的部分。
元编程有很多种实践方式,但其核心思想始终不变:用程序构造新的程序。构造新的程序乍看似乎颇为高深,其实不然,这里所说的构造新的程序仅表示通过一定的逻辑关系使程序具备新的功能。
在JavaScript中,对一个function来说,JavaScript引擎既可以把它当做一个方法来执行,又可以把它作为一个对象类型来构造。然 而它们是不同的,除了形式上的不同之外,其作用也不同。主要区别是:作为一个function,既可以直接执行,又可以充分地利用function代码体 的上下文,如享受到apply或call等方法带来的便利;而作为一个构造方法使用,则受到比较大的限制,缺少了function的灵活性。
在JavaScript中实践元编程,其中所谓的元程序就是function,而供运行时使用的数据或代码就是Function或function引出的一系列扩展。
阅读完这节以后,我才发现所谓的元编程与函数式编程的思想是差不多的,启事可以简单的理解为元编程是函数式编程的一个扩展。

分享到:
评论

相关推荐

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    7.3 GROUP BY的“新”功能 175 7.4 GROUP BY的CUBE扩展 175 7.5 CUBE的实际应用 179 7.6 通过GROUPING()函数排除空值 185 7.7 用GROUPING()来扩展报告 186 7.8 使用GROUPING_ID()来扩展报告 187 7.9 GROUPING...

    华为编程开发规范与案例

    对于交换机来说,任何一种业务都要分别在模拟话机、ISDN话机、V5话机、多种形式的话务台上做测试。对于中继的业务,则要充分考虑各种信令:TUP、ISUP、PRA、NO1、V5等等。 【案例1.2.2】 对某交换类进行计费测试,...

    单片机设计与KeilC编程.doc

    你有没有发现过你所设计的单片机系统,每次重新上电 启动后,数据变得乱七八糟,并且每一次现象并不相同,找不出规律,或者有时候干脆 不运行,或者有时候进入一种死机状态,有时候又一点事都没有正常运行?...

    完成Java面向对象程序设计实验课的心得体会.doc

    面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等原始的编程思 想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法〔即运算〕定义,于 是仁者见仁、智者见智,这样在一定程度上造成了理论的...

    Rust 编程语言的人脸检测库

    SEETAFACE C++ – 原始库的 Github 存储库PYTHON BINDINGS – 从 Python 代码调用 RustfaceLICENSE – 根据许可的 BSD 2-Clause 获得许可关于SeetaFace Detection 是漏斗结构级联的一种实现,专为实时多视图人脸检测...

    CH341A1.16

    可以成功烧写SST和ESMT芯片了, 但速度超慢(没办法的, 这两种不支持按页编程模式) 1.09版 改窗体, 可以最大化, 适用大屏幕\大字体 WIN7.... 去掉认会眼花的文字效果 修正KH芯片烧写问题 芯片数据库加入几个型号的...

    完成Java面向对象程序设计实验课的心得体会(1).doc

    可是面向对象只是我们解决问题一种思想,切不可 忘了问题本身,弄成为了面向对象而面向对象了!当然过程种少不了楼上一些前辈说的 思想和细节了。 耕具我多年的实践:面向对象包括两个思想: 从大往小想,从小往大做...

    JAVA自学之路

    掌握一种编程工具,比如说Eclipse。 数据库,可以选择使用Oracle或者MySQL开始 。 JDBC,用Java连接数据库。 可以选择在这个地方切入Hibernate,也可以选择在Struts 之后。 HTML CSS JavaScript,这些东西是做...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    所以我们相信,XML做为一种先进的数据处理方法,将使网络跨越到一个新的境界。 六. XML的严格格式 吸取HTML松散格式带来的经验教训,XML一开始就坚持实行"良好的格式"。 我们先看HTML的一些语句,这些语句在HTML中...

    phase-3-ruby-oo-fundamentals-defining-object-orientation

    人类语言是一种抽象系统:它传达的是事物的思想,而不是事物本身的思想。 翻译:“这不是管道。” -, ,1927年 管道的图像仅是管道,而“管道”一词则是管道; 同样,名为pipe的代码对象不是管道,而只是表示管道...

    bolt:Bolt是一种内置数据竞赛自由的语言!

    什么,另一种编程语言? 是的,这可以防止数据争用! 并发代码很难正确处理,因此让该语言为您服务! 最好的部分是,与Rust相比,您可以获得更细粒度的并发性,并且当您要编写单线程代码时,这种语言不会妨碍您的...

    Python程序设计入门(1)基本语法简介

    Python是当今日趋流行的一种脚本语言,它比Java更简单,比php更强大,并且还适用于做桌面应用的开发,在ubuntu中,更加是必须的一种脚本引擎,所以有必要去学习一下,这里的文章只针对有一定编程基础,最好是比较...

    自己动手写操作系统(含源代码).part2

    正如于渊在本书结尾中所说“我们写自己的操作系统是出于一种好奇,或者说一种求知欲。我希望这样不停地‘过把瘾’能让这种好奇不停地延续”。 好奇心是动力的源泉,追究问题的本质是优秀黑客的必备素质,只有充分...

    自己动手写操作系统(含源代码).part1

    正如于渊在本书结尾中所说“我们写自己的操作系统是出于一种好奇,或者说一种求知欲。我希望这样不停地‘过把瘾’能让这种好奇不停地延续”。 好奇心是动力的源泉,追究问题的本质是优秀黑客的必备素质,只有充分...

    asp.net知识库

    .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 C#2.0 - Object Pool 简单实现 ...

    开源图形处理器(GPU)Nyuzi.zip

    它是一种现代架构,具有集合关联L1和L2缓存,细粒度硬件多线程,流水线SIMD浮点和整数执行单元,并支持多个缓存一致性内核。它包括基于LLVM的C/C 编译器。GPU已经被证明对于具有大量内在并行性的应用程序是有用的,...

    计算机基础课程逻辑思维能力细节教学探讨.doc

    本文介绍的细节教学是将理论与实际相结合,通过分析和解决实际问题,达到培养 学生动手操作能力和逻辑思维能力为目的一种教学方法。 2 细节教学方法两大主要功能的体现 2.1 动手操作能力 顾名思义动手操作能力即自己...

    Java面试宝典和大学生面试宝典

    我们应该抱着一种诚恳的态度来回答,对熟悉的技术点可以详 细阐述,对于不熟悉的部分可以诚实地告诉面试官,千万不要不懂装懂。 不过,我们同意可以引导与面试官的谈话,把他尽量引导到我们所擅长 的领域。在 SPSS ...

    原子入侵:未知之路,从代码开始,并有一个稳固的目标逐渐消失

    从大霍斯皮蓬到当代,人们创造并定义了一种可以被我们感知的精细的可修改世界观结构。 我们正在采用这种结构,并且每天都在不知不觉中使用它。 牛顿的话是这样的:“如果我进一步了解,那就是站在巨人的肩膀上” 想...

Global site tag (gtag.js) - Google Analytics