数学家用其语言已经做了这么多错误的事情,特别是微积分之类的东西。没有理由今天编程语言的设计者应该盲目地学习数学。 ...
数学和软件是有区分。我想通过基本概念的划清,对人的思维有很多帮助。
“软件”一词中有“件”,一件一件的意思,如硬件的“件”一样,有组件组装的设计意思。面向工程了。
而“程序”一词中“序”,可能指CPU的时序,编制的代码要考虑到CPU执行,面向纯计算机科学了。
所以,“软件” 不等于“ 程序”。做软件的人叫软件工程师,编程序的叫程序员。
需求功能可用算法实现,可用逻辑实现。
程序=数据结构+算法;
软件=领域模型+逻辑。
前者偏重数学天国;后者偏向尘土人间。
使用算法实现的是数学建模(数学公式是一种模型);使用逻辑实现的是领域建模。
使用算法的思维是面向函数,使用逻辑的思维是面向对象。
这两种思维世界的人在现实中不断碰撞和争吵。其实只要注意自己的边界,天国和人间是可以和平相处的。
有人觉得搞出软件与程序区别纯属闲聊无事。我认为实则和自己的职业规划有关。
如果自己擅长数学与算法,在Google那样大公司搞些大数据挖掘或软件基础设施产品研发真的不错,搞个新的NoSQL之类产品。
如果自己流落在社会上,哪里有招聘哪里去应聘,我想多了解点软件与领域模型 OO等设计,也许能证明自己是一个合格的软件工程师。
对自己的职业进行规划,在这两个之中寻找适合自己,自己学起来做起来不费力的钻研下去。成为其中一个方面的专家,回避自己短处,与别人互补合作。编码做起来才轻松持久。
为什么中国程序员到了30岁就要退休,其中一个主要原因是对自己定位不够,算法和模式都要搞,很吃力,不如去卖水果呢。
仅供参考。
SpeedVan
@banq
软件是带有人类企图的程序。传统的数据结构+算法,并不等于函数式,传统方式只是让机器运转而已,而且很难模仿出逻辑。FP能使我们更加逻辑,更加领域化。
FP相比过去语言,比起让机器运转,它更多的是语言逻辑,也就是语法。FP的逻辑能力归功与Lambda,所以过去传统语言中的函数,跟这函数是有很大区别的。
banq
传统方式只是让机器运转而已,而且很难模仿出逻辑
我很赞同这句话,你这段话让我有兴趣研究FP和逻辑之