计算化学公社

 找回密码 Forget password
 注册 Register
Views: 4215|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[综合交流] 编程思路 top down vs bottom up

[复制链接 Copy URL]

194

帖子

0

威望

3694

eV
积分
3888

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
编程有两类思路:top down,从原理和整体出发,和bottom up从已有代码和局部出发。具体到量子化学程序开发上,哪种效率更好呢? top down似乎适合自动化实现,但可能细节在开始的时候会疏忽,而且这种倾向似乎容易和祖传代码冲突;bottom up容易debug,但似乎步子太小,效率不够高。大家有什么心得体会吗?

29

帖子

0

威望

888

eV
积分
917

Level 4 (黑子)

2#
发表于 Post on 2022-5-31 10:44:42 | 只看该作者 Only view this author
本帖最后由 lijingbai2009 于 2022-5-31 10:46 编辑

我最开始写代码是top down,然后一旦有新需求就得从最外层或者最上层改,只能自己维护。后来改用bottom up,先写好核心模块,高级功能就调用写好的模块,新需求只用改底层模块,或者用新模块替换,还不用担心改动会不会引起其他模块冲突。这样还可以多人分工,开发不同的模块,维护成本低,拓展性也好很多。也可能是因为我主要写Python,所以感觉bottom up 更方便一下。别的语言有可能更适合top down。当然如果完全是自己写的代码,也可以两者结合,用top down思路设计整个程序的结构,然后bottom up实现每个功能。
机器学习非绝热动力学PyRAI2MD开发者
https://github.com/mlcclab/PyRAI2MD-hiam
课题组网站 https://www.x-mol.com/groups/hiam_mlcclab

64

帖子

0

威望

1051

eV
积分
1115

Level 4 (黑子)

3#
发表于 Post on 2022-7-22 11:09:42 | 只看该作者 Only view this author
lijingbai2009 发表于 2022-5-31 10:44
我最开始写代码是top down,然后一旦有新需求就得从最外层或者最上层改,只能自己维护。后来改用bottom up ...

我的感觉完全和你相反,一开始学编程估计都是先实现一个特定的小功能,然后围绕这个小功能核心慢慢拓展,对接其他程序接口,编写工作流,这个模式一般都是bottom up。时间长了,编写几个工作流后,你就想会想要把它们整合起来,删除重复代码,更好得组织复用逻辑,规范文件输出,同时也有利于维护更新。这个模式依然还是bottom up思维。有个弊端就是,如果一开始没有考虑做大或者子流程复杂度较大依赖多时,对于强迫症和完美主义者来说,整合代码还是很折磨的,这个时候就会考虑代码重构(前端恶人话术:用rust重写)。对于大项目(方向性阶段目标,申gover项目挣W)来说适合采用top down模式。top就是目标大饼,down就是各种已有的轮子,实在没有的轮子才会自己去造。良心一点的,把项目外包出去,最后结题时能一瘸一拐运行,这就算好的了。有些项目大饼方向画错了,以至于无法实施,最终阑尾,人家也无所谓,毕竟钱到手了。
对于完美主义者来说,做好一个top down新项目,不但需要全局性敏锐前瞻思维,也需要扎实的bottom up基础。因为现有的轮子仅仅只是能用,并不会完美适合,想要性能和流程(代码逻辑)直觉上过得去就需要自行review, fork, 修改。

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 21:55 , Processed in 0.148429 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list