go语言不支持多线程 go语言bufio

为什么 Go 语言的性能还不如javaGo语言自亮相以来并没有展示一个明确go语言不支持多线程的方向go语言不支持多线程,Google员工将Go语言称为一个“试验性语言” , 称其试图融合Python等动态语言go语言不支持多线程的开发速度和C或C++等编译语言的性能和安全 。一位Go语言的支持者概括而言Go语言如下:简单、快速、安全、并发、快乐编程、开源go语言不支持多线程;但Go语言缺乏方向以及其“集大成者”的尝试很容易会导致其学猫不成学狗也不成 , 沦为四不像 。尽管如此,编者仍然觉得Go语言有相当大的潜力:很多开发者对它感兴趣——不仅它的最初设计者阵容强大,而且在参与修改源代码的人群中也不乏大牛级人物 。这很有可能帮助Go语言找到适合自己的方向 , 开拓系统编程的新方向 。
go python 不知道选哪个我感觉还是python+c比较好 。
就我身边的人来看,得出如下观点:
c++:学一样可以解决任何问题 , 就是学习的成本太高,时间脑力不够学不好啊 。。。
python+c:拿来一个项目,先用python做个试用版(不考虑执行效率、内存等),开发速度是其他语言开发时间的十倍,然后测试 , 发现执行中出现瓶颈的话,要不就多开几个进程,要不就用c语言写小的功能,再用python调用,几乎可以又快又好的解决任何问题 。(要提高速度试试pypy)
go:一直有人强调go对多线程多cpu执行时的效率有多块多好,那是因为他和python比,python根本不支持多线程(因为GIL的存在),go各方面都很平庸(比效率比不过c,比库的支持比不过python(python也可以用c库?。? ,只是和python瘸腿的一方面比当然强了 。。。
c#、java之类:转别人的话说,用起来感觉像开着一辆装满石头的拖拉机 。。。
总的感觉:天才去学c++,能解决任何问题 , 又赚大钱;我这种不聪明的人python+c就能解决几乎所有问题了 。。。
为什么要使用 Go 语言,Go 语言的优势在哪里部署简单 。Go编译生成的是一个静态可执行文件 , 除了glibc外没有其他外部依赖 。这让部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具 , 完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担 。这和Python有着巨大的区别 。由于历史的原因,Python的部署工具生态相当混乱【比如setuptools,distutils,pip,
buildout的不同适用场合以及兼容性问题】 。官方PyPI源又经常出问题,需要搭建私有镜像,而维护这个镜像又要花费不少时间和精力 。
并发性好 。Goroutine和channel使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题 。单个Go应用也能有效的利用多个CPU核,并行执行的性能好 。这和Python也是天壤之比 。多线程和多进程的服务端程序编写起来并不简单,而且由于全局锁GIL的原因,多线程的Python程序并不能有效利用多核,只能用多进程的方式部署;如果用标准库里的multiprocessing包又会对监控和管理造成不少的挑战【我们用的supervisor管理进程 , 对fork支持不好】 。部署Python应用的时候通常是每个CPU核部署一个应用,这会造成不少资源的浪费 , 比如假设某个Python应用启动后需要占用100MB内存,而服务器有32个CPU核 , 那么留一个核给系统、运行31个应用副本就要浪费3GB的内存资源 。
良好的语言设计 。从学术的角度讲Go语言其实非常平庸,不支持许多高级的语言特性;但从工程的角度讲,Go的设计是非常优秀的:规范足够简单灵活 , 有其他语言基础的程序员都能迅速上手 。更重要的是Go自带完善的工具链 , 大大提高了团队协作的一致性 。比如gofmt自动排版Go代码 , 很大程度上杜绝了不同人写的代码排版风格不一致的问题 。把编辑器配置成在编辑存档的时候自动运行gofmt,这样在编写代码的时候可以随意摆放位置,存档的时候自动变成正确排版的代码 。此外还有gofix,

推荐阅读