我们建了一个 Golang 硬核技术交流群(内含视频福利)
目录
Golang 是什么?
Golang 是谷歌 2009 年发布的第二款开源编程语言。
Golang 针对多处理器计算平台的应用程序编程进行了优化,使用 Golang 编译的程序可以媲美 C/C++ 的执行效率,而且实现更加简单,运行更加安全,并且原生支持并行进程。
我们为什么选择 Golang?
我们几位损友曾私下就 “什么是世界上最好的语言” 做出过严肃讨论,现在想想当年的自己还是太年轻。可幸的是,我们勉强达成了共识:最理想的编程语言是「强类型、静态类型」,第二象限就是最接近 “真理” 的维度。想来阿里专情于 Java,Microsoft 专情于 C# 有道理的。
那 Golang 在第几象限?笔者认为 Golang 也应当属第二象限。它是类型安全的强类型,同时又是具有弱类型声明机制的静态类型。这些特性使 Golang 的编译器、IDE 拥有完善的代码分析和理解能力,编译过程就能暴露出大部分潜在的逻辑性错误,适用于大规模团队协作开发复杂庞大的分布式服务器端应用系统,具有简单高效,风格统一,性能突出的最佳实践组合。
注:编程语言类型我们在《Python 笔试集(3):编译/解释?动态/静态?强/弱?Python 是一门怎样的语言》一文中讨论过,这里不再赘述。
Golang 的确能够在某些应用场景中表现出了更简单,更安全,更快速以及更高收益的优势,举一个具体的事例:
Linux 基金会旗下的边缘计算框架 EdgeX Foundry 将开发平台从原本的 Java 迁移至 Golang。这项改变让 EdgeX Foundry California 版本的发布延迟了几个月,但却收获了 EdgeX 容量、启动时间、CPU 和内存使用率的大幅度优化。用 Java 开发的 EdgeX 容量高达 267MB,如果加上启动容器则为 519MB,而改用 Golang 重写后只有 42MB,即便加上启动容器也只有 68MB。内存占用率也从原本的 1302MB 缩减到了 27MB,启动时间从 35 秒缩短到了 1 秒以內。
虽然没能深入考究 EdgeX 是怎么通过 Golang 做到这一点的,但就结果而言实在是令人惊艳。类似例子也不在少数,所以笔者更愿意将 Golang 定位为优秀的服务器后端编程语言。作为 “有追求” 的后端工程师,是的,有追求的我们选择了它。
Golang 是云时代的宠儿!
江湖中一直流传着「Golang 是云时代的 C 语言」的传说。这句话其实不难理解,云计算降低了企业获取多处理器计算平台的门槛,笔者甚至可以大胆的预言不久的将来人人皆可拥有高性能计算资源,这也意味着开发者面向高性能编程会成为常态。这时,你会选择 PHP?Python?Java?还是依旧坚守在 C/C++ 的阵列?
注:对于多处理器计算平台的性能问题,我们曾在《多进程、多线程与多处理器计算平台的性能问题》讨论过,这里也不再赘述。
作为多年云计算从业者,我深刻的感受到 K8s 之于 OpenStack 的冲击,从某个角度来说也可以理解为 Golang 对 Python 的冲击。当然,应用系统能否成功最本质要取决于其是否解决了用户的痛点以及是否能够帮助用户成功。但如果,有两个甚至多个应用系统在解决相同的问题呢?
我发现我花了四年时间锤炼自己用 C 语言构建系统的能力,试图找到一个规范,可以更好的编写软件。结果发现只是对 Go 的模仿。缺乏语言层面的支持,只能是一个拙劣的模仿。
— — — 摘自云风博客
无论何时、无论何地我们都应慎重对待编程语言的选型研讨。编程语言是应用系统的基因,它的影响会覆射到整个系统生态。比如说:社区活跃度,开发者体验,Bugs List,性能,客户亲和度甚至人才市场成本等等等方面。
我为什么从 Python 转向 Golang?
Python 的确是实至名归的 “网红”,从云计算到大数据到人工智能均有斩获一席之地,但就云计算的 OpenStack 而言,整个开发者体验不能算是优良。程序员的代码风格各异难统一,全局互斥锁卡住了多线程的脖子,再多的测试也还是会在生产环境出现问题。除了「简单优雅」这一 Python 的精髓犹在,其余的,还烦请您在评论区多多点拨。
关于上述提到的这些问题,笔者在 Golang 身上看见了曙光。依旧是那句「简单高效,风格统一,性能突出,第二象限属性加持」,还要什么自行车,已然心满意足了。
那 Golang 存在什么问题?
问题肯定是有的,而且只多不少:
没三目运算
没泛型,别说 interface{} 算泛型
没函数重载
没 template
要啥没啥
变量类型说静态不静态,说动态不动态
没有杀手级的框架
写个 web 服务都要难受死
我圆润的滚回 PHP 了
— — — 摘自 v2ex 分享
“是的,我应该振臂高呼 PHP 是最好的语言!”
谁年轻还不会犯点错,它会变好的。这样的非理性感受,也许就是程序员的浪漫主义了。
好了,闲话不再多说。
我们搞了一场 Golang 入门直播
就在今晚(18/08/10)
就在今晚(18/08/10)
就在今晚(18/08/10)
我们承诺全程没有任何防不胜防的广告时间,单纯的爱好驱动技术分享,「硬核」将会是本群的核心精神。技术交流,请您认真一点。
Topic:Golang 硬核技术交流群线上活动第一期之 “Golang 入门分享”
Speaker:李成(萌萌的哥哥),杭州网银科技有限公司云计算研发工程师,主要从事容器方面的研究。
Link:http://www.itdks.com/liveevent/detail/15163
(IT 大咖说,别人都免费给平台了出个镜怎么了?)
扫一扫参加:
最后欢迎各路老司机进群交流!请加管理员微信并回复 Golang。
我们建了一个 Golang 硬核技术交流群(内含视频福利)的更多相关文章
- 最近建了一个.net源码共享群,群共享有大量网友分享的.net(C#)商业源码
.net源码共享群 324087998. 本群创建于2013/6/21: 群里都是.net(C#)程序开发人员,群共享有大量网友分享的.net(C#)商业源码.比如:DTCMS旗舰版,hishop微分 ...
- 今天建了一个Python学习交流的QQ群,求喜欢python的一起来交流。
版权归作者所有,任何形式转载请联系作者.作者:枫(来自豆瓣)来源:https://www.douban.com/note/666182545/ 现在学python的人越来越多了,我也开始学习了,大群里 ...
- 基于gulp编写的一个简单实用的前端开发环境好了,安装完Gulp后,接下来是你大展身手的时候了,在你自己的电脑上面随便哪个地方建一个目录,打开命令行,然后进入创建好的目录里面,开始撸代码,关于生成的json文件请点击这里https://docs.npmjs.com/files/package.json,打开的速度看你的网速了注意:以下是为了演示 ,我建的一个目录结构,你自己可以根据项目需求自己建目
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...
- 一个Golang例子:for + goroutine + channel
Rob Pike 在 Google I/O 2012 - Go Concurrency Patterns 里演示了一个例子(daisy chain). 视频地址:https://www.youtube ...
- 推荐一个GOLANG入门很好的网址
推荐一个GOLANG入门很好的网址,栗子很全 https://books.studygolang.com/gobyexample/
- 开源一个golang小程序商城后台系统(moshopserver)
开源一个golang小程序商城后台(moshopserver) golang和c/c++比起来是一门新的语言,一直想学,网上搜集了一些资料,有些人说很容易上手,确实是这样,和C/C++比起来,少了很多 ...
- 从0写一个Golang日志处理包
WHY 日志概述 日志几乎是每个实际的软件项目从开发到最后实际运行过程中都必不可少的东西.它对于查看代码运行流程,记录发生的事情等方面都是很重要的. 一个好的日志系统应当能准确地记录需要记录的信息,同 ...
- 欢迎加入强哥的 Android 开发交流群
最近建了一个 Android 开发交流群,但不限于交流移动端.前端和后端等相关技术. 本群的宗旨:让所有学习的群友都有进步的机会. 1. 经验交流 在我们学习时遇到困境,或者开发过程中遇到难题,都可以 ...
- 得到APP【每天听本书】微信交流群(每天更新)
得到APP[每天听本书]微信交流群,每天更新下载学习资料 添加个人微信号:zhidu10000 进入微信群. “坚持每天读一本书,每天进步1.01,每年进步37.8倍” 2016年书单合辑点此链接,查 ...
随机推荐
- openlayers之框选放缩DragZoom(vue项目)
环境vue3.0项目 最初是以npm i ol -s方式安装的ol,import方式导入引用,但是实际使用的时候一直报ol is not defined,最后选择在HTML以script标签引入ol, ...
- redis删除主从节点
1.删除一个Slave节点 ./redis-cli --cluster del-node 127.0.0.1:7001 74957282ffa94c828925c4f7026baac04a67e291 ...
- pyinstaller打包总结
建立py打包文件 if __name__ == '__main__': from PyInstaller.__main__ import run #opts=['music.py','--path=C ...
- Windows XP硬盘安装Ubuntu 16.04双系统图文详解
需要下载的东西有两个,一个是grub4dos,另一个是Ubuntu 16.04 LTS的镜像文件,具体下载地址如下: 1 2 3 1.grub4dos 点击下载 grub4dos 2 ...
- VMware三种连接方式bridge, nat, host-only
大家在安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和 VMnet8,其他的未安装(当然也可以手动安装其他的).其中VMnet1是host网卡,用于host方式连接网络的.VMnet8是NAT网 ...
- 在Linux中让echo命令显示带颜色的字
echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" 例如: echo -e "\033[41;37 ...
- RHEL6查看运行级别和grub加密阻止进入单用户模式
1.查看当前运行级别 [root@cluster01 ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 ( ...
- Educational Codeforces Round 42 (Rated for Div. 2) E. Byteland, Berland and Disputed Cities(贪心)
E. Byteland, Berland and Disputed Cities time limit per test2 seconds memory limit per test256 megab ...
- DNS记录
转载于:https://www.cnblogs.com/sddai/p/5703394.html 类型 SOA NS A AAAA PTR CNAME MX --------------------- ...
- The Python Challenge 闯关笔记
The Python Challenge : http://www.pythonchallenge.com/ Level 0: 看提示图片中为2**38,计算值为274877906944. Hint: ...