如何自学编程说说我的个人学习过程: 最初因对程式序感兴趣,想学习,于是,学子VB ,可以做一些简单的程序,看到一些系统或其它软件的就想用VB来实现,有一定的成就感;再下来,因为考试要求,学了C++,虽然没有实际用到,但学了还是有好处,一通全通;后来工作中用Delphi ,拿本入门级书看一下语法等就直接上了,还有C# 等; 个人觉得,要兴趣,定目标,挑战未知的领域,不懂就去了解,学习。这么小就学编程,有前途主要是多看,多学,多做,多积累 相信你会成为编程高手的建议学习c语言 用linux系统 还有就是需要学习数据库语言1、可以考虑先学习C. 大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语言写得好不好看。 C++是C的一个面向对象的解释,C++为C扩充了大规模工程应用,复杂的系统结构的组织和掌控方法,但是,我认为,C++骨子里还是C的。毕竟,解决具体问题,每个函数内部,都是用C的方式写程序,还是面向过程的。因此,想要学习好C++,我的建议,先学习C,先学解决问题的能力,再讨论解决大问题的能力。就是先学习怎么走路,再学习怎么跑步。2、学习C的过程中,一定要理解结构化编程思维。为什么呢,我前面有文章说过,软件语言的发展过程,就是一个数据私有化的过程,...1、可以考虑先学习C. 大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语言写得好不好看。 C++是C的一个面向对象的解释,C++为C扩充了大规模工程应用,复杂的系统结构的组织和掌控方法,但是,我认为,C++骨子里还是C的。毕竟,解决具体问题,每个函数内部,都是用C的方式写程序,还是面向过程的。因此,想要学习好C++,我的建议,先学习C,先学解决问题的能力,再讨论解决大问题的能力。就是先学习怎么走路,再学习怎么跑步。2、学习C的过程中,一定要理解结构化编程思维。为什么呢,我前面有文章说过,软件语言的发展过程,就是一个数据私有化的过程,大型工程应用,强调高内聚,低耦合,模块化设计,保持代码最大的灵活性和安全性。这是现代工程化开发的核心和灵魂。因此,利用C这门语言入门,借此理解结构化开发思维,可以说是个很方便的路子。因为C的函数,本来就是为重用做准备的。同时,全局变量和cpp内部私有变量的差别,其使用原则,这些都能学到很多结构化开发思维。3、开始学习C++C++不难学的,很多人觉得C++难学,其实是因为它在C之外,又提供了很多的概念,尤其是对象,很难以理解。不过我经过这么多年,把这个问题反而看淡了,我认为面向对象相对面向过程,仅仅是结构化程序设计的一个具体体现,是编译器提供手段,强迫程序员必须遵循数据私有化的一个实例,C++和C的关系,最核心的莫过于此。现在我们回到C再看看,如果我们把一个全局变量,写到一个cpp里面,并且在对应的h文件中不声明,它是不是就只有这个模块可以使用?它是不是就是私有变量,以这个理解,类能明白了吗?4、学习C++的深入技巧C++在类的基础上,经过这么多年的发展,其实提供了很多深入的概念,看起来很复杂,其实我看也很简单。比如模板,我的理解就是“类的类”,大家说是不是?既然模板理解了,STL,ATL这些,静态模板库,动态模板库,还难理解吗?就是一大堆类的类,可以借此实现很多应用中需要的类,不需要程序员再自己写而已。ok,STL都理解了,泛型开发还难吗?所谓泛型开发,其实就是我做一个模板,来定义一套算法规则,但是呢,我希望这个算法规则,能进一步抽象,对核心数据类型不要限死,我把各种数据套进去,都可以用,这样,仅算法这部分,我不需要重写了。你想想是不是这个道理?学到这里,C++和C,其实已经差不多了。再学语言,就是求全责备,过于钻牛角尖了。5、学习应用开发前面说了,学习语言,目的不是让别人认为自己是专家,是为了写程序赚钱。因此,语言学完,要学习应用开发。什么叫应用开发呢,我会一门语言,但是,客户不懂,客户说的很直接,在Windows下给我写个程序,我要什么什么功能。为啥Windows呢?因为我习惯。OK,很多时候,应用开发要尊重客户习惯,一般说来,语言这个东东,还是要结合具体平台的开发,才能开发出有意义的应用程序卖钱。那么,一般说来,客户端是Windows系统,服务器是Linux,这些都是行业习惯,嵌入式不好说,各种平台都有,Palm,S60,Linux,WinCE,等等。要根据自己的目标客户来定。当我们选定目标平台后,有一个问题,选什么语言,很多时候,学生和商用程序员差别就在这里,学生一般没得选,自己会啥就用啥呗,企业里的程序员不会,要先评估需求,看哪个语言更合适,不会的语言,要去学。ok,假定我们选了C和C++,那么,我们需要选择开发平台,Windows下不用说了,VC,这是最好用的,Linux下呢,gcc,其他的也差不多。假如我们开发VC,并且使用C++,这个时候,才需要考虑学习MFC了,因为这是微软的标准类库,至少Windows平台下,它最权威,你看见没有,我们从学习开始,走了多少步,才走到MFC?是不是MFC不是学习C++上来就必须学的?6、学习MFC学习MFC,很多人一上来就开始看其体系架构,看得一头雾水,那个模块关系依赖图,我到现在都看不懂。呵呵,其实不是啦,和学语言一样,我们学MFC的目的,也不是希望成为MFC的专家,而是要利用MFC开发Windows应用程序,为我们赚钱。看见没?MFC是手段,不是目的,目的是开发Windows程序。其实Windows下,有一套很标准的C接口,叫Win32API,这个才是Windows的标准编程核心,因此,学习MFC,真实的目的是理解Windows程序开发,建议可以先学习Win32API,看来我们又回到C了哈,呵呵。刚开始学C有用吧?7、Win32API其实Win32APi不难学的,因为虽然它很大,有很多接口,但不是必须的,我们真正做个简单的Windows应用,其实用不到这么多的。做个简单的Dialog,然后实现个功能,你遇到的接口函数,其实绝大多数,就是以后常用的了。把常用的记熟练,就ok了。关键是,这个时候要通过WinMain方式,去理解Windows的事件机制,这是核心,其实说起来简单得要死。就是以前你的程序,由于没有系统支撑,很多事必须自己做,比如检查鼠标和键盘输入,你需要写个死循环,自己不断去看,而Windows说,这些事你不要做了,我来做比你好。你没事就玩去吧,我把和你相关的消息放到一个队列里,就是你的事件队列,你自己没事去找找看,有没有新消息来,有就做事,没事就玩好了。很简单是不?当然,Windows是多任务操作系统,有时候,我们的逻辑需要并发一些功能,比如说,我在等鼠标键盘消息的时候,需要再看看打印机准备好了没有,这里就需要理解并行计算了,这和语言无关,和操作系统无关,这是另外一个话题,这里不多说了,你可以自己找找线程开发的相关资料看。看见没,为了学习好Windows编程,其实我们不仅仅需要学习语言,还要学习操作系统,并行计算原理,内存原理,可能有时候还需要学习网络通信,等很多知识,所以说,单凭学习语言,是成不了商用程序员的,一个合格的程序员,需要理解的东西,太多了,要广为学习。当我们把Win32API,以及基本的窗口化程序设计理解了,就可以回到MFC继续学习了。是不是有点递归返回的意思?呵呵。8、回到MFC 个人感觉应该回到VS原来学MFC很难的,因为其封装了太多细节,很难理解透彻。不过还好,我们有侯老师的深入浅出MFC,去找本来看看,如何从Win32API的纯C编程,改变为MFC的C++方式,看这个最快,基本上前6章看完,已经会了,这里我就不多说了。9、COMCOM、COM、COM,我最头疼的COM,呵呵。COM就是一种远程过程调用,即你请求的代码是在另外一个进程中运行的,通过某种通信协议来回传递参数和结果。仅此而已。DCOM进了一步,服务者可以在另外一台计算机上。在公司开发中,大家可能各做一块,如果要合作,Windows下建议多使用COM.(我个人喜欢socket通信哈)简单说,COM提供了一种机制,可以跨进程通信,甚至跨机器通信。不过,为了传递各种类型的参数,COM可谓是无所不用其极,它发明了智能指针,可以指向任何类型的数据,同时,为了实现智能指针,它使用了大量的C++泛型设计,看见没,C++的基本功就起作用了,还用到了ATL.学习COM,要注意一个接口的概念。由于开发者是不同的人,调用程序和服务程序,可能不是同一种语言,OK,不能简单提供一个C或C++的。h文件来解答接口,因此,COM提供了标准接口,使用者在程序内部,以查询方式获得可用接口,进而以接口ID调用。很累人的。学会了COM,就可以多理解一点ActiveX了,那么再学习一点dll(动态链接库)的知识,我们就已经可以写OCX控件了。一般说来,OCX控件是个很好的设计,哪都能用,一个软件的模块,最理想是开发成这个样子,比exe灵活。10、没了。按少林派说法,学了上述这些,其实已经算打过18铜人阵了,已经可以下山助明主,扫奸佞,扭转乾坤,解万民于倒悬了。不过,关键是你通过上面的过程,是不是已经学会了学习的方法,再遇到新的东东,是不是已经不难学了?这大概就是武学中的悟性了,有了这个根基,以后只要慢慢修炼,估计20年后,可与天下英雄一较短长了。买本书,边看书边练习 如何学习软件编程想学习软件编程,可以循序渐进,先从简单的语言和开发环境入手。目前比较常用的语言有:C,C++,Java,C#,VB……;另外还有网页编程:Php,Jsp,Asp…… 选择一个比较简单适合自己好入手的语言。比如VB比较适合快速入门的初学者。 对编程有一定了解之后,如果还想深入就可以学习C,C#(.Net Framework),C++等的编程,跨平台的话Java。目前c#是处于比较火的语言。 想要进一步提高,光会编写代码是不行的,还可以继续学习数据结构,软件工程等。当然,还要看你自己想学到什么程度了。对于初学者,建议从基础的C语言入门,C语言作为基础语言,大多数的高级编程语言都是从C语言的基础上改进而来的,而且,高级编程语言种类繁多,不同的开发需要的编程语言也不同,在选择高级编程语言之前还要选择自己的技术方向,在没有选择技术方向之前,建议还是从C语言开始掌握。学习C语言推荐谭浩强老师的C语言教材,是一本很好的入门教材。学习中还应当重视实际操作的重要性,多练习。Java学习的主要内容:JavaSE \ HTML+CSS+JS \ db \ JavaEE(Jsp/Servlet, SSH) 如果你是正在学习,可以对照下面我给定的内容列表检查一下,你学到哪里了? 如果你是初学,或者正在考虑学习,那把这个蓝图装在心中,出发吧。ACTION! 一、程序逻辑基础 如果你有程序逻辑的基础(基本语法、变量定义,条件判断,循环),学习C/C++。那这部分可以跳过。 如果你想测试一下:请见我博客中的文章 “给编程入门者”,把里面的题做一做(可用你熟悉的编程语言)。 如果你是第一次学习编程语言,先打一个程序逻辑的基本功,学习: 1、数据类型 2、变量定义、操作符 3、条件语句 4、循环语句 5、方法(方法参数,返回值) 另外就是做一些编程逻辑题的训练。如上面提到的“斐波那契数列”、“打印万年历”、“求质数,完全数”、“打印三角形”等等。 二、Java基础 主要是对J2SE,OOP的学习。包括: 1、面向对象:继承、封装、多态 2、方法重载、重写 3、接口、抽象类 3、Java类的学习 (1)lang包:String, Object,基本数据类型的封装类,异常类 (2)util包: 集合类 List Map Collection 工具类 Date Calendar Collections Arrays Locale Random (3)io包:字节流、字符流,File,序列化 (4)sql包: JDBC编程 (5)text包:Format SimpleDateFormate NumberFormat (6)net包:网络编程了解,如果查想做移动开发,需要掌握 (7)awt, swing包:图形用户界面了解 三、数据库 掌握SQLServer , MySQL, 了解 Oracle。 基本SQL语句,复杂的联合查询,了解不同数据库SQL语言的差别。 四、页面表现技术 主要为HTML,CSS和JavaScript,这些不展开叙述了。 五、JavaWeb 学习 1、WEB容器(Tomcat , Weblogic ,JBOSS) 2、JSP/Servlet 1)Servlet web.xml配置 2)JSP语法 3)JSP路径问题 4)JSP乱码问题 5)session cookie 6)Filter Listener 6)JSTL EL 7)MVC 8)自定义标签 3、JavaEE框架 1)Struts1 Struts2 2)Spring 3)Hibernate 六、移动开发学习 详见“Android学习之路” 文章详见:在百度中搜“ppy2790博客”,大量Android, Java学习文章 ,游戏开发视频,Android项目。楼上正解,语言不用学习太多。学好思想,比如学java,就要学好面向对象,然后你如果转行做其他面向对象语言,那么你会很容易入手。这方面的教程网上很多。视频,文档都有。我比较喜欢 www.54cxz.com 很适合初学者,你可以去看看,希望对你有帮助最近很多人都在问如何学习编程。我觉得学习编程最重要的是入门,如果你入门的时候有一个好的方法和思路,打下比较扎实的基础,对今后的编程工作是很有益处的。即使在学习新的编程语言也无所谓,因为它们有很多相通之处,可以相互借鉴。 我认为可以先学习一下pascal,这个语言比较严谨,适合初学者。pascal它被称为教学语言,结构严谨,不像c语言那么灵活,易于理解和学习。 然后可以继续学习c语言,这个语言比较灵活。有了pascal的基础,在进行c语言编程就不会因为c语言的灵活而有问题 。后面的就可以学习vc什么的了。 c语言的书推荐谭浩强的,比较好。 我当时学习pascal和c语言的时候是将书后的习题都做了一遍,感觉效果很好。 当然了,学习什么语言也要看你具体准备从事什么行业。例如你要进行嵌入式开发,c就是很好的选择,如果是windows开发,那么vc就不错。还有数据库方面的开发、网络开发等等。不同的语言适合不同的方面。要看自己的选择的,呵呵 。 还有很多人说自己的基础很差,甚至中学毕业什么的。其实这个并不重要,比较说英语,在计算机语言里所用到的单词量很少,而且都是常用词,经常使用就记住了。当然,如果你要看原文资料或者帮助的话,专业词汇比较多,不过在金山词霸的帮助下,经常看,也是没什么大的问题的。至于数学什么的,其实数学只是培养你一个逻辑思维能力,在初学编程的时候影响不是很大。况且,作为一个基础编程人员来说,上面还有系统分析师、项目经理,他们会把需求分析、概要设计和详细设计做好的,你只要按照文档写代码就ok了。不过,要上更上一步的话,其他基础知识就非常重要了,毕竟你不能写一辈子代码。 在你学习好c语言以后,个人建议好好学习一下数据结构和软件工程。这两门对你的水平提高都是很有帮助的。特别是软件工程,它能够使你按照科学的工程方法进行软件开发,对今后的发展很有好处。 只是一家之言,有不到之处,还望见谅! 参考资料:
微信搜索公众号【深圳家】或者直接搜索【i-shenzhen】,获取更多信息 |