小米的抱负

本文是翻译,版权归原作者所有

原文地址(original source):http://stratechery.com/2015/xiaomis-ambition/

中国智能手机公司小米,上个月完成了11亿美元融资,总估值达到450亿美元,小米不仅仅卖智能手机:Mi.com拥有超过1000件商品,它是中国第三大电子商务站点。尽管如此,有一种商品它没有卖,那就是AA电池【注1】充电器。只有苹果有卖:

苹果的电池充电器

我清楚地记得这个相当古怪的产品出现时的情景,不是因为它非常有魔力或革命性,而是因为一个同事恰好在第二天就拿着它。他向我们夸耀其充电效率和“待机自耗电(vampire draw)”,令人好奇的是,他没有提及他为什么真正地需要这款电池充电器。他买是因为它由苹果制造,这就足够了。

小米是什么?

在写到小米的时候,会有一些陈词滥调。作者声称小米以“中国的苹果”而知名,但实际上,正如作者解释的,它们有着很大的不同:更像亚马逊、或使用小米CEO雷军的话,有点儿像Google。它们以成本价或接近成本价卖智能手机,通过服务来赚钱。

围绕小米的大量评论的问题,在于准确地定位那些“服务”是什么。简单的假设就是传统的互联网服务,比如Google提供的服务,包括app商店、在线门户,等等。这样的话,难以符合450亿美元的估值,尤其是中国的移动服务的大部分收入正在被腾讯的主打应用微信、还有百度(搜索)、阿里巴巴(电子商务)、苹果(应用商店)瓜分了,各种中国的app商店分占了剩余的份额(小米有自己的app商店,但是它仅仅处于前5名最受欢迎之列)。

水平与垂直

在写作本文的早些时候,我花了大量时间讨论像苹果这种垂直业务模型和像Google这种水平业务模型的区别。苹果提供服务作为一种方法,来差异化他们的硬件,他们为了盈利在销售硬件;他们是独有的。另一方面,Google想让他们的服务接近每一个人,不管他们在用iOS还是Android。

小米属于哪一种,还不是马上就能看清楚。毕竟,小米可免费获得的Android ROM MIUI,本身是能够访问所有小米其它服务的一种服务,可用于其它制造商的Android设备。这貌似是一种水平的贡献。另一方面,小米的大部分营收来自于手机销售,这表明了一种垂直业务模型。他们处于无法区分的中间情形吗?

我不这样认为,答案回到了我同事的电池充电器。

米粉

在2013年,当小米宣布小米电视时,很多观察者受到了震动。当小米发布互联网路由器时,就没有那么惊奇了,但是去年秋天宣布空气净化器时,这种震动又回来了,似乎净水器也在计划中了;所有都和MIUI有关。当宣布小米电视时,雷军说了一句有意思的话:“我们想做我们的粉丝使用的第一台电视。”

理解米粉对于理解这家公司是至关重要的。纽约时报上个月在公司简介里抓住了其发烧的意义:

竞争对手魅族副总裁李楠,早在2000年左右就发展过数字音乐参与者,目标客户比小米年龄稍大、更富有,他把小米支持者的忠诚比喻成宗教。

“米粉有着高级别的组织,”他说。“他们热爱小米,这是一种崇拜的表现。”

韩宇,24岁,正在读研,是其中一名崇拜者。和成千上万的其他人一样,他寻找bug、提供建议,以帮助小米测试UI。韩先生审核这家公司在线论坛的一些页面,论坛平均每天有200,000个帖子,这是粉丝与公司互动的阵地。

他的大部分个人生活和小米有关,他说,他用这种方式认识了很多朋友。他说,当他的创建一个私人图片文件夹的建议被小米在手机上采纳时,他感到自豪。

“我真的享受这种参与感,”韩先生说。

注意,韩先生年龄:24岁。这与Flurry去年夏天提供的数据吻合

小米消费者在13-17岁、18-24岁和25-34岁区间高于指数,在35-54岁和55+岁区间低于指数。这份数据显示,小米设备在中国年轻群体非常受欢迎,尤其是在校大学生和刚刚参加工作的年轻人。

小米用户群体年龄区间统计

本文没有提到韩先生住在哪里,但是他极有可能和父母生活在一起。这是中国的特色(还有很多亚洲国家):孩子和父母住在一起,一直到他们能够负担得起买一套自己的住所(租房是不被认同的)。实际上使得这些客户相当有价值:和那些需要支付自己的房子、水电、食物等所有费用的人相比,他们倾向于有着更多的可支配现金,小米提供的广泛配件恰恰利用了这一点。

更有意思的是,当韩先生和他的朋友最终找到了自己的住所之后,会发生什么。他们将需要购买电视、空气净化器以及各种(相对)高价商品。你认为他们会选择什么牌子?如果苹果能够卖给我同事一个电池充电器,那么我将非常肯定小米能够卖给韩先生一台空气净化器,迟早会卖给他的新房子所需要的每样东西(大多数这些商品将由小米投资的第三方制造)。

卖小米的生活方式

这是理解小米的关键:他们不是想卖智能手机,他们更想卖一种生活方式,生活方式的关键是MIUI,它是连接所有这些产品的、小米的软件层。

实际上,你应该认为,小米真正是第一家“物联网”公司:与Google(Nest)、苹果(HomeKit)、甚至三星(SmartThings)不同,他们提供某种开放SDK来连接一切(有个规律,他们大部分客户已经有设备了,近期不可能更换),而小米本身是集成所有、并在mi.com售卖人们需要的一切产品,目标是准备首次装修他们房子的米粉群。这绝对是一种垂直战略——毕竟公司和苹果类似——小米的产品供应要比分析师Gene Munster 能够想象得到的任何产品还要宽泛。雷军谈论的服务——尤其是MIUI和mi.com——在卖产品并把它们联系在一起,但是它们最终都是小米的产品。

当然,粉丝群集中在世界上大多数人口众多的国家。

这种战略也解释了小米的国际化扩张战略:印度,世界上人口第二大国,已经在进行中了。人口第四大国印尼刚刚启动。巴西(人口第五大国)即将到来。的确,美国(人口第三大国)近期不会有计划,但是为什么要烦恼呢?苹果有粉丝,每个人都有设备了,是的,还有一点儿IP问题。

小米的挑战

我认为,小米的抱负远远超过了大部分人所意识到的。这家公司不单单想成为智能手机市场的主力队员,虽然智能手机曾经是最大、最赚钱的产品分类之一。他们想要整个房子,如果说这种描述过于限制了雷军的抱负,我不会感到惊奇。尽管如此,存在着重大的挑战,大部分将回到产品设计上。

短期内,如果小米的产品过于“恭维”市场上的其它产品,那么这实际上不是一个巨大的市场问题;知识产权的严肃性不是西方文化所独有的。在中国,和很多亚洲国家一样,发明、甚至创新的纯粹行为都被认为属于社会;参观任何中国博物馆,你可以通过重要人物显示其赞美的印章数量来计算一幅字画的价值:

古代字画的价值估算和印章的数量

据我看来,我或许加上,这也不是一个大的道德层面的问题:真相是,美国和中国的今天一样,在知识产权崛起的期间也是残酷的,我对于发展中国家更多地报以同情,西方正企图上房抽梯:没有人去说欧洲或美国应该对于污染、或知识产品、或工人权利负责,这恰恰是西方对世界其余国家所做的。这不会让它“正确”,与抱怨者易于承认的“小米是山寨”相比,这“恰恰”产生了更多的灰色。

随着你考虑这家公司的国际化前景,小米的原创问题——或缺乏——变得更加明显了。你从中国得到的越多,影响力就越少,这是难以捉摸的,就像雷军的名声、火热的产品发布会、小米的强大社交媒体展示等。而且,随着小米越来越被迫依赖第三方零售商(即便如此,小米仍然只走线上渠道),成本也开始上升。如果小米想创造他们在中国已有的同种类型粉丝——这种米粉把房子做成小米的房子——那么,他们需要依赖其产品。山寨是不会起作用的。

尽管如此,可以肯定的是,小米最近还不会转向西方。不仅仅授权费高得难以接受,而且西方已经有了完全装修好的房子和巨头品牌。其它地方的机会更大。一家公司能够值450亿美元绝对是事实,从长期看,很可能更多,甚至都不用转向美国或西欧。

小米和中国

从长期看,小米的影响或许被证明更加难以理解,和这家公司最终让其投资者赚了多少钱相比,其影响有着更为深远的意义。已经有很多大型的中国公司了,甚至有的已经走向了国际化,但是从来没有一家大型的、属于中国人的消费品牌能够在国外产生共鸣,某种程度上,是因为很少有品牌能在国内产生过共鸣。

事实上,当小米粉丝时代到来的时候,还有更多表面上看不见的东西。年长的中国人——超过30岁的、低于指数的小米用户——传统上看不起他们自己国家的品牌,认为它们便宜、二流货。他们是在销售上取得巨大成功的苹果和所有西方奢侈品公司的受众群体。尽管如此,还有年轻的一代,小米的一代,在这个国家以接近两位数的速度成长着,他们一直是活跃的。当然,对于他们而言,中国是世界大国,他们为什么不愿意拥抱中国品牌呢?小米正在挖掘这种民族主义倾向,他们吉祥物帽子上面的红星不会缺乏寓意。

小米的吉祥物-米兔

毫无疑问:中国人自己一直是小米最大挑战,他们已经轻松地赢得了一个又一个胜利。不要低估他们在其它发展中国家的潜力,中国是广阔的,这个世界要远远大于西方。

  • 注1:AA、AAA以及C、D、SC等都是说明电池型号的。例如:AA就是我们通常所说的5号电池,一般尺寸为:直径14mm,高度49mm;AAA就是我们通常所说的7号电池,一般尺寸为:直径11mm,高度44mm。

— END —

译文:小米的抱负 》| 腊八粥

黑客是真正的10倍效率的工程师

本文是翻译,版权归原作者所有

原文地址(original source):http://coffeecoder.net/blog/Hackers-are-the-real-10x-engineers/

10x(10倍效率)程序员的概念首次被佛瑞德·菲利普斯·布鲁克斯二世(布鲁克斯法则的名气)【注1】在其文章《没有银弹》中提出,‘在普通设计师(程序员)和优秀设计师(程序员)之间,有着10倍多的差异’。这个想法得到了广泛讨论,有时候还被驳斥,多数情况是得到了支持,这种现象不会让人吃惊,因为不可能精确地衡量一名程序员的生产力。

令人悲哀的是,10x程序员经常被视作粘到屏幕上的瘾君子,在键盘上一刻不停地移动手指。这种画面在科幻电影里或许受欢迎,但是它很难等同于现实。

在我之前的公司,我们需要一个系统,在现有网站为富文本文章集成增删改查(CRUD)系统,这意味着要创建很多表单,还有耗时费力的编码过程;总之是个悲催的工作。我们已经有一个WordPress博客了,因此我建议可以使用带有某个插件的WordPress,该插件支持JSON格式输出文章以及自定义标签来定位文章显示的地方。只需两天就能完成所有工作。

我不敢说这一定是格外优秀的想法,但是它为公司节约了一周多的时间。我不是说我自己就是10x的家伙,但是我相信这种想法就是10x所定义的。

构思想法

在认知层面,几乎不可能描述数十亿神经细胞的复杂交互是怎样导致诸如“想法”之类的东东。让我们尝试一种更为简单的抽象。

  1. 我想,WordPress已经有了完成我们全部需求的功能,我们只是需要一种将其集成到网站的方法。
  2. 我意识到,由于WordPress插件的无所不包,所以也一定有个支持JSON API的插件。
  3. 我把第一点和第二点联系起来了。

由科幻作者Jssac Asimov在1959年的文章《人们是怎样产生想法的?》精确地描述了一种抽象。

优秀的程序员

黑客是真正的10倍效率的工程师

“优秀的程序员在周末研究Haskell,掌握很多语言,对每种新技术都要尝试的狂热者”。至少貌似是优秀程序员的、严密的见解——重度坚持、横向挖掘。我不是要阻碍这种激情,我也没有宣称它适得其反,但是我相信,它给你的进展(你非常优秀)留下了负面印象。很明显,你只是找到了多种方法来达到相同的目标。

10x程序员

谁才是这些10x程序员呢?我相信他们在寻找解决方案时,有着更好的想法,他们是如何得到这些想法呢?对我而言,做不同的事情,阅读其他人写的作品,深挖进去,最重要的是具有持续挑战个人当前综合技能的动力。

优秀的想法产生于抨击不同的东西,用不寻常的方法重塑它们。找到这种方法,除了知道最近流行的东东,还要求更多东西,它需要很多‘hacking’【注2】。正如Edward Weismann在他的免费电子书中《The Best of edw519》所讲述的,“我遇到‘有名的’黑客越多、从这种社区会见的人越多(线上和线下),我就越意识到,并没有太多东西能够把我们分隔开”,才华的激励来自于挑战极限。

10x工程师不是天生的,而是最享受‘hacking’。理解比特币协议或JavaScript原型、或者自动化一个费力的过程,让他们感到兴奋,他们hack得越多,做的不同东西就越多,新的和好的想法的种子就被播种得越多。

但是为什么他们如此稀缺呢?简单的原因是,对于超过自身眼界的事情感兴趣的人不多。很多人想做游戏,但是实际去做的有多少人呢?更重要的,实际完成的又有多少人呢?相当少,我相信。我没有暗示缺乏才华,但是笨拙的决定或许阻碍了人们通向进步的道路,对于大部分人来说的确如此。

因此,如果你喜爱摆弄东西,能够总是要求自己超越已知的东西,我相信你就是一个10x开发人员。

到了2015年,为什么我们仍然在写不安全的软件?(节译)

本文是翻译,版权归原作者所有

原文地址(original source):http://www.jerf.org/iri/post/2942

我已经看了大量编程方面的博客,如果你在看本文,那么你可能也看了很多博客。让我预先告诉你,这不是你通常的、归结为“再加把劲儿!”的安全论调。让我们讨论一下聪明的、有经验的程序员,他们正在尽量编写安全的代码,即使他们本身不是安全方面的“专家”。这是重要的一群人,因为世界上要写的安全相关的软件,比能够被安全专家编写的软件要多得多。

在一个理想的世界,假定为目标群体将结束本文。你的浏览器滚动条出现在全屏视图里,本文还要继续一段时间。唉,数十年的经验和被训练过的相当高的智商,对于在当前编码环境里去编写安全的软件,仍然是不充分的。

这也是最高量的资历,可能承受任意合理的规模,那么,实际上这等同于说,在当前编码环境编写安全的软件是不可能的。

让我们讨论下为什么这么难。我的观点很简单:

我编写不安全的软件,因为我们的编码环境造成的,它使得编写不安全的软件比编写安全的软件更加容易。

不过搞清楚它的真正涵义,会把你带到一些让人惊奇的地方。当我尽量向你展示为什么这不是一般地真实的时候,请跟着我,不过实际上,这是彻头彻尾地真实。我们不是偶尔使用不安全的工具,比如被破坏的加密程序、或滥用web框架;我们是在不安全的海洋里游动的鱼儿,我们侵泡得有多深就很明显了。

首先,我必须确认……

编写安全的程序是有难度的

我们在工作中都有有限的感知预算。我们多么想拥有摇滚歌星或武士的神秘力量,可惜我们都不是。不管我们变得多么有经验,用3个token而不是100个,以花费较少的感知预算。想少些努力而尽可能完成一个任务,这不是“懒惰”,而是认识到资源总是有限的事实。

他们需要多少感知上的努力来编写代码,对此去检查一下编码环境,这是合理的事情。用这种方式彼此比较环境,是合理的。与工具无关、唯一相关的是程序员的技能,这种想法的论调要抛弃掉,这是合理的。

(花絮:在编程界,因为某种原因,大家对于格言“笨拙的工匠才会责怪他的工具”有着通常的误解,他们认为责怪其工具的人恰恰被证明为笨拙的工人。这句话的真正意思是,把糟糕工具放在首位的工匠才是笨拙的。技能娴熟的工匠不会毫无怨言地使用钝锯子。他们会毫无怨言地找到或做一把好锯子。使用笨拙工具而没有抱怨的工匠,甚至比只是抱怨的工匠还要糟糕!)

这里我们遇到一个问题,客观地测量一种语言所引起的认知成本,变得困难了,但是我认为,在实践中,“token数”足够接近,在某种程度上这不是真实的,随着时间的发展,它越来越真实。(不幸的是,证明这一点将在另一篇文章介绍。超短版本:按照佛瑞德·布鲁克斯【注1】的观点,在使用的常用语言,正在挤出它们偶尔的复杂性。因此让我再次强调:足够接近,而非完美。)因此大体上,正如我下面要讨论的“轻松”和“工作”,你能够想象得到我正在讨论的“token数”。

毕竟它是小型的、世界范围内可写的变量

让我们温习一个没有争议的例子吧,认知上昂贵的正确事情,是如何导致开发人员去做简单的错误事情:全局变量。正如我之前说过的

所有程序员口头上都认为全局变量是糟糕的,然而神秘的是,即使没有人写过它,它们还是继续出现在代码库和资源库里(我谴责邪恶的代码精灵)。

现在我将解释为什么它们一直都出现。

(破坏者:它不是代码精灵。它们仅仅对tab和空格的混杂、以及偶尔的无礼的注释负责。)

我认为那是由于所有语言让全局变量单独成行,剩下的工作使得它比任何正确的工作要容易得多。

此时,文章结构似乎要让我向你展示设定一个全局变量是多么容易的例子,但是在大部分语言里,它是如此该死地琐碎,以致于羞于展示。但是不要说我接受的正规教育被浪费了,因此一味遵从其准则,就是:

variable = "value";

JavaScript可以直接使用它。在Python里,分号是不相关的、但它能用。我怀疑只需两到三个token,我就能搞定大部分命令式语言。甚至对于要求更多的语言,比如Java,和做其它事情也是一样容易,因为不管你做什么,你将口口声声地说到class。

同时,用全局值去做“正确”的事情是相当有难度的。它不得不被收集,并在各种难度的前提下传递,潜在地能够深入到数百行代码里,如果你需要修改传递的类型,这就不是一个简单的问题了,这就是证据。没有人“想”使用全局变量,但是如果你想使它比本地“正确答案”更加便利,不管怎样,程序员将会使用它们。甚至Haskell程序员们也抵制不了这个诱惑unsafePerformIO $ newIORef 0。

相反,在很多语言里做正确的事情,超过了本文要讨论的,因为它充满了折衷,一定也涉及了很多token。但是既然文章结构说到了这里,这里就是我为Go语言做的。看看它是多么容易地去做正确的事情,我都快眼晕了,然而,不可避免地它就是这么一行。(例如,Go里的全局变量是:

var Global = "value"

放在最顶层。一个var token被加上了,名字不得不以大写字母开始。仍然比任何“环境”的使用简单。)

我借这个机会尽量去评判这个例子中的“token数”的标准吧。当我们衡量一种语言在语法上怎样简单时,我们能够分解出“开发者能力”的问题。我们可以只是批评开发者做了错误选择,我们还能批评环境,因为它使得做错误选择太有诱惑。每个人都迷失了!

开始这个话题的优势在于,很少有人愿意公开赞同全局变量,大部分人都和我一样,认为他们更容易把事情“做对”;我傲慢地对着剩下的人挥了挥手。在我开始有意思的讨论之前,请允许我花点儿时间重述一些我在这个没有争议的例子中的主要论点:不管我们都知道一个刚刚好的事实,它们更容易把事情做对,这是错误的,我们仍然看到了如此多的全局变量。同时这可能听起起来还算明显,但是请注意,此时此刻所有事情都确定了,我们都在看待相同的事物,那就是我们正在盯着一个兔子洞。

现在请穿上你的蓝衣服和白围裙,咱们开始吧。

哦……额……只需和平时一样,这是互联网,我看不到你。

(译者注:以下略去,有兴趣的读者可以自行阅读)

  • 注1:佛瑞德·菲利普斯·布鲁克斯二世(英语:Frederick Phillips Brooks, Jr.,1931年4月19日-),又译为弗雷德里克·布鲁克斯,生于美国北卡罗来纳州德罕软件工程师、学者,曾任万国商用机器公司(即IBM公司或国际商务用机器公司)系统部主任,主持开发过OS/360等大型电脑(计算机)用的操作系统软体。后来,布鲁克斯离开IBM公司,任教于北卡罗莱纳大学教堂山分校,担任计算机科学Kenan讲座教授,并著书立说。他所著的《人月神话》一书,被视为是软件工程的重要书籍之一。为1999年图灵奖得主。http://zh.wikipedia.org/wiki/%E4%BD%9B%E7%91%9E%E5%BE%B7%C2%B7%E5%B8%83%E9%AD%AF%E5%85%8B%E6%96%AF

用HTML书写华氏温度的4种有效方式

本文是翻译,版权归原作者所有

原文地址(original source):http://robb.weblaws.org/2015/01/19/degrees-of-freedom-four-valid-ways-to-write-degrees-fahrenheit-in-html/

我在我的创业公司食品安全评分网站上班,编写过滤导入文本的代码,比如下面的文本:

DELI DISPLAY COOLER HOLDING CREAM CAKE AT 44.6F BUT LOWER CORNER OF UNIT HOLDING FOODS @ 39F

我们决定在尽可能不改变内容的前提下,使其易于阅读。因此,过滤后的文本应该有优化的大小写、标点符号和排版:

用HTML书写华氏温度的4种有效方式

有意思的地方在于温度。首先,我翻了翻样式指导,因为我意识到我甚至不知道温度应该怎样加注标点;比如,内部应该有空格吗?美国国家地理学会的样式手册非常适合我。它规定在最终数字和度数符号之间没有空格

F是华氏温度的缩写:32°F(没有空格,也没有标点符号)

我随后找到了四种不同的、用HTML书写度数的有效方式,它们都产生了同样的结果:

策略 代码 截图
华氏温度度数的HTML实体 #&8457; 1
F带有普通F的度数符号的HTML实体 °F 2
华氏温度字符的Unicode度数 3
带有普通F的Unicode度数符号 °F 4

注意到第四种选择看着最优,且最容易在HTML代码里识别到。这正是我想要的。

面向医生的编程—速成课程

本文是翻译,版权归原作者所有

原文地址(original source):http://programmingforphysicians.com/

欢迎阅读这份关于编程的速成课程,其受众人群是医生。为什么是医生?因为从历史角度看,医生不是最有可能学习计算机编程的职业,然而,当代能够说计算机语言(至少在某种程度),对于总体科学研究技能而言,是一个受欢迎的加分项,尤其是数据科学。早些时候,我写过一篇评论文章“为什么医生可能想学习计算机编程”,阐述了我是如何考虑这个观点的。

简而言之,计算机编程有三个主要部分:

  • 数据输入
  • 数据操作
  • 数据输出

注意,这是一个高级的、非常笼统的综述。输入可以是用户输入的一些文本、鼠标点击、在移动设备上的触碰和手势、从磁盘载入的文件、来自web的数据库,甚至自动化输入(例如,在某个特定时间触发代码)。输出也可以是一些文本、图像、声音、视频、或任何你能想象到的、将被发送给用户或某些服务器的东东。

正如你猜测的,数据操作是较有意思的环节,会有魔法发生。实际上,没有太多的魔法。粗略地讲,数据操作也有三个主要部分:

  • 计算
  • 条件语句
  • 循环

变量是你能够用来存储信息的参数。当我说“存储”时,我没有显式地指出“存在磁盘”或“存在线上”。首先,它意味着保留(或者如官方的叫法,分配)你计算机上的某些(工作)内存,你可以把信息临时放在那里。代码被执行后,当你不再需要它时,变量就从内存中擦除了。如果你想存储某些信息(存到磁盘、闪存盘或远程服务器上)供日后使用,你不得不明确地去实现。顺便说一句,本教程没有涵盖后者。但是了解它是有好处的。对于当下,变量是你经常用来操作的某种参数。

我猜,计算更像是自解释的。从历史角度看,计算机被开发为高级计算器,仅在后来才添加了其它功能。计算不同于简单的数学,更多的是复杂的处理,但本质相同。

条件语句,正如它的叫法。对于护士而言,你可能说,如果病人温度高于39摄氏度,那么你想预定血培养(blood culture),否则他们应该在两小时后再次测量体温。条件语句,或“if-else语句”,用于在程序里做决定。

循环被用于重复的语句。计算机在多次重复同样任务上,要比人类强很多,循环就是因此而产生的。有两种循环,所谓的for循环和while循环。我们将详细谈到它们。

随着编程规模的扩大,你需要一种方式来组织代码。函数是避免重复代码的方法,在更大型的项目里,你能够针对性地使用模块(module)或类(class)。我们来一窥函数,按照我们的方式使用一些内置模块。

注意:模块和类是不一样的。模块本质上只是带有一些函数的文件,而类被用于叫做面向对象编程(OOP)的编程风格里。OOP不在本教程范围内。

在本教程里,我们将使用编程语言Python。它有着非常直接和可读的语法,开源、可完全自由使用,当你掌握基础之后,你就能发现那些使用起来比较有意思的科学上的模块。

好了,背景信息介绍得已经足够多了……让我们开始吧!

— END —

译文:面向医生的编程—速成课程 》| 腊八粥