免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: crazyhadoop

[其他] Golang越来越火了 您还不赶紧开始看看? [复制链接]

论坛徽章:
0
发表于 2015-02-02 17:24 |显示全部楼层
本帖最后由 sorawa 于 2015-02-02 17:25 编辑

1. Golang语言的特点是什么?
2. Golang语言的优缺点是什么?怎么平衡
3. 如何深入学习Golang语言,分享一下学习心得,源码剖析更好了


说到特点 说几个点
强类型,OO,多返回,也有指针(是不用担心野指针的指针),垃圾回收,ACTOR,,动态处理堆栈内存分配
他的OO抛弃了传统OO的复杂性,没有多态,再也不用担心管理那么多类,以及对象释放时的内存泄露

指针问题,是个c语言超级心塞的地方,也特别容易出错,
而golang则改进了指针的各个方面,举个例子
func() (*int){
   a:=1  //栈分配
   b:=1  //堆分配
  return &b
}
这样的操作,再也不用担心指针,和暴力访问了。

精练这点说不上,比传统的语言好很多,算得上智能语言的都不简便吧
如果你写过项目,你会发现很多坑爹的地方,项目出现无数
if err != nil {
        return
}
这种东西让人烦不胜烦,

再说引入slice list这些东西,python早就有类似的东西,并且比他强大得多

如果说一点真正强大的地方,我想说应该是goroutine了
现在搞高并发,并行处理的语言,应该都听过erlang, 正是coroutine这种轻量协程非常方便处理线程问题
用协程处理请求,编写起来非常方便,调度由goroutine处理

还有说到点就是rpc方面的功能还是很弱。。。remote call这种居然带了个http 的rpc模块。真是弱到飞起了
当然对比(erlang rpc:call(Node,Module,Function,Args))下

关于怎么学习golang....
我只想说,现在关于golang的书实在太少,除了官方文档,也没几本书可以介绍了
而且有些书本从web编程开始golang,实在不太适合。我认为golang在 服务器方面还是比较强大
从系统/并发方向的书应该会适合点,也更系统点。

评分

参与人数 1可用积分 +2 收起 理由
crazyhadoop + 2 很给力!

查看全部评分

论坛徽章:
2
羊年新春福章
日期:2015-02-04 10:37:51射手座
日期:2015-02-04 10:38:43
发表于 2015-02-04 10:53 |显示全部楼层
支持一下

论坛徽章:
0
发表于 2015-02-05 15:15 |显示全部楼层
支持一下,顶顶,攒个人气

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
发表于 2015-02-06 20:00 |显示全部楼层
1. Golang语言的特点是什么?
    性能接近c/cpp
    天生的并发,配合性能,可以做到很自然地编写并发程序,又不需要像nodejs/libuv那样为了性能写回调,回调太多很不舒服
    goroutine的开销很小,一些老的server模型比如进程池线程池调度成本太高,在golang里可以不必太担心调度开销
    既能处理内存,又不需要担心各种指针问题
    垃圾回收,也解决里很多内存/指针的问题
    语法和用法接近脚本,更容易使用
2. Golang语言的优缺点是什么?怎么平衡
    优点:第一条说的特点在我眼里都是优点
    缺点:性能比c/cpp稍逊色
    平衡优缺点,或者实战,我觉得应该是利用优点,做好框架设计,提高开发效率,至于性能,虽然比不及c/cpp,但是语言级别的
    性能问题往往不是问题,框架设计得好、省去很多蛋疼的细节处理和减少bug量,性能就不是问题了
3. 如何深入学习Golang语言,分享一下学习心得,源码剖析更好了
    其实对于工作有一定年限并且热爱、钻研技术的老码农来说,新语言的语法不是问题,深入学习的最佳实践就是阅读别人的优秀
    代码和编写自己的实战代码,比如自己项目用其他语言写的核心框架,换用golang写一遍,同时结合golang的特点来做些重构

论坛徽章:
0
发表于 2015-02-07 17:25 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2015-02-08 18:17 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
发表于 2015-02-09 12:18 |显示全部楼层
Go要火了。。

论坛徽章:
7
天蝎座
日期:2013-09-28 10:45:42双子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32处女座
日期:2014-09-17 16:44:332015年亚洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16赛季CBA联赛之山东
日期:2018-03-02 23:59:31
发表于 2015-02-09 19:06 |显示全部楼层
本帖最后由 cxytz01 于 2015-02-09 19:21 编辑

1. Golang语言的特点是什么?
2. Golang语言的优缺点是什么?怎么平衡
3. 如何深入学习Golang语言,分享一下学习心得,源码剖析更好了

最近正在用golang做项目,发表下感想:

1. Golang语言的特点是什么?
   1)强类型语言,编译错误全在编译期给出,甚至import的package,声明的变量未使用全部都不允许编译通过。 用过python动态类型语言的都知道在运行时才报语法错是多么的无奈。
   2)接口式编程,没有OO,没有函数式编程,接口的方式更直接、直白,易于阅读。通过看go的package文档,其简洁明了的声明,就知道接口式编程的好处:不光代码写得爽,文档也因为接口的组织形式而看得爽。
      实际上OO也是有的,不过弱化了。
   3)引入了c++11尾后声明,引入了c++11的auto声明,使各种函数指针,指针函数等等的声明不再复杂。
   4)支持指针,对于习惯c、c++的开发人员来说,指针可以随便用且不用担心垃圾的问题了,因为有gc。
   5)天然的并发,goroutine。golang内置了对routine的调度器,虽然目前尚未成熟,对多核支持不好,但轻量级的routine相比thread,process更更加小巧。
   6)更多的内置标准库,更好的开源支持。
   7)工程化部署,部署代码更方便,静态化编译,只要体系结构一致,直接把binary丢到生产上就可以执行了。
   8)内置对git、mercurial的支持,使下载、更新、管理代码更方便。
   9)更加的健壮性处理,许多函数都是(value, err)的return形式,让开发人员更注重处理异常。
   10)引入了人性化的竞态处理机制,channel等等。使编写竞态逻辑更加的简洁。

   
   总而言之,go没有提供多少动态语言的语法糖,让开发人员写得更爽。反而针对工程化做了精简,剔掉这些看似方便的功能。
   在工程膨胀、爆炸之后,语法糖,OO里的多重继承等等会让项目混乱不堪,而剔除这些功能,虽然增加了开发的工作量,不过在项目后期可以保持项目的简洁、舒畅、清爽。
   go是从工程角度考虑的语言。

2. Golang语言的优缺点是什么?怎么平衡
   优点如问题一所回答。
   在补充几点:1)编译会判断程序是否死锁
              2)编译过程的错误信息十分简洁,如果错误过多会十分"不负责任"的提醒:too many errors。
                          3)最最大的一个优点,工程化部署,真是享受。感觉源文件不再凌乱了。
                          4)自带go test单元测试,虽然从没用过。
   
   缺点是,写过了c\c++、python,在写go,我感觉又回到了写c的年代。
   理由有:
   1)没有动态类型语言的各种语法糖,写go好累,和c\c++一样累。
   2)a.强类型语言 b.编译期做了各种限制,不好写测试代码,比如:我想预留着几个变量稍后再用,编译不过。
   3)历史短,各种解决方案欠缺。得写一堆基础设施。
      a.我才不会告诉你各种db的驱动都是第三方的,而非厂商的。 sqlserver根本不能、不敢使用pool。
          b.密钥体系的package给出的函数很丰富,不过文档没有详细说明。 写个支付接口,网上根本搜不到资料,全靠猜才写出来。
   4)异常处理全交给开发人员处理了,代码很多部分都是在做异常处理(注意go没有exception,只有error,和panic)。 虽然加强了健壮性,但是写着累。
   5)对多核的利用现在处理还不是很好,内置的调度器也不是很成熟。http://www.zhihu.com/question/27932513
   6)没有成熟调试工具,gdb对于其的支持也不是很好。

3. 如何深入学习Golang语言,分享一下学习心得,源码剖析更好了
   这3个月来的经验如下:
   1)read the fucking manual. www.golang.com
   2)实战,上项目
   3)看官方package的源码,非常的清晰。  -- 因为go是接口式编程,所以源码,文档都十分的清晰。

论坛徽章:
19
CU大牛徽章
日期:2013-04-17 11:48:262015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-03-10 22:39:202015年中国系统架构师大会
日期:2015-06-29 16:11:282015亚冠之平阳省
日期:2015-07-31 09:19:042015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-09-30 06:20:002015亚冠之柏太阳神
日期:2015-10-19 20:29:5915-16赛季CBA联赛之天津
日期:2016-11-29 14:03:43双鱼座
日期:2015-01-12 20:58:532014年中国系统架构师大会
日期:2014-10-14 15:59:00CU大牛徽章
日期:2013-04-17 11:48:40
发表于 2015-02-09 23:03 |显示全部楼层
Golang在国外是很火,但国内使用得不是很多

论坛徽章:
0
发表于 2015-02-10 13:55
小牛棋牌游戏 官网网址:www点game9955点com 2月9日至2月20日,新注册的玩家可以联系客服领取一张十万金币的体验卡。
客服QQ:810009955 电话400-0502-608
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP