是否有一种完美语言来终结“编程语言之争”?-程序员宅基地

技术标签: rust  ViewUI  java  javascript  

是否有一种完美语言来终结“编程语言之争”?

策划|Tina

编辑|InfoQ 编辑部

针对目前流行的语言,InfoQ 组织的“编程语言”专题中,给您精选了如下文章!

大家都可能听过“PHP 是最好的语言”段子。

编程语言很多,既然存在,就有每个存在的理由。其实没必要评论哪个语言好,哪个语言不好。因为每个编程语言本身都不难,只要学会了一种语言,其他的都是相通的。难的,好坏之分,是理解,记忆,熟悉,和流畅的使用那些每个语言提供的基础库和扩展库,也就是 LIBs,或是 APIs,或是 SDK,或是 Frameworks。

编程语言本身,就最简单的集合来说,就是一堆保留的关键词和一堆的语法,这个大家稍微看看就都会明白,还有其设计思想。就和学一门外语一样,一些词汇加上一些词汇能组合的语法。这些通常包括的编程语言特性有:语句组成,变量定义,算术运算,循环语句,函数定义和调用,面向对象,指针操作,垃圾回收,输入输出等等。基础的东西,大家如果学过或是使用过一种语言,其他的新的语言,花个一两分钟就能写出一个 hello world 的入门程序,花个一两个小时就能基本理解。

那么,好坏之分,难的部分,实际上是那些基础库和各种扩展库。这些库,必须在实践中一步一步熟悉和掌握。如果不经常使用,还特别容易忘记,尽管现代的编程环境有各种智能辅助。会不会,熟不熟一门语言,很大程度上是对他们的持续使用和理解。这也是为什么,没有多个项目,或是几年的实践,很难说是一个语言的高手。

比如同样对于网络的操作,有的语言的库包装的简单高级易用全面,有的语言就基础原始。那么对于那些有高级包装库的语言,大家就会觉得好,语言好用,开发效率高,想要什么都有,socket、tcp/ip、http、async/sync、select、event,甚至是 sever、client、crawler 等等。而对那些比较底层的包装的语言,大家就学觉得开发效率低,难用,比如只有 select 和 socket。是不是大概如此?

学习完了编程语言基础,大家一般要花很多的时间去了解和学习基础库和扩展库,这个才是真正的痛处和难点,学了不用还容易忘记,用到的时候还得想到有这个函数库。那么,如果有一套对各种语言都适用的 API 或是库函数定义,那么,大家学习和使用一门新的语言的效率会大幅度提高。这时,哪个语言最好,也就不再是什么问题了。

Protobuf、Thrift、COM、RPC 等等都已经在做这方面尝试,如果有一天,大家不管用什么编程语言,只要记住一套接口函数,那就太美好了。这时,估计没有人会再争论,PHP 是否是最好的语言了。

《架构师特刊:编程语言》序言,作者:陈利人

今日头条 Go 建千亿级微服务的实践

Go 是 Google 开发的一种并发型,具有垃圾回收功能的编程语言。Go 语言最初由 Robert Griesemer, Rob Pike 和 Ken Thompson 在 2007 年末共同设计和实现,2009 年 11 月份正式发布并开源,当它全部开源出来后,获得了当年的年度语言。

Go 语言相对其它语言具有几点天然的优势:

  1. 语法简单,上手快。

  2. 性能高,编译快,开发效率也不低。

  3. 原生支持并发,协程模型是非常优秀的服务端模型,同时也适合网络调用。

  4. 部署方便,编译包小,几乎无依赖。

Go 适合用来做:1. 服务器编程,通常以前是使用 C 或者 C++,用 Go 来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。2. 分布式系统,数据库代理器等。3. 网络编程。4. 内存数据库。5. 云平台。

Go 语言在中国发展也非常不错,今日头条当前后端服务超过 80% 的流量是跑在 Go 构建的服务上。微服务数量超过 100 个,高峰 QPS 超过 700 万,日处理请求量超过 3000 亿,是业内最大规模的 Go 应用。

在 2015 年之前,头条的主要编程语言是 Python 以及部分 C++。随着业务和流量的快速增长,服务端的压力越来越大,随之而来问题频出。Python 的解释性语言特性以及其落后的多进程服务模型受到了巨大的挑战。

2015 年 6 月,今日头条开始使用 Go 语言重构后端的 Feed 流服务,2016 年 6 月,Feed 流后端服务几乎全部迁移到 Go。

点击下图即可阅读全文

是否有一种完美语言来终结“编程语言之争”?

Java 老矣,尚能饭否?

从 1995 年第一个版本发布到现在,Java 语言已经在跌宕起伏中走过了 22 年,最新的 Java 版本也已经迭代到 Java 9。当年 Java 语言的跨平台优势如今看来也只不过是家常小菜,Go、Rust 等语言横空出世,进一步拓宽了编程语言的边界。当年发明 Java 语言的 Sun 公司早已被 Oracle 收购,Oracle 现在也正处于水深火热的云计算浪潮当中,甚至连 Java 之父 James Gosling 也加入了当今世界最大的云计算公司 AWS。

Java 语言发展的这 20 年也正是全球互联网迅猛发展的 20 年,Java 语言同时也见证了电商浪潮、移动互联网浪潮、大数据浪潮、云计算浪潮,所以在现今各大互联网公司身上都能看到 Java 的身影。

TIOBE 的语言排行榜显示,自 2016 年初 Java 语言就出现了明显的下颓趋势,开发者社区也出现了一些唱衰 Java 语言的论调,编者心中也有些许疑问:Java 老矣,尚能『饭』否?基于这样的背景,InfoQ 邀请到了 Java 资深专家张建锋来为大家解读 Java 语言的发展现状以及未来。

点击下图即可阅读全文

是否有一种完美语言来终结“编程语言之争”?

Python 向来以慢著称,为啥 Instagram 却唯独钟爱它?

Python 的创始人为吉多·范罗苏姆(Guido van Rossum)。1989 年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,于是 Python 就诞生了。

尽管 Python 有时被粗略地分类为“脚本语言”(script language),但是它具有最丰富和强大的类库,以及良好的扩展性,于是在工业和科研上获得广泛的使用。

PyCon 是全世界最大的以 Python 编程语言 为主题的技术大会,大会由 Python 社区组织,每年举办一次。在 Python 2017 上,Instagram 的工程师们带来了一个有关 Python 在 Instagram 的主题演讲,同时还分享了 Instagram 如何将整个项目运行环境升级到 Python 3 的故事。

Instagram 的总注册用户达到 30 亿,月活用户超过 7 亿 (作为对比,微信最新披露的月活跃用户为 9.38 亿)。而令人吃惊的是,这么高的访问量背后,竟完全是由以速度慢著称的 Python + Django 支撑。Python 虽然运行很慢,不过,这对于 Instagram 不是问题,因为他们认为:『Instagram 的最大瓶颈在于开发效率,而不是代码的执行效率』。上面是 Instagram 这种业务上不依赖高强度运算的实例。对于计算强度高的业务,如果强调性能,可以使用 Cython(https://en.wikipedia.org/wiki/Cython)。或者如 Numpy\numba\NUFFT 之类专门优化过的计算库。

点击下图即可阅读全文

是否有一种完美语言来终结“编程语言之争”?

我们为什么要选择小众语言 Rust 来实现 TiKV?

Rust 是由 Mozilla 研究室主导开发的一门现代系统编程语言,自 2015 年 5 月发布 1.0 之后,一直以每 6 周一个小版本的开发进度稳定向前推进。语言设计上跟 C++ 一样强调零开销抽象和 RAII。拥有极小的运行时和高效的 C 绑定,使其运行效率与 C/C++ 一个级别,非常适合对性能要求较高的系统编程领域。

Rust 作为一种新锐的语言,具备其独有的优越性,虽然对于国内大多数开发者来说会显得比较陌生,但是并不妨碍 Rust 已经在世界范围内作为公认的 C/C++ 的有希望的挑战者。目前在全球落地的项目中比较知名的比如,Dropbox 的后端分布式存储系统(闭源),Firefox 的新的内核 Servo,操作系统 Redox,还包括 PingCAP 的分布式数据库 TiDB 的存储层 TiKV。TiKV 作为其中的一员,自上线以来非常引人注目,在 GitHub Rust 语言的全球排名项目中,基本上一直徘徊在前几名的状态。

点击下图即可阅读全文

是否有一种完美语言来终结“编程语言之争”?

最终,JavaScript 成为了一流语言

JavaScript 因为互联网而生,紧随着浏览器的出现而问世。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、FireFox、Safari、Opera)支持。

除了样式效果外,JavaScript 也被越来越多地应用于软件开发,例如后端任务、Web 服务器以及数据处理。JavaScript 成型很快,起初只关注一个很小的目标,后来市场的力量改造了这门语言。

对 JavaScript 有正面影响的统计数据:

  1. 在 Github 上 JavaScript 开源项目的数量最多(比 Java 多出 50%)。

  2. NodeJS 被评为 StackOverflow 2017 年开发者调查中最受欢迎的框架。

  3. JavaScript 是 Stack Overflow 中最流行的编程语言。

JavaScript 已经达到以下这些成为一流编程语言的标准:

  1. 被创业公司和大型私营公司用作后端服务框架(NodeJS)。

  2. 有一个蓬勃发展的开源社区(在 Github 上最活跃)。

  3. 作为一门专业技能,有大量的招聘需求要求掌握 JavaScript 知识(Indee.com)。

点击下图即可阅读全文

是否有一种完美语言来终结“编程语言之争”?

Clojure 太灵活,我们能如何驾驭它?

Clojure 是一套现代的 Lisp 语言的动态语言版,函数式多用途的语言。目前其开发进程是社区主导的,在作者 Rich Hickey 以一个“终身的仁慈独裁者”的身份监督下进行。Clojure 是 JVM 之上的语言,继承了 lisp 的优美,也保留了 Java 的实效。本文整理自 QCon 演讲,讲师是 Morgan Stanley VP 何婧誉 (Loretta),专业使用 Clojure 5 年多,主要用 Clojure 做数据流处理。

阅读原文,免费下载编程语言专题迷你书!

今日荐文

点击下方图片即可阅读

是否有一种完美语言来终结“编程语言之争”?

要怎样努力,才能修炼成一个架构师?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33860553/article/details/86721448

智能推荐

python情感分析词典_基于情感词典的文本情感分析-程序员宅基地

文章浏览阅读1.5k次。本文由来为了赚足学分丰富假期生活,初衷是分析老师对学生作业的评价和学生对老师的评价的。本来这个任务是在N多天前就应该完成了,无奈本人懒癌晚期+拖延症不想治疗,不是因为火烧眉毛就绝对没有今天的文章。本文旨在记录自己的学习过程,就这样,开干啦!序幕既然题目是“基于情感词典的文本情感分析”,那么情感词典就是必不可少的了。对于情感词典的要求:要包含积极的词语和消极的词语、每一种类的数量要足够多、包含足够广..._由已有的电子词典或词语知识库扩展生成情感倾向词典 python

(转)iOS及Mac开源项目和学习资料【超级全面】_fflabel objective c-程序员宅基地

文章浏览阅读1.2k次。本文转载,原文地址:http://codecloud.net/ios-mac-study-5155.html如有侵权,请及时联系我.. iOS UI下拉刷新EGOTableViewPullRefresh – 最早的下拉刷新控件。SVPullToRefresh – 下拉刷新控件。MJRe_fflabel objective c

全排列问题-程序员宅基地

文章浏览阅读152次。要求计算从1到N的N个整数所能构成的所有排列,并按照字典顺序依次输出。 输入 输入为一组整数,每行为一个整数N,N<8,结尾行为0。 输出 对每一个输入N,按照字典序输出1到N的所有排列,数字中间用空格隔开, 每个排列的输出占一行。 样例输入 2 ..._全排列测试函数:int test(intk,intn)

花书第五章机器学习基础_当m趋向于无穷大时,该模型最终会在随机梯度下降抽样完训练集上的所有样本之前收敛-程序员宅基地

文章浏览阅读686次。1.学习算法 对于某类任务 T 和性能度量P,一个计算机程序被认为可以从经验 E 中学习是指,通过经验 E 改进后,它在任务 T 上由性能度量 P 衡量的性能有所提升。 常见学习任务 任务:机器学习系统如何处理样本(样本是从要处理的对象中收集到的已经量化的特征的集合) 输入缺失分类:当输入向量的每个度量不被保证的时候,学习算法只需要定义一个从输入向量映射到输出类别的函数 回归:对输入给输出 转录:观测一些相对非结构化表示的数据,并转录信息为离散的文本形..._当m趋向于无穷大时,该模型最终会在随机梯度下降抽样完训练集上的所有样本之前收敛

30岁想转行,该怎么开始?_30岁跨行从零开始-程序员宅基地

文章浏览阅读234次。有人说过“跳槽穷仨月,转行穷三年”,足以可见好工作难找,转行更是难上加难。如何在这样严峻的形势下成功实现转行?显得尤为重要了。_30岁跨行从零开始

VSCode代码自动补全html标签、css样式属性值 - 解决VSCode没有代码提示 - 修改配置文件即可完成 - 无需插件_vscode css 嵌套写法 没有提示补全-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏12次。操作步骤如下:第一步:打开设置找到下图的位置,取消选中 Suggeest: Snippets Prevent Quick Suggestions第二步:找到 settings.json 打开编辑第三步:将以下代码放到里面即可:"files.associations": { "*.vue": "html" }效果图如下:..._vscode css 嵌套写法 没有提示补全

随便推点

盛最多水的容器-程序员宅基地

文章浏览阅读68次。给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。class Solution: def maxArea(self, height: List[int]) -> int: i, j, res = 0, len(height) - 1, 0

java调用dll时回调函数的实现(jna)_java stdcallcallback-程序员宅基地

文章浏览阅读7.3k次。java调用dll文件需要使用回调函数作为公开函数的参数时,用以下方法实现:首先,看c++中定义的dll公开函数:typedef void (*ccback)(char *name ,int length); int dllFunction(char *ip, int port, ccback cc); 引用dll文件方法不再赘述,直接看回调函数的实现,需要通过java的接口实现_java stdcallcallback

常见的Markdownpad2运行破解以及This view has crashed!报错和Awesomium1.6.6SDK安装使用_awesomium 1.6.6 sdk-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏7次。MarkDownPad2安装地址:MarkdownPad2: 安装点击此链接.提示:需等待一两秒即可MarkdownPad2报错提示This view has crashed:打开MarkdownPad2编辑器之后会出现界面右边无法渲染,并提示错误This view has crashed,这时您需要安装组件Awesomium1.6.6SDK。提示:Awesomium 1.6.6 SDK安装:Awesomium 1.6.6 SDK: 安装点击此链接.之后重启MarkdownPad2一下,_awesomium 1.6.6 sdk

[RK3288][Android6.0] 调试笔记 --- pmu(rk818)寄存器读写【转】-程序员宅基地

文章浏览阅读174次。本文转载自:http://blog.csdn.net/kris_fei/article/details/76919134Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92rk的pmu模块只提供了每次单个寄存器的读写,驱动提供了这个节点供使用:/sys/rk818/rk818_test 举例:读取:echo r 0x23 ..._mtk_perf_plus

【机器学习】高斯回归过程GPR_高斯过程回归 kriging-程序员宅基地

文章浏览阅读418次。我是知识的搬运工_高斯过程回归 kriging

[Win32SDK基本]ListView Controls(1)Report (details) View 详解_syslistview32l 换行-程序员宅基地

文章浏览阅读7k次,点赞5次,收藏16次。本文由CSDN用户zuishiko所作,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/46872885老规矩,先上MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/bb774737(v=vs.85).aspx其实还是子窗口,static那节_syslistview32l 换行