程序员的考试要求:掌握数制及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;理解计算机的组成以及各主要部件的性能指标;掌握操作系统、程序设计语言的基础知识;熟练掌握计算机常用办公软件的基本操作方法;熟练掌握基本数据结构和常用算法;熟练掌握C程序设计语言,以及C++、Java、Visual
Basic中一种程序设计语言;熟悉数据库、网络和多媒体的基础知识;掌握软件工程的基础知识,了解软件过程基本知识、软件开发项目管理的常识;了解常用信息技术标准、安全性,以及有关法律、法规的基本知识。
我觉得应该根据你的工作需要或者说你的发展方向而定。
基本上两大类吧:C/C++和Java。比如,如果你要做企业级应用的你应该学习Java和C#;如果你想做嵌入式,那么应该学好C语言;其他情况下,在你不知道要做什么之前你可以选择学习C/C++。
学会这两大类中的一类,对于你学习其他语言都将是比较轻松,包括脚本语言,动态语言……1、我的入门是从学习C语言开始的(其实课程是C++),这是我们学校的公共课,我上课比较认真(虽然老师讲得很差,而且一段时间后,我就发现自己的基础掌握比她好,当然理解深度没她好),因此,我认为对于完全没有基础的人而言,听别人讲比较容易入门。当时的教材是学校自己编的,挺烂的。
建议一(以C/C++为例),对于刚想进入编程的人(就是从来都没有接触过编程的人),最好是听课的方式(自己看的话估计要很慢,而且很痛苦),可以找视频或者培训等。C语言推荐入门教材:谭浩强的C语言,最新版是第三版,不过第二版应该也可以了(蓝色的)。
说明一下:坚决不同意直接看K&R的《The C programming language》,这本书绝对不是初学者可以看懂的,里面讲语法的并不多,语法都是合在程序里面讲。不过这本书非常好,入门以后一定要看的一本书。
当然可以从C++直接入门,C++之父强烈推荐从C++直接入手。C++推荐入门教材:钱能的C++(红色的,清华大学出版),这本书第一版不是ISO C++,不过比较经典,作者现在也出了第二版了,第二版好像不是太好。
国外的最好的入门教材据说是:《Acclerated C++》作者是Koenig和Moo夫妇,非常厉害。他们的著作还有《c陷阱与缺陷》《c++沉思录》。
《Acclerated C++》这本入门的书我没有看过,我觉得还是先找本国内的书好好看,看的差不多了,国外的经典书籍随便看就会觉得很有味道,否则你可能会很受打击。入门的书至少要看两三遍(要彻底理解哦 ):)。
如果是C++,我建议后面类的部分至少要理解三到五遍。说明一下,c++模板的部分可以先不用看,如果有兴趣的话,等把c++学的差不多了,我觉得可以把模板、STL、泛型编程结合起来学习,这个又是一个很大的工作量了,又得下很大的功夫。
所以说,C++博大精深啊。建议二、学习过程中要结合简单的算法,像冒泡还有类似c语言程序百例这样的小例子做做;更进一步应该做点大一点的项目,最好是控制台程序。
或者你已经着手学习win32、MFC或linux,你也可以结合平台做点小的项目。那时我其实并没有考虑那么多,因为我不是学计算机的,因此我就把参加一些计算机之类的考试当作学习目标。
我当时其实C++语言基础已经很不错了,但是上机实践很少(那时我没有电脑),因此参加省计算机二级,全国计算机三级和全国计算机四级考试,结果上机都没有通过。我很郁闷,二级的时候是我不知道怎么样进那个DOS界面把题目调出来,三级的时候是很快就编好了,也通过运行了,可是成绩出来却不及格,四级的时候是编好了,可能是我那题目比较难,好像用了两次循环,结果那破机器竟然承受不了。
后来一乱就毁了(当然主要是上机太少了)。不过我那些上机都没有去补考。
二级和三级的时候是自恃水平已经远远超过考试要求了(^_^,见笑了,可能是因为等级考试还是比较简单的),四级的时候则因为自己已经通过高级程序员考试,觉得补考上机好像没必要。(我高程和四级都是在2003年考的)。
建议三:定位学习方向(见附录一)并好好学习计算机基础知识。在你还不确定学习方向,或者你还在大学本科期间,那么我认为应该先把计算机的基础知识好好学习一下。
我认为计算机必学的基础课程而且要精学——首先是数据结构,其次是操作系统、软件工程,数据库。这四门课不管你将来想从事哪个方向的基本上都会用到。
当然,有时间的话,其他基础课都是应该掌握的,离散数学、组成原理、体系结构、网络、编译原理甚至跨学科的。方向是很重要的,因为知识其实是无限的,一个小小的领域就够你研究很久了。
本科生可能还没有什么方向的感觉,但是到了研究生你一定要清楚自己到底想要做什么,要往哪个方面发展,不要盲目学,瞎学乱学,否则最后可能看似什么都会,其实什么都不会。我也曾经学习过Java一段时间,这篇文章既然是谈编程语言的入门学习,我也简单说一说。
因为有了比较C++扎实的语言基础,所以Java学起来比较轻松。我先找了国内一本薄薄的教材很快看了一遍(几乎都理解,但是只看了一遍),空闲的时间配合清华张孝详老师的java视频。
以后其实才算我真正要开始入门JAVA的学习,我用了是《core java》中文第六版(本来想用候捷翻译的第二版的《Thinking in Java》,发现被同学弄丢了),这本书我差不多用了20天才把里面的知识都搞懂,当然包括程序风格的模拟,最重要的时我把有关GUI编程的那三章里面的程序例子几乎可以默写出来(当然,那是因为我理解了,其实这样就变成了我的知识了),里面的API我也记得差不多了。(说明:Java里面的GUI编程没什么用处了,建议大家先跳过,GUI不是Java的长处,如果以后需要的话再查手册或者再。
如果你是学生,或者如果你有充足的时间。我建议你仔细的掌握下面的知识。我的建议是针对那些希望在IT技术上有所成就的初学者。同时我还列出了一些书目,这些书应该都还可以在书店买到。说实在的,我在读其他人的文章时最大的心愿就是希望作者列出一个书单。
大学英语——不要觉得好笑。我极力推荐这门课程是因为没有专业文档的阅读能力是不可想象的。中文的翻译往往在猴年马月才会出来,而现在的许多出版社干脆就直接把E文印刷上去。学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练。吃得苦下得狠心绝对是任何行业都需要的品质。
计算机体系结构和汇编语言——关于体系结构的书遍地都是,而且也大同小异,倒是汇编有一本非常好的书。《80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)。你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。
计算机操作系统原理——我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统。无论如何,操作系统原理是必读的。这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。这一类书也很多,我没有发现哪一本书非常出众。只是觉得在看完了这些书后如果有空就应该看看《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。
数据结构和算法——这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时)。很多人喜欢买C#版的,但我觉得没有必要。C#的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂。倒是在学完了C版的书以后再来浏览一下C#的版的书是最好的。
软件工程——这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华)。不要花太多的时间去记条条框框,看不懂就跳过去。在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。
Windows 程序设计——《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。
在这本书中,没有C++,没有GUI,没有控件。有的就是如何用原始的C语言来完成Windows 程序设计。在学完了它以后,你才会发现VC其实是很容易学的。千万不要在没有看完这本书以前提前学习VC,你最好碰都不要碰。我知道的许多名校甚至都已经用它作为教材进行授课。可见其重要。
上面的几门课程我认为是必学的重要课程(如果你想做Windows 程序员)。
对于其它的课程有这样简单的选择方法:如果你是计算机系的,请学好你所有的专业基础课。如果不是,请参照计算机系的课程表。如果你发现自己看一本书时无法看下去了,请翻到书的最后,看看它的参考文献,找到它们并学习它们,再回头看这本书。如果一本书的书名中带有“原理”两个字,你一定不要去记忆它其中的细节,你应该以一天至少50页的速度掌握其要领。尽可能多的在计算机上实践一种理论或者算法。
你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书。
根据软考程序员职称的考试内容,我们可以得出,程序员需要具备以下的知识。
但这些只是基础,还要不断扩展。计算机硬件基础知识。
1. 计算机科学基础。1.1数制及其转换。
二进制、十进制和十六进制等常用数制及其相互转换。1.2数据的表示。
数的表示(原码、反码、补码表示,整数和实数的机内表示方法,精度和溢出)。校验方法和校验码(奇偶校验码、海明校验码)。
1.3算术运算和逻辑运算。计算机中二进制数的运算方法。
逻辑代数的基本运算和逻辑表达式的化简。1.5常用数据结构。
数组(表态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树)、图的定义、存储和操作1.6 常用算法。算法与数据结构的关系,算法效率,算法设计,算法描述(流程图、伪代码、决策表)2. 计算机系统基础知识。
2.1计算机基础知识。2.1.1计算机系统的组成,硬件系统、软件系统及层次结构。
2.1.3 中央处理器CPU。运算器和控制器的组成,常用的寄存器、指令系统、寻址方式、指令执行控处理机性能。
2.1.4 主存和辅存。存储器系统。
存储介质(半导体、硬盘、光盘、闪存、软盘、磁带等)。主存储器的组成、性能及基本原理。
Cache的概念、虚拟存储的概念。辅存设备的类型、特性、性能和容量计算。
2.1.5 I/O接口、I/O设备和通信设备。I/O接口(总线、DMA、通道、SCSI、并行口、RS232C、USB、IEEE1394)。
I/O设备的类型和特性(键盘、鼠标、显示器、打印机、扫描仪、摄像头,以及各种辅存设备)。I/O设备控制方式(中断控制、DMA)。
通信设备的类型和特性(Modem、集线器、交换机、中继器、路由器、网桥、网关)及其连接方法和连接介质(串行连接、并行连接,传输介质的类型和特性)。2.2 软件基础知识。
2.2.1 操作系统基础知识。操作系统的类型和功能。
操作系统的内核(中断控制)和进程概念。处理机管理、存储管理、设备管理、文件管理、作业管理、汉字处理。
2.2.2 程序设计语言和语言处理程序基础知识。汇编、编译、解释系统的基础知识。
过程(函数)调用。2.3 网络基础知识。
网络的功能、分类、组成和拓扑结构。网络体系结构与协议(OSI/RM,TCP/IP)。
2.4 数据库基础知识。数据模型,ER图。
数据操作(关系运算)。数据库语言(SQL)。
2.5 多媒体基础知识。多媒体基础概念,常用多媒体设备性能特征,常用多媒体文件格式类型。
3.软件开发和运行维护基础知识。3.2 软件需求分析、需求定义及软件基础知识。
结构化分析概念(数据流图(DFD)、实体关系图(ER))。面向对象设计、结构化设计基础知识。
模拟设计、代码设计、人机界面设计要点。3.3 程序设计基础知识。
结构设计程序设计,程序流程图,NS图,PAD图。程序设计风格。
面向对象设计基础知识、可视化程序设计基础知识。3.4 程序测试基础知识。
黑盒测试、白盒测试、灰盒测试基础知识。4. 安全性基础知识。
安全性基本概念。加密与解密基础知识。
5. 标准化基础知识标准化基本概念6. 信息化基本知识。有关的法律、法规要点。
7. 计算机专业英语。考试科目2:程序设计。
1. 内部设计1.1 理解外部设计。1.3 物理数据设计。
确定数据组织方式、存储介质,设计记录格式和处理方式。2. 程序设计。
2.1 模拟划分(原则、方法、标准)。3. 程序实现。
3.1 编程。编程方法和标准。
程序设计语言的使用。4.程序设计语言(C语言为必选,其他语言可以任选一种)。
4.1 C程序设计语言(ANSI C标准)。程序结构,语法,数据类型说明,可执行语句,函数调用,标准库函数,指针。
4.2 C++程序设计语言(ANSI C++标准)。C++和面向对象程序设计,语法和程序结构,类、成员、构造函数、析构函数、模板、继承、多态。
4.3 Java程序设计(Java 2)。语言机制(程序结构和语法,类、成员、构造函数、析构函数、继承、接口)。
4.4 Visual Basic程序设计(Visual Basic 6.0)。用户界面设计。
根据软考程序员职称的考试内容,我们可以得出,程序员需要具备以下的知识。
但这些只是基础,还要不断扩展。 计算机硬件基础知识。
计算机科学基础。1.1数制及其转换。
二进制、十进制和十六进制等常用数制及其相互转换。1.2数据的表示。
数的表示(原码、反码、补码表示,整数和实数的机内表示方法,精度和溢出)。校验方法和校验码(奇偶校验码、海明校验码)。
1.3算术运算和逻辑运算。计算机中二进制数的运算方法。
逻辑代数的基本运算和逻辑表达式的化简。1.5常用数据结构。
数组(表态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树)、图的定义、存储和操作1.6 常用算法。算法与数据结构的关系,算法效率,算法设计,算法描述(流程图、伪代码、决策表)2. 计算机系统基础知识。
2.1计算机基础知识。2.1.1计算机系统的组成,硬件系统、系统及层次结构。
2.1.3 中央处理器CPU。运算器和控制器的组成,常用的寄存器、指令系统、寻址方式、指令执行控处理机性能。
2.1.4 主存和辅存。存储器系统。
存储介质(半导体、硬盘、光盘、闪存、软盘、磁带等)。主存储器的组成、性能及基本原理。
Cache的概念、虚拟存储的概念。辅存设备的类型、特性、性能和容量计算。
2.1.5 I/O接口、I/O设备和通信设备。I/O接口(总线、DMA、通道、SCSI、并行口、RS232C、USB、IEEE1394)。
I/O设备的类型和特性(键盘、鼠标、显示器、打印机、扫描仪、摄像头,以及各种辅存设备)。I/O设备控制方式(中断控制、DMA)。
通信设备的类型和特性(Modem、集线器、交换机、中继器、路由器、网桥、网关)及其连接方法和连接介质(串行连接、并行连接,传输介质的类型和特性)。2.2 基础知识。
2.2.1 操作系统基础知识。操作系统的类型和功能。
操作系统的内核(中断控制)和进程概念。处理机管理、存储管理、设备管理、文件管理、作业管理、汉字处理。
2.2.2 程序设计语言和语言处理程序基础知识。汇编、编译、解释系统的基础知识。
过程(函数)调用。2.3 网络基础知识。
网络的功能、分类、组成和拓扑结构。网络体系结构与协议(OSI/RM,TCP/IP)。
2.4 数据库基础知识。数据模型,ER图。
数据操作(关系运算)。数据库语言(SQL)。
2.5 多媒体基础知识。多媒体基础概念,常用多媒体设备性能特征,常用多媒体文件格式类型。
3.开发和运行维护基础知识。3.2 需求分析、需求定义及基础知识。
结构化分析概念(数据流图(DFD)、实体关系图(ER))。面向对象设计、结构化设计基础知识。
模拟设计、代码设计、人机界面设计要点。3.3 程序设计基础知识。
结构设计程序设计,程序流程图,NS图,PAD图。程序设计风格。
面向对象设计基础知识、可视化程序设计基础知识。3.4 程序测试基础知识。
黑盒测试、白盒测试、灰盒测试基础知识。4. 安全性基础知识。
安全性基本概念。加密与解密基础知识。
5. 标准化基础知识标准化基本概念6. 信息化基本知识。有关的法律、法规要点。
7. 计算机专业英语。考试科目2:程序设计。
1. 内部设计1.1 理解外部设计。1.3 物理数据设计。
确定数据组织方式、存储介质,设计记录格式和处理方式。2. 程序设计。
2.1 模拟划分(原则、方法、标准)。3. 程序实现。
3.1 编程。编程方法和标准。
程序设计语言的使用。4.程序设计语言(C语言为必选,其他语言可以任选一种)。
4.1 C程序设计语言(ANSI C标准)。程序结构,语法,数据类型说明,可执行语句,函数调用,标准库函数,指针。
4.2 C++程序设计语言(ANSI C++标准)。C++和面向对象程序设计,语法和程序结构,类、成员、构造函数、析构函数、模板、继承、多态。
4.3 Java程序设计(Java 2)。语言机制(程序结构和语法,类、成员、构造函数、析构函数、继承、接口)。
4.4 Visual Basic程序设计(Visual Basic 6.0)。用户界面设计。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.690秒