西西河

主题:【原创】编程心得 -- 荆棘探兴

共:💬198 🌺258
全看分页树展 · 主题 跟帖
家园 关键问题是一个需求上的变化需要多少程序上的变化来支撑

如果需求变了,当然程序会变,但关键问题是一个需求上的变化需要多少程序上的变化来支撑。

尽管说当我脱离程序员这个层次之后自然不会碰到这样的问题,但就现在待在程序员这个层次讲,我觉得还是有很多地方可以改进的。

说回浏览器作例子,把界面上左右两大块内容块对调一下,这个需要在浏览器里做,用javascript+Jquery的话最多2行代码,用MFC的话,除非事先有防备有意做了这个的支持,否则代码的变化可能需要100行代码才能搞定的,内容块里的东西复杂的话更是如此。如果是内容进行动画变化(比如位置滑动,淡入淡出)之类的,用原始的MFC库+C++,一不小心代码行数就上千了。都是程序员,实现同样的需求需要做的工作量相差太远了。

再举几个服务器的例子,在我很有限的经历里,我见到的常见的问题是高并发量的网络访问,数据缓存/同步,服务器可靠性,等等问题,这些我觉得还算是比较高层一点的问题,比较底层的更偏向,实时监控和配置,诊断的方便性。如此种种,就我才几年的编程经历我都见过好几次,做了又做;这些我觉得都是可以在程序员层次解决的,但现实是没有。我看到的代码还是由C/C++库开始。可能我做服务器的时间太少,我还真没见过特别强大的可以解决这些方面各种需求变化的库。

现在一般的编程的本质实际上先建一个在程序上可以描述需求的模型,然后完成这个模型的所有细节。为了实现简单,这个模型往往是简化的,适用于非常特定的场景的。结果就是模型上的小变化需要重建几乎所有细节。因为我们每次建的模型太小太弱,一个自然语言描述的需求可以很简单,但背后很多细节被隐藏,因为自然界或者说是人可以随机应变,但程序如果真想做到这样的地步(即自动处理细节),这个模型会非常大非常全非常强,所有可能的细节全被程序处理了才行。在现有的条件下,一条路是越来越强大的硬件用以支撑非常大量的运算,另一条路是建立程序上简化但仍然强大的模型,相比之下后者在现阶段更可行,我认为浏览器的设计就是一个成功案例。

所以我认为我们写的程序离自然语言太远,抽象层次太低,离自然语言描述的需求太远,所以才导致一个自然语言描述的需求上的变化需要大量的程序来支撑,程序员们做着大量的重复性工作。这其中可以改进的空间非常大。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河