阿里巴巴为什么要选择星际争霸作为AI算法研究环境?

阿里巴巴为什么要选择星际争霸作为AI算法研究环境?

大家下午好!我是来自阿里巴巴认知计算实验室的龙海涛,今天主要跟大家聊一下“《星际争霸》与人工智能”的话题。首先我会介绍一下为什么我们会选择《星际争霸》这个游戏来做人工智能前沿性的研究,然后是我们在这方面初步的尝试和成果,最后我会跟大家探讨一下,未来我们在《星际争霸》这个游戏里面还可以继续去研究的一些课题。

[外文翻译]100%正确的编码风格指导

[外文翻译]100%正确的编码风格指导

很多程序员喜欢争论代码风格。别否认哦,类似的话题总能吵起来。Bill Sourour 认为:代码风格没有绝对的对错,只要团队代码风格统一就行了。Bill 觉得比较安全的做法:① 通过工具自动规范代码风格;② 参照名声好的大公司使用的代码风格。

码农不重视文档:开源项目深受其苦

码农不重视文档:开源项目深受其苦

GitHub 刚刚发布了《2017 开源调查》报告,这家知名编程社交网站走访了 github.com 社区内 3800 多个项目和超过 5500 名成员,并且与 500 名在 GitHub 项目生态系统之外的编程者们进行了交谈。本次调查涉及多方面,比如人们在为开源项目做开发、做贡献时遇到的问题,结果有 93% 的人对“不完整或令人困惑的文档”感到非常沮丧。

代码是怎么一步步变成可执行文件的?

代码是怎么一步步变成可执行文件的?

语法树从顶至下遍历,翻译成LLVM 中间代码,作为前后端的桥接语言,是Clang 编译器前端的输出,LLVM 编译器后端的输入。
中间代码一般已经非常接近目标代码了,但跟目标机器和运行时环境无关。
同时,一个重要的作用是与 OC Runtime 进行桥接

一个GIF表情搞死微信!最强技术分析在此

一个GIF表情搞死微信!最强技术分析在此

这个问题的根本原因是微信实现了自己的GIF解析功能,但由于对输入数据的校验不严格,导致异常的数据被解析,引起崩溃。在5月17日当天,这个GIF开始流传后,微信似乎在服务器端做了屏蔽,使得这个GIF无法被正常接收,但我们只要随便修改一下GIF中的任意一个字节,就能绕过这个屏蔽措施。同时由于iOS应用上架需要经过苹果审核,需要额外耗费一定时间,这就使得这个Bug即使修复后,所有用户也无法立刻更新。

[外文翻译]虚拟机与Docker有何不同?

[外文翻译]虚拟机与Docker有何不同?

Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。

Node.js v8.0.0 正式发布,带来大量更新

Node.js v8.0.0 正式发布,带来大量更新

Node.js 8.0.0 使用了 V8 5.8,这是 JavaScript 运行时的重要更新,其中包括性能方面和面向开发者 API 的重大改进。对 Node.js 开发者来说最重要的是 V8 5.8 保证与 V8 5.9 和即将推出的 V8 6.0 具有 ABI 的向前兼容性,这将有助于确保 Node.js 原生插件生态系统的稳定性。在 Node.js 8 的生命周期中,会计划升级到 5.9 甚至 6.0。

谷歌大牛说:为什么 Kotlin 比你们用的那些垃圾语言都好

谷歌大牛说:为什么 Kotlin 比你们用的那些垃圾语言都好

说真的,其实我不想去攻击你们的语言信仰……至少不会“大大地”想。毕竟你喜欢的语言大放异彩的时期,可能要追溯到冰川时代了,对不?如果你喜欢的语言到今天还没有死,那只能说明这门语言在逐渐地改进和更新,保持与时俱进。

代码实例展示Java和Kotlin有哪些区别?

代码实例展示Java和Kotlin有哪些区别?

自从谷歌 I/O 2017宣布将支持 Kotlin 作为 Android 开发的 First-Class 语言,相信各位程序员的朋友圈都被Kotlin的消息轰炸了吧,支持Java的“守旧派”认为Java将稳坐霸主地位不动摇,支持Kotlin的“维新派”认为Kotlin很可能会把Java拉下马。其实,笔者认为新语言的出现对于程序员来说并不是一件新鲜事儿,程序员始终践行着“活到老,学到老”,真正能够对程序员产生影响的新语言的使用和性能。

[外文翻译]区块链是新的Linux 而非新的互联网

[外文翻译]区块链是新的Linux 而非新的互联网

但我还是忍不住要看看加密货币当前的发展状况,看看它们的实际价值是在哪里。我说的并不是对于投机者的金融价值;我是说对于用户的效用价值。因为如果没有人实际想要使用区块链协议和项目,那么那些本应反映其价值的代币最终会一文不值。

程序员与代码的几种关系,每种都会被我们鄙视

程序员与代码的几种关系,每种都会被我们鄙视

其实,只要作为程序员的你,将与代码的关系联想到我们人类,你会发现很多有意义的关系。

用Python破解斗地主残局

用Python破解斗地主残局

这道题我刚看到时,曾尝试用手工来破解,每次都以为找到了农民的必胜策略时,最后都发现其实农民跑不掉。由于手工破解无法穷尽所有可能性,所以这道题究竟农民有没有妙手跑掉呢,只能通过代码来帮助我们运算了。

[外文翻译]Go 很好,为什么我们不使用它?

[外文翻译]Go 很好,为什么我们不使用它?

我移植的项目是使用 Redis 实现的一个非常小的 REST API。它只是一个简单的缓存系统,把“不活动的”数据移动到磁盘上,而把“活动的”数据保留在 Redis 中。我需要一个简单的方法来分发这个 API 并配置 Redis 服务器,使其不会消耗大量的内存,并保持快速。使用 Go 后,发现它的 Spoiler Alert 非常适合这样的需求。

Linux版“永恒之蓝”远程代码执行漏洞技术分析

Linux版“永恒之蓝”远程代码执行漏洞技术分析

满足以上条件时,由于Samba能够为选定的目录创建网络共享,当恶意的客户端连接上一个可写的共享目录时,通过上传恶意的共享库文件,触发漏洞使samba服务端加载并执行它,从而实现了远程代码执行。根据服务器的配置情况,恶意代码还有可能以root权限执行。

TDD怎么啦?为什么这么多人不喜欢TDD?

TDD怎么啦?为什么这么多人不喜欢TDD?

最近又有一个同事和我讨论TDD并质疑TDD是否真的有用,已经记不清是第几次类似的讨论了,前段时间王垠的一篇关于 AI 的文章中也顺带黑了一把 scrum 和 tdd,作为一个坚持实践 tdd 的tdd粉,我觉得应该深入讨论下这个问题,有时候听一听不同的意见,反而能让我们看的更加清楚。

资深程序员:给Python软件开发测试的25个忠告!

资深程序员:给Python软件开发测试的25个忠告!

更小,更严格的单位测试在失败时提供更有价值的信息。通常,运行超过0.1秒的测试不是单元测试。单元测试可以提供更具体的错误信息,关于单元测试实践一本不错的书是Gary Bernhardt的Fast Test, Slow Test。

[外文翻译]我们的程序代码被偷了!

[外文翻译]我们的程序代码被偷了!

不久之后,我们收到了一封邮件,是攻击者发来的,邮件里附带了一些我们的源代码,他们要求我们支付巨额的比特币作为“封口费”,这笔封口费的数额达到足以让我们的公司破产。如果不支付封口费,他们就会公布我们的源代码。

JavaScript 中的 10 个机器学习示例

JavaScript 中的 10 个机器学习示例

最近一段时间,Web 生态系统发展迅速,虽然 JavaScript 和 Node.js 在性能上仍然不及 Python 和 Java,但它们也已经强大到足以处理许多机器学习的问题。Web 开发语言非常易用,它们在这一点上受益匪浅——你只需要在 Web 浏览器运行一个 JavaScript ML 项目即可。

量产型炮灰程序员

量产型炮灰程序员

当然也不少人质疑说,光骂培训班,那受过高等教育毕业的学生技术就一定好了吗?当然也不是这样的,事实上我国大多数高等学府的计算机教育也是无用的,甚至是有害的。中国大学在多次扩招后,除了少数几个学校,专业教育的大部分也不靠谱。许多学校安排了四年的课程,确实涉及了不少基础知识,但结果却本末倒置,觉得学生听不懂课上得简单,学生也没有好好学好。

这不是笑话:Stack Overflow 教会了一百万开发者如何退出Vim

这不是笑话:Stack Overflow 教会了一百万开发者如何退出Vim

今天早上,Stack Overflow上的一个提问迎来了里程碑:被浏览次数超过了100万次。这个问题就是“如何退出Vim编辑器”。五年来,这个问题已经被超过100万的开发者问过,他们都卡在了Vim里,在没有人帮助的情况下不知道如何退出。退出Vim编辑器甚至成为了开发者之间的一个笑话。

Linux kernel 的设计是否已经过时?

Linux kernel 的设计是否已经过时?

Linux 多年来取得的成绩毋庸多言。但最近,redditor 上有人发起了一个话题,想知道 Linux 的内核设计是否已经过时,并得到了一些有趣的答案。

[外文翻译]为什么你不用更好的编程语言重写它

[外文翻译]为什么你不用更好的编程语言重写它

有一些工具可以自动从一种语言转换为另一种语言。 他们可以帮助解决一些问题,但只能停留在第一步。 第二步和第三步的问题仍然存在,并且可能需要比手动转换代码带来更多的工作,因为通常手动转换会写出更多的人性化的代码。 令人遗憾的是图灵完备向我们揭示了不能有十全十美的事情。

为什么我反对追求测试覆盖率

为什么我反对追求测试覆盖率

我们已经有了一个极端的经验:开发有0个单元测试的项目,我们知道这样做所带来的痛苦。通常我们缺乏的是另一个极端的经验:开发100%代码覆盖率和一切都是TDD的项目。单元测试(特别是第一种方法)是一个非常好的做法,但我们应该分辨哪些测试是有用的,哪些是适得其反的。

程序员所积累的编程知识在十年后将有多少变得没用?

程序员所积累的编程知识在十年后将有多少变得没用?

翻翻历史,以前学过现在没用的技术实在是一大把,我承认技术是有 “道” 和 “术” 的区别,我写了十多年代码的时候以为 “术” 容易淘汰,而只有 “道” 就能长存,一旦掌握了恒久不变的道,就可以以不变应万变;而又写了十多年代码以后发现从更长的尺度上来看,并没有一成不变的东西。

章回体小说:真正的程序员

章回体小说:真正的程序员

今天我呆坐在这里,回顾我的整个编程生涯,我想弄清:成为解决真正问题的程序员,还是一切都这是完成工作。这两者是完全不同的。不管怎么样,小printf认为他不需要成为一个真正的程序员。我现在,也是这样认为的!