go的优缺点
1.1 不允许左花括号另起一行
1.2 编译器莫名其妙地给行尾加上分号
1.3 极度强调编译速度,不惜放弃本应提供的功能
1.4 错误处理机制太原始
1.5 垃圾回收器(GC)不完善、有重大缺陷
1.6 禁止未使用变量和多余import
1.7 创建对象的方式太多令人纠结
1.8 对象没有构造函数和析构函数
1.9 defer语句的语义设定不甚合理
1.10 许多语言内置设施不支持用户定义的类型
1.11 没有泛型支持,常见数据类型接口丑陋
1.12 实现接口不需要明确声明
1.13 省掉小括号却省不掉花括号
1.14 编译生成的可执行文件尺寸非常大
1.15 不支持动态加载类库
Go语言的优点:
并发/网络/性能/工具(fmt/pprof/test)/标准库(http/json/log/flags/atomic)/Google
Go语言垃圾回收器真正致命的缺陷是,会导致整个进程不可预知的间歇性停顿。
像某些大型后台服务程序,如游戏服务器、APP容器等,由于占用内存巨大,其内存对象数量极多,GC完成一次回收周期,可能需要数秒甚至更长
时间,这段时间内,整个服务进程是阻塞的、停顿的,在外界看来就是服务中断、无响应,再牛逼的并发机制到了这里统统失效。垃圾回收器定期
启动,每次启动就导致短暂的服务中断,这样下去,还有人敢用吗?这可是后台服务器进程,是Go语言的重点应用领域。
小米网在使用Go的开发第二版抢购系统的过程中也遇到了Go程序消耗大量内存后,GC缓慢,最终导致服务不可用的问题.C语言使用网络框架库比如
libevent/libev/libuv/acl(Advanced C/C++ Library)后是否就能抵消Go的优势,而又没有Go垃圾回收时卡顿的缺点呢?在OpenResty(Nginx)
上进行Lua编程也是另一种开发高性能网络应用的选择.
----------------------------------------------------------------
Go 缺点
1 GO很慢,运行速度比Java慢,一个编译型的语言居然比解释性的还慢.
2 GO缺少安全检查,在第三方包调os.exit((1)的我见过太多了.
3 泛型不想吐槽,就没有泛型支持
4 err成为函数返回值成为标配,写起来千篇一律,if太多,没意思
5 :=这种定义我真不想说什么,看代码的时候左值什么类型都不知道,还要深入看右值的函数去看,尤其是没有一个好的IDE可以点进去看函数定义.
Go 优点
6 没有一个好的工程版本管理,尤其是github上第三方的.
1 开发速度很快,代码比较简洁.
2 标准库比较强大
3 编译简单,最后就一个可执行文件
----------------------------------------------------------------
Plan 9的作者还是没有Anders Hejlsberg 会懂得简单的道理,Plan 9的复杂有点过了
作为一个使用golang开发了一年多的人,看遍全文,我只能说,这个作者要么go刚刚入门,要么根本不懂go的精髓。
好热闹,我也来点参与感。最近用Go写过小工具,总体感觉满意,语法很干净,包组织比较舒服,并发非常爽。不足的是:IDE的确没找到合适的
,用过IntelliJ+golang插件以及LitteIDE,跟成熟的IDE相比差了挺多的。
nodejs 粉们不知道你们的 TJ 大神都已经转 golang 了吗?http://www.welefen.com/about-tj-farewell-node.js-article.html
go和nodejs都是很差的语言.node那异步回调也能被大吹特吹,异步回调是C++早已玩烂的东西好吗!
我支持C#,c#ide完善,语言设计精妙,现在c#跨平台能力比java还强,c#的异步语法甩nodejs一百条街
参考:http://blog.csdn.net/liigo/article/details/23699459
go的优缺点的更多相关文章
- DDD CQRS架构和传统架构的优缺点比较
明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概 ...
- [NodeJS] 优缺点及适用场景讨论
概述: NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨. 一. ...
- emmet,jade,haml, slim,less,sass,coffeescript等的实战优缺点
摘要: 文章背景,来自于群内周五晚上的一次头脑风暴式的思维碰撞交流活动. 随着前端技术的蓬勃发展, 各种新技术随着生产力的需要不断的涌入我们的视野, 那今天探讨的话题是这些新时代的前端兵器谱: 一. ...
- sql server的优缺点
sql server的优点众多,让其在数据库领域独占鳌头,成为最受欢迎的数据库系统,其优缺点也自然是喜爱者们所关注的,首先了解一下它的历史: sql server是一个关系型数据库管理系统,最初是由M ...
- 单页Web应用优缺点
一.定义单页 Web 应用 (single-page application 简称为 SPA) 是一种特殊的 Web 应用.它将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HT ...
- 使用iframe的优缺点,为什么少用iframe以及iframe和frame的区别。
注:HTML5不再支持使用frame,iframe只有src 属性一.使用iframe的优缺点优点:1.程序调入静态页面比较方便;2.页面和程序分离;缺点:1.iframe有不好之处:样式/脚本需要额 ...
- 几款主流PHP框架的优缺点评比
PHP是一种在国内外都比较流行的开源服务器端脚本开发语言.能够适应大中小型项目的开发需求.我们将在这篇文章中向大家介绍几款主流PHP框架及其相关优缺点评比,作为一个参考分享给朋友们. 主要参考的PHP ...
- Mvc与WebForm优缺点及Mvc的使用
关于Mvc与WebForm的优缺点在网上的评论可谓不胜枚举,但脱离了我们的项目来谈这些意义就不大了.以我们这次改版来看,WebForm的优势有以下几点: 一,可以使用<#include>, ...
- mysql_建立索引的优缺点 #转自Starzm#
建立索引的优缺点: 为什么要创建索引呢? 这是因为,创建索引可以大大提高系统的性能. 第一.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 第二.可以大大加 ...
- AJAX工作原理及其优缺点
1.什么是AJAX?AJAX全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它 ...
随机推荐
- Delphi XE5教程12:注释和编译器指示字
内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误!也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者可 ...
- PySide 简易教程<三>-------动手写起来
到目前为止,已经接触的Pyside的界面元素有如下几个:QWidget.QPushButton.QLabel.本次再介绍两个tooltip和messagebox.tooltip是一个鼠标悬浮提示信息, ...
- 利用ddmlib 实现 PC端与android手机端adb forword socket通信(转)
上篇文章讲了PC与android手机连接的办法 ,通过java调用系统命令执行adb命令操作,实际上是一个比较笨的办法. 网上查阅资料,发现google 提供了ddmlib库 (adt-bundle\ ...
- 1014. Waiting in Line (30)
Suppose a bank has N windows open for service. There is a yellow line in front of the windows which ...
- PAT乙级真题1008. 数组元素循环右移问题 (20)
原题: 1008. 数组元素循环右移问题 (20) 时间限制400 ms内存限制65536 kB 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M&g ...
- Linux - 升级+编译kernel
For upgrading present kernel to linux-next kernel, we need to follow below steps. 1. Check present k ...
- sql replace
update dbo.EquipmentAttribute set AttributeName=replace(AttributeName,' ','') where EquipmentID=8 ...
- 活动 Activity 四种加载模式
singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例.(注意是栈顶,不在栈顶照样创建新实例!) singleTas ...
- windows 2008 怎么对外开放端口
服务器已经运行了程序,但是android客户端连接不上, 网上提示说用: start /min telnet 192.168.3.42 2121 查看,但是我的提示tenlet找不到命令,估计是端口的 ...
- Java多线程——<四>让线程有返回值
一.概述 到目前为止,我们已经能够声明并使一个线程任务运行起来了.但是遇到一个问题:现在定义的任务都没有任何返回值,那么加入我们希望一个任务运行结束后告诉我一个结果,该结果表名任务执行成功或失败,此时 ...