从编程到工程(由于服务器问题不能提交,联系管理员解决提交)

正如《列子·说符》中所讲的“得其精而忘其粗,在其内而忘其外;见其所见,不见其所不见,视其所视,而遗其所不视。我们往往处于“不识庐山真面目,只缘身在此山中”的地步。学习软件工程之初,我们只能被称作普通的编程者。事实上或许每个编程者都有自己喜欢的一种语言,或C和C++,或java,又或C#。有的人或许会吹捧自己所选的语言多么强大,但从根本上来讲,语言其实只是一种工具,它是我们与计算机交流的一种途径。这和我们所讲的语言其实完全相同,不管你是讲汉语,英语还是俄语甚至是阿拉伯语,只要别人听得懂,结果其实都一样。因此我们并不需要拘泥于编程该使用哪种语言,要明白语言只是一种工具。

软件工程,在其最内层的环里是我们目前所接触到的“程序=算法+结构”。这是编程的本源定义,也是原始的状态。然而这种原始的状态并不会凝滞不前,随之而来的是方法的诞生。方法并不神秘,因为它就是你今天正在做的、从事的和实现的。当然这些简单的方法必须要建立在你有一些编程基础与经验。在编程与方法都有了之后,工程也就应运而生了。那么这里不得不提一下过程。过程说的是团队如何组织在一起进行开发的问题。它首先把工程中的环节分解出来。这样,有了环节,就有了角色;有了角色,就有了沟通。而沟通会使一个团队的合作更加的紧密,所做出的成绩也就越发的高。角色的确定,以及角色间的沟通问题,在项目过程中 也同样重要。工程组织是否合理,相互的协作是否紧密,是这个项目成功能的保障。而这一切都由完美的过程解决了。

最狭义的工程,是描述“做什么”和“做到什么”。 也就是说,是对目标的描述和成果的检测。至于这个工程目标的实现,是“过程”和“方法”的事;而有效、 快速地实现“过程”和“方法”所需的,就是“工具”。作者说的“牛屎图”生动的描述了何为软件工程。

基于实现对象而产生的过程需要用方法与工具来实现。从最初的简单编程开始,到现在工程团队的组织开发,实现(一个软件)都是最终的目的。所以可以这样说:实现,是软件开发的本质需求。因此如何更好的实现这些需求就成了我们当前需要为之努力奋斗的目标。

从编程到工程看上去一个字的变化,却让我们不得不深思熟虑一下我们软件工程的精义所在。

时间: 2024-11-07 17:26:13

从编程到工程(由于服务器问题不能提交,联系管理员解决提交)的相关文章

读《大道至简》之从编程到工程

读<大道至简>第六章之从编程到工程 “得其精而忘其粗,在其内而忘其外:见其所见,不见其所不见,视其所视,而遗其所不视.” -------<列子·说符> 上文是取自秦穆公与伯乐之间关于九方皋相马的对话,直译是,天地间的奥妙:得到了它的精微,而放弃了它的粗略,省察它的内部而忘却其表象,看见了他所应当看见的地方,而没有看见他不必看见的地方,考察了他所应当考察的地方,抛弃了他所不必考察的地方.这则故事教给我们一个道理:认识一件事物就要像九方皋相马一样,避开纷繁复杂的表象的迷惑,先抓住事物最

大道至简读后感---从编程到工程

从编程到工程 语言只是一种工具.在人们的认知中,语言就是一种工具,他是思维的工具,是交际的工具,语言的工具性价值已经得到了人们的广泛认可和普遍使用.对于一个程序员,或者以程序员自居的人来说看清楚一切的第一步只是“语言只是工具”! “程序 = 算法 + 结构”.这是编程的本源定义,也是原始的状态.与代码相关的任何工作,最终仍然会落足于这样的一条规则.编程的精义在于此,从有开发行为开始,他就存在了.愚公在数千年前就用雷同的行为做编程实践了,而几十万年前智人也在循环和分支所构成的逻辑中打转. 所谓的方

读《大道至简》第六章有感——从编程到工程

语言只是工具,在学习编程的过程中,我们不断接触多种多样的语言,学习并且运用它们.我们会因为无法精通某种语言而着急,而担忧,当然也会因为对某种语言的了解而兴奋,而激动.但逐渐的,我们忘记了学习语言的最终目的,编程和工程不同,我们可能在编程中用不同方法解决问题,可能因为哪种方法的更巧妙或者技术方面的问题和自己的伙伴产生矛盾,产生争论.这样的争论在学习研究过程中是件好事,多学术的进步有着帮助,但是在工程中就不同了,工程的进行可能会因为这样的争论而拖延工期,最后可能并没有什么改变还拉长了工程时间.作为一

编程到工程的精髓

列子有云:“得其精而忘其粗,在其内而忘其外:见其所见,不见其所不见,视其所使,而遗其所不视.”从编程到工程,我们需要很大的转换.找准目标和方向,取其精华,在一起内在的精华,我们才会明白编程其实就是做工程的基础. 语言知只是工具.从大一到大二,C语言机面向对象程序设计是大一时候学的一门基础课程,此外正在学的java语言,还有.NET语言,都是计算机专业最基础的语言.每一门语言,都需要掌握它的 精髓,只有明白了语言的精髓——就是特点,我们就能很轻松的进行编程.因为每一段代码,你要先读懂.读通它的意思

大道至简:软件工程实践者的思想——第六章感想 从编程到工程

从编程到工程 语言只是工具 语言对于一个从事IT相关行业的程序员.技术人员来说,语言仅仅只是工具,从事IT相关行业的人来说,看清楚大的程序来说这一切的开始,就是源于“语言只是工具”! 猿之于为人,“学会制作和使用工具”是最重要的标志,所以从事IT相关行业的我们也被业外的人称为程序猿,当然这里更多的是读音有点相似.因而我不知道“语言只是工具”这句话,究竟是对语言的膜拜,还是漠视.  然而从那一刻开始,我才真正地知道工程.我们学过的吃.#c++\还有现在所学的java,可能有些人说这是几门技术课程,

Java网络编程(tcp在服务器上应用多线程)

package org.tcp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class EchoThread implements Runnable { private Socket client = null; public EchoThread(Socket client){ this.c

编程实现获取linux服务器cpu、内存和磁盘使用率

proc文件系统介绍 /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为内核与进程提供通信的接口.用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数.由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的. /proc目录中有一些以数字命名的目录,它们是进程目录.系统中当前运行的每一个进程在/proc下都对应一个以进程号为目录名的目录/proc/pi

iOS从零开始学习socket编程——高并发多线程服务器

在上一篇文章<iOS从零开始学习socket编程--HTTP1.0服务器端>中我们已经简单的接触了OC搭建的HTTP服务器. (地址http://blog.csdn.net/abc649395594/article/details/45131373) 出于用户体验和鲁棒性考虑,这里把这个HTTP服务器改进成多线程的. 首先,AnsycSocket这个类是基于OC的Runloop实现的,Runloop实现了方法的异步调用但并不支持多线程. 在这里首先简单区分一下多线程和方法异步调用的区别.他们都

linux编程实例--简单多进程服务器

主要利用fork事先创建若干个进程,并发处理多个客户端的连接,返回当前系统时间.具体代码如下: server.c # include <sys/types.h> # include <sys/socket.h> # include <netinet/in.h> # include <time.h> # include <string.h> # include <stdio.h> # include <signal.h> #