• 克莱夫·汤普森:美国知名的科技作家,《纽约时报》杂志特约撰稿人,《连线》杂志专栏作家,曾是奈特科学新闻学者。他因撰写科技、文学、历史与哲学方面的深度报道而闻名。他的新闻报道曾获得多个奖项,包括海外新闻委员会奖和镜子奖。

  • 本书通过细致的描写,让读者们近距离接触到全球最顶尖的程序员,包括脸书动态消息、谷歌人工智能等开发团队的成员等。从天才程序员到编程菜鸟,从后端开发到前端设计,汤普森在其采访中发现了行业之中独有的精神气质——融合了对逻辑的忠诚、对效率的痴迷、对解谜的热爱以及对挫败的超强忍耐力。

  • 这本书不仅为我们生动地刻画了互联网时代的天才程序员群像,还深度挖掘了互联网的精神内核。也正是程序员永远热血的探索精神和永无止境的创新力进一步推动了人类文明的进步。

  • 如果想要了解当今世界的运转情况,你先要了解一下程序员。打造当今世界的这群人到底是谁?为什么他们那么重要?什么样的人喜欢编程?他们的工作对我们有什么影响?更有意思的一个问题是,他们的工作对他们自身又有什么影响?

  • 说到程序员被编程吸引的时刻,几乎所有的故事都有一个相似的开端。

  • 是的,就是他们写下第一个代码,让计算机说出“Hello,World!”的时刻。以下是计算机程序设计语言Python写出这一代码的过程:

print ("Hello, World!")
  • 按回车键,运行代码,计算机就会显示:

Hello, World!

  • 这看起来并不复杂,对吧?但是对新手来说,这个时刻扣人心弦又神圣非凡。在旧金山著名的编程之家Noisebridge,一名程序员向我描述说:“当时我13岁,面对眼前的机器,我仿佛让它有了生命,它会执行我所吩咐的一些事情。对小孩子来说,这种感觉真的太棒了。就像是你创造了一个自己可以控制的小宇宙。
  • 从目前的文献来看,第一次出现“Hello, World!”是在1972年,一名叫布莱恩·柯林汉的青年计算机科学家正在撰写一本手册,解释如何使用编程语言B进行编程。他要展示B语言所能完成的最简单的任务——输出一条信息。**柯林汉告诉我,他看过一个动画,有一只小鸡从蛋壳中露出头来,说了一句“Hello, World!”,他特别喜欢这个有趣又离奇的动画设计。**于是,他决定把输出这句话作为B语言的简单任务范例。程序员们很快就喜欢上了柯林汉风趣诙谐的设计,此后,几乎所有的编程语言(超过250种)都引入了这句“咒语”作为使用指南的开始。“Hello, World!”——生动简洁地呈现出编程的神奇时刻,即程序运行成功,被赋予生命的那一刻。
  • 编程总是带有一种难以言喻的神奇感。没错,编程确实是工程设计的一种,却不同于其他任何类型的工程设计,包括机械工程、工业工程、土木工程。编程以文字进行设计制造。代码是一种语言,是人类对硅元素(计算机芯片原材料)发出的话语,最终赋予设计成果以生命,让其执行人类的意愿。这使得代码有了非常文艺的一面,法律也体现出代码的这一特质。像汽车发动机、开瓶器等实体机械产品会受到专利权法的保护,而软件则受到版权法的保护,类似于对诗歌或小说的法律保护。但是,软件又与诗歌或小说截然不同,前者会对人类生活直接产生实际影响。(所以,有部分程序员认为,以版权法规范编程带来了极其严重的后果。)总而言之,编程横跨的两个世界,一边是冰冷的金属,一边是飞扬的思绪。
  • 早在1975年,著名软件工程师弗雷德里克·布鲁克斯就写道:“编程人员,就像诗人,与纯粹的思考相差并不远。程序员通过发挥想象力凭空建造自己的城堡……但是,程序结构又不同于诗人的文字,它更加真实,它能够带来改变,激发效应,产出有别于程序结构本身的有形成果。它可以输出文字,可以绘制图片,可以产生声音,可以移动肢体。在我们这个时代,神话中的魔法终于成真。在键盘上敲入准确的咒语,显示器上就会呈现出新的生命,展示出前所未有的神奇成果。
  • 正因如此,“Hello, World!”这样短短两个单词才承载了极大的神奇力量。就像宗教传统中神明宣告万物的诞生,例如《圣经》开篇第一句“起初,神创造天地”。(信奉基督教的程序员尤其钟爱这一关联:与人合作创造了游戏《神秘岛》的程序员罗宾·米勒是福音派信徒,他时不时会因为自己编写出很棒的代码而停下来感叹一句:“太神奇了!”)
  • 但是“Hello, World!”也有诡异的一面,它仿佛在提醒人们,有些东西一旦被赋予生命,一旦逃离人类的掌控,就可能带来意想不到的后果。比如,弗兰肯斯坦博士创造出的怪物,在遭到背弃之后,这个怀恨在心的怪物最终杀死了弗兰肯斯坦的至亲。又比如,电影《魔法师的学徒》中被下了咒语的扫把拖布,因为学徒无法驾驭,不断分化重生,导致一场闹剧。软件程序也是如此。动态消息可以推动热心的人们组织起来照顾不幸身患癌症的朋友,也可以被阴暗的人们用来传播极端丑恶的阴谋论。正是神秘力量与代码的交织让20世纪80年代的少年程序员很快就爱上了《龙与地下城》(融合想象力与掷骰概率学的游戏),爱上了奇幻文学作家托尔金的伟大作品。在20世纪60年代,程序员发明了一种可以在后台持续运行的代码,将其称为daemon(意为古希腊神话中的“恶魔”)。 计算机科学家拉里·沃尔在其发明的编程语言Perl中加入了一个名为“Bless”(“祈福”)的功能。程序员丹尼·希利斯曾经写道:“假如是在几百年前的新英格兰,我的职业可能会让我遭受火刑。”
  • 掌控魔力的感觉令人着迷且乐趣无穷,它往往会带来过度乐观的理想主义。同时,这也会让一些年轻的程序员,尤其是那些未被生活与失败挫去锐气的年轻人变得狂妄自大。程序员出身的技术文化评论家马切伊·切格沃夫斯基指出,擅长编程的人“慢慢地会觉得自己有一种独特的能力,在没有任何培训的条件下,就能凭借自己卓越的分析能力理解任何一种系统的基本原则。在软件设计的人工世界里,成功往往会带来一种颇具危险的自信”。 或者正如计算机科学家约瑟夫·维森鲍姆1976年指出的那样:“如果阿克顿勋爵对于人性的洞察——权力使人腐化——不适用于一个无所不能的世界,那么人们一定会感到很惊讶。”
  • 编程工作并不容易,程序员要长时间坐在电脑前,在大脑中构建出一个软件纷繁复杂的细节。比如,为什么用户输入这个信息就会产生这个循环?这个子程序运行之后就不会产生循环?哪个时刻程序应该启动?我听过各种各样的比喻,“就像建造并熟记伦敦每一条街道的构造”和“就像在头脑中搭建起巨大的空中楼阁”。正因如此,编程往往特别吸引性格内向且痴迷于逻辑思考的人。 想象某个星期六的晚上,有人在抽屉里突然翻出一个1997年就被淘汰的网络摄像头,那么他一定会宅在家里,兴致勃勃地给它捣鼓出一个驱动程序,说的就是这类人。对他们来说,驱动陈旧的设备可太有意思了,而相较于人际交往,前者的可预测性明显更高。(但是,这种内向性格与编程的关系并不绝对。当下,编程工作与社交的关系越来越密切,软件的设计必然需要团队合作,而且,和同事开会讨论编程内容的时间很多时候也超过了编程本身的时间。
  • 除了性格内向和具有逻辑思维,编程所需的人才更需要具有应对无尽挫折的能力。计算机确实可以执行人们发出的指示,但前提是你要给计算机极其精确的指示。就如前面提到的“Hello,World!”,如果你慌慌张张,输入计算机的英文如下:
print (Hello, World!)
  • ……哎呀,忘了输入双引号。这时你按下回车键,程序就崩溃了。计算机这回就不会执行你的指示了。而且,计算机可不太友好,绝对不会来一句:“十分抱歉,出现故障。”计算机只会吐出一条信息,比如SyntaxError: invalid syntax(语法错误:无效语法),然后你还得弄清楚自己到底是哪里做错了。编程语言就是语言的一种,是与计算机对话的方式。 但是,计算机可能是地球上最吹毛求疵的语法学家,它咬文嚼字的本领可以说登峰造极。当我们与人对话时,对方会用心理解我们到底说了什么。计算机可不会。当你与计算机对话时,每一个语法错误都会被它不留情面地指出来,摆到你面前,直到错误被修正为止。这对人的思维和性格也会产生影响。 程序员在每天的工作中都少不了跟无穷无尽的失败做斗争,还要想办法消化挫败感。
  • 程序总是被破坏,被搞砸,还有一堆程序错误。有时候,你两分钟前写的代码第一次运行就崩溃了。计算机科学家和教育学家西蒙·派珀特1980年就指出:“在你学习计算机编程的时候,你几乎不可能第一次就把它做好。”他认为这是考验所有程序员心理素质的核心。当程序员写了代码,尝试运行代码,运行失败时,程序员就要想办法弄清楚到底哪里出了问题。那些每天面对接连的失败还能够坚持下来的人才会成功,如果做不到,你就只能逃离编程的世界。
  • 1949年6月,计算机科学家莫里斯·威尔克斯在爬梯子的时候突然顿悟:“我余生的很大一部分时间将花在寻找自己程序中的错误上。”70年后,那一刻的顿悟成为所有程序员的现实生活。而且,更有意思也更常见的现象就是,有时候程序员不是在自己写的代码中发现了问题,而是在公司前雇员写的程序中找到了问题,那往往就是“面条式代码”——格式混乱,变量名称难以理解,简直就像小说《芬尼根的守灵夜》那样晦涩难懂。程序员要一头扎进去,一点一点修复里面的错误。程序员这个职业,在我看来真的很像希腊神话中的西西弗斯,他每天都要卖力地把巨石往山上推,然后眼睁睁地看着巨石滚下山……日复一日,年复一年……突然有一天,巨石翻过了山顶,他赶紧跟着翻过去,他看到了什么呢?又一座大山。
  • 数十年来,电视和电影导演总是将编程呈现为疯狂敲击键盘的画面,程序员总是行云流水般写出大量程序。但现实中的画面可真是太枯燥了。你去看看程序员工作(我本人就认真观察过好几个小时),他们大部分时间都是坐在计算机前,皱着眉,盯着屏幕,时不时丧气地两手抱头,时不时又敲一下键盘,在好不容易取得了一些微小的进展之后悄悄露出不易察觉的笑容。 有一名程序员跟我说:“老兄,我真不知道这书你打算怎么写,看别人编程是世界上最无聊的事情。”微软公司的程序员斯科特·昂塞尔曼告诉我:“(编程工作)没什么看头。就是坐在那里敲键盘。”
  • 打扰他们也不是什么好事。假设你走进一家高科技企业的市场营销部工作区域,你会发现那里满眼都是外向热情的人,他们互相套近乎,不停地交谈。一旦游荡到编程部门的工作区域,你会发现那里简直比寺庙还安静,满眼都是戴着耳机的程序员,每个人都尽力维系着自己的工作状态,把数十个甚至数千个复杂的结构牢牢掌控在大脑之中。进入状态并不容易,一旦进去他们就不想出来了。这个时候,你要是拍拍某人的肩膀问“嘿,进展如何?”,那大概率会引发对方喷涌而出的愤怒。这是因为你打破了魔咒,人家好不容易搭建起来的城堡就这样崩塌了。“再见,世界。”
  • 我们现在尝试着用代码实现一个简单的自动化。例如,能否利用“Hello, World!”的程序对不同的人说“hello”?我们可以输入:
names = ["Cynthia", "Arjun", "Derek", "Alondra"]
for x in names: print ("Hello there, " + x + "!")
  • 代码中有一个4个名字的清单,把这个清单放入叫“names”的变量中。然后写入for循环进行循环控制,这样程序就会一次一次将每个名字都插入“Hello there, ____!”中的空白处。最后写入输出的内容。现在运行这个Python语言编写的程序,你就会看到:

Hello there, Cynthia!
Hello there, Arjun!
Hello there, Derek!
Hello there, Alondra!

  • 是不是更有意思了。这也意味着,机器可以替我们做一些重复性的无聊事情了。你可以给出有10个名字的清单,然后循环10次。还可以给出有1万个名字的清单,程序就会给出1万次问候。1 000万次、10万亿次,都没问题。
  • 换言之,编程非常适于规模化。计算机需要精确的指示,只要指示准确无误,机器就会不辞劳苦一遍又一遍完成你给它布置的任务,为全球的用户服务。看到自己创造出恪尽职守的机器人,服务于全球上百万用户,这种感觉着实振奋人心。很多软件工程师像飞蛾一样被编程的规模化火焰吸引。他们不仅仅是为了自己或者身边的几个朋友编写代码,他们更希望就在当下为整个地球上的人编写代码。解决了一个问题,你就解决了所有人的问题。
  • 与此同时,编程的另一特点就是对效率的狂热追求。程序员可以让计算机毫厘不差地重复指示的任务,因此,他们根本不屑于自己去做重复性的事情,对低效的反感几乎成为他们自身审美的重要组成部分。低效二字于程序员仿如羞辱,令人避之不及。 只要有可能让一件事情自动化、效率化,程序员就必定会抓住机会。
  • 不断追求优化和规模化的本质也带来了软件公司与民众生活的激烈碰撞。脸书将普通人的生活视为低效的信息传输。在使用脸书之前,我每天做的事情(思考的问题、阅读的书籍)可能也是我朋友感兴趣的事情。但是,我没有什么简单的方法将自己每天的生活告知他人,他们也没有途径知道。我们只是时不时打一通电话,到酒吧里喝一杯,或者在路上遇到的时候聊一聊。而动态消息极大地优化了我们的“周边视觉”,将其拓展到世界的每个角落。同理,优步(Uber)优化了呼叫出租车的体验,电子商务平台亚马逊则优化了购物体验,还有很多公司通过“零工”雇员提供了各种各样的即时服务。在每一个案例中,技术公司为了追求优化的极致,往往会与更加看重延续性的个人、政府或不同群体产生剧烈冲突:司机或雇员更喜欢稳定的工作而不是时有时无的零工,由于无法与电商竞争,很多街坊小店关门、职员失业。或者有一种文化突然意识到,动态消息在很多方面都非常宝贵,但有时也会让我们彼此接触过于频繁。
  • 编程让提升效率、扩大规模变得更简单、更诱人,甚至成为一种必然。因此,程序员非常容易融入商业世界,这也在一定程度上解释了为什么部分程序员很容易陷入自由主义思维。他们的才华恰恰契合了资本主义的核心,基本上就是“进一步提升做某事的效率,然后赚取利润”。不过,软件程序本身也让某些资本主义的设定变得有些诡异。一个软件程序是一件物品,是一种可以做事的工具,所以你可以拥有它。但是这个软件程序同时又是一种语言,很容易被共享。很多时候,它会被不断分享。程序员非常乐意公开讨论自己每天的工作,他们时常会把自己编程中的问题发布到网络论坛上,也会在论坛上花很多时间解答别人的问题。(20世纪80年代的一项调查发现,在程序员群体中,“对雇主的忠诚度要低于对这一职业的忠诚度”。)即使是在硅谷最具资本主义色彩的企业中,程序员也会花上很多时间(在自己的办公桌前)帮助其他痴迷于技术的人解决问题。自由的开源软件世界往往存在一种共产主义精神,程序员会无私贡献自己的工作成果,开发任何人都可以自由使用的软件。
  • 媒体十分关注硅谷中富有的自由主义者。这是可以理解的,他们掌握了极大的财富,可以决定资金的流向。他们热衷于“颠覆”,也由此决定了哪些技术将得到资金支持。但是,一般程序员的政治观点往往比人们预想的更多元化:有些功利心极强的程序员在喝到微醺的时候可能会承认自己给特朗普投了票,但与他并肩作战的同事可能是住在共享公寓里的无政府主义者,坚定地支持“财产是赃物”;参加编程大会的程序员,既有传统的加州左翼自由主义者,也有竭力抨击女权主义的人。
  • 但这个行业的确存在性别、平等与种族多样性等方面的问题。综观收入丰厚且社会地位高的行业,美国女性劳动力呈下降趋势的屈指可数,软件行业便是其中之一。**20世纪50年代出现的第一代程序员中就有女性的身影,其中不乏业界翘楚,例如创造了第一个编译器的格雷斯·霍珀,还有编程语言Smalltalk的创始人之一阿黛尔·艾德堡。1983年,大学计算机科学专业有31.7%是女性。到了2010年之后,女性占比竟然下降到17%左右(就业市场上的数据也非常接近,2015年,在谷歌、微软等知名技术公司中,女性占比可能为17%到20%不等)。**种族多样性也在下降,走入一家初创公司,大数据的分析结果就会赫然呈现:大部分程序员都是白人男性和亚裔男性。全美非洲裔和拉美裔程序员的占比都是个位数,在硅谷顶尖的企业中,这一比例低至1%到2%。
  • 这一现象颇具讽刺意味,因为软件行业长期以来的定位就是英才至上,理论上,一切都以能力说话。这种错觉可以理解,一定程度上也是由编程本身决定的。编程真的会让人有能力至上的感觉:能力差,写的代码就会崩溃;能力强,写的代码就会顺利运行。的确,软件工程师喜欢清晰的二进制。解决一个刁钻的编程问题就像跑一场马拉松,是对自己能力真正的衡量和认证。另外,相较于很多行业,软件行业更民主,在这个行业里,博士生与自学成才的业余人士可以并肩奋斗(这在外科手术、法律、航空航天工程等领域是绝对不可能出现的)。 而且,很多程序员会满怀敬佩地告诉你,他们的同行不仅技术过硬,而且是黑客精英,就像《黑客帝国》中的尼奥一样,可以源源不断地写出代码,破解难题,速度远远超过普通程序员。正因如此,这个行业中的错觉有很深的源头。这个行业有太多个人英雄主义的故事,而很多白人男性没有经历过少数族裔在生活中面对的各种歧视,也就很容易受到这种错觉的影响。他们真诚地相信,这个行业就是黑白分明、能力至上的,即使那些对歧视现象感到厌恶或愤怒的程序员,也几近天真地相信这一事实。他们觉得,如果女性或少数族裔没能在这个行业有所发展,那就一定是他们不够努力,或者没有这方面的天赋。
  • 但事实截然相反。很多证据已经推翻了这种认知,其中就包括硅谷最喜欢的A/B测试研究。在一项实验中,一家技术行业招聘公司给雇主推送了5 000份简历,第一次是匿名推送,第二次是署名推送。在匿名的简历筛选中,雇主不知道求职者的性别(西方名字一般能看出性别),女性求职者54%得到了面试机会。在署名的简历筛选中,女性求职者得到面试机会的概率下降到5%。 在采访技术公司的女性和少数群体时,很多人都向我倾诉了形形色色的歧视现象,既有隐晦的言语攻击,也有明目张胆的骚扰。软件行业变得狭隘的过程提醒着人们,现代社会的机会分配正变得不公平,也推动着人们去思考该如何改变这种状况。
  • 这里面隐藏的风险高得惊人。在产品设计上,文化因素很关键。如果开发某个程序的团队成员具有单一的文化背景,那么这个程序一定存在严重的盲区,这是工商管理硕士就能学到的知识点。所以,我们说代码改变了我们的生活。近年来,很多极具影响力的软件都出自年轻白人团队之手,他们没有预见到自己编写的代码会如何影响那些和他们不一样的人。举个例子,推特就出现了很多辱骂、骚扰现象。设计团队的年轻人——从人口统计学的角度看——在网上遭到辱骂的概率很小。因此,他们在设计初期就没有把网络暴力和网络骚扰视作重要的潜在问题。恰恰相反,有的成员还将公司戏称为“言论自由党的言论自由派”。他们在早期几乎没有针对网络骚扰等现象设计出有效的防卫措施,几年后,键盘侠、白人至上主义者发现,推特很适合他们去骚扰特定的对象。

推荐克莱夫·汤普森《天才程序员》相关推荐

  1. 80后天才程序员,Facebook 第一任 CTO,开挂人生到底多变态?

    https://www.toutiao.com/a6695906930474353156/ 今天介绍一位天才程序员--亚当·德安格洛(Adam D'Angelo),他被<财富>杂志誉为&q ...

  2. 80后,天才程序员, Facebook 第一任 CTO,看看开挂的人生到底有多变态?

    今天介绍一位天才程序员--亚当·德安格洛(Adam D'Angelo),他被<财富>杂志誉为"科技界最聪明的人之一",大学去了被誉为"天才"摇篮的加 ...

  3. 与Linus Torvalds“并列”,虚拟化天才程序员法布里斯贝拉

    摘要:谈起阿兰·图灵.高德纳.艾兹赫尔·戴克斯特拉,我们并不陌生,这些振聋发聩名字背后是颠覆了人类生活的现代计算机工业.然而有些人的荣誉却远低于他的贡献,比如Fabrice,过去20年最闪亮和最有影响 ...

  4. 不朽传奇-云计算技术背后的那些天才程序员:Qemu的作者法布里斯贝拉

    作者:Liu Guo Hui,OpenStack中国社区,转载请注明出处 众所周知,虚拟化技术是构建云基础架构不可或缺的关键技术之一,而在众多虚拟化技术实现当中,KVM(Kernel Virtual ...

  5. Google大佬自述:天才程序员竟也有不为人知的秘密,看完真的学到了!

    缘起 最近在YouTube里看了一条谷歌大佬的公开演讲,题目叫做The Myth of the Genius Programmer,翻译过来就是天才程序员的秘密.这篇演讲是两位在谷歌subversio ...

  6. 有一个天才程序员叫灭霸...

    来源:https://zhuanlan.zhihu.com/p/64105124 <复仇者联盟4>刚出来的时候是多么的火爆啊. 10年布局,漫威宇宙21部电影,埋下的伏笔,庞杂人物关系,千 ...

  7. 云计算技术背后的那些天才程序员:KVM之父Avi Kivity

    摘要:KVM以其精简的架构,清晰的定位获得Linux社区多数开发人员的支持并快速被合并入主干,从而成为x86全虚拟化技术的一颗新星,其提出者Avi Kivity对于计算机体系架构和Linux内核有深入 ...

  8. 云计算技术背后的天才程序员:Open VSwitch鼻祖Martin Casado

    摘要:Martin Casado被称为软件定义网络之父,OpenFlow的发明人.Nicira的创始人.硅谷最炙手可热的"40 under 40"之一,另外,他提交的虚拟交换机Op ...

  9. 一个天才程序员的黑帮大佬人生

    有的程序员驱动光明世界,也有程序员成为黑暗疆域主宰. 这就是刚刚被曝光的"保罗哥"事迹. Paul Le Roux (保罗·乐·鲁克斯),一个47岁程序员,1972年生于津巴布韦, ...

  10. 天才程序员的传奇人生:项目被总统抢走,在瞄准镜下写完代码后被捕入狱

    作者 | Nathaniel Popper ,Ana Vanessa Herrero 译者 | 核子可乐 编辑 | Tina 委内瑞拉的石油币,原本只是一位程序员的创业项目.2017 年,27 岁的程 ...

最新文章

  1. 浅谈GCC预编译头技术
  2. 论文笔记:PointSIFT
  3. MongoDB学习笔记(三)使用Spring Data操作MongoDB
  4. delete表1条件是另一个表中的数据,多表连接删除
  5. 使用FastReport报表工具生成图片格式文档
  6. mysql 表迁移 并筛选,如何使MySql View在获取时筛选每个表
  7. cvi中c语言只保留两位小数,保留两位小数,但要求只显示一位小数,怎么实现?...
  8. asp.net core 系列 17 通用主机 IHostBuilder
  9. linux的java安装目录
  10. iOS-推送通知详解
  11. halcon 深度学习标注_深度学习in Halcon流程
  12. 遗传算法求解TSP问题python实现
  13. WAP,手机网站建站资料收集 - 老古董
  14. postman接口测试七
  15. HMI 排行中有哪些触摸屏品牌
  16. vue生命周期的快速记忆方法
  17. leetcode.1024. 视频拼接
  18. 红米3 android 版本升级失败,疑似官方推送错误固件 红米Note3全网通升级后变砖...
  19. 上海青浦区大众驾校(科目二·自动挡)真实考场操作全程
  20. SQL查询语句注入实战(手注,显注)

热门文章

  1. 如何卸载office201032位_office2010如何卸载干净,笔者教你win7系统彻底卸载office2010的攻略...
  2. web前端基础入门教程(非常详细)HTML+CSS+JavaScript
  3. 使用JS导出表格为Excel
  4. QT做的成三棋、打三棋、九连棋、莫里斯九子棋应用程序及其源码
  5. cboard企业版源码_CBoard的部署与使用
  6. [uboot 移植]uboot 基础知识
  7. 离散傅里叶变换(DFT)
  8. 数值计算求解静态热传导方程
  9. 电子元器件选型——三极管
  10. Java分页详细步骤