Python 发表于 2016-3-11 08:58:56

Google AlphaGo 之 DeepMind 公司招聘编程语言要求 C/C++ Lua Python

Google AlphaGo 之 DeepMind 公司招聘编程语言要求 C/C++ Lua Python

以下摘引自 Google AlphaGo 之 DeepMind 公司官网首页:
Founded in 2011 by Demis Hassabis, Shane Legg and Mustafa Suleyman.

公司由 Demis Hassabis、Shane Legg 及 Mustafa Suleyman 成立于 2011 年。
The team is based in London and was supported by some of the most iconic technology entrepreneurs and investors of the past decade.

公司团队设于伦敦,由过去十年中最具代表性的一些科技企业家和投资者所支持。
以下摘引自 Google AlphaGo 之 DeepMind 公司官网加入我们页:
Specifically we’re always interested in hearing from Research Scientists (with a PhD in machine learning, physics, neuroscience, computer science or similar), Research Engineers (with strong maths, statistics and programming experience, ideally Lua or Python) and Software Engineers (with experience in C/C++ and ideally experience with Lua or Python).

具体来说,我们总是希望听到(有机器学习、物理学、神经科学、计算机科学或类似博士学位的)研究科学家、研发工程师(具有较强的数学、统计、编程经验,最好会用 Lua 或 Python)、软件工程师(有使用 C / C ++ 的经验和最好有用 Lua 或 Python 的经验)。
从以上内容可看出,DeepMind 公司的招聘要求还是挺高的;但在软件编程语言要求方面,还是那么一致的西方化,易用 + 性能 + 开源。

C 编程语言
语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易方式编译、处理低级存储器、产生少量机器码及无需任何运行环境支持便能运行的编程语言。

尽管 C 语言提供了许多低级处理功能,但仍保持着良好的跨平台特性,以 C 语言编写的程序可在许多电脑系统平台上编译,甚至包括嵌入式处理器(单片机或称 MCU)及超级电脑等作业平台。
C 语言之所以命名为 C,是因为 C 语言源自 Ken Thompson 发明的 B 语言,而 B 语言则源自 BCPL 语言。
1967 年剑桥大学的 Martin Richards 对 CPL 语言进行了简化,于是产生了 BCPL(Basic Combined Programming Language)语言。
20 世纪 60 年代美国 AT&T 公司贝尔实验室(AT&T Bell Laboratory)的研究员 Ken Thompson 闲来无事,手痒难耐,想玩一个他自己编写的模拟太阳系航行的电子游戏 —— Space Travel。他背着老板,找到了一台空闲机器 —— PDP-7。但这台机器并没有操作系统,而游戏必须使用操作系统的一些功能,于是他着手为 PDP-7 开发操作系统。后来,这个操作系统被命名为 —— UNIX。
1970年美国贝尔实验室的 Ken Thompson 以 BCPL 语言为基础,设计出简单且很接近硬件的 B 语言(取 BCPL 的首字母)。并用 B 语言写了第一个 UNIX 操作系统。
1971 年同样酷爱 Space Travel 游戏的 Dennis M. Ritchie 为能早点玩上游戏,加入了 Thompson 的开发项目,合作开发 UNIX。他的主要工作是改造 B 语言,使其更成熟。
1972 年美国贝尔实验室的 Dennis M. Ritchie,在 B 语言的基础上设计出了一种新语言,取 BCPL 的第二个字母作为这种语言的名字,这就是 C 语言。
1973 年初 C 语言的主体完成。Ken Thompson 和 Dennis M. Ritchie 迫不及待地用它完全重写了 UNIX。此时,编程的乐趣使他们已完全忘记了那个 "Space Travel" 游戏,一门心思投入到了 UNIX 和 C 语言的开发中。随着 UNIX 的发展,C 语言自身也在不断完善。直到今天,各种版本的 UNIX 内核和周边工具仍使用 C 语言作为最主要的开发语言,其中还有不少继承了 Ken Thompson 和 Dennis M. Ritchie 的代码。
在开发中,Ken Thompson 和 Dennis M. Ritchie 还考虑把 UNIX 移植到其他类型的计算机上使用。C 语言强大的移植性(Portability)在此显现。机器语言和汇编语言都不具有移植性,为 x86 开发的程序,不可能在 Alpha、SPARC 及 ARM 等机器上运行。而 C 语言程序则可用在任意架构的处理器上,只要那种架构的处理器具有对应的 C 语言编译器和库,然后,将 C 源代码编译、连接成目标二进制文件之后即可运行。
1977 年Dennis M. Ritchie 发表了不依赖于具体机器系统的 C 语言编译文本《可移植的 C 语言编译程序》。
1982 年很多有识之士和美国国家标准协会为使这种语言健康地发展下去,决定成立 C 标准委员会,建立 C 语言标准。委员会由硬件厂商、编译器及其他软件工具生产商、软件设计师、IT 顾问、学术界人士、C 语言作者及应用程序员组成。
1989 年 ANSI 发布了第一个完整的 C 语言标准 —— ANSI X3.159 — 1989,简称 “C89”,不过人们也习惯称其为 “ANSI C”。

1990 年 C89 在被国际标准组织 ISO (International Organization for Standardization) 一字不改地采纳,ISO 官方给予的名称为:ISO/IEC 9899,所以 ISO/IEC 9899: 1990 也通常被简称为 “C90”。
1999 年在做了一些必要的修正和完善后,ISO 发布了新的 C 语言标准,命名为ISO/IEC 9899:1999,简称 “C99”。

2011 年 12 月 8 日 ISO 又正式发布了新标准,称为 ISO/IEC 9899: 2011,简称为 “C11”。
C++ 编程语言
C++ 是在 C 语言基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式 ── 面向对象编程、泛型编程和过程化编程。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。
C++ 支持类:类、封装、重载等特性!C++ 编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一。
1983 年 C++ 这个名字由 Rick Mascitti 于提出建议,于1983 年 12 月首次使用。1983 年之前,尚处于研究阶段曾被称为 “new C”,之后改为 “C with Class”。在计算机科学中,C++ 仍被称为 C 语言的上层结构。它最后得名于 C 语言中的 “++” 操作符(其对变量的值进行递增)。在共同的命名约定中,使用 “+” 以表示增强的程序。Stroustrup 说:“这个名字象征着源自于 C 语言变化的自然演进”。
1992 年 Rick Mascitti 在被非正式地问起名字的由来时,他表示这是在半开玩笑中说出的。他从没想过 C++ 会成为这门语言的正式名字。有一个关于 C++ 名字的笑话,当你使用后缀 ++ 时,赋值发生在加运算之后(因此,它应该是 ++C,而不是 C++,这个笑话是说时下某些程序员还在以使用 C 的方式使用 C++,这通常被一些权威著作认为是不正确的)。
注意:C+ 是一个和 C/C++ 无关的早期编程语言。
计算机诞生初期,人们要使用计算机必须用机器语言或汇编语言编写程序。世界上第一种计算机高级语言是诞生于 1954 年的 FORTRAN 语言。之后出现了多种计算机高级语言,其中使用最广泛、影响最大的当推 BASIC 语言和 C 语言。

BASIC 语言是1964 年由 Dartmouth 学院 John G. Kemeny 与 Thomas E. Kurtz 两位教授在 FORTRAN 语言的基础上简化而成的,适用于初学者设计的小型高级语言;C 语言是 1972 年由美国贝尔实验室的 Dennis M. Ritchie 所开发,采用结构化编程方法,遵从自顶向下的原则。在操作系统和系统使用程序及需要对硬件进行操作的场合,用 C 语言明显优于其它高级语言,但在编写大型程序时,C 语言仍面临着挑战。
1983 年贝尔实验室的 Bjarne Stroustrup 在 C 语言基础上推出了 C++。

在 “C with Class” 阶段,研制者在 C 语言的基础上加进去的特征主要有:类及派生类、共有和私有成员的区分、类的构造函数和析构函数、友元、内联函数、赋值运算符的重载等。
1985 年公布的 C++ 语言 1.0 版的内容中,又添加了一些重要特征:虚函数的概念、函数和运算符重载、引用、常量(constant)等。
1989 年推出的 2.0 版形成了更加完善的,支持面向对象程序设计的 C++ 语言,新增加的内容包括:类保护成员、多重继承、对象初始化与赋值递归机制、抽象类、静态成员函数、const 成员函数等。
1993 年的 C++ 语言 3.0 版本是 C++ 语言的进一步完善,其中最重要的新特征是:模板(template);此外,还解决了多重继承产生的二义性问题及对构造函数与析构函数的处理等。
1998 年 C++ 标准(ISO/IEC 14882 Standard for the C++ Programming Language)得到了国际标准化组织(ISO)和美国标准化协会(ANSI)的批准,标准 C++ 语言及其标准库更体现了 C++ 语言设计的初衷。名字空间的概念、标准模板库(STL)中增加的标准容器类、通用算法类和字符串类型等使得 C++ 语言更为实用。此后 C++ 是具有国际标准的编程语言,该标准通常简称 ANSI C++ 或 ISO C++ 98 标准,以后每 5 年视实际需要更新一次标准。
2003 年通过了 C++ 标准第二版(ISO/IEC 14882:2003):这个新版本是一次技术性修订,对第一版进行了整理 —— 修订错误、减少多义性等,但没有改变语言特性。这个版本常被称为 C++ 03。
此后,新标准草案叫做 C++ 0x。对于 C++ 0x 标准草案的最终国际投票已于 2011 年 8 月 10 日结束,且所有国家都投出了赞成票,C++ 0x 已毫无异议地成为正式国际标准。先前被临时命名为 C++ 0x 的新标准正式定名为 ISO/IEC 14882:2011,简称 ISO C++ 11 标准。C++ 11 标准将取代现行的 C++ 标准 C++ 98 和 C++ 03。
2011 年 09 月 01 日国际标准化组织出版发布《ISO/IEC 14882:2011》,名称是:Information technology -- Programming languages -- C++ Edition: 3,常被称为 C++ 11。
2014 年 08 月 18 日国际标准化组织出版发布《ISO/IEC 14882:2014》,名称是:Information technology -- Programming languages -- C++ Edition: 4,常被称为 C++ 14。
Lua 编程语言
Lua 是一个很小巧的脚本编程语言。Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由 Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo 所组成,并于1993年开发。 Lua 有一个同时进行的 JIT 项目,提供在特定平台上的即时编译功能。
Lua 其设计目的是为嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua 由标准 C 编写而成,代码简洁优美,几乎在所有操作系统和平台上都可编译、运行。
Lua 脚本是一个轻量级脚本,号称性能最高的脚本,用在很多需要性能的地方,比如:游戏脚本、nginx、wireshark 脚本,源码编译后,解释器不到 200k,这是多么地变态啊(/bin/sh 都要 1M,MacOS 平台),且能和 C 语言非常好的互动。Lua 解释器源码,可能是大家见过的最干净 C 代码。
Lua 是类 C 的,所以,大小写字符敏感。Lua 脚本语句分号是可选的,这个和 GO 语言很类似。
Lua 并没有提供强大的库,这是由 Lua 的定位所决定的。所以,Lua 是不适合作为开发独立应用程序的编程语言。
Lua 脚本很容易被 C/C++ 代码调用,也可反过来调用 C/C++ 函数,这使得 Lua 在应用程序中可被广泛应用。Lua 不仅仅可作为扩展脚本,也可作为普通配置文件,代替 XML、ini 等文件格式,并可更容易理解和维护。
一个完整的 Lua 解释器不过 200k,在目前所有脚本引擎中,Lua 的速度是最快的。这一切都决定了 Lua 是作为嵌入式脚本的最佳选择。
可通过交互模式运行 Lua,也可以用记事本编辑代码,保存为 .lua 的格式,通过 lua 编译器运行。也可通过第三方工具,将 lua 打包独立运行。
Lua 的目标是成为一个很容易嵌入其它语言中,所使用的语言。大多数程序员也认为它的确做到了这一点。
很多应用程序、游戏,使用 Lua 作为自己的嵌入式脚本语言,以此实现可配置性、可扩展性。这其中包括:魔兽世界、博德之门、愤怒的小鸟、VOCALOID3、太阳神三国杀等。
Lua 应用场景:游戏开发、独立应用脚本、Web 应用脚本、扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench、安全系统 (如:入侵检测系统)。
Minecraft 中的电脑模组(ComputerCraft):所有电脑和turtle(机器人)代码都是基于 Lua 的,你可用它们与有 (无) 线路由器、打印机、磁盘驱动器、(黄金) 显示器互动。
Adobe Photoshop LightroomLightroom是 Adobe 公司的一款摄影后期处理软件,最开始的版本由 Shadowland 代码编写,后期版本部分使用 Lua 实现,Lua 代码占到代码总量的 63%。
金庸群侠传 lua 复刻版这个游戏,游戏迷们想必都玩过了。牛人用 lua 脚本重新弄了下。
魔兽世界其插件用的是 lua。
仙剑奇侠传五解压游戏到资源目录,可看到游戏到脚本全部是使用Lua 语言编写的。
Python 编程语言
Python([ˈpaɪθən])是一种面向对象、解释型计算机程序设计语言。Python语法简洁、清晰,具有丰富和强大的类库。
Python源代码遵循GPL(GNU General Public License)协议,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。
Python常被称为胶水语言,能把用其他语言编写的各模块(尤其是C/C++)轻松地联结在一起。常见情形是,用Python快速生成程序原型(有时甚至是程序最终界面),然后对其中有特别要求的部分,用更合适的语言改写;譬如:3D游戏中的图形渲染模块,性能要求特别高,就可用C/C++重写,而后封装为Python可调用的扩展类库。需要注意的是,在您使用扩展类库时可能需要考虑平台问题,某些扩展类库可能不提供跨平台实现。
从20世纪90年代初诞生至今,Python逐渐被广泛应用于处理系统管理任务和Web编程。
设计者开发Python时总的指导思想是:对于一个特定问题,只要有一种最好的方法来解决就好了。这在由Tim Peters写的Python格言(称为The Zen of Python)里面表述为:There should be one--and preferably only one--obvious way to do it.

这正好和Perl语言(另一种功能类似的高级动态语言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。
Python作者有意设计,限制性很强的语法,使不好的编程习惯(譬如:if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是Python的缩进规则。
和其他大多数语言(譬如:C)的一个区别是,一个模块的界限,完全是由每行的首字符在这一行的位置决定的;而C语言是用一对花括号{}明确定出模块边界,与字符的位置毫无关系。
这一点曾引起过争议。因为,从C这类的语言诞生后,语言的语法含义与字符的排列方式就分离开来,曾被认为是一种程序语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等,所有需要使用模块的地方),Python确实使得程序更加清晰和美观。
Python社区提供了大量第三方模块,使用方式与标准库类似。它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,并且大多成熟而稳定。第三方模块可以使用Python或C语言编写。
SWIG,SIP常用于将C语言编写的程序库,转化为Python模块。Boost C++ Libraries包含了一组库,Boost.Python使得以Python或C++编写的程序能互相调用。借助于拥有基于标准库的大量工具、能够使用低级语言如C和可作为其他库接口的C++,Python已成为一种强大的应用于其他语言与工具之间的胶水语言。
1989年圣诞节期间,在阿姆斯特丹,Guido van Rossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python(大蟒蛇的意思)作为程序名,是因他是一个叫Monty Python的喜剧团体的爱好者。
ABC是Guido van Rossum参加设计的一种教学语言。就Guido van Rossum本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但ABC语言并没有成功,究其原因,Guido van Rossum认为是不开放造成的。Guido van Rossum决定在Python中避免这一问题。同时,他还想实现在ABC中闪现过,但未曾实现的东西。
就这样,Python在Guido van Rossum手中诞生了。可以说,Python是从ABC发展起来的,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响,并且结合了Unix shell和C的习惯。
Python已成为最受欢迎的程序设计语言之一。2011年1月,Python被TIOBE编程语言排行榜评为2010年度语言。2004年后,python语文的使用率是呈线性增长的。
版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。

页: [1]
查看完整版本: Google AlphaGo 之 DeepMind 公司招聘编程语言要求 C/C++ Lua Python