My Thoughts on Go (1)

初步印象:GO语言是一门对工程师非常友好的语言。对软件开发过程中的设计,单元测试,编码格式,打包发行,编译这几个方面都有很全面和统一的解决方案。正反应了GO语言的设计哲学:一件事情,只需要一种方法。这个是与C++相反的编程哲学。有兴趣可以读读Rob Pike的文章http://talks.golang.org/2012/splash.article#TOC_3依赖问题:GO语言的设计目标之一就是解决C/C++中的文件依赖问题。随着代码规模得不断增长,文件之间的依赖关系将会变得越来越复杂。C/C++语言的编译效率受了严重的挑战。GO语言不像是C++和C用宏来解决文件之间的依赖问题。与C/C++相比GO语言将依赖的粒度提高,从文件级别提高到了包级别。换言之,文件可以通过import而依赖于某个包,但是不会依赖于某一个具体的文件。同一包内的文件是相互可见的,不需要特殊的声明。GO语言的编译是以包为单元的,编译之后会在pkg目录下生成相应的二进制文件。编译器会在二进制文件头中写入类型信息,这些类型信息足够import引用时使用(有点像是COM的tlb文件),从而减少编译时读入的依赖文件的内容。总而言之,GO语言通过提高依赖粒度和减少依赖信息的方式增加了编译效率。并发编程:GO语言原生地支持并发编程。随着多核技术成为了技术主流,并发编程越来越成为最基本的日常工作。现在各大主流编程语言均来自于上世纪,并不能很好地支持并发编程,多是以库的方式对操作系统提供的并发模型做了简单的封装。存在两个问题:一是使用起来不便利;二是容易出错;三是效率低下。GO语言将并发编程内置到了语言中,提供了go routine概念。go关键字用以产生一个新的go routine,而chan类型则提供了并发单元之间的同步和通信功能。go routine是一个比线程还要小的并发单元,编译器可以合理地安排它的执行时间,从而提高效率。另一方面,它会减少线程的上下文切换时间。go routine对于快速开发是有好处的,但是如果计较到并发性能,并不会比第三方库要快。原文链接: https://www.cnblogs.com/hughlo/archive/2013/05/03/3055717.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/86939

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午10:51
下一篇 2023年2月9日 下午10:52

相关推荐