你是在设计程序,还是在写代码。。。

中山野鬼 发布于 2013/08/20 16:24
阅读 2K+
收藏 16

其实标题的内容,和你是程序员还是码农,是一致的。最近在做些原型设计,正好要写完整文档。就把我的一些做法说说。哈。

1、需求分析。打算做什么,如果这个事情,已经有可替代的了,那么ok,了事。不过既然做原型,希望以后可以代码级的整合,好为后期特定业务场景的优化做基础,除非有可独立的模块的源码,否则对于c的开发,很难说有可替代的。但对诸如面向对象等更高级的程序开发,包包,类类的选择,很重要,选择的判断依据也是从需求分析来的。

2、基础数学原理和系统模型。别tm不看中数学。我发现我的短板全在这。集合化的描述方式非常有助于对系统模型的阐述和分析。这个和具体语言还没有关系。

3、输入,输出的数据结构的设计。他们确定后,才能稳定住接口。而他们确定前,需要根据系统模型把该实现的纳入,但凡需要组合实现的剔除(当然这个针对c的模块化设计,面向对象的高级语言相关开发方式没仔细研究过)

4、上述数据结构对应空间的维护设计,诸如create ,destory, set ,get ,check。基本跑不掉这几个基础的。

5、根据系统模型,细化原子操作,与自底向上的设计思想很象。原子操作便于测试,也方便由它决定该操作前后的数据结构。

6、根据各个原子操作,将系统模型的整体结构细化出来,该调用的调用,该判断的判断。不过调用也好,判断也好,无非都是状态迁移,与其说难,不如说烦。

7、最后根据上述设计文档,写一堆函数和宏,组织组织。

8、进行代码实际的实现。

前面7步,都是设计程序,最后第8步,是码农的干活。如果函数接口都确定,函数内部操作逻辑都确定了,测试点也就明确了。

测试实际上分两大类,

代码实现的测试。这个和码农有关系。系统模型可行性的测试,这个和系统设计有关系。

我不知道有多少码农反复测试,反复debug,是否搞清楚了哪些是代码实现的问题,哪些是系统结构的问题。

不是我反对框架和架构。但真心看不起,系统设计还没到第7步时,就到处找架构的小白。利用别人的框架和架构是为了省事快速的实现系统。而不是系统的设计本身。系统的设计,源头是需求分析,只有在外部可利用的框架大部分的满足系统设计要求时,才对系统设计做局部的妥协。

所以我说,真心看不起,基于某某框架下开发的小白。这和利用某某框架实现某个系统,完全是两个概念。因为后者,即清楚了系统结构,也清楚了所利用的框架的组成特性。

哈,好好喷喷小白码农们,希望能引起其中一部分上进的小白的注意,,尽可能的抽空多思考设计本身,而不是基于某个框架码代码,或许这对你以后多挣money有帮助。没想法的,你爱怎么喷我怎么喷我,反正我又不掉肉。

另外有空多看看数据结构,操作系统原理,计算机组成原理,编译原理,别看不起这些基础的。现在很多的新概念,说来说去是把他们的设计原理应用在新的场合而已。正规大学老师教的是有价值的,当然具体老师的水平另谈。大学不好好学基础,就知道折腾什么java或者android的开发,做来做去,都是提不起筷子,和学会photoshop ,ps点图没有两样,除非你有艺术细胞,别人看中你的开发成果,也仅仅是那个ideal,没有基础,无论做出来什么都是垃圾。。。估计这也是很多语言增加“垃圾回收”功能的客观需求。哈。

加载中
1
mallon
mallon

引用来自“小耶果”的答案

真正的计算机大师都是数学家,比如高老爷子.真正NB的程序不是调用了什么API组装些逻辑,而是独创了某些或改进了特定的算法从而创造了某个技术领域的革命.从这点上来说,计算机图形学,计算机AI等前沿技术表现得特别显著.
唉所以我不喜欢纯计算机专业,太枯燥了
1
mallon
mallon

引用来自“小耶果”的答案

引用来自“Mallon”的答案

引用来自“小耶果”的答案

真正的计算机大师都是数学家,比如高老爷子.真正NB的程序不是调用了什么API组装些逻辑,而是独创了某些或改进了特定的算法从而创造了某个技术领域的革命.从这点上来说,计算机图形学,计算机AI等前沿技术表现得特别显著.
唉所以我不喜欢纯计算机专业,太枯燥了
真正的大师大都讨厌业务逻辑,认为是浪费生命的东西.可惜国内环境都是业务驱动,真正做基础设施的大都饿死了.所以国内很少有真正的技术大师.大多是经验大师,业务大师等.

计算机专业也分很多子专业的,你说的叫“计算机科学与技术”,我倒是觉得应该改名为“计算机数学”,特点是太枯燥,不过确实历史悠久的人才都是出自这里,没办法,基础学科嘛;

除此之外还有“软件工程”、“网络工程”、“硬件嵌入式”等,特点是比较有意思,不过出不了什么大人才;

我还是喜欢后面几类,因为我不想做陈景润

0
木有Some
木有Some

基础数学原理和系统模型。别tm不看中数学。我发现我的短板全在这。
现在觉得数学NB的人才是真NB。。。小白码农飘过



0
小耶果
小耶果
真正的计算机大师都是数学家,比如高老爷子.真正NB的程序不是调用了什么API组装些逻辑,而是独创了某些或改进了特定的算法从而创造了某个技术领域的革命.从这点上来说,计算机图形学,计算机AI等前沿技术表现得特别显著.
blindcat
blindcat
回复 @小耶果 : 哦,搜了下,和他们说的高德纳是一个人。3Q
blindcat
blindcat
回复 @习总 : 那是国家足球队的,别以为我不知道
blindcat
blindcat
回复 @小耶果 : 这个姓唐啊
泡不烂的凉粉
泡不烂的凉粉
回复 @抓瓦工人 : 我怎么记得是高德纳.
习总
习总
回复 @blindcat : 高俅高太尉
下一页
0
Tedd
Tedd
看来数学不好是硬伤...哎
0
习总
泡不烂的凉粉
泡不烂的凉粉
虽然古代大字不识的高手也不少.不过更多的高手是自己都秘籍学的.看来读书还是有点用的. 笑谈书呆子,别太认真.
0
小耶果
小耶果

引用来自“Mallon”的答案

引用来自“小耶果”的答案

真正的计算机大师都是数学家,比如高老爷子.真正NB的程序不是调用了什么API组装些逻辑,而是独创了某些或改进了特定的算法从而创造了某个技术领域的革命.从这点上来说,计算机图形学,计算机AI等前沿技术表现得特别显著.
唉所以我不喜欢纯计算机专业,太枯燥了
真正的大师大都讨厌业务逻辑,认为是浪费生命的东西.可惜国内环境都是业务驱动,真正做基础设施的大都饿死了.所以国内很少有真正的技术大师.大多是经验大师,业务大师等.
0
宏哥
宏哥

引用来自“小耶果”的答案

引用来自“Mallon”的答案

引用来自“小耶果”的答案

真正的计算机大师都是数学家,比如高老爷子.真正NB的程序不是调用了什么API组装些逻辑,而是独创了某些或改进了特定的算法从而创造了某个技术领域的革命.从这点上来说,计算机图形学,计算机AI等前沿技术表现得特别显著.
唉所以我不喜欢纯计算机专业,太枯燥了
真正的大师大都讨厌业务逻辑,认为是浪费生命的东西.可惜国内环境都是业务驱动,真正做基础设施的大都饿死了.所以国内很少有真正的技术大师.大多是经验大师,业务大师等.

狗屁不通

真正的大师, 首先要精通业务

者, 行业根基

者, 技术所解决的问题

任何不懂业务的"大师"都是狗屁不通

国内的的问题,不是"业务驱动", 而是"不懂业务",或者他们那些"高深"的技术驱动不了任何业务.

最后, 只能抓一帮不值钱的mysqler, 整体搞扯淡的CRUD.

什么叫做业务 

-- 如果你能在1ns内精确计算调整导弹的飞行姿态, 这是业务

-- 能在0.0001NS, 断开超高压开关, 这也是业务

-- 能适应组织变化, 这也是业务

国内的"大师"们, 说白了,都是带着"技术"的高帽, 骗口饭吃而已, 也无可厚非


指点江山
指点江山
@宏哥 看到mysql就痛恨,特别的是mysqler们说懂数据库。
小耶果
小耶果
回复 @宏哥 : 我自己删除的,觉得一切皆业务这样理解从广义的角度上来说也是对的.哈哈,难道你有删回复的权限?
宏哥
宏哥
回复 @小耶果 : 你有条评论被覆盖了, 不是我删除的. 这就是mysql干的好事.
宏哥
宏哥
回复 @小耶果 : 哈哈, 其实, 很多时候, 业务被狭隘化理解了. 做程序最怕其实是忘记了到底要做什么. 做什么, 这个其实就是业务.
小耶果
小耶果
还不忘攻击一下mysql,哈哈,
0
泡不烂的凉粉
泡不烂的凉粉
mysql 果然深入人心. 不过我喜欢Mysql . 他是一方净土. 如何使用靠自己了.
0
把妹达人老张
把妹达人老张
最后一段说的太对了。
返回顶部
顶部