五千年(敝帚自珍)

主题:【原创】介绍一下Go语言(1)之前的话 -- zllwy

共:💬92 🌺231
分页树展主题 · 全看首页 上页
/ 7
下页 末页
        • 家园 Python的缩进完全是胡闹

          生生废了编辑器的自动排版功能,人为地把copy-paste变成艰巨的任务。

          多一对{}难道会死吗?

        • 家园 缩进这个不用担心,python不会让你因为这个真正烦恼

          python没有编译

          但是对缩进的检查还是很仔细,如果有不正确的缩进会提醒你

          当然逻辑上的错误缩进,就得自己弄,这其实跟大括号一样啊,大括号你也得括对了

          并且好多工具帮你处理缩进

          • 家园 跟大括号不一样

            很多IDE在你打上半个括号的时候自己就给你加上下半个了。所以你很清楚什么时候scope结束了。缩进就不一样了,完全要自己控制。最大的问题其实是难读,不小心把缩进搞乱了,就回不去了,要是space,tab混在一起,更是没办法看了。总之是增加没有必要的麻烦。上一个这样做的语言是fortran了吧。

            • 家园 改下python source里的Grammar,把{}

              加到statement里面:-D

            • 家园 emacs用户大笑ing

              我在emacs里,无论写什么,一般都设成只认space,反正按tab在emacs默认就是补全或者是indent。现在几乎所有IDE的python mode(如果支持的话)里,是没办法直接输入tab的。说起来的话,python里用vim的比较多。

              点看全图

              外链图片需谨慎,可能会被源头改

              我觉得写python最重要的是代码块绝对不能写太长,超过一定长度就要把代码拆开。太长的当然也可以看,不过需要一个好的编辑器。比如说像emacs那样有outline mode的。另外缩进一般要控制好,一般的代码一两层就差不多了,四层千万到顶,以后要是加上try的话,直接变五层了。

              python可以说是典型的对编辑器(环境)有强烈信赖的语言,用windows默认的记事本,哪怕是看python代码,那也是杯具。windows下面,其实用notepad++或者editplus这样的就差不多了。

              python的这些特点导致了整个社区对代码规范的极端重视,具体的体现就是这个:Style Guide for Python Code。这应该也是很多公司推python的原因。你要是不按规范写,自己都甭想好过。不过话说回来,python的自带的库里,好多代码也不是完全按PEP8来的。话说回来,遵守不遵守PEP8开头就说了,按你的兴致来,自己觉得合适就行

              FORTRAN还是看你用的编译器和FORTRAN标准,有些编译器和标准一般不是很区分空格和TAB,甚至是语法。我自己写FORTRAN的时候,不管是不是F90,一律用gfortran编译,才懒得理这个函数到底应该算f77还是f90呢。

        • 家园 改了。多谢提醒。
      • 家园 Go的性能如何?

        go的性能表现如何?虽然现在的计算机越来越快了...

        缩进,我倒是觉得还好,这个算是强迫你提高可读性.不过,有时候搞乱了,然后就很痛苦了.设置好的编辑器往往帮助你维持恰当的缩进.不过有时候跨平台换个编辑器,就容易出问题

        我一直有个疑问,java的性能应该是很不错的,可以用来写各种存储管理系统.可java的gui程序怎么就那么烂呢? 我觉得python的gui程序都比java好很多!

        • 家园 性能这个问题比较复杂

          Go的性能理论上是接近C的。因为Go是直接compile的。但实际上的性能受到很多方面的影响:

          1 compiler的实现。目前Go有两种compiler,Xg/Xl系列(X是数字代表architecture,目前支持x64,x32和arm,分别是6,8,5,g代表compiler,l代表linker,这套都是从plan 9来的),还有就是gccgo(gcc的frontend)。Xg/Xl系列编译非常非常快,这也是Go的一大特点,但优化相对就不够一点。gccgo编译慢,优化好,和C可以直接连,但还有一些feature没有实现(最终会一样)。Go team也考虑过LLVM,不过目前LLVM还是太庞大了。

          2 库函数的实现。很多benchmark要进行公平比较的话,需要特殊优化的库函数实现。

          3 GC。Go是garbage collected的语言。好处自不用说,但性能就很受GC的影响。目前的GC还是要stop the world,还不是很理想,新的GC正在实现中。

          有的网站给出了对各种语言的benchmarking,结果对Go不是太好。不过其实很多是因为Go的库函数实现不够优化。比如有些benchmark中,C和python用的库都是有assembly优化的,但Go没有。

          总体来说,Go的性能应该比C/C++差一点,毕竟是GC的。但应该不会比Java差。Go已经在Google内部用于某些production system了。实际表现如何,我还要在实际的project中看。有机会会来报告。

          另外,python缩进问题,最大的问题是很多editor对于tab/space有不同解释。所以很多人一起工作的话,没有一个coding standard,就会一团糟。而这个问题完全是没有必要存在的。

          Java的GUI难道大家不都用Eclipse的库了吗?自己的那套应该没人用了吧。Java目前更多是一种server language,desktop已经不是很时髦了。

分页树展主题 · 全看首页 上页
/ 7
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河