主题:【原创】介绍一下Go语言(1)之前的话 -- zllwy
和python对比的话,python的numpy,scipy和PIL之类的工具go里面有了吗?
我觉得Go更适合用于写web service。Go在科学计算方面应该也有希望,尤其对于并发的支持。但还有很多路要走。标准库目前东西不少,但还远远不够,毕竟才刚开始。指望像python那样丰富的库支持,还早。即使对于已经有的支持,比如web server,也有很多要改进的地方。Go对于倾向于从头建立系统的应用来说,已经够了。对于想“站在巨人肩膀上的”,还要再等等。
jabber这玩意儿我也动过心思,当时公司大老板猪油蒙了心,让我们IT部门选型弄个内部的IM,还不能要钱,于是就被jabber迷住了,服务器端试了好多种,客户端几乎试遍了,服务器端不说了,还都算不错,客户端就没办法说了,多人会议、文件传送、中文支持这三样能完美无缺支持的都没有,jabber,这名字起的,还真是一首晦涩的长诗。。。
An interview with one of the Go designers: Rob Pike.
http://www.simple-talk.com/opinion/geek-of-the-week/rob-pike-geek-of-the-week/
多人会议,记不得了,好像也是可以支持的,文件传送,这个可能没有试过。印象中好像是linux下比较常用的一个软件,也可以连msn,yahoo im的,忘了叫什么名字了。
最近纠结于是继续用apache还是nginx。apache耗费内存的确是太大了,看着捧nginx好处的文章,还的确有些想试试nginx。就怕和当年的lightppd那样,火热了一下,发现毛病不少,结果现在落后了nginx许多。不过现在看势头,nginx似乎稳定性不错。
关于go的并发,是语言上面容易写并发的程序,还是说它的系统可以把程序更容易并发话运行?
Actor或者CSP主要是强调并发模型的简单,安全。和轻量级线程结合起来,还保证了并发性能和可扩展性。nginx之类解决了c10k的server都是用epoll()+event-driven。goroutine+channel理论上可以达到同样的性能但要简单很多。很多用Go的程序员的评价就是Go的程序要短很多。
铁手如果用python的话,也可以考虑tornado,也是asynchronous web server,声称解决了c10k。
自动对程序进行并行化是个不同的问题,很难做到比较精细的粒度。这方面有transactional memory等等。还在研究阶段。
所以也有些动心。眼下暂时是吊死在php上了。
最近势头最猛的最火热的是node.js了,长久以来,很多人就梦想要在server side跑js,随着node.js的火热,他们终于可以圆梦了 :P
对初学者来说,什么抽象概念都没有的情况下,那一套类型系统太复杂了,大大增加了入门的负担。
而象Python或Matlab那样容忍人可以乱写代码,这对初学者来说很体贴。
另外,初学者的代码都很简单,所以调试中的问题不大。
这里的初学者指非计算机人员,但要写少量代码的普通人。
至于专业人员,不论工作中用什么语言,都至少要把c/unix这套学通,才能生存下去。
听上去好像很有意思,但是千万别就是geek们的发烧玩物。不知道速度怎样?熟悉的话,要不就给个介绍吧。
我现在暂时抱定观望态度。之前ruby on rails也很火热,现在感觉热度就不那么高了。
理由是既然在客户端已经用js了,为什么不在服务器上也运行js呢?这样语言就统一了。至于性能,要感谢Google的V8 engine,我想理论上达到Java的水平应该是有可能的。网上随便搜了一下,好像比PHP好。
语法都是错误的(你可以自己用Java Compiler验证一下),除去几处第一个字母不该大写这些小问题(估计你是copy/paste时候搞错的)。
对synchronized原理解释的不是很贴切,对final的解释也不是很全面。因为final可以用于Class,method以及variable,你似乎只考虑了final变量的问题。
final是个很有趣的东西,一方面被强烈推荐,另一方面又会出很多隐蔽的问题,等有空了再多说几句。
在word里面写的,很多格式都被弄乱了。代码只是示意性的。另外,主要是想说明多线程下这几个保留字的细微含义,并不是打算对他们本身进行解释。欢迎补充纠正。
还有反向代理(缓存)的功能,squid也省了。你既然用php,可以考虑用它。