[原创]这些年,我们一起用的编程语言
发表于:
2013-4-20 16:24
6240
这些年,我们一起用的编程语言
By TonyBo(253732597@qq.com tonybo@gmail.com )
ASM:汇编语言,无比灵活的语言,它可以实现任何你想实现的东西,缺点是开发效率低,难读难写。但是如果你在加密解密这一块不懂汇编,那你只能玩爆破了,这玩意估计几年前还行,现在应该不行了吧?我有一次想实现一个Coroutine ,用C自己实现,未果,然后问google,答案无非是用线程和duf devices实现,感觉这些不是我想要的,然后发现在汇编语言编程艺术一书中别人早就用汇编简单优雅的实现了,还说实现方法不止一种,而且是用面向对象方式实现的!
C:简洁,高效,直接,与UNIX的“小即是美”设计哲学一样c也是小巧优美,比如说怎么写个通用的链表头结构?用C就是:
#define T List_T
typedef struct T *T;
struct T{
T rest;
void *first;
};
少了很多C++的厚重与拐弯抹角吧!
C+unix是我认为最完美最好的组合,大部分牛人就是在C+unix这条道上走出来的。
C++:优点比C多,缺点比C多,她是我遇见的最能打击自信心和编程兴趣的语言,当然这也是让你觉得最有意思和增强自信心的语言,前提是你完全掌握了她,估计一般人没个十年八年是搞不定的,C和C++的比较就好像是你妈叫你去街对面打酱油,c就是你穿上短裤背心就去了,而C++则是开着汽车去的!
C#:C++和delphi和Java的组合体,强大的.net库支持,C#是我用过最舒心的语言,因为在写代码的时候我想要什么库她都有!没办法,谁叫我是站在了很多MS的工程师的肩上了。
Erlang:让你能快速开发出 高并发 高分布式 高容错 的函数式语言,她没有判断和循环语句的,只有模式匹配和递归,用模式匹配代替判断语句,用递归代替循环,有意思吧,她在语言层面就集成了高并发 ,高分布式的机制。缺点就是你得在每台机上装个几百兆的虚拟机!
F#:据说是优美的函数式语言,我个人觉得一般般,她的书写风格有点像python,强制你用空格来增加代码的可读性,其它的就和Haskell差不多,搭配强大的.Net平台还是很爽的。
GO:让你能够快速开发出 高并发 高分布式 强大的网络功能的编译型语言,她的hello world是webserver,还是多线程的,再稍微扩展下就可以变成分布式集群的,听着和Erlang差不多,其实还是有区别的,Go是程序库支持这些功能,而Erlang是语言层面就支持的,这也就意味着Erlang开发速度可能要快些,但也不一定,Erlang要装虚拟机的而她是不需要装虚拟机的。GO最爽的特性就是只支持面向接口编程,继承是没有的,大家可能认为继承很爽,没错,至少听上去和看上去很好,但当你用代码实现的时候你的感觉就两字“蛋疼”,套用演员王渤一句话“你费那事干嘛,直接….不就行了!”。我喜欢GO 强大的网络编程能力,三言两语就能写个http的file share server:而且还是多线程的!~没办法,谁叫他的东家是Google,人家就是靠强大的网络功能发家的!
package main
import (
"net/http"
"os"
"strings"
) func shareDir(dirName string,port string,ch chan bool){
h:=http.FileServer(http.Dir(dirName))
err:=http.ListenAndServe(":"+port,h)
if err !=nil {
println("listenandserver:",err)
ch <-false
}
}
func main(){
ch :=make(chan bool)
port :="80"
if len(os.Args)>1 {
port =strings.Join(os.Args[1:2],"")
}
go shareDir(".",port,ch)
println("listen on port",port,"......")
bresult :=<- ch
if false ==bresult {
println("listen on port",port,"failed")
}
}
Haskell:据说是最优美最纯的函数式语言,和python一样,强制你用空格来增加代码的可读性,python中的list comprehension 就是来源于她!太纯,太美,就像不吃人间烟火的人一样,她在现实应用中比较少。
Java:使用人数最多的编程语言,语法比c++要简单,主要用于web开发,但是用她做web开发你得学很多的框架(SSH),蛋疼吧!
JavaScript:天生具有异步编程能力,应为她要操纵WEB UI啊,我想这个是她的唯一的亮点吧,node js 把这个想法发扬光大了。
Lisp:方言最多的语言,对编程影响最多的语言,很多语言的特征都是Lisp很早以前就有的,比如垃圾收集,MapReduce…。她还有个很爽的特征就是可编程,意思就是说在不改动lisp的解释器或者编译器的情况下(不过一般人也改不动^_^),你就可以增加某些很爽的语言特征,比如说你很羡慕C#里面的LINQ,form….selcect….,没事,在Lisp下你用Macro就能搞定了,爽吧?Common Lisp 与Cloure 就好像C++和java,Clojure简化了Common Lisp很多东西,看起来更清爽些。
Lua:据说是最快的嵌入式脚本语言,注意是嵌入式,也就是说一般是其他语言作为宿主语言,Lua就像Java里面的XML一样作为配置语言用的,这是Lua和Python 之间的主要区别,Python则和她相反,她一般自己做宿主语言然后调用C,c++生成的动态库。总之,这样子用大家都很爽。
Perl:套用某个牛人说的“Perl 写的程序 是唯一加密前和解密后看起来是一摸一样的”,哈哈,这说明Perl太难读了,但难看归难看,能做事不就行了。
PHP:我认为是写web程序最爽开发速度最快的语言,你可能会说这不对吧,ROR,C#都不比她差吧,我想估计也就和PHP差不多吧。她的特点就是专一,他是专门为写web程序而生的,你见过有用她干其它事的么?
Python:据称是让编程简单化,代码清晰化。她差不多也做到了。用她+C或C++,那组合起来是谁用谁知道!
Ruby:闻名于ROR。其它的一般。
Scala:面向对象+函数式,有点像Erlang,你看他名字就知道他就是为了构建可伸缩系统,用口号喊就是 高并发,高分布,高……。
VB:最让初学者感觉最有成就感的语言,因为你很快就能写出达到老板要求的程序,最大众化的语言,也就是人人都会,每个人都玩过。其实她的另一个外号VBA用的人更多!
其它的我就没用过了,语言只是个工具,但你不熟悉这些工具是万万不行的!现在稍微有名的软件都不是靠单一的语言搞定的了吧?如 Google ,淘宝等等,都是几种语言的组合吧!我最喜欢的语言组合模式c+脚本语言,我最喜欢的编程范式就是面向接口的方式,再加点函数式就行了,看来看去也就GO符合。你们呢?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
上传的附件: