问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么有算法结构才算真正的编程?2

发布网友 发布时间:2023-10-28 21:53

我来回答

1个回答

热心网友 时间:2024-12-01 03:17

计算机科学有两类根本问题。一类是理论:算法,数据结构,复杂度,机器学习,模式识别,等等等。一类是系统:操作系统,网络系统,分布式系统,存储系统,游戏引擎,等等等等。

理论走的是深度,是在追问在给定的计算能力约束下如何把一个问题解决得更快更好。而系统走的是广度,是在追问对于一个现实的需求如何在众多的技术中设计出最多快好省的技术组合。

搞ACM的人,只练第一类。像你这样的更偏向于第二类。其实挺难得的,但很可惜的是第二类能力没有简单高效的测量考察方法,不像算法和数据结构有ACM竞赛,所以很多系统的苗子都因为缺少激励和正确引导慢慢就消隐了。

所以比尔盖茨才会说,看到现在学编程的人经常都把编程看作解各种脑筋急转弯的问题,他觉得很遗憾。

做系统,确实不提倡“重复发明轮子”。但注意,是不提倡“重复发明”,不是不提倡“重新制造”。恰恰相反的,我以为,系统的编程能力正体现在“重新制造”的能力。

能把已有的部件接起来,这很好。但当你恰好缺一种关键的胶水的时候,你能写出来吗?当一个已有的部件不完全符合你的需求的时候,你能改进它吗?如果你用的部件中有bug,你能把它修好吗?在网上繁多的类似功能的部件中,谁好谁坏?为什么?差别本质吗?一个开源代码库,你能把它从一个语言翻译到另一个语言吗?从一个平台移植到另一个平台吗?能准确估计自己翻译和移植的过程需要多少时间吗?能准确估计翻译和移植之后性能是会有提升还是会有所下降吗?

系统编程能力体现在把已有的代码拿来并变成更好的代码,体现在把没用的代码拿来并变成有用的代码,体现在把一个做好的轮子拿来能画出来轮子的设计蓝图,并用道理解释出设计蓝图中哪些地方是关键的,哪些地方是次要的,哪些地方是不容触碰的,哪些地方是还可以改进的。

如果你一点不懂理论,还是应该学点的。对于系统性能的设计上,算法和数据结构就像在自己手头的钱一样,它们不是万能的,但不懂是万万不行的。

怎么提高系统编程能力呢?土办法:多造轮子。就像学画画要画鸡蛋一样,不是这世界上没有人会画鸡蛋,但画鸡蛋能驯服手指,感受阴影线条和笔触。所以,自己多写点东西吧。写个编译器?渲染器?操作系统?web服务器?web浏览器?部件都一个个换成自己手写的,然后和已有的现成部件比一比,看看谁的性能好,谁的易用性好?好在哪儿?差在哪儿?为什么?

更聪明一点的办法:多拆轮子。多研究别人的代码是怎么写的。然而这个实践起来经常很难。原因:大部分工业上用的轮子可能设计上的思想和技术是好的,都设计和制造过程都很烂,里面乱成一团,让人乍一看毫无头绪,导致其对新手来说非常难拆。这种状况其实非常糟糕。所以,此办法一般只对比较简单的轮子好使,对于复杂的轮子,请量力而行。

轮子不好拆,其实是一个非常严重的问题。重复发明轮子固然是时间的浪费,但当轮子复杂而又不好拆的时候,尤其是原来造轮子的人已经不在场的时候,重新发明和建造轮子往往会成为无奈之下最好的选择。这是为什么工业界在明知道重复发明/制造轮子非常不好的情况下还在不断重复发明/制造轮子的根本原因。

程序本质是逻辑演绎的形式化表达,记载的是人类对这个世界的数字化理解。不能拆的轮子就像那一篇篇丢了曲谱的宋词一样,能读,却不能唱。

鄙人不才,正在自己研究怎么设计建造一种既好用又好拆的轮子。您没那么幸运,恐怕是等不到鄙人的技术做出来并发扬光大了。在那之前,多造轮子,多拆好拆的小轮子,应该是提高编程能力最好的办法了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
济南的冬天赏析 济南的冬天全文赏析 魅蓝Note5#魅蓝3S锁屏就重启是什么原因 ...药?小狗已经三天了不吃不喝还呕吐尿很黄不拉,精神不好去宠物医院化验... 狗狗今天吐了黄水昏昏欲睡 还抽搐给喝了妈咪爱睡了一觉好了也许但还是... ...了开始拉稀,不吃东西,昨天超级没精神,后给喂了点药,今天精神点了... 昨晚狗狗又吐又拉然后我喂了妈咪爱,今天早上没精神的,刚刚又喂了妈 小狗两个月,昨天拉稀不吃饭,我喂了妈咪爱,下午有精神了可那跑着玩。今 ... 国内有哪些生产疫苗的公司?研发、质量管理水平分别如何? 三联恒通(北京)科技发展有限公司怎么样? 什么是三联集团 福建省惠东建筑工程有限公司怎么样? 李光洙哪部电视剧戏份比较多3 网页版麻将游戏 2014军演到什么时候 2013年做什么最赚钱?1 出租车出现交通事故公司如何承担责任 老鼠为什么会飞吗? 男子100米,200米国家一级二级三级的成绩分别是多少啊?69 求 艾米龙 手表 时光之翼>61.1156.L4.25.6准... ...后,准备在大厅的主楼梯上铺上某种红色地毯,已知这种地毯每平方米售... 哗叽色是什么颜色?2 照身份证!可相片总是白化,怎么调试都一样。【可别人确一次搞定!】而我... 如何一年内强制二次修改? 简单管路流体通过各管段的——流量不变,对于不可压缩流体,则—... 以e开头的单词有哪些? 如何强制二次修改? ...自动对焦能听到马达一点点声音,不能对焦,按不下快门,是什么问题... 修改没到一年怎么改? 帮我一个忙,在橙光游戏里帮我搜索一个游戏,叫《婉清泪之繁华落... 如何更好的履行和落实两个责任专题调研报告 ...的时候。车倒了。不小心把别人车刮了。当时走了什么也没处理... 保险受益人法定是指2 微信账号和是不是一回事 ? 艾米龙 时光之翼在国内价格是多少?63 国家一级运动员标准32 怎么在网上定火车票和飞机票?3 脑筋急转弯 问 一只老鼠为什么会飞 求答案177 新买不到两个月十代本田思域前大灯固定塑料坏了属质量问题吗?_百度... 我的车是本田十代思域,开了一年多了,现在两个车大灯怎么只有一个灯罩发... 不满一年如何更改? ipad3 qq音乐里的本地歌曲怎么删除? 支付宝v3需要多少资产 福建时迅信息科技有限公司怎么样? 怎么在excel上面粘贴数据? win10只有一个账户怎么删除1 win10新建一个账户以后,开始菜单出现已删除的程序,怎么删... 小米售后可以回收旧小米手机吗?6 在广州番禺办暂住证有2个月了,什么时候可以拿? 这句话在原版英文小说里是什么样的……就是英文版本……不要翻译... 电动机皮带轮加大对机器有引想