我们建了一个 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年书单合辑点此链接,查 ...
随机推荐
- 2019-11-29-msbuild-项目文件常用判断条件
title author date CreateTime categories msbuild 项目文件常用判断条件 lindexi 2019-11-29 08:36:48 +0800 2019-7- ...
- SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法
SQL2005 还原数据库失败,提示如下: SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法 出现错误时操作步骤为:右击数据库--->任务- ...
- Codeforces1204C. Anna, Svyatoslav and Maps (贪心 + Floyd)
题目链接:传送门 题目大意: 给出n<=100的有向图,和路径p,求p的最短子序列v,使得依次经过v中所有点的路径为p. 思路: 题意其实就是让我们求路径上的一些关键点v,对于所有的关键点:vi ...
- react-native启动时红屏报错:Unable to load script.Make sure you're either running a metro server or that ....
一.报错信息内容 我是在Android Studio中运行启动react-native项目时报的这个错误 1.报错提示:Unable to load script.Make sure you're e ...
- 转载:网络编程 socket 可读可写条件判断
转自:http://blog.csdn.net/majianfei1023/article/details/45788591 要了解socket可读可写条件,我们先了解几个概念:1.接收缓存区低水位标 ...
- STM32CubeIDE Debug Configurations
新建完工程并编译后,配置Debug Configurations 此时双击STM32 MCU Debugging,如下图 此时就可以下载调试生成的LED.elf文件了
- VM架构设计文档初稿v0.01
VM架构设计文档初稿v0.01 文档介绍 本文档是经过讨论,作为VM新架构设计开发中的重要依据.对该架构的整个系统的结构进行详实细致的描述.阐述框架结构,说明该架构所采取的设计策略和所有技术,并对相关 ...
- Iconfont 阿里图库使用(小程序和H5)
前言 现在前端发展的太快,前端优化也是,图片也是被近2年来比较火的就是阿里图库取代了,不管小程序还是H5 都在用 好了,那么就介绍下如何使用吧 阿里图库 当然需要你到阿里官网 http://www.i ...
- java数据结构5--集合Map
Map Map与Collection在集合框架中属并列存在 Map存储的是键值对<K,V> Map存储元素使用put方法,Collection使用add方法 Map集合没有直接取出元素的方 ...
- 软件的三大类型-单机类型、BS类型、CS类型
单机类型:最开始的软件就是那些不需要联网的单机软件. CS类型:有的程序需要统一管理软件中使用的数据, 所以就将保存数据的数据库统一存放在一台主机中, 所有的用户在需要数据时都要从主机获取, 这时就分 ...