本篇为总结之前了解的一些语言与特性,当然,我并不是语言专家,大部分都是走马观花,难免有纰漏之处。
java
作为一个纯粹的面向对象语言,java应该是非常的典型的,而且不像c/c++,也不像Objective-c一样需要我们手动管理内存,这大大降低了我们学习和使用成本。同时有大量的完整的类库和跨平台的能力,所以Google选择java作为android的语言实在是完美。
先说说特性,因为所有类型都是对象,所以基本类型还是具有自动装箱拆箱的功能。最有意思的是java的内部类,它提供了另外一种回调的方式。
但是java也有很大的缺陷,最大的缺陷是性能,如果Google能够推广最新的JIT技术,那这个问题会减轻很多。同时,java也是一种非常啰嗦的语言,甚至比Objective-c还要啰嗦,OC只是名字比较啰嗦而已。
cpp
c++怎么说呢,本来就不是纯粹的面向对象语言,为了兼容c,在一些方面不得不做一些让步。但是也有很多有意思的特性,比如操作符重载,隐式转化,智能指针等等。同时c++强大的模板和模板元编程,又让c++成为了更加强大而有技巧的语言。当然,这也大大增加了学习成本和难度,同时写法上也不够简明易懂。
Sql
这个什么都不用说了吧,应该算是基本技能。概括起来:
1 | CREATE TABLE |
lua
这是一门特别轻量级的语言,以及及其简单的语法和数据结构,所有数据都是字典类型,同时又有一定的面向对象的能力。当然,缺点也是非常明显的,作为一门独立的语言,功能还是太弱,也缺少相应的类库,所以只能嵌入程序中使用。
虽然说是一门脚本语言,据说效率很高,至于它很快的原因,是否使用了JIT技术,这个还可以继续研究下。
javascript
怎么说,最常见的脚本语言,大家都熟悉,语法上像极了java,所以用起来也可以说是得心应手,但是要用到javascript的面向对象却非常复杂,javascript是基于原型来描述面向对象的,所以javascript里面没有class,所有的class都是实例对象,导致看起来总感觉怪怪的。
javascript最好用的地方莫过于他的函数式编程了,可以说闭包和函数式编程才是javascript吸引人的地方。
Node.js
Node可以说是javascript服务端(也是本地)的实现,而且使用了V8引擎,不过这个标准目前还不那么稳定,不过他在服务器端优秀的表现,绝对是有值得了解的必要。
python
这是我非常想学的语言,并不是说Python有多么完美,而是Python既拥有脚本语言的特性,又能够很容易的使用面向对象。他避免了shell脚本晦涩难懂的语句,同时增强了字符串等操作,所以完全可以使用Python来替代shell脚本,而Python一般是linux和unix的标配,所以应用也很广泛。
Python能够很好的支持面向对象,而且语法简单,所以除了做shell脚本外还能支持大型项目。完善的包管理机制也同样提供了很多方便。可以说在这方面Python完全可以代替java,但是由于Python是一门弱类型语言,所以在一些调试和代码检查方面可能会差一点。
Python中比较有意思的一个是函数装饰器,像@static_method
,这个思想倒是值得我们借鉴。另外还有with
的语法也比try...catch...
简洁很多。可以说Python非常适合做模型。
Liquid
这是一门模板语言,目前github上的page就是用jykell+liquid完成的,而且它还和django的模板语言特别相似。当然,模板语言的弱点十分明显,可以说都算不上一门语言。除此之外还有很多模板语言,使用也非常简单。
HTML/CSS/Less
对于想了解网页方面知识,这个应该是基础的基础,作为标签语言,也非常简单,没有什么特别的技巧,但是对于布局却是一个启发,像android那样的布局,对多尺寸适配会方便很多。
Less作为对css的一个补充,还是非常不错的,可以减少很多的工作,还能编译完再发布。
Markdown
作为一种简化版的富文本编辑方式,非常简单易懂,比使用html更简单,也比使用word之类的更灵活,还能直接转换为html,程序员必备。
django & express
这两个分别是基于Python和Node的一套网站框架,django比较成熟,已经有很多的人在使用,基本功能都已经包含。express比较新,一些功能可以通过包来安装。