今日推荐 | 1024程序员节,扎克伯格配不配?

1024节日快乐!我们来看看扎克伯格作为程序猿的姿势水平究竟如何?

今天是10月24日,也是我们程序猿共同的节日!在这个普天同庆的日子,我们来看看Libra背后的创造者—Facebook创始人马克·扎克伯格的编程水平究竟如何?

1、马克•扎克伯格不是一个“编程天才”

电影塑造的天才形象

看过电影《社交网络》的朋友对于Facebook的起源的故事都会觉得:它最初是由扎克伯格在一周内完成的,作为哈佛大学的学生出于报复前女友的目的做了一个“Facemash”网站(它让人们根据学生的外貌比较和投票照片),还搞崩了哈佛大学的服务器!

对于不在软件行业的人来说,这个故事让Zuck像是计算机奇才——他在一个星期创造了Facebook。

今日推荐 | 1024程序员节,扎克伯格配不配?

并且在剧情中小扎还完爆“高富帅”Winklevoss兄弟!

  • Winklevoss兄弟还在训练时,扎克伯格的facebook已经上线了。

  • Winklevoss兄弟发出律师函时,facebook已经入驻了耶鲁大学、哥伦比亚大学和斯坦福大学。

  • Winklevoss兄弟去找哈佛大学校长告状时,facebook已经覆盖近30家学校,拥有近10万注册用户

  • Winklevoss兄弟还在英国参加亨利皇家赛艇会比赛时,facebook已经跨过大洋进入英国的剑桥、牛津大学了...

今日推荐 | 1024程序员节,扎克伯格配不配?

然而世界远不是剧情那样的发展

事实上,扎克伯格的专业是心理学,不是计算机科学。

Facebook网站的初始版本并不是特别复杂。

在编程方面,他的同行要比他排名高得多。扎克伯格的成功更多的在于他的个人坚持,努力工作,好的想法和运气,而不是他的编码能力。

而Winklevoss两兄弟就是凭借着当年跟小扎打官司赢得的6500万美元中的1100万买了比特币总数的1%,也就是21万枚!按照今天的比特币市价,这俩兄弟身价已经破十亿了。

今日推荐 | 1024程序员节,扎克伯格配不配?

随后他们成立了Winklevoss资本,不仅投资了多个区块链项目、发了稳定币、成立了数字货币交易所,甚至他们通过金融业监管局申请了经纪人经销商许可证——这将允许 Gemini 上线数字证券。

最让人大跌眼镜的是,Winklevoss资本还支持了一个名为Libracamp的新孵化器项目,其不隶属于LIbra协会或Facebook,而是专注于支持Libra的发展、增长和机遇的一个专家社区。

今日推荐 | 1024程序员节,扎克伯格配不配?

LibraChina社区孵化的web3.0隐私保护项目pLIBRA,目前就是Libracamp训练营最炙手可热的项目之一。

What a small world!

Topcoder结论

扎克伯格的同行不认为他是最高层次的程序员。

在TopCoder网站上——一个程序员修炼和比较网站——他只能排到第三级,也就是绿色等级。

今日推荐 | 1024程序员节,扎克伯格配不配?

而亚当·德安杰洛(Adam D’Angelo),作为Facebook不可缺少的前首席技术官——排在顶层“红色。”

2、从Jarvis看小扎的代码水平

说了半天,扎克伯格代码水平如何呢?

Javis项目介绍

2016年1月,扎克伯格宣布了他2016年的年度目标:他要打造一个人工智能系统,使用Facebook软件工具来管理他的家。AI是对Facebook未来至关重要的技术领域,新的开发目标也迫使他更新自己对编程和工作流程的经验。同时这又将他与工程师的日常经验和企业文化重新联系在一起。

作为Facebook CEO的职位并不允许他拿出六个星期的时间参加“新人再教育”,但是他依然用自己的业余时间做出了一个像模像样的AI(用的摩根弗里曼的声音非常的sexy)。

但是在2016年12月19日,扎克伯格在 Facebook 上发表一篇长文,详细介绍了他今年的人工智能项目研究成果,并邀请了部分外媒到他在自己家中感受这套智能系统。

Jarvis能完成的一些简单任务:

  • 个性化推荐:比如基于Zuck的喜好播放音乐,不算稀奇

  • 人脸识别:通过摄像头识别出人脸,并通过比照Facebook上的好友认出是谁

  • 对文字做基本的理解:主要还是通过检索关键字

  • 语音识别:能处理符合句式结构的简单语音,但还无法理解太口语化的句子

直接来看Zuck的Jarvis编程的代码片段便可知晓,这是用PHP外加Facebook的FBT写的。

今日推荐 | 1024程序员节,扎克伯格配不配?

Jarvis的编程实现使用了Python、PHP和Objective C。

这段代码是用PHP外加Facebook的FBT写就,总体逻辑:将异步task设置好(其中一个task就是做图片的人脸识别),另外从AI API中取得并设置好config,最后调用接口并且等待结果。

代码细节分析

以下内容节选自前facebook工程师覃超的知乎回答《如何评价扎克伯格自己写的 Jarvis AI?》

从代码逻辑来看,这应该是Jarvis的源代码。从代码细节看,作者的水平还行,但也不够完美。可以看出逻辑清晰但是代码功力不太够。这也合情合理,毕竟Zuck没时间保持一个高频次写代码的状态,所以肯定是“三天不写手生”。

1.

最开始两行:$task这个变量不需要,直接往 "image" => ... 这里灌即可;而且 $task 这个太泛的名字也没有具体含义。要不就改成:$facedetecttask,当然最好就直接放入map里算了。

2.

    api_config=nullthrows(SV_API_CONFIG::get());$api_config=$api_config['facer'];

    这两句写得一般,看起来有点学生时代写大作业的代码的风格;同名变量反复使用,另外对于null的检查不对称。

    3.

      if($algorithm==FacesConst::JARVIS_FACEREC){   $algorithm=FacesConst::RC_MODEL;}

      看到这段代码,我想很多程序员会哭笑不得。首先代码逻辑有点hacky,初步判断应该是 JARVISFACEREC 没来得及完成。。。所以赶鸭子上架暂时用 RCMODEL 来顶上;毕竟马上就Christmas和新年了,Zuck没做完也要先赶在deadline之前发布嘛。注意!我觉得这个态度和做事方式才是对的, 不要拖,也不要等到完美的时候才发布,因为一个项目一个作业永远都无法达到你想要的完美状态。正如Zuck自己之前在Facebook里强调:“Done is better than perfect!”

      4.

        $detection_tier=idx($api_config,'detection_tier');

        idx是一个helper method,其实就等于 $apiconfig['detectiontier'],但是用idx的好处是如果 $apiconfig 为空,那么 idx 不会崩溃,而是返回null,而 $apiconfig['detectiontier'] 直接触发异常。所以这里回头看,Zuck的80行写得并不好,最好写成:$apiconfig = idx(api_config, 'facer'); 对了,idx还可以支持第三个参数,就是默认值;如果这个key在map中没有的话,就直接返回默认值。

        5. 

          $config=awaitFaceDetectRequestConfig::gen($detection_tier,$algorithm);

          这句是技术含量最高的一句。

          FaceDetectRequestConfig::gen,这里gen代表generator,由于历史原因,Facebook的代码用的是generator,所以异步操作就起名gen;但是这里用的是新的 resumable function;也就是 ::gen 返回一个 awaitable object(类似promise,如果你玩js或者其他语言),然后前面的await就将异步操作出发执行,最后得到从 detection_tier 来的 config。

          具体关于 async & await,以及 resumable function 可以参考: 

          (这里PHP中的resumable function是Facebook自己做的语法加强;C#里一直就有,而C++会在下一代的C++1y里引入 resumable function)。

          6.

            print "Configured...n" 

            这句话太萌,典型的学生项目代码。类似于:console.log(xxx) 或者 System.out.println("Configured...) 或 NSLog(@"Configured..."); 要是公司项目的代码这么写,估计要被tech lead直接骂死。

            总结

            虽然大部分技术都是现成的(facebook开源项目和一些自动化家用硬件)。在构建Jarvis上,扎克伯格花了差不多100个小时

            而在他的文章里,他写到自己上次写IOS 的app是2012年. 现在写肯定是从头学起。这说明小扎整合技术和学习能力实在太恐怖了。

            推荐阅读:

             

             

            加入Libra中文社区:

            今日推荐 | 1024程序员节,扎克伯格配不配?

            今日推荐 | 1024程序员节,扎克伯格配不配?

            本文来自,仅作分享,存在异议请联系平台删除。本文观点不代表刺猬财经 - 刺猬区块链资讯站立场。

            (0)
            上一篇 2019年10月24日 下午1:40
            下一篇 2019年10月24日 下午1:48

            相关推荐