【小课堂】零、什么是编程

本系列文章用于暑假小课堂的教学,作者保留所有权利(

本次暑假小课堂的教学大纲大致为:

0、什么是编程?(1)
1、简单输入输出(1)
2、标识符、保留字、数据类型(1)
3、运算符、表达式、分支结构(1)
4、数组、循环结构(2)
5、简单函数、递归初步(2)
6、字符串(1)
7、文件(1)
8、简单算法与程序设计(3)

视情况选讲内容:

1、数据结构初步(2)
2、简单指针(2)
3、自定义类型(1)
4、面向对象初步(2)
5、学完这些能做什么?(1)
……


零、什么是编程?

这问题看起来很傻,却是一个初学者需要考虑的,可以明白自己学习的目的,深入了解以后甚至可能坚定你学习的决心。

什么是计算机?

在上世纪,电子计算机诞生了(非电子的可能更早),本来只是个用于计算的机器(可能和算盘差不多),然而人们很快就探索到了它无穷的可能性。
首先是在战时。比如说计算弹道;比如说破解密码(见《模仿游戏》);而基于数学、物理学等一系列学科的成果,人们发现现实中的很多事、物(甚至有人认为是所有事物),都可以用计算来准确模拟、描述、分析、计算。
这个预言很快成真,直到现在,就拿电子游戏举例,仅仅是一台普通的家用电脑就可以模拟出逼真的游戏场景,模拟一切你认为在现实中可以做到的事。计算机的性能在飞快提升,然而计算机的能力基本没有改变——仅仅是计算而已。
读到这里,可能你觉得不足为奇,也可能觉得大吃一惊;毕竟我真的遇到过持后者想法的人,现代信息技术的高度封装也使得人们不需要过多的了解计算机的内部原理。//
是什么使计算机器具有了如此多的可能性呢?

——编程

(终于到重点了)
之前有学者(见艾伦·图灵)证明过,一台如现代电脑一样的机器一旦给它编写程序,就可以实现所有的计算问题(可能表述不太严谨,有兴趣可以了解一下“图灵机”)而这种计算问题可以是“计算1+1=?”也可以是“输出xxx”,甚至是“放视频!打游戏!”
最早的计算机,就是类似计算器的机器,然而在一代代程序员的努力下,给它加功能,给它完善操作系统,给它配上各种功能的程序;后人又在前人的成果上进一步完善,最终形成了现代信息科技的高楼大厦。
学习编程,就是了解使用计算机解决问题的思维(注意:不是自己解出答案然后让计算机输出一下答案这么简单,这是很多数学较好的初学者的误区\像hl同学)、了解计算机的工作模式、利用这些前人的成果,想办法玩出新花样的过程。
由此我们发现,在学习编程的过程中,你将可以:
——大概了解计算机,不会被唬到了
——突然发现之前不会解决的电脑故障慢慢有了思路,甚至可以自己解决
——学习技能,编写实用程序(开发游戏?)
——复习、学习数学(物理等)知识
——锻炼思维
——与其它学科、专业对接
——为将来进一步学习、开发大的项目打下基础
——思考世界本质


我们的编程环境

编程就是人与机器沟通的桥梁,编程语言和人类的语言一样,也是五花八门。
这些语言都是工程师为了各种不同的应用场景的方便设计的,各有各的优劣,但大体来说,只要是图灵完备的语言,就都可以实现我们想让它完成的一切指令。
C和C++是他们中比较老资历的,用的人也多,功能也强,是现在完成开发任务的主流之一。
其中C是爸爸,现在仍在一些领域发挥着不可替代的作用。
C++是儿子,它基本上继承了C的所有功能(有极小的部分有些不同),但C++更为强大,其面向对象功能使它拥有现代软件工程的开发能力,而随着C++一代代地更新,它渐渐具有了目前主流语言的所有“特征”(编程范式)。由于它几乎是现在的主流,C++的名气比C更响一些。

为什么学习C/C++呢?因为C/C++与计算机底层架构关系比较密切,也具有一定程度的抽象。C/C++尤其适合计算机相关专业同学学习,除了程序编写的学习之外,对计算机的了解也会更进一步。

正如上文所提到的,我们现在所用到的所有软件都是基于前人的编程、开发的得到的。我们马上要用到的编程环境,也是由其他人编程编出来的(除非你真的想和劳技课中的那些低电平、高电平打交道;可以出门右转Minecraft)。C/C++语言,作为一种高级语言,是需要编译器来实现人机对话的。所以:电脑是无法读懂C/C++语言的!要想通过C/C++语言与电脑对话,就要把代码交给编译器,编译器把你的代码翻译成某种0101010101101010,这时,你的电脑上会出现一个新的.exe文件,这才是电脑认识的东西。
好在,我们现在用的编辑器自带了编写、编译、运行功能(称为集成开发环境IDE),大大方便了开发。但我们还是应该知道编译器的概念,举个例子:使用C++语言的编译器可以将C++语言的代码转化为机器码给电脑,但是如果你现在给它打了句“标准上海话”,它能听懂吗?显然不行,但因为它不懂你说什么,它只会告诉你“你代码有问题”,这是你就要一字一句地修改,直到把你的“标准上海话”改成“标准C++语言”,它才会告诉你“ok”。
这只是一个例子,但是在将来的编写过程中,我们平均每五分钟(很有可能)就会听到一次编译器说的“听不懂,重写!”这样的话,因为电脑很严格。在将来的学习中,你会更加深刻地理解电脑的严格之处,但多数情况下,编译器可能是编程时最可靠的朋友了。

作业:

思考:

1、为什么我们说计算机是第三次科技革命的标志之一?它为什么能有这么多可能性?
2、什么是程序?什么是编程语言?什么是编程?
3、什么是编译器?什么是IDE?
*4、为什么要学编程?