有道云Latex&对go的初步看法

最近继续折腾之前提到的玩意,latex编辑器,地址在 yangzhe1991.org/note/ ,代码在 github.com/yangzhe1991/MyYNote

目前已经如页面最上面的说明,用了有道云笔记的OpenAPI,用go写的,准确的说是beego框架,也用了David当年写的go-ynote API,还顺便提交了个pull request,已经跑路的David还真收到请求并accept了……

作为一个很不喜欢不太喜欢Java的人来说,go还是比较合乎我口味的。一些go黑总会觉得go无非就是xxxxxx还不xxxxxxxxxx并且xxxxxxxxx有毛好吹的,不过只要go改善了当前一些语言的一些不足,哪怕是没有任何新东西只把各种语言的好地方都拿来,也自然有存在的价值。

编译型的语言,go性能有了一定的保障。比较粗浅的看了下一些人的评价,似乎主要的性能问题在于自带的GC效率问题,其他方面的执行效率不见得比优化得非常牛逼的Java强,但起码可以比各种解释型语言强,而且毕竟这玩意的理论效率极限能往C、C++上靠,可以继续等若干个版本后的逐步提升。语法、语言上针对很多问题特定地去设计,于是某种程度上可以说是“像python一样好写”,又是静态类型的,可以在编译期避免一些动态类型会遇到的错误。

因为语言较新,开发环境还没有像成熟的语言那么靠谱。目前试了各种方案(IDEA+go插件、vim、sublime+go插件),感觉还是sublime+go插件最靠谱,当然也还不够靠谱。

当年写过一篇凑数文章,当时go1都还没发布,当时给我的感觉就是go非常激进。如今写代码的功力略有上涨,go也简单用了下,感觉争议多的地方其实也就那么回事,不耽误用。争议最大的可能是不显示声明实现了什么interface,我觉得“implements”之类的东西其实编译器确实不需要看,主要是给人看的(不考虑什么执行、编译的速度啥的话,没严谨想过到底会不会对性能有影响),那么既然编译器不需要看,理论上确实没必要写到代码里。可是如果没有指明实现了什么接口,从程序员的角度有时候会很麻烦,写代码的时候麻烦读代码的时候也麻烦。所以感觉这块如果有个类似java的source级别的注解就像@Override一样单纯给码农看编译器无视掉可能更好一些。也可以说,这完全可以由IDE来做,在一个struct上点右键,点“implements”,写上想实现的接口,就自动把需要实现的函数的声明加上,然后struct和对应函数的前面都加上注释让读代码的人看懂,就很好了。

然后这次这个小程序是用beego框架。目前go的web开发框架基本就两个比较成熟的,revel,beego。前者算最出名的,一些web framework benchmark也把他和原生go跟其他平台去比性能。beego国人开发,有中文文档,看着也挺好用,就用了……

身处大公司又是Java公司的我还是希望能在工作中用到go或者其他语言的,不过大公司的内部轮子或者叫内部系统特别多又不能不用,基本上意味着如果用非JVM语言就完全无法用内部系统了。因此感觉最适合在大的Java公司给非JVM语言(JVM上的其他语言理论上可以自己写自己的然后编译成class跟其他java代码混搭?没这么干过不知道有什么问题没。)找突破口的就是各种产品的API开发,尤其是那种接收客户端、某服务的请求,然后把请求转发到某个现成的成熟的Java的服务上,把各种结果整合成json/xml再返回的那种API。我们组这样的项目不少,因为核心服务无非就是查词、翻译及周边功能,这些成熟的服务N年前就用Java写好了,而且没啥实时性的状态,性能不够就可以无限加机器,完全没有重构的动力。看beego官网发现360给有道的搜索API也是用beego写的,感觉也算一定程度上支撑我这个看法吧。

go的部署很方便,直接不支持动态链接于是build好之后只有一个可执行文件以及可能会有的少量配置文件、静态文件、模板文件,如果是单纯的API服务而非web服务后两者可能都不需要,配置文件也可以直接写死到代码里于是直接一个二进制文件扔服务器上就可以用了,那些跑惯了java的服务器也不需要额外为新玩意做什么修改。于是最后的问题就是code review的时候得找人看得懂了,这个问题在靠谱公司应该不会太大。

以前写前端代码搞排版几乎一律用的table,这次彻底投入div/bootstrap的怀抱。然后实践了一下ajax动态刷新部分页面的同时修改浏览器的url从而实现可以后退、前进切换文件。感觉之前对于前端上的东西,html、js都算略懂,css完全没入门,以后抽时间集中学下css吧。

web相关开发的工具(包括语言、IDE等,无论前后端)的目标就是更少的机器,更少的人,更少的时间,搞出能用的东西。我还是觉得会有那么个时候,能让大多数码农无码可写,也许靠开源界足够多的代码,也许靠人工智能,也许靠微软的“连连看”那类牛逼的软件……但终究是有可能的,而且可能不远。


已发布

分类

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注