一起学编程(3--组织与表达)

利用计算机的目的是为了解决问题,我们可以将程序看做是解决问题的过程和结果的描述。这跟我们用流程和规范来指导做事并无本质的区别,而且更为简单。因此我们希望计算机有一天能理解我们的自然语言,这样,我们利用自然语言就可以与计算机交流,并指挥计算机做事。但无论是自然语言还是现有的编程语言,都需要计算机能够理解,这种理解与和他人进行交流时的理解也是一致的。因此如何清晰地,准确的对要做的事情进行组织和表达就非常关键。这也从另外一个角度告诉我们,编程的能力和我们日常工作的表达(含组织)能力是相通的。但需要注意的是这种组织和表达,可以是说(语音),写(文字),做和思维的单项或组合。目前编程中的组织和表达主要倾向于文字和思维。这也是有些朋友不太会讲,但会做(编程)的原因。

人类在工作,学习和生活中积累的很多经验,在编程中是非常有用的。因为编程本身就是将我们处理事情的模拟过程数字化而已。因此,在我们编程过程中遇到问题时,我们应该积极主动的向过去(经验)和现在(其他领域)学习。不需要将编程看成是一个神秘的东西。比如,面向对象和面向过程的编程思想,一系列的设计模式等都来自于现实生活。这也提醒着我们,如果在编程过程中遇到问题,可以抛开编程针对计算机的思维定势,看看没有计算机,我们会怎么做。

我们知道对于自然语言来说都包含语音,词汇和语法三要素。对于编程语言来说是基于自然语言的,因此构成上会有些差异,语音是取用自然语言的语音。词汇则比自然语言的词汇少很多。编程语言只有基本的词汇,这个词汇就是我们编程语言中的关键字。同样,编程语言的语法也比自然语言的语法简单很多。编程语言的词汇和语法虽然比自然语言简单很多,但编程语言是非常严格的。一般不允许多义和歧义。

不同的编程语言一般都有自己的词汇和语法,但其实差异并不是特别大,在词汇上:数据类型词汇(字符串,数字等),流程表达词汇(语句,判断,循环),辅助词汇(注释)。语法上的相似性其实更大(可以参考编译原理)。编程语言之间的最大差异,我觉得来自于基本类库(但这本质上又不算语言本身的差异)。而高级语言与低级语言的差别主要是词汇方面。强类型与弱类型语言的差异主要来自于对于数据类型的处理上。主流的高级语言中主要有C风格,Pascal风格等。我们上大学的时候,具体的语言只学了一门,一般的课程涉及到编程都是用伪代码,这种伪代码介于自然语言和编程语言之间。而如果要实践,可以很容易根据伪代码转换成目标编程语言。

基本词汇加上顺序(隐含的),分支和循环三个表达流程的要素就构成了编程语言组织和表达的基础。面向过程和面向对象的最大区别在于程序的组织方式方面。面向服务,面向方面编程更多的则是一种视角的区别。后面会比较详细的讨论到这些内容。

由于计算机本身的特性,编程语言的词汇和语法虽然比较简单,但正是因为这种简单使得编程复杂化,工作量惊人。比如”把订单保存到数据库里",对于自然语言来说,表达很简单。但对于编程语言来说却需要大量的语句来表达(如果直接用01指令来实现,再牛B的程序员要完成这个任务,都不是一两天能搞定的)。因此封装,复用就变得非常重要。

1)如果编程过程中不明白业务如何处理的时候,可以想象手工如何做;

2)提高自己的组织和表达能力对于工作,学些,生活和编程都非常有用;

3)工作和生活中的一些经验模式也可以用于编程设计中。(可以使用场景类比法)。建议在学习设计模式的时候,应该多思考一下实际生活的中的类似场景。

关于设计模式,我前面有很多文章。有兴趣可以参考。

??

时间: 2024-10-07 21:01:21

一起学编程(3--组织与表达)的相关文章

0502《与孩子一起学编程》读书笔记3

1.主要有两种循环,计数循环和条件循环.前者一般叫做for循环,后者一般叫做while循环.要停止一个失控循环的Python程序,只需要按下Ctrl C. 2.跳出循环语句有两种,break和continue.前者完全终止该次循环,后者是提前跳转到循环的下一次迭代. 3.附带目前查询的资料: ----python函数库:http://www.lfd.uci.edu/~gohlke/pythonlibs/ ----<与孩子一起学编程>网址:http://www.manning.com/sande

我给女朋友讲编程分享篇--看我姐和我女朋友如何学编程

有两天没有更新文章了,真是惭愧啊.前天,我想写写有关网站配色.美工方面的一些内容,查了很久,都没有找到满意的,本人也是程序员,没做过美工,所以对这方面确实很欠缺,希望哪位美工看到了,可以给我们程序员专门写一个系列的文章,叫<我教程序员学美术>,然后用最简单的.最生动的内容写出来,一定有很多程序员喜欢看.如何真得火了,到时候出书了,我一定买一本,捧捧场,哈哈. 昨天,搜了一下,如何注册免费空间和域名,本来是想注册一个免费的域名,申请一个免费的空间,自己可以更新文件的那种,结果,找了好几个,都不满

一起学编程(2--认识世界)

?? 人类认知这个世界的开始并不是开始于人类成为人类的时刻,应该是生命开始诞生的时候就开始了,因为我们对世界的认知中,有部分已经刻画在我们的基因里面.在这里,我并不想写认知的历史和哲学,因为一是功底不够,二是我的目标是写学编程.但由于编程本质上也是认知世界的一部分,因此,我想我应该被允许从这里开始我们的编程之旅. 当生命具有自我意识的时候,其实就代表生命可以把自己从环境中区分开来,当然,前提是事物是可区分的,即事物具有生命感官可区分的特性(属性和行为).分类是我们认知这个世界最基本的手段,而分类

【转】计算机专业不是学编程

学计算机的如果你有耐心看下去,我敢保证这绝对是一种收获大师提醒: 计算机专业不是学编程,而是懂得计算机的工作原理,以及和计算机相关的学科技术.一个高手不必懂得编程,coder是最底层的人物,最重要的是思想,解决问题的思想.对计算机专业的学生来说,英语和数学也是最重要的.编程不用于实际,编得最好也是花哨,毫无意义.对于初学者来说,应该懂得更多的why 原理,而不是更多的how,那是工作后的事情. 每一计算机学者都应该有自己的思想,不要跟着别人走,不要看着别人用什么新技术作出什么来的时候,你就心动了

一起学编程(转载)

人类认知这个世界的开始并不是开始于人类成为人类的时刻,应该是生命开始诞生的时候就开始了,因为我们对世界的认知中,有部分已经刻画在我们的基因里面.在这里,我并不想写认知的历史和哲学,因为一是功底不够,二是我的目标是写学编程.但由于编程本质上也是认知世界的一部分,因此,我想我应该被允许从这里开始我们的编程之旅. 当生命具有自我意识的时候,其实就代表生命可以把自己从环境中区分开来,当然,前提是事物是可区分的,即事物具有生命感官可区分的特性(属性和行为).分类是我们认知这个世界最基本的手段,而分类的基础

少儿创意学编程(Scratch基础篇):第3课——捉鬼敢死队

<少儿创意学编程(Scratch基础篇)>,参考了英国公益组织发起的"code club(代码俱乐部)"--少儿免费学编程活动.愿为中国的少儿创意编程教育尽微薄之力,对国内的家长.信息教师和相关教育机构有所帮助,共同促进软件素质教育的发展. 本课程以Scratch软件为教育工具.Scratch是一种图形化编程语言,由麻省理工学院开发.孩子们可以像搭积木一样,拖动和组合代码块,制作丰富多样的程序,比如动画,故事和游戏等等.本课程共设有6个项目,知识点由简到难,循序渐进,带领孩

少儿创意学编程(Scratch基础篇):第4课——聊天机器人

<少儿创意学编程(Scratch基础篇)>,参考了英国公益组织发起的"code club(代码俱乐部)"--少儿免费学编程活动.愿为中国的少儿创意编程教育尽微薄之力,对国内的家长.信息教师和相关教育机构有所帮助,共同促进软件素质教育的发展. 本课程以Scratch软件为教育工具.Scratch是一种图形化编程语言,由麻省理工学院开发.孩子们可以像搭积木一样,拖动和组合代码块,制作丰富多样的程序,比如动画,故事和游戏等等.本课程共设有6个项目,知识点由简到难,循序渐进,带领孩

少儿创意学编程(Scratch基础篇):第5课——绘画板

<少儿创意学编程(Scratch基础篇)>,参考了英国公益组织发起的"code club(代码俱乐部)"--少儿免费学编程活动.愿为中国的少儿创意编程教育尽微薄之力,对国内的家长.信息教师和相关教育机构有所帮助,共同促进软件素质教育的发展. 本课程以Scratch软件为教育工具.Scratch是一种图形化编程语言,由麻省理工学院开发.孩子们可以像搭积木一样,拖动和组合代码块,制作丰富多样的程序,比如动画,故事和游戏等等.本课程共设有6个项目,知识点由简到难,循序渐进,带领孩

青少年、大学生、职场精英给你一个学编程的理由

<图解C++--轻松学编程>序计算机编程已经成为欧美学生必修课程之一,过几年当你再遇到这些歪果仁的时候,吓到你的不是他们的英文表达能力而是他们熟练的编程能力.目前在国内编程还只是程序员的工作,大多数非计算机从业人员没有接触过编程知识.随着信息传输5G时代的来临,科技发展的速度会像闪电一般.未来智能家电充斥楼宇,假如学生少年掌握编程技能就可以控制.改善智能家电的控制程序,也可以扩展兴趣爱好,像机器人AI编程.趣味小游戏开发都是有益身心的课外实践活动:校园内大学生在论文课题的研究中,算法模型需要进