2017/7/30
来源:互联网 发布:linux thrift源码安装 编辑:程序博客网 时间:2024/06/16 05:19
- 语法糖
作者:甘强
链接:https://www.zhihu.com/question/20651624/answer/15749454
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
语法糖(Syntactic sugar),是由Peter J. Landin(和图灵一样的天才人物,是他最先发现了Lambda演算,由此而创立了函数式编程)创造的一个词语,它意指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。不过其并没有给语言添加什么新东西。举个例子:在C语言里用a[i]表示(a+i),用a[i][j]表示(*(a+i)+j),看来语法糖不是“现代语言”才有啊,连我们的老大哥C也有,而且这种写法简洁明了,也更好懂了。实际上从面向过程到面向对象也是一种语法糖啊,C语言可以通过它的指针、类型转换,结构实现面向对象的编程风格,但是C++更进一步的推广了这种风格,更好用了,不过到了C#把OO的风格发挥得淋漓尽致。OO的编程风格对于面向过程来说是不是一种语法糖呢?如果生硬地照此理解,只有计算机硬件指令才不算语法糖,而其他一切利用编译器、汇编器将代码抽象,和自然语言更相近的手段都算语法糖。现在很多很多编程思想,编程理论层出不穷,当然,对于学习来说我们是要抓住技术的核心,但对于工程来说如何提高工程质量,如何提高工程效率也是我们要关注的,既然这些语法糖能辅助我们以更好的方式编写代码为什么要“抵制“呢?我想语法糖和其他编程思想一样重要,什么duck type,人本接口,最小接口,约定优于配置,其实不都是一些思想上的“语法糖“?不过也并不是没有反对的声音,这其中就有图灵奖的第一个获得者: Alan Perlis。.net从2.0到3.0到3.5底层CLR并没有做更新,没有添加任何新的IL指令,所以C#从2.0到3.0中所有的特性都是语法糖,就算从1.0到2.0,也只有一个泛型不是语法糖,其余的新特性也都是如此,但是每一次C#发布新特性的时候我们不得不为之而鼓舞,为之而喝彩。新的语法可以酿造更好的编程风格,以前一些难以实现的方面现在也轻而易举了。需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。
- 免疫算法
http://blog.csdn.net/together_cz/article/details/72637671 - Gradle(转载自任玉刚的博客,我这里就当科普一下,想深入了解请移步本尊博客http://blog.csdn.net/singwhatiwanna/article/details/76084580)
为什么是Gradle?
Gradle是目前android主流的构建工具,不管你是通过命令行还是通过AndroidStudio来build,最终都是通过Gradle来实现的。所以学习Gradle非常重要。
目前国内对Android领域的探索已经越来越深,不少技术领域如插件化、热修复、构建系统等都对Gradle有迫切的需求,不懂Gradle将无法完成上述事情。所以Gradle必须要学习。
如何学习Gradle?
大部分人对Gradle表示一脸懵逼,每当遇到一个问题的时候都需要从网上去查,这是一个误区。
Gradle不单单是一个配置脚本,它的背后是几门语言,如果硬让我说,我认为是三门语言。
Groovy LanguageGradle DSLAndroid DSL
DSL的全称是Domain Specific Language,即领域特定语言,或者直接翻译成“特定领域的语言”,算了,再直接点,其实就是这个语言不通用,只能用于特定的某个领域,俗称“小语言”。因此DSL也是语言。
在你不懂这三门语言的情况下,你很难达到精通Gradle的程度。这个时候从网上搜索,或者自己记忆的一些配置,其实对你来说是很大的负担。但是把它们当做语言来学习,则不需要记忆这些配置,因为语言都是有文档的,我们只需要学语法然后查文档即可,没错,这就是学习方法,这就是正道。
你需要做什么呢?跟着我学习就行啦!下面步入正题,让我们来开始学习Groovy的基本语法。
Groovy和Java的关系
Groovy是一门jvm语言,它最终是要编译成class文件然后在jvm上执行,所以Java语言的特性Groovy都支持,我们完全可以混写Java和Groovy。
既然如此,那Groovy的优势是什么呢?简单来说,Groovy提供了更加灵活简单的语法,大量的语法糖以及闭包特性可以让你用更少的代码来实现和Java同样的功能。比如解析xml文件,Groovy就非常方便,只需要几行代码就能搞定,而如果用Java则需要几十行代码。
- slam-CNN(一个项目的地址)
http://campar.in.tum.de/Chair/ProjectCNNSLAM - 导出CSDN博客的工具
http://blog.csdn.net/qq_26525215/article/details/76254851
- 2017-7-30 shell
- 2017/7/30
- 2017-7-30
- 2017-7-30
- 2017/7/30 第七天
- 2017年7月30日-占位
- 2017年7月7日12:22:30
- 2017年7月30日13:43:01
- 2017年7月30日---阶段性工作总结
- 7-30
- 7/30
- 【Ionic】npm常用命令(2017年7月31日09:29:30)
- 2017上海国际人工智能可持续发展高峰论坛7月30日上海召开
- 2017年7月做好SEO优化的30点建议
- 2017-11-30 7周4次课 linux系统日常管理(四)
- 2017-01-30
- CVPR 2017-01-30
- 2017/8/30工作总结
- js循环
- 菜鸟笔记--软件测试--百盒测试技术
- python3 GUI 开发 (1)环境配置
- POJ 1273 Drainage Ditches(最大流入门)
- HDU-4686 Arc of Dream(推公式+矩阵快速幂)
- 2017/7/30
- 九、Java中变量的使用规则
- pandas官方文档中cookbook(3)的selection&new column&multiindexing翻译
- uva 1225 Digit Counting
- linked-list-cycle-ii
- 局域网内服务端提供一个目录,客户端选择指定文件并进行下载
- linux下c++sleep函数
- Git常用操作系列(2)
- bzoj2391Cirno的忧郁 treap+三角剖分