A. 怎么成为一名程序员,要从哪里开始学起,先学什么在学什么
答:
首先你要清楚程序员也分很多种,从语言分,有C,C++,C#,java,Delphi等等,你要考虑好弄自己向哪部分发展。
一般如果没什么理解可以从C语言学起,因为C语言比较贴切于机器语言,大学里面一般也都是先学C的,学好了C语言,可以触类旁通,更容易学其他的语言。
2.Java据说是现在最热门的(所有程序员都觉得自己用的那个语言最牛逼),IOS或者android学了可以做手机软件哦,Delphi和C#是用控件拖出自己想要的结果,然后在后台写代码的,不过有人说Delphi相对落伍了,但好些大公司还是在用Delphi来搭框架的。
3.选定好语言后,如果觉得自己理解能力动手能力超强的话,自己买本入门的书,或者网上看些教学视频,边看边实践。不过这个对于初学者来说真的挺难的,因为第一次的话,可能连环境都搭不好,用来编程的软件对初学者来说还是蛮麻烦的一种软件,不是这个不行,就是那个设置错了,或者连一些基础的窗口啊工程啊项目啊的概念都没有,网络起来又要答案一个一个看,浪费时间。而且还要自己搭数据库啊什么的,真的很难。有老师教的时候,还能挂科一大片的。不过入门了,之后就简单了,自己随便找本书,学学代码用法啊,照着打就可以了。
拓展资料:
程序员(英文Programmer)是从事程序开发、程序维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、中级程序员、高级程序员(现为软件设计师)、系统分析员,系统架构师,测试工程师六大类。
岗位职责:
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
网络词条 程序员
B. 有了程序员教程还需要买软件设计师的教程吗。
需要。
程序员属于软考初级,软件设计师属于软考中级,两个考试项目的教程肯定是有一定区别的。两个科目的教程多少有相关的内容,毕竟两者都跟软件开发有一定关系,比如结构化分析、面向对象分析等知识点两本教程里都有。
软考是计算机行业中含金量比较高的一个证书,全称叫做计算机技术与软件专业技术资格(水平)考试。软考分为初、中、高3个级别,通常来说,软考每年会举办两次考试,分别是上半年的5月份和下半年11月份,报名时间则是考试时间的前两个月。
C. 谁有比较新的希赛软件设计师教学视频啊!推荐一些其它比较好的视频也行,不胜感激,[email protected]
最新软件设计师视频教程免费在线观看
链接:https://pan..com/s/1lZwGgII6l5rIf4N7FXwvlA
软件设计师是指能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档的实用性人才。还能够组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程师的实际工作能力和业务水平,可聘任工程师职务。2004年人社部将高级程序员更名为软件设计师
D. 考软考的初级程序员看《程序员教程》修正版这本书有用吗望有经验者指点!
我向你推荐几本软考指定教材吧,如下:
《程序员考试考点分析与真题详解(第4版)》--希赛教育软考学院组编,桂阳 陈勇军,电子工业出版社
《程序员考试考点突破、程序设计、实战练习一本通》--希赛教育软考学院组编,王勇、黄燕主编,高等教育出版社
《程序员教程》--希赛教育软考学院组编,张友生、黄少年主编,高等教育出版社
《程序员考试考点分析与真题详解(最新版)》--希赛教育软考学院组编,王勇、唐强主编,电子工业出版社
《程序员考试试题分类精解(第2版)》--希赛教育软考学院组编,徐锋、唐强主编,电子工业出版社
《程序员考试试题考前串讲》--希赛教育软考学院组编,李雄主编,电子工业出版社
E. 程序员5年坚持制作免费教程造福百万学生,程序员到底是怎么做的
引言:网络上的短视频越来越多,有很多的博主也都看中了这个商机,会通过一些短视频来吸引更多的人,如果粉丝多的话也会有一定的宣传作用,从而会有很多的收益。但是也有一些博主,他们大公无私,愿意将自己的知识分享给大家。程序员5年坚持制作免费教程造福百万学生,他自制一些视频免费的回报社会,让很多人非常喜欢他。
这位程序员在北京读大学的时候非常的贫穷,为了看更多的书而去图书馆里抄书,并且自学一些知识。吃过苦,所以也懂得他人的痛苦。而当他学习了这些知识之后,愿意分享自己的知识去帮助那些支付不起昂贵培训费用的人们。
F. QQ软件怎么开发出来的,具体怎样一个流程
QQ软件最好用C++ 语言开发。最大的可能是VC++。DEVC++和QT的可能性比较小,因为在linux下没有看到过官方的QQ版本。所用的语言是C++这个强大的面向对象的编程语言,现在一般用的C++编译具是微软件公司的Visaul C++ 6.0或是Visaul C++.net以及BORLAND公司的C++ Bulider,在这几款中C++ Bulider相对来说容易上手一点,C++编程对于初学者确实比较难学,如果你想在相对较短的时间内编出类似QQ的程序,那你可以选择VB这类学着容易的语言。QQ软件是由深圳腾迅公司开发出来的,所用的语言是C++这个强大的面向对象的编程语言,现在一般用的C++编译具是微软件公司的Visaul C++ 6.0或是Visaul C++.net以及宝兰公司的C++ Bulider,在这几款中C++ Bulider相对来说容易上手一点,C++编程对于初学者确实比较难学,如果你想在相对较短的时间内编出类似QQ的程序,那你可以选择VB这类学着容易的语言。当然其他的如Java、Delphi也能做出这样的软件。你可以根据自己的基础和爱好选择一门编程语言,这里提醒一下,学一门编程语言,可不像是学一个photoshop类的应用软件那么简单,你需要埋下头,做好吃苦的准备,扎扎实实学下去。
软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。第一步:需求调研分析第二步:概要设计第三步:详细设计第四步:编码第五步:测试第五步:软件交付准备第六步:验收
软件分为为应用型和非应用型:应用型就是指:一般我们日常中所用到的那些操作软件等(比如:游戏软件等)。非应用型指的是:比如PC机的操作系统等。不管是应用型还是非应用型的,他的开发过程都是一样的:需求分析( 1.概要设计 2.详细设计 3.设计调查)软件预算、数据建模、实际开发、单元测试、集成测试、项目验收等流程。
软件开发流程(Software development process)
软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。
1 相关系统分析员和用户初步了解需求,然后用WORD列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
2 系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还例出相关的界面和界面功能。
3 系统分析员和用户再次确认需求。
4 系统分析员根据确认的需求文档所例用的界面和功能需求,用迭代的方式对每个界面或功能做系统的概要设计。
5 系统分析员把写好的概要设计文档给程序员,程序员根据所例出的功能一个一个的编写。
6 测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能,然后验收。
举个例子来看:
1 某公司想找人订做一套人事管理软件,从某种渠道上得知我们有提供这种服务,所以联系上了我们。
2 我们会派专门的软件工程师到他们那里去了解我们要设计一个什么的东西给他们用,然后回来做个方案给他们,其中方案的内容包括:我们开发出来的软件大概的界面是怎样?方便什么人使用?什么人可以使用什么功能?方便到什么程度?大概的硬件要求是怎样等?
3 他们看了方案后,确定他们就是要做一套这样的软件,我就开始开发这套软件。
4 我们把开发出来的软件交用他们使用,其中在使用的过程中哪里使用不方便或哪里达不到要求,我们会第第一时间修改这些功能,直到他们要求的所有功能都能很完美的解决掉。软件开发的内容是:需求、设计、编程和测试!需求:不仅仅是用户需求,应该是开发中遇到的所有的需求。比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据...为了清楚地知道这些需求,你经常要和客户、项目经理等交流。
设计:编码前,肯定有个计划告诉你要做什么,结构是怎样等等。你一定要按照这个来做,否则可能会一团糟。
编程:如果在项目截止日,你的程序不能跑起来或达不到客户的要求,你就拿不到钱。
测试:目的是让你知道,什么时候算是完成了。如果你聪明,你就应该先写测试,这样可以及时知道你是否真地完成了。否则,你经常会不知道,到底有哪些功能是真正完成了,离预期目标还差多远。
软件开发中,客户和开发人员都有自己的基本权利和义务。
客户:
定义每个用户需求的商业优先级;
制订总体计划,包括用多少投资、经过多长时间、达到什么目的;
在项目开发过程中的每个工作周,都能让投资获得最大的收益;
通过重复运行你所指定的功能测试,准确地掌握项目进展情况;
能随时改变需求、功能或优先级,同时避免昂贵的再投资;能够根据各种变化及时调整项目计划;
能够随时取消项目;项目取消时,以前的开发工作不是一堆垃圾,已开发完的功能是合乎要求的,正在进行或未完成的的工作则应该是不难接手的。开发人员:
知道要做什么,以及要优先做什么;
工作有效率;
有问题或困难时,能得到客户、同事、上级的回答或帮助;
对工作做评估,并根据周围情况的变化及时重新评估;
积极承担工作,而不是消极接受分配;
一周40小时工作制,不加班。
软件开发过程可以包括以下6个阶段:
计划
对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计。制订完成开发任务的实施计划。
分析
软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。
设计
软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。模块,然后进行模块设计。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。
编码
软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。
当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。
测试
软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)。如何才能设计出一套出色的测试用例,关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。黑盒法。
维护
维护是旨在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。
一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。那么它的维护阶段也是运行的这五年至十年期间。在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。
在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。
G. 程序员考试有哪些指定教程
指定教程???没有指定教程,否则就是出版社搞垄断了。。。
大书店的有很多考试辅导教程,要依据自己的情况选择,以下是程序员考试内容,希望对你有帮助:
程序员考试内容纲要
考试科目1:计算机硬件基础知识
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.2C++程序设计语言(ANSI C++标准)
C++和面向对象程序设计,语法和程序结构,类、成员、构造函数、析构函数、模板、继承、多态 4.3Java程序设计(Java 2)
语言机制(程序结构和语法,类、成员、构造函数、析构函数、继承、接口)
4.4Visual Basic程序设计(Visual Basic 6.0) 用户界面设计 程序结构和语法
H. 我想向程序员方面发展,自学需要学哪些课程和学习的顺序,谢谢大家多多帮忙。
基础课程包括:计算机硬件基础、计算机网络基础、操作系统、计算机组成原理、计算机体系结构、数据库原理、软件工程、离散数学、算法设计与分析、数据结构、编译原理
编程语言可以根据需要选择,底层开发人员必学:汇编语言、c、c++;web应用表示层开发人员:html、xml、javascript、jsp(或asp,php)等;普通应用程序开发:c++、vb、.net(其中包括多种语言,可根据现有基础选择)、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上阅读到许多书评。这些书评能够帮助你决定读什么样的书。
I. 自学程序员的学习顺序和课程都是什么
展开全部
基础课程包括:计算机硬件基础、计算机网络基础、操作系统、计算机组成原理、计算机体系结构、数据库原理、软件工程、离散数学、算法设计与分析、数据结构、编译原理
编程语言可以根据需要选择,底层开发人员必学:汇编语言、c、c++;web应用表示层开发人员:html、xml、javascript、jsp(或asp,php)等;普通应用程序开发:c++、vb、.net(其中包括多种语言,可根据现有基础选择)、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上阅读到许多书评。这些书评能够帮助你决定读什么样的书。