元编程能力
㈠ 编程基础之什么是元编程
元编程(Metaprogramming)是指某类计算机程序的编写,这类计算机程序编写或者操纵其他程序(或者自身)作为它们的数据,或者在运行时完成部分本应在编译时完成的工作。很多情况下比手工编写全部代码相比工作效率更高。编写元程序的语言称之为元语言,被操作的语言称之为目标语言。一门语言同时也是自身的元语言的能力称之为反射。
㈡ 怎么理解元编程
Meta- 这个前缀在希腊语中的本意是“在…后,越过…的”,类似于拉丁语的 post-,比如 metaphysics 就是“在物理学之后”,这个词最开始指一些亚里士多德的着作,因为它们通常排序在《物理学》之后。
但西方哲学界在几千年中渐渐赋予该词缀一种全新的意义:关于某事自身的某事。比如 meta-knowledge 就是“关于知识本身的知识”,meta-data 就是“关于数据的数据”,meta-language 就是“关于语言的语言”,而 meta-programming 也是由此而来,是“关于编程的编程”。
弄清了词源和字面意思,可知大陆将 meta- 这个前缀译为“元”并不恰当。台湾译为“后设”,稍微好一点点,但仍旧无法望文生义。也许“自相关”是个不错的选择,“自相关数据”、“自相关语言”、“自相关编程”——但是好像又太罗嗦了。
Anyway。先看看 meta-data:“我的电话是 +86 123 4567 8910”——这是一条数据;“+86 123 4567 8910 有十三个数字和一个字符,前两位是国家代码,后面是一个移动电话号码”是关于前面那条数据的数据。那么照猫画虎,怎样才算 meta-programming 呢?泛泛来说,只要是与编程相关的编程就算是 meta-programming 了——比如,若编程甲可以输出 A - Z,那么写程序甲算“编程”;而程序乙可以生成程序甲(也许还会连带着运行它输出 A - Z),那么编写程序乙的活动,就可以算作 meta-programming,“元编程”。注意,程序甲和程序乙并不一定是同一种语言:
('A'..'Z').each do |char|
system("python -c 'print \"#{char}\"'")
end
如此说来,inline SQL 甚至动态生成 HTML 也是元编程了?抠定义的话是这样吧。
不过 metaprogramming 更狭义的意思应该是指“编写能改变语言语法特性或者运行时特性的程序”。换言之,一种语言本来做不到的事情,通过你编程来修改它,使得它可以做到了,这就是元编程。本版同文提及 method_missing,那么 Wat — Destroy All Software Talks 之中给出了运行时元编程的经典范例:
>> ruby has no bare words
NameError: undefined local variable or method `words' for main:Object
from (irb) 1
>> def method_missing(*args); args.join(" "); end
=> nil
>> ruby has bare words
=> "ruby has bare words"
>> bare words can even have bangs!
=> "bare words can even have bangs!"
C、C++、Python、javaScript…… 多数流行的语言或多或少都有元编程能力;Lisp 诸方言更是以元编程为基本。而 Ruby 更是因为元编程易用又强大,被许多人拿来写 DSL,因为元编程可以捏出“本不存在的语法特性”来让书写 DSL 变得简单。
㈢ 如何提高”元编程“能力
编程能力:C++接触最多,将基础知识回顾一下,给段程序能看懂、给个需求能边查书边捉急的写出、bug基本可以通过断点等调试出来;接触过Python、Matlab、R等;整体编程设计能力处于Matlab水平。
㈣ 老师让用有限元编程,可是没学过有限元编程,应该看看什么书呢
fepg的开发语言是fortran。
fepg是国产的有限元软件现在是元计算科技发展有限公司在做。他们公司在北京和天津都有公司。
大部分核心程序是用FORTRAN编的
㈤ 为什么python的元编程能力没有ruby强
Ruby的确是比Python更干净的OOP,这也不奇怪,Ruby根本就是Smalltalk换了点语法而已。
但这个更干净并不是a.length vs. len(a),名词在前还是动词在前的问题,否则OOP也未免太肤浅了。
在Python里,对于a.f()可能是调用a所属的类的方法f,也可能是调用a的属性f。这个二义性在metaprogramming时带来很多不一致和麻烦,比如Python对__xxx__ magic method lookup的特殊规定。
㈥ 为什么要有限元编程
任何有限元商业软件都有其局限性,很多非常专业的计算还是自己编写程序计算的。另外,购买大型商业软件需要很高的费用,如果进行简单的计算,自己编出更为经济。
㈦ RUBY元编程怎么样
在java的时代,因为不满面向类/对象的复杂机制,自己借鉴研究了对象装备模式,后来发现就是spring的原理。当时不知spring的情况下,还自己实现了利用运行时反射机制来动态的给对象设置空类,拼装方法共享实例对象属性,做出来虽然很欣慰,但是很难看,很慢,不可能到生产环境。 后来了解了js的函数原型prototype,可以动态的定义方法和传递闭包,简直口水直流,直接转成了web前台开发,只做ajax,直到ruby的出现。大概是06年,那时候资料贼少,全是日文,英文的都不多,学了皮毛就搁置了。 今年,因为自己回归开发,想实现一些想法,尝试了php之后,毅然决定打死不用php,与其深入研究php不如决心搞ruby,打眼一看,发现中文资料太多了,太幸福了,当看到这本元编程的时候,马上想起java时候的辛酸啊。 Ruby让人快乐,元编程更是快乐的魔法,创造出令人兴奋激动的东西。 计算机不再是仆人,而是朋友,我能理解你,你也能理解我。 如果说写java就像写论文,那么用js就像写英文诗,而ruby像五言绝句。 所以不学元编程,不如用java
㈧ 编程语言C++的模板元编程技术有什么优点和缺点 在游戏编程中用的多么
优点在于增强代码重用,把运算转移到编译过程提高运行速度。缺点是错误控制难度比较大,模板一旦出错想确定错误位置甚至错误原因有时候都是比较复杂的。另外一个就是模板容易搞出很复杂的类名或者函数名来,不过这个一般是可以想办法避免的。
模板主要用于库开发,上层开发一般还是不会用的。也就是说游戏可能只有核心部分会用到模板。
㈨ ES6中的元编程:Symbols 为什么令人惊叹
貌似你是想要 根据条件查找是吧?
这种情况,估计是你根据 控制id列查询所出现的问题
建议你SQL用 row_number函数,在根据条件查询出所有数据的基础上,在赋予数据标示。
你可以网上看看这个函数