程序设计/概论
在本章中,我们将介绍学习程序设计过程中些需要关注的一些问题以及大多数程序语言都具有的一些共有元素。
如果你只希望学习一门特定的语言的话,你可以跳过本章直接阅读你希望学习的那门语言的相关教程,但是我们推荐初学者快速浏览一下本章以获得一个总体的印象。
你需要学习什么?
[编辑]如果你希望在软件开发的领域中能够获得长足的发展,那么仅学习一门或者几门语言是远远不够的。事实上对编程语言的掌握是一个程序员所要具备的最基本的技能,这就好比一个书法家首先要认识字一样。世界上认识字的人有很多,但并不是每一个都是书法家。除了要掌握编程语言,一个好的程序员还需要很多其他方面的知识。
在这里我们向大家推荐Robert L. Read博士所写的一篇文章《How to be a Programmer: A Short, Comprehensive, and Personal Summary》,你可以从[1]得到这份基于GNU 自由文档许可的文章。根据Read博士的观点,一个好的程序员除了要具备可以写出有效代码和测试的技能以外,还需要能够融入到团队中去,掌握与人沟通的各种技巧,要不断的学习,另外还需要具有判断能力,比如在时间和空间的复杂度上进行平衡考量,对风险的预计等。
对于一个程序员来讲,一些基本的计算理论知识是必需的,比如数据结构,基本的算法,基本的计算机系统理论和软件工程知识等。如果你经过了大学计算机系的专业系统学习,那么你大概已经具备了这些知识。但是一定要记住:能够灵活运用知识永远比单纯的记忆更重要。
这并不是说,没有上过大学或者没有上过计算机系的人们就不能成为好的程序员。在如今这样的信息时代里,有心的人们可以通过各种途径获取知识。所谓“条条大路通罗马”即是讲的这个道理。
为了更加明确的说明成为一个程序员需要哪些知识,我们列出下面一些知识点以供参考:
- 基本的结构化编程或者面向对象编程的思想
- 数据结构以及算法
- 数理逻辑
- 计算机系统结构原理
- 软件工程知识
- 团队协作的知识以及相关工具的使用:比如版本控制,开发进度控制等
- 恰当的与人沟通的方法:包括与客户沟通,与同事沟通的方法等
这些当然还远远不够,举例来讲,如果你从事MIS系统的开发,那么你应该对数据库系统原理有所了解,如果是驱动的开发,则需要硬件知识。对于一个程序员来讲,应该不断的学习,不能满足于现有的知识。
泛泛而谈:程序设计中的一些概念
[编辑]所有的计算机程序都可以认为是数据和逻辑的集合。一门程序语言一般都有若干基本的数据类型,比如整形,字符型等,在书写程序时,通常用变量和常量来表示各种数据。在一些高级语言中,也存在复杂的数据类型,比如一些语言中的用户自定义类型(User Defined Type,简称为UDT),以及类等。
而处理数据的逻辑一般是由各种语句以及函数构成的,而函数又是由语句构成的,比如赋值语句,各种数学以及逻辑运算语句,分支跳转语句(即类似if...else...的语句),循环语句等。
各种计算在语句中被频繁的使用,最基本的运算有两种,即数学运算和逻辑运算。数学运算比如加法,减法,平方等,而逻辑运算则包含与,或,非,异或等等。
在下文中,我们将分别对这些要素进行介绍。
数据类型与变量,常量
[编辑]让我们想一下小时侯:大人们会扳着手指教我们数数。我们逐渐的知道整数是什么,后来又知道了小数、正数、负数、实数、虚数……这样的概念。
我们知道,一个事物在这个世界上通常具有各种特征,而具有相同特征的事物通常被划为某一种类别。比如说起"书",我们就会想到它是可阅读的一类东西。
在程序语言中,一种数据类型指的是具有某些共同特征数据的集合。比如“整数”就是0、1、2、3……的集合。也有的数据类型只包括有限的元素,比如大部分程序语言中都存在的布尔型数据,就只包含两个值:真与假。
多数语言中都有一些共同的基本数据类型,比如表示整数的整型,表示实数的浮点型,字符串型,等等。
有些语言允许自定义新的数据类型,比如我们在面向对象语言中经常见到的类,c语言中的结构体等。
数据类型说明了一种语言可以对什么样的数据进行处理,而变量和常量则是语言中表示数据的方法。