学编程大概多少钱一个月 我想学编程

我想学编程,我一窍不通 。
如何学习编程1?定义学习编程的目的对大多数IT专业人员来说非常有用 。学编程,做程序员,从个人角度来说,可以解决软件使用中遇到的问题,改进现有的软件,为自己找到一份理想的工作增加重要的砝码,有利于在求职的道路上找到一份好工作;从国家的角度来说,能为中国的软件产业做出应有的贡献,一个优秀的程序员永远是竞争的对象 。学习还可以锻炼我们的思维,让我们的逻辑思维更加严谨;能够不断享受创新的乐趣,就永远有机会走在高科技的最前沿,因为编程本身就是一项创造性的工作 。知识经济时代给我们带来了无限的机遇 。想要真正掌握计算机技术,在IT行业做出一番事业,具备一定的编程能力是一个基本的条件和要求 。2.要打好基础编程,应该具备以下几个方面:(1)数学基础从计算机发展和应用的历史来看,计算机的数学模型和体系结构都是数学家提出来的,最早的计算机也是为了数值计算而设计的 。所以,要想学好计算机,必须要有一定的数学基础,和高中水平的学者差不多 。(2)逻辑思维能力的培养编程要有一定的逻辑思维能力,“逻辑思维能力”的培养要长期练习 。如果你想成为一名优秀的程序员,最重要的是掌握编程思路 。要做到这一点,就要在反复的实践、观察、分析、比较、总结中逐步积累 。所以,在学习编程的过程中,我们不必等到所有的东西都完全理解了才开始练习 。只要了解了,就要敢于亲身经历 。每个人都有第一次 。有些问题只有通过实践才能理解,只有通过实践才能把老师和书本上的知识变成自己的 。大师就是这样成功的 。(3)选择合适的介绍性语言 。面对各种语言,应该按照什么顺序学习?编程工具如下:1)应用软件本地开发的工具有VisualBasic、Delphi、VC(CBuilder)等 。数据库开发工具有VisualFoxpro、OracleDeveloper、PowerBuilder等 。2)跨平台开发工具如Java等 。3)网络开发为客户端开发工具,如JavaScript为服务器开发工具,如PHP、ASP、JSP、ISAPI、NSAPI、CGI等 。VB方法在上述不同环境下的几种开发工具中简单易懂,界面设计可配置,易学易用 。选择VB作为入门方向,更适合学者 。3.注意理解一些重要的概念 。一本编程书看到的无非是变量、函数、条件语句、循环语句等概念 。但要真正做出编程应用,需要深入理解这些概念,并在理解的基础上加以应用 。不是简单的学习语法和结构,而是要透彻理解这些语法和结构的应用实例,从而举一反三 。4.掌握编程思路学习一门语言或开发工具 。语法结构和函数调用都是次要的,最重要的是学习它的思想 。比如学习VC就是学习Windows的内部机制,学习什么是线程 。学习COM,需要知道VTALBE,类工厂,接口,idl.关键是要学会一个理念 。有了一个想法,那么我们就可以打个比方 。5.多实践,多交流,编程思想的掌握,一定要在编程的实际工作中去实践和体会 。在编程初期,你应该总是自己设计程序 。在具体设计中不要拘泥于固定的思维方式,遇到问题要想好几种解决方案 。这就需要多沟通了 。每个人的思维方式不同,角度不同,招数也不同 。通过交流,他可以不断吸收别人的长处,丰富编程实践,帮助自己提高水平 。动手编程是创造性思维的体现,是培养逻辑思维的好方法 。
6.养成良好的编程习惯编程入门并不难,但入门后的不断学习很重要,这是比较漫长的 。这期间要注意养成一些好的编程习惯 。编程风格的好坏极大地影响着程序的质量 。好的编程风格可以使程序结构清晰合理,使程序代码易于维护 。比如代码的缩进排列,变量命令规则的一致性,代码的注释等 。7.在线编程你可以在网上学到很多不同的编程思路、方法、经验和技巧 。有大量的工具和作品以及相关的辅导资料可供下载 。比如网站“编程课堂”(http://best.yeah.net/),主要使用VB和德尔弗;并提供很多实用技能;网站“现在时编程学院”(http://pshool.yeah.net/)是一个致力于C、VC、VB、Delphi等的综合性编程网站 。“VB编程天堂”(http://www.vbeden.com/)网站提供丰富实用的编程技术文章、精选控件、源代码下载、计算机考试、相关软件和编程书籍推荐等 。8.加强计算机理论知识编程的再学习,是一个符合“理论实践再理论再实践”的认知过程 。刚开始的时候,你要有一定的计算机理论基础知识,包括编程所需的数学基础知识 。如果具备入门条件,可以开始编程实践 。从实践中可以发现问题,需要加强计算机理论知识的再学习 。每个人都会编程,但是当你发现很难提高到一定程度的时候,你就要回去学习一些计算机科学和数学的基础理论 。学了之后,以前的很多问题都会迎刃而解,让人觉得豁然开朗 。因此,在学习编程的过程中,要不断学习数据结构、算法、计算机原理、编译原理、操作系统原理、软件工程等计算机科学的理论基础,以及数理逻辑、代数系统、图论、离散数学等数学理论的基础知识 。通过不断的学习和刻苦的练习,编程水平一定会提高到一个新的高度 。
gjiaohao.com/img/我想学习编程,我对它一无所知 。.jpg" alt="我想学习编程,我对它一无所知 。" />
我想学编程,应该学哪一类,求助
原文地址:http://coolshell.cn/articles/4990.html博文如下:前言你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,不如从工作中的需求出发)建议:不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用 。回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样 。一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节 。一定要学会思考,思考为什么要这样,而不是那样 。还要举一反三地思考 。注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉得Windows下的编程可能会在未来很没有前途,原因如下:现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或Android 。Windows的图形界面不吃香了 。越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了 。微软的东西变得太快了,很不持久,他们完全是在玩弄程序员 。详情参见《Windows编程革命史》所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源 。开发这边基本上没Windows什么事 。启蒙入门1、 学习一门脚本语言,例如Python/Ruby可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序 。实践项目:处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量学会用各种print之类简单粗暴的方式进行调试学会用Google (phrase, domain, use reader to follow tech blogs)为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了 。2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等 。Source Insight (或 ctag)使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率 。3、 熟悉Unix/Linux Shell和常见的命令行如果你用windows,至少学会用虚拟机里的linux,vmware player是免费的,装个Ubuntu吧一定要少用少用图形界面 。学会使用man来查看帮助文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …学会使用一些文本操作命令 sed/awk/grep/tail/less/more …学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpmp/iptables/dd…了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息了解正则表达式,使用正则表达式来查找文件 。对于程序员来说Unix/Linux比Windows简单多了 。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率 。4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)未来必然是Web的世界,学习WEB基础的最佳网站是W3School 。学习HTML基本语法学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)学会用Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改 。学习使用Javascript操纵HTML元件 。理解DOM和动态网页(Dynamic HTML: The Definitive Reference, 3rd Edition - O"Reilly Media) 网上有免费的章节,足够用了 。或参看 DOM。学会用Firefox + Firebug 或 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)在一台机器上配置Apache 或 Nginx学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识 。实现一个表单提交和反显的功能 。把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)跟完一个名校的网络编程课程(例如:http://www.stanford.e/~ouster/cgi-bin/cs142-fall10/index.php ) 不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上学习一个javascript库(例如jQuery 或 ExtJS)+Ajax (异步读入一个服务器端图片或者数据库内容)+JSON数据格式 。HTTP: The Definitive Guide 读完前4章你就明白你每天上网用浏览器的时候发生的事情了(proxy, gateway, browsers)做个小网站(例如:一个小的留言板,支持用户登录,Cookie/Session,增、删、改、查,上传图片附件,分页显示)买个域名,租个空间,做个自己的网站 。进阶加深1、 C语言和操作系统调用重新学C语言,理解指针和内存模型,用C语言实现一下各种经典的算法和数据结构 。推荐《计算机程序设计艺术》、《算法导论》和《编程珠玑》 。学习(麻省理工免费课程)计算机科学和编程导论学习(麻省理工免费课程)C语言内存管理学习Unix/Linux系统调用(Unix高级环境编程),,了解系统层面的东西 。用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序)用fork/wait/waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的程序 。多进程多进程购票的程序 。用signal/kill/raise/alarm/pause/sigprocmask实现一个多进程间的信号量通信的程序 。学会使用gcc和gdb来编程和调试程序(参看我的《用gdb调试程序》)学会使用makefile来编译程序 。(参看我的《跟我一起写makefile》)IPC和Socket的东西可以放到高级中来实践 。学习Windows SDK编程(Windows 程序设计,MFC程序设计)写一个窗口,了解WinMain/WinProcere,以及Windows的消息机制 。写一些程序来操作Windows SDK中的资源文件或是各种图形控件,以及作图的编程 。学习如何使用MSDN查看相关的SDK函数,各种WM_消息以及一些例程 。这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程 。不用太多于精通这些东西,因为GUI正在被Web取代,主要是了解一下Windows 图形界面的编程 。@virushuo 说:“ 我觉得GUI确实不那么热门了,但充分理解GUI工作原理是很重要的 。包括移动设备开发,如果没有基础知识仍然很吃力 。或者说移动设备开发必须理解GUI工作,或者在win那边学,或者在mac/iOS上学” 。2、学习JavaJava 的学习主要是看经典的Core Java 《Java 核心技术编程》和《Java编程思想》(有两卷,我仅链了第一卷,足够了,因为Java的图形界面了解就可以了)学习JDK,学会查阅Java API Doc Java Platform SE 6了解一下Java这种虚拟机语言和C和Python语言在编译和执行上的差别 。从C、Java、Python思考一下“跨平台”这种技术 。学会使用IDE Eclipse,使用Eclipse 编译,调试和开发Java程序 。建一个Tomcat的网站,尝试一下JSP/Servlet/JDBC/MySQL的Web开发 。把前面所说的那个PHP的小项目试着用JSP和Servlet实现一下 。3、Web的安全与架构学习HTML5,网上有很多很多教程,以前酷壳也介绍过很多,我在这里就不罗列了 。学习Web开发的安全问题(参考新浪微博被攻击的这个事,以及Ruby的这篇文章)学习HTTP Server的rewrite机制,Nginx的反向代理机制,fast-cgi(如:PHP-FPM)学习Web的静态页面缓存技术 。学习Web的异步工作流处理,数据Cache,数据分区,负载均衡,水平扩展的构架 。实践任务:使用HTML5的canvas 制作一些Web动画 。尝试在前面开发过的那个Web应用中进行SQL注入,JS注入,以及XSS攻击 。把前面开发过的那个Web应用改成构造在Nginx + PHP-FPM + 静态页面缓存的网站4、学习关系型数据库你可以安装MSSQLServer或MySQL来学习数据库 。学习教科书里数据库设计的那几个范式,1NF,2NF,3NF,……学习数据库的存过,触发器,视图,建索引,游标等 。学习SQL语句,明白表连接的各种概念(参看《SQLJoin的图示》)学习如何优化数据库查询(参看《MySQL的优化》)实践任务:设计一个论坛的数据库,至少满足3NF,使用SQL语句查询本周,本月的最新文章,评论最多的文章,最活跃用户 。5、一些开发工具学会使用SVN或Git来管理程序版本 。学会使用JUnit来对Java进行单元测试 。学习C语言和Java语言的coding standard 或 coding guideline 。(我N年前写过一篇关C语言非常简单的文章——《编程修养》,这样的东西你可以上网查一下,一大堆) 。推荐阅读《代码大全》《重构》《代码整洁之道》高级深入1、C++ / Java 和面向对象我个人以为学好C++,Java也就是举手之劳 。但是C++的学习曲线相当的陡 。不过,我觉得C++是最需要学好的语言了 。参看两篇趣文“C++学习信心图” 和“21天学好C++”学习(麻省理工免费课程)C++面向对象编程读我的 “如何学好C++”中所推荐的那些书至少两遍以上(如果你对C++的理解能够深入到像我所写的《C++虚函数表解析》或是《C++对象内存存局(上)(下)》,或是《C/C++返回内部静态成员的陷阱》那就非常不错了)然后反思为什么C++要干成这样,Java则不是?你一定要学会对比C++和Java的不同 。比如,Java中的初始化,垃圾回收,接口,异常,虚函数,等等 。实践任务:用C++实现一个BigInt,支持128位的整形的加减乘除的操作 。用C++封装一个数据结构的容量,比如hash table 。用C++封装并实现一个智能指针(一定要使用模板) 。《设计模式》必需一读,两遍以上,思考一下,这23个模式的应用场景 。主要是两点:1)钟爱组合而不是继承,2)钟爱接口而不是实现 。(也推荐《深入浅出设计模式》)实践任务:使用工厂模式实现一个内存池 。使用策略模式制做一个类其可以把文本文件进行左对齐,右对齐和中对齐 。使用命令模式实现一个命令行计算器,并支持undo和redo 。使用修饰模式实现一个酒店的房间价格订价策略——旺季,服务,VIP、旅行团、等影响价格的因素 。学习STL的用法和其设计概念- 容器,算法,迭代器,函数子 。如果可能,请读一下其源码 。实践任务:尝试使用面向对象、STL,设计模式、和WindowsSDK图形编程的各种技能做一个贪吃蛇或是俄罗斯方块的游戏 。支持不同的级别和难度 。做一个文件浏览器,可以浏览目录下的文件,并可以对不同的文件有不同的操作,文本文件可以打开编辑,执行文件则执行之,mp3或avi文件可以播放,图片文件可以展示图片 。学习C++的一些类库的设计,如: MFC(看看候捷老师的《深入浅出MFC》),Boost, ACE,CPPUnit,STL (STL可能会太难了,但是如果你能了解其中的设计模式和设计那就太好了,如果你能深入到我写的《STL string类的写时拷贝技术》那就非常不错了,ACE需要很强在的系统知识,参见后面的“加强对系统的了解”)Java是真正的面向对象的语言,Java的设计模式多得不能再多,也是用来学习面向对象的设计模式的最佳语言了(参看Java中的设计模式) 。推荐阅读《Effective Java》 and 《Java解惑》学习Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是学习Java的设计,如IoC等 。Java的技术也是烂多,重点学习J2EE架构以及JMS,RMI, 等消息传递和远程调用的技术 。学习使用Java做Web Service (官方教程在这里)实践任务: 尝试在Spring或Hibernate框架下构建一个有网络的Web Service的远程调用程序,并可以在两个Service中通过JMS传递消息 。C++和Java都不是能在短时间内能学好的,C++玩是的深,Java玩的是广,我建议两者选一个 。我个人的学习经历是:深究C++(我深究C/C++了十来年了)学习Java的各种设计模式 。2、加强系统了解重要阅读下面的几本书:《Unix编程艺术》了解Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验 。你一定会有一种醍醐灌顶的感觉 。《Unix网络编程卷1,套接字》这是一本看完你就明白网络编程的书 。重要注意TCP、UDP,以及多路复用的系统调用select/poll/epoll的差别 。《TCP/IP详解 卷1:协议》- 这是一本看完后你就可以当网络黑客的书 。了解以太网的的运作原理,了解TCP/IP的协议,运作原理以及如何TCP的调优 。实践任务:理解什么是阻塞(同步IO),非阻塞(异步IO),多路复用(select, poll, epoll)的IO技术 。写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用UDP对部分或所有的的聊天客户端进Multicast或Broadcast) 。写一个简易的HTTP服务器 。《Unix网络编程卷2,进程间通信》信号量,管道,共享内存,消息等各种IPC…… 这些技术好像有点老掉牙了,不过还是值得了解 。实践任务:主要实践各种IPC进程序通信的方法 。尝试写一个管道程序,父子进程通过管道交换数据 。尝试写一个共享内存的程序,两个进程通过共享内存交换一个C的结构体数组 。学习《Windows核心编程》一书 。把CreateProcess,Windows线程、线程调度、线程同步(Event,信号量,互斥量)、异步I/O,内存管理,DLL,这几大块搞精通 。实践任务:使用CreateProcess启动一个记事本或IE,并监控该程序的运行 。把前面写过的那个简易的HTTP服务用线程池实现一下 。写一个DLL的钩子程序监控指定窗口的关闭事件,或是记录某个窗口的按键 。有了多线程、多进程通信,TCP/IP,套接字,C++和设计模式的基本,你可以研究一下ACE了 。使用ACE重写上述的聊天程序和HTTP服务器(带线程池)实践任务:通过以上的所有知识,尝试写一个服务端给客户端传大文件,要求把100M的带宽用到80%以上 。(注意,磁盘I/O和网络I/O可能会很有问题,想一想怎么解决,另外,请注意网络传输最大单元MTU)了解BT下载的工作原理,用多进程的方式模拟BT下载的原理 。3、系统架构负载均衡 。HASH式的,纯动态式的 。(可以到Google学术里搜一些关于负载均衡的文章读读)多层分布式系统 – 客户端服务结点层、计算结点层、数据cache层,数据层 。J2EE是经典的多层结构 。CDN系统 – 就近访问,内容边缘化 。P2P式系统,研究一下BT和电驴的算法 。比如:DHT算法 。服务器备份,双机备份系统(Live-Standby和Live-Live系统),两台机器如何通过心跳监测对方?集群主结点备份 。虚拟化技术,使用这个技术,可以把操作系统当应用程序一下切换或重新配置和部署 。学习Thrift,二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务 。学习Hadoop 。Hadoop框架中最核心的设计就是:MapRece和HDFS 。MapRece的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapRece就是“任务的分解与结果的汇总” 。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持 。了解NoSQL数据库(有人说可能是一个过渡炒作的技术),不过因为超大规模以及高并发的纯动态型网站日渐成为主流,而SNS类网站在数据存取过程中有着实时性等刚性需求,这使得目前NoSQL数据库慢慢成了人们所关注的焦点,并大有成为取代关系型数据库而成为未来主流数据存储模式的趋势 。当前NoSQL数据库很多,大部分都是开源的,其中比较知名的有:MemcacheDB、Redis、Tokyo Cabinet(升级版为Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等 。写了那么多,回顾一下,觉得自己相当的有成就感 。希望大家不要吓着,我自己这十来年也在不断地学习,今天我也在学习中,人生本来就是一个不断学习和练级的过程 。不过,一定有漏的,也有不对的,还希望大家补充和更正 。(我会根据大家的反馈随时更新此文)欢迎大家通过我的微博(@左耳朵耗子)和twitter(@haoel)和我交流 。—– 更新2011/07/19 —–1)有朋友奇怪为什么我在这篇文章开头说了web+移动,却没有在后面提到iOS/Android的前端开发 。因为我心里有一种感觉,移动设备上的UI最终也会被Javascript取代 。大家可以用iPhone或Android看看google+,你就会明白了 。2)有朋友说我这里的东西太多了,不能为了学习而学习,我非常同意 。我在文章的前面也说了要思考 。另外,千万不要以为我说的这些东西是一些新的技术,这份攻略里95%以上的全是基础 。而且都是久经考验的基础技术 。即是可以让你一通百通的技术,也是可以让你找到一份不错工作的技术 。3)有朋友说学这些东西学完都40了,还不如想想怎么去挣钱 。我想告诉大家,一是我今年还没有40岁,二是学无止境啊,三是我不觉得挣钱有多难,难的是怎么让你值那么多钱?无论是打工还是创业,是什么东西让你自己的价值,让你公司的价值更值钱?别的地方我不敢说,对于互联网或IT公司来说,技术实力绝对是其中之一 。4)有朋友说技术都是工具,不应该如此痴迷这句话没有错,有时候我们需要更多的是抬起头来看看技术以外的事情,或者是说我们在作技术的时候不去思考为什么会有这个技术,为什么不是别的,问题不在于技术,问题在于我们死读书,读死书,成了技术的书呆子 。5) 对于NoSQL,最近比较火,但我对其有点保守,所以,我只是说了解就可以 。对于Hadoop,我觉得其在分布式系统上有巨大的潜力,所以需要学习 。对于关系型数据库,的确是很重要的东西,这点是我的疏忽,在原文里补充 。我想学编程,不知道从何学起
软件技术 实践就是最好的老师! 另一个需要强调的是: 编程是一种技能,就同学习外语一样,绝不可能“速成”! 在有了 10 年自学计算机技术的经历和近几年在高校讲授程序设计系列课程的经验之后,我一直在思索以下几个问题: ? 软件到底是怎样开发出来的? ? 编程是难还是易?有没有能让编程功力“暴长 10 年”的“武功秘笈”? ? 一个有志于成为优秀软件工程师的人应该怎样学习计算机技术? ? 用什么方式才能让许多学生很快地学会特定的计算机技术,而不用重复我和其他人所走过的弯路? 思索的结果就是大家所看到的这本书 。在我自己亲身的学习与开发实践中,逐渐形成了这么一个观点: 编程其实并不难! 要编程并不需要到大学计算机系里去学很多艰深的理论,经过适当的指导与训练,一个高中生就可以参加到软件项目团队中,并写出具有相当质量水准的程序! 为什么会有那么多的人把编程视为很高深的东西? 为什么我国那么多的软件企业深感合格的程序员是如此难找? 与此同时,又有与之完全对立的情况:每年有大批计算机及相关专业毕业生四处求职,却处处碰壁,找工作成了一件很不轻松的事情…… 一边是真正合格的程序员人数很少,软件企业都在喊急缺人才,而另一边是大量的学生毕业找不着理想的工作 。这样一个怪圈为何会形成? 我想,造成这个怪圈有两个重要的原因 。一是学生学习方法与态度的问题 。由于对软件开发这一工作本身缺乏正确认识,许多学生形成了一种浮躁的功利型学习方法,表现为盲目地跟风学习各种当前流行的新技术,但大都只是三个月热度,由于欠缺毅力和不具备扎实的理论与实践基础,对这些新技术无法深入把握,浅尝辄止,“坐而论道”,讨论时可以“滔滔不绝”,一到动手则“原形毕露” 。许多人没有想过:现在流行的“新”技术,难道就会一直“流行”下去?曾经风光一时的 Foxpro 和 PowerBuilder,国内曾有许多人(包括本人在内)投入大量的时间去学习与掌握,可没过几年,还有几个项目是用这两种技术开发的呢?所以,如果要“追”新技术,也只能去学预计两到三年后社会急需的技术,这就需要学习者有超前的眼光 。但软件技术进步实在太快,很少有人能够准确预测出几年之后会流行什么 。所以,与其“临渊羡鱼”,不如“退而结网”,选择一项自己喜欢的领域,从理论到技术,扎扎实实地用两到三年时间去学好它,在学习过程中培养出“捕鱼”的本事 。有了这种自我学习的基本能力与素质,还担心出海捕不到鱼吗? 有一些学生投入相当多的时间与金钱去参加种种有着各种动听承诺的电脑培训班,指望别人能够帮助自己成为技术高手,却不知真正的高手大都是“自学成才”! 更有太多的尤其是非计算机专业的学生,盲目地去考各种认证,不管是国内的还是国外的考试,只要有证,就有大批的人去参加 。他们把应用计算机技术的能力简单地等同于一纸证书 。当前的计算机等级考试就大有成为高校中第二个“英语四六级”的可能性 。事实上,你向别人展示自己写的一个软件作品,比给别人看一堆各式各样的证书更能说明你的能力! 造成怪圈的第二个重要原因就是计算机教育问题 。目前高校中的计算机教育并不能大批量地培养出合格的软件开发者,学生在四年本科期间计算机理论学了不少,对培养编程能力却重视不够,缺乏实践的结果是理论也掌握不好,学生的计算机水平被煮成了“夹生饭” 。除了在校的大学生,社会上还有大批的软件开发爱好者,他们由于没有机会系统地学习软件开发技术,就采用自学和自我实践的方式,结合自己的工作来应用学到的计算机技术 。虽然他们没有在校生的优越条件,但其中优秀人物的真实开发能力远胜于正规 高校计算机专业“科班”出身的本科生甚至是硕士生 。这种例子已经很多了 。“职业选手”不如“业余选手”! 我自己是走“野路子”出来的,走的是以实践为主导的自学之路,从亲身实践中深切感受到计算机科学本质上是一门实践性非常强的科学,不管是在校学生还是社会上的软件开发爱好者,我的建议是: 我从2002 年开始接触 .NET 技术,并一直研究使用至今,前前后后看了近百本国内外的 .NET 编程书籍,并写了几万行的 .NET 代码 。在对 .NET 有了一定的了解之后,我认为 .NET 技术是初学者学习软件技术非常好的切入点,学习者可以一步到位,直接学习目前主流的面向对象软件开发技术,而不用按部就班,按传统的先结构化编程再面向对象编程的顺序去学习 。接着我思考的问题是:这本书该怎么写? 著名物理学家爱因斯坦曾经表达过这样的思想: 学习时只需要掌握那些能让思维导向深入的东西,而将其他无关的知识全部抛弃 。软件技术本身有一个庞大而复杂的体系结构,不分巨细地样样都想掌握,那么只能是疲于奔命而终无所得 。为此,基于我自己的理解,在书中我将认为是最重要和最基础的东西突显出来,这些东西是必须掌握的,一旦理解并掌握它们之后,读者就掌握了“捕鱼”的方法,【学编程大概多少钱一个月 我想学编程】