编程随想... 1
1. 编程的起源... 1
2. 编程的灵魂... 1
2.1 编程语言发展的表象与实质... 1
2.2 编程三要素:... 1
2.4 抽象的启示... 2
2.5 我的话—— 一总结(“肤浅定义”)和一问题留待思考... 2
3. 编程的学习... 2
3.1 引子... 2
3.2 编程入门... 2
3.3 编程进阶... 3
3.4 编程学习心态... 3
编程随想
1. 编程的起源
Text Box: 抽象—编程的灵魂,是计算机科学中最为重要的概念。诗人拜伦的女儿艾达对分析机工作原理进行描述的方式正是编程这种思维模式的稚chú形。而查尔斯的分析机可以按指令的不同完成不同的任务,因此分析机已具有现代计算机的一些基本的运作机制,如输入输出、存储设备、处理器和控制器等。Ada成为理所当然的首位程序员。
2. 编程的灵魂
2.1 编程语言发展的表象与实质
表象:从2GL到现在5GL,编程语言的语法、语义或语言实现的IDE发生炫目的变化。
实质:提升语言自身的抽象度
事实上,每一种语言的出现都是对某种或几种软件开发模式在一定程度上的推崇与创新,编程语言内在属性决定了软件开发的难易。
2.2 编程三要素:
I、 开发工具(编程语言)
语言提供程序员一种表达逻辑(kemin:什么逻辑?)的法则,语言实现(kemin:怎么实现?)还会按照这种法则对程序员写下的源码进行检测并生成目标机器可以识别的指令序列。
PS:一门语言的好与不好在一定程度上取决于它提供的抽象是否好用。
II、 编程主导—程序员:
程序员在一定限定的条件下构造出问题(kemin:什么样的问题?JDAS!...这里问题可多咧,没涉及到算法的东东,看看软环境,我们在玩这个!)的解决方案并用编程语言对其进行实现。
PS:程序员所从事的软件开发就是基于已有的抽象去构架更高层的抽象。(想想程序员使用的工具是什么,语言啊,已经抽象来了。)
III、 软硬环境
软环境主要包括系统服务、运行库以及开发用到的语言库、开发包、引擎、组件等等。如:.NET广义上讲就是一套软环境组合。
2.3 抽象的破译
I、 一些表象的东西
抽象(abstract)涉及一个过程,也就是把一个概念与另一个概念以某种方式联系起来的过程,要成功实现这种关联需要人为付出一些努力,在获取(提取)到完成抽象所需的信息进行合理操作之后,抽象的结果便会呈献在我们面前。抽象意味着对不同概念进行关联的过程。
表象在:把山沟抽象成老鹰比喻把机器指令抽象成循环。抽象就这么一些,没啦?
II、 一些不那么表象的东西——抽象背后的两个隐含属性
n 抽象的实现者
把“山沟”抽象成“老鹰”的实现者是人,把“机器指令”抽象成“循环”的实现者是编程语言。
n 概念间的关联方式
把“山沟”抽象成“老鹰”依靠外形信息进行关联,而把“机器指令”抽象成“循环”靠编程语言把“循环”的概念解释成“机器指令”,解释关联!
PS:更高抽象度的编程语言意味着该语言支持更多的抽象数目,也就是能实现的编程概念与机器指令间进行解释关联的种类。(kemin:请思考:有什么样的编程概念,“循环”是一个。还有一更底层的东东,为什么会有这样的概念,如接口……)
III、 绝对本质的东西
n 抽象出现在编程中的原因
机器语言与自然语言语义相差太大,二者“思维共识”很少,难以交流
n 使用解释关联方式的原因
语义不一,解释不是最为简单的方式吗?计算机能听懂你的意思就行了。
n 编程语言与软硬环境在编程中充当的角色
编程语言与软硬环境的任务:为(各种易于操作的)编程概念提供抽象实现,以缓解人类与计算机之间的差异带来的交流困难。
2.4 抽象的启示
未来软件开发的发展方向——尽量多的让编程语言和软硬环境去掌握对各类概念进行解释所需要的信息以及运用与控制它们的方式方法,这样程序员可以从尽量接近问题本身的角度去解决问题。
PS:个人认为,抽象度也有一个折衷的问题,像“给我一个开发一个FIFA2005”这样的命令到机器语言超高级抽象不是不可能,而是没必要。各类概念来自哪里,现实生活?
2.5 我的话—— 一总结(“肤浅定义”)和一问题留待思考
n 抽象的“肤浅定义”——隐藏细节,提供接口
n 问题——怎样把抽象应用于软件开发
3. 编程的学习
3.1 引子
I、 学习编程的一个更值得思考的问题—怎样t-r-y?两个方面
n 怎么入门并持续提高
n 学习风向标—心态
II、 缺乏对“编程”二的真正理解的表现
当你已经学习了多门编程语言,当你的十指在键盘上行云流水般跳跃时,若平均三十秒你就会为某种原因让跳跃暂时中断而进行所为思考或者在反复这种思考十次之后仍然无法让跳跃继续而恼羞成怒把电脑休眠掉。你有吗?
3.2 编程入门
n 本地化前人的经验,走适合自己的路
n 不争事实—缺乏全局了解,盲人摸象得“堆积木”论调
PS:我也是一开始也没有做什么“全局了解”就进这魔方了,打了几个转,回来再看,对编程的感受是不同,我觉得关键还是自己批判式思考,和最重要一点,就是有人指点一下。对于初学的,一开始就“全局了解”不是想象中的简单。
3.3 编程进阶
n 在信息极易获取的今天,开放思想,汲取前人的经验是迅速提高的重要途经。
n 信息技术日新月异,把握流行趋势,提升技术的竞争力。
3.4 编程学习心态
n 好心态,进入学习良性循环的关键
n 何谓高手—正确理解“编程水平”四字
3.5 不要指望成(编程)“全才”,高手不是一个静态目标,而是一个动态过程,关心的关键在于自己是否每天都在提高,自己是否在自己有有兴趣的知识范畴内取得了进步。
3.6 方式:在良性循环下不断阅读优秀的编程资料,分析各类源码、积极参与讨论并并身体力行的去些实际的开发
PS:个人认为,这个“高手”目标的定义及其追求不仅仅可用在编程领域,这是学习的真面目。
1. 编程的起源... 1
2. 编程的灵魂... 1
2.1 编程语言发展的表象与实质... 1
2.2 编程三要素:... 1
2.4 抽象的启示... 2
2.5 我的话—— 一总结(“肤浅定义”)和一问题留待思考... 2
3. 编程的学习... 2
3.1 引子... 2
3.2 编程入门... 2
3.3 编程进阶... 3
3.4 编程学习心态... 3
编程随想
1. 编程的起源
Text Box: 抽象—编程的灵魂,是计算机科学中最为重要的概念。诗人拜伦的女儿艾达对分析机工作原理进行描述的方式正是编程这种思维模式的稚chú形。而查尔斯的分析机可以按指令的不同完成不同的任务,因此分析机已具有现代计算机的一些基本的运作机制,如输入输出、存储设备、处理器和控制器等。Ada成为理所当然的首位程序员。
2. 编程的灵魂
2.1 编程语言发展的表象与实质
表象:从2GL到现在5GL,编程语言的语法、语义或语言实现的IDE发生炫目的变化。
实质:提升语言自身的抽象度
事实上,每一种语言的出现都是对某种或几种软件开发模式在一定程度上的推崇与创新,编程语言内在属性决定了软件开发的难易。
2.2 编程三要素:
I、 开发工具(编程语言)
语言提供程序员一种表达逻辑(kemin:什么逻辑?)的法则,语言实现(kemin:怎么实现?)还会按照这种法则对程序员写下的源码进行检测并生成目标机器可以识别的指令序列。
PS:一门语言的好与不好在一定程度上取决于它提供的抽象是否好用。
II、 编程主导—程序员:
程序员在一定限定的条件下构造出问题(kemin:什么样的问题?JDAS!...这里问题可多咧,没涉及到算法的东东,看看软环境,我们在玩这个!)的解决方案并用编程语言对其进行实现。
PS:程序员所从事的软件开发就是基于已有的抽象去构架更高层的抽象。(想想程序员使用的工具是什么,语言啊,已经抽象来了。)
III、 软硬环境
软环境主要包括系统服务、运行库以及开发用到的语言库、开发包、引擎、组件等等。如:.NET广义上讲就是一套软环境组合。
2.3 抽象的破译
I、 一些表象的东西
抽象(abstract)涉及一个过程,也就是把一个概念与另一个概念以某种方式联系起来的过程,要成功实现这种关联需要人为付出一些努力,在获取(提取)到完成抽象所需的信息进行合理操作之后,抽象的结果便会呈献在我们面前。抽象意味着对不同概念进行关联的过程。
表象在:把山沟抽象成老鹰比喻把机器指令抽象成循环。抽象就这么一些,没啦?
II、 一些不那么表象的东西——抽象背后的两个隐含属性
n 抽象的实现者
把“山沟”抽象成“老鹰”的实现者是人,把“机器指令”抽象成“循环”的实现者是编程语言。
n 概念间的关联方式
把“山沟”抽象成“老鹰”依靠外形信息进行关联,而把“机器指令”抽象成“循环”靠编程语言把“循环”的概念解释成“机器指令”,解释关联!
PS:更高抽象度的编程语言意味着该语言支持更多的抽象数目,也就是能实现的编程概念与机器指令间进行解释关联的种类。(kemin:请思考:有什么样的编程概念,“循环”是一个。还有一更底层的东东,为什么会有这样的概念,如接口……)
III、 绝对本质的东西
n 抽象出现在编程中的原因
机器语言与自然语言语义相差太大,二者“思维共识”很少,难以交流
n 使用解释关联方式的原因
语义不一,解释不是最为简单的方式吗?计算机能听懂你的意思就行了。
n 编程语言与软硬环境在编程中充当的角色
编程语言与软硬环境的任务:为(各种易于操作的)编程概念提供抽象实现,以缓解人类与计算机之间的差异带来的交流困难。
2.4 抽象的启示
未来软件开发的发展方向——尽量多的让编程语言和软硬环境去掌握对各类概念进行解释所需要的信息以及运用与控制它们的方式方法,这样程序员可以从尽量接近问题本身的角度去解决问题。
PS:个人认为,抽象度也有一个折衷的问题,像“给我一个开发一个FIFA2005”这样的命令到机器语言超高级抽象不是不可能,而是没必要。各类概念来自哪里,现实生活?
2.5 我的话—— 一总结(“肤浅定义”)和一问题留待思考
n 抽象的“肤浅定义”——隐藏细节,提供接口
n 问题——怎样把抽象应用于软件开发
3. 编程的学习
3.1 引子
I、 学习编程的一个更值得思考的问题—怎样t-r-y?两个方面
n 怎么入门并持续提高
n 学习风向标—心态
II、 缺乏对“编程”二的真正理解的表现
当你已经学习了多门编程语言,当你的十指在键盘上行云流水般跳跃时,若平均三十秒你就会为某种原因让跳跃暂时中断而进行所为思考或者在反复这种思考十次之后仍然无法让跳跃继续而恼羞成怒把电脑休眠掉。你有吗?
3.2 编程入门
n 本地化前人的经验,走适合自己的路
n 不争事实—缺乏全局了解,盲人摸象得“堆积木”论调
PS:我也是一开始也没有做什么“全局了解”就进这魔方了,打了几个转,回来再看,对编程的感受是不同,我觉得关键还是自己批判式思考,和最重要一点,就是有人指点一下。对于初学的,一开始就“全局了解”不是想象中的简单。
3.3 编程进阶
n 在信息极易获取的今天,开放思想,汲取前人的经验是迅速提高的重要途经。
n 信息技术日新月异,把握流行趋势,提升技术的竞争力。
3.4 编程学习心态
n 好心态,进入学习良性循环的关键
n 何谓高手—正确理解“编程水平”四字
3.5 不要指望成(编程)“全才”,高手不是一个静态目标,而是一个动态过程,关心的关键在于自己是否每天都在提高,自己是否在自己有有兴趣的知识范畴内取得了进步。
3.6 方式:在良性循环下不断阅读优秀的编程资料,分析各类源码、积极参与讨论并并身体力行的去些实际的开发
PS:个人认为,这个“高手”目标的定义及其追求不仅仅可用在编程领域,这是学习的真面目。