1. 新手如何学习编程
熟悉以下关键东西,可以边学边做,定期训练,经常思考,长期积累:
1、语法。
2、基础理论(数学、数据结构、算法等)。
3、设计方法(编程原则、设计模式、框架设计等)。
4、库(核心、基础、UI、扩展、游戏引擎等)。
6、领域知识(游戏设计、网站设计等)。
7、开发工具(编辑器、IDE、自动部署等)。
8、项目管理(进度管理、分工协作、Bug管理、版本控制等)。
最普遍也是最重要的能力:创造力。努力分析并理解好做什么以及怎么做。要知道上面那些东西一开始都是不存在的。
具体方法包括:
1、快速阅读入门教程和书籍,适合学习语言和基础库。比如我学java读的《Java编程思想》,练习题做过一点,然后学ActionScript就没读过书,只读过Adobe官方文档《ActionScript 3.0编程》。
2、阅读库的文档、实例、源码。比如Flash、Flex开发,熟悉官方API很重要,很多细节要具体使用时才注意到,这时候最好做个笔记,虽然我从没看过我的笔记。
3、做一个自己感兴趣或熟悉的小项目,比如我就以黑白棋游戏作为多个语言的试水项目,一样的逻辑,便于把关注点放在语言特点上。
4、自己动手丰衣足食。厨师有菜谱,程序员可没菜谱。比如我做游戏,最关键的游戏编程知识全部是动手学出来的,很少有专门针对某个业务领域(如游戏)的编程书籍,要么是入门书,要么是模式书(如算法)、理论书(图形学),很少有书籍教你如何开发一个45度角地图系统加编辑器的,全靠自己思考,以及看前人的代码,需要时找些网络资料。关键是,可以培养最重要的创造力。
对于算法和设计模式,可以研读下,但是关键还是靠平时如何使用了。新手勉强不来的。
项目管理方面的,就得靠工作经验了,多思考多提意见不要只走流程。
2. 如何快速掌握所有编程语言
一般来说应对这种挑战有两种态度:
其一,粗粗看看语法,就开始练习,边查资料边学习;
其二是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作。然而这两种方法都有弊病。
第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高。因为没有实际问题驱动的语言学习通常是不牢固不深入的。有的人学着学着成了语言专家,反而忘了自己原本是要解决问题来的。
第一种路子也有问题,在对于这种语言的脾气秉性还没有了解的情况下大刀阔斧地拼凑代码,写出来的东西肯定不入流。说穿新鞋走老路,新瓶装旧酒,那都是小问题,真正严重的是这样的程序员可以在短时间内堆积大量充满缺陷的垃圾代码。
由于通常开发阶段的测试完备程度有限,这些垃圾代码往往能通过这个阶段,从而潜伏下来,在后期成为整个项目的毒瘤,反反复复让后来的维护者陷入西西弗斯困境。
实际上语言学习有一定规律可循,对于已经掌握一门语言的开发者来说,对于一般的语言,完全可以以最快的速度,在几天至一周之内掌握其最常用的50%,而且保证路子基本正宗,没有出偏的弊病。其实真正写程序不怕完全不会,最怕一知半解的去攒解决方案。
因为完全不会,就自然会去认真查书学习,如果学习能力好的话,写出来的代码质量不会差。而一知半解,自己动手土法炼钢,那搞出来的基本上都是废铜烂铁。比如错误处理和序列化,很多人不去了解“正路子”,而是凭借自己的一知半解去攒野路子,这是最危险的。
因此,即使时间再紧张,这些内容也是必须首先完整了解一遍的。掌握这些内容之后进入实际开发,即使有问题,也基本不会伤及项目大体。而开发者本人则可以安步当车,慢慢在实践中提高自己。
以下列出一个学习提纲,主要针对的是有经验的人,初学者不合适。这个提纲只能用于一般的庸俗编程语言学习,目前在流行编程语言排行榜上排前20的基本上都是庸俗语言。如果要学的是LISP之类非庸俗语言,或是某个软件中的二次开发语言,这里的建议未必合适。还是那句话,仅供参考。
1. 首先了解该语言的基本数据类型,基本语法和主要语言构造,主要数学运算符和print函数的使用,达到能够写谭浩强程序设计书课后数学习题的程度;
2. 其次掌握数组和其他集合类的使用,有基础的话可以理解一下泛型,如果理解不了也问题不大,后面可以补;
3. 简单字符串处理。所谓简单,就是Regex和Parser以下的内容,什么查找替换,截断去字串之类的。不过这个阶段有一个难点,就是字符编码问题。如果理解不了,可以先跳过,否则的话最好在这时候把这个问题搞定,免留后患;
4. 基本面向对象或者函数式编程的特征,无非是什么继承、多态、Lambda函数之类的,如果有经验的话很快就明白了;
5. 异常、错误处理、断言、日志和调试支持,对单元测试的支持。你不一定要用TDD,但是在这个时候应该掌握在这个语言里做TDD的基本技能;
6. 程序代码和可执行代码的组织机制,运行时模块加载、符号查找机制,这是初学时的一个难点,因为大部分书都不太注意介绍这个极为重要的内容;
7. 基本输入输出和文件处理,输入输出流类的组织,这通常是比较繁琐的一部分,可以提纲挈领学一下,搞清楚概念,用到的时候查就是了。到这个阶段可以写大部分控制台应用了;
8. 该语言如何进行callback方法调用,如何支持事件驱动编程模型。在现代编程环境下,这个问题是涉及开发思想的一个核心问题,几乎每种语言在这里都会用足功夫,.NET的delegate,Java的anonymous inner class,Java 7的closure,C++OX的 tr1::function/bind,五花八门。如果能彻底理解这个问题,不但程序就不至于写得太走样,而且对该语言的设计思路也能有比较好的认识;
9. 如果有必要,可在这时研究regex和XML处理问题,如无必要可跳过;
10. 序列化和反序列化,掌握一下缺省的机制就可以了;
11. 如果必要,可了解一下线程、并发和异步调用机制,主要是为了读懂别人的代码,如果自己要写这类代码,必须专门花时间严肃认真系统地学习,严禁半桶水上阵;
12. 动态编程,反射和元数据编程,数据和程序之间的相互转化机制,运行时编译和执行的机制,有抱负的开发者在这块可以多下些功夫,能够使你对语言的认识高出一个层面;
13. 如果有必要,可研究一下该语言对于泛型的支持,不必花太多时间,只要能使用现成的泛型集合和泛型函数就可以了,可在以后闲暇时抽时间系统学习。需要注意的是,泛型技术跟多线程技术一样,用不好就成为万恶之源,必须系统学习,谨慎使用,否则不如不学不用;
14. 如果还有时间,最好咨询一下有经验的人,看看这个语言较常用的特色features是什么,如果之前没学过,应当补一下。比如Ruby的block interator, Java的dynamic proxy,C# 3的LINQ和extension method。没时间的话,也可以边做边学,没有大问题。
15. 有必要的话,在工作的闲暇时间,可以着重考察两个问题,第一,这个语言有哪些惯用法和模式,第二,这个语言的编译/解释执行机制。
至此语言的基本部分就可以说掌握了,之后是做数据库、网络还是做图形,可以根据具体需求去搞,找相应的成熟框架或库,边做边学,加深理解。对于一个庸俗语言,我自己把上面的内容走一遍大概要花2-3周时间,不能算很快,但也耽误不了太多事情,毕竟不是每个月都学新语言。
掌握了以上的内容,就给练武术打好了基本功,虽然不见得有多优秀,但是肯定是根正苗红,将来不必绕大弯子。就算是临时使用的语言,把上面这个提纲精简一下,大致能在几天到一周内搞定,不算是太耗时,而且写出来的代码不会太不靠谱。
3. 编程怎样自学
自学编程的步骤
一、确定编程方向
确定编程学习的方向。编程语言有多种:C++,C,C#,JAVA,Python等,每种语言都有不同的优缺点,可以根据自己的兴趣方向选择一门编程语言作为自己的学习目标。
二、基础阶段的语法学习
学习任何一门编程语言,都需要掌握其编程的语法规则,可以通过阅读一些编程书籍,了解一些编程中的概念思想和基本语法。这对于后续的编程学习十分重要。
三、上机实战
学习编程最重要就是需要多上机练习,所以电脑上需要安装所学语言对应的编译软件,多看书,多敲代码,实践出真知。
四、多向他人学习
编程的学习离不开借鉴模仿,初学编程可以多看看厉害的人的编码,多总结他人代码的优缺点,反思自己如何能够从哪些方面改进代码,优化代码。
编程入门先要学的内容
1、如果你能够熟练的使用Windows的话,你就已经可以开始你的程序生涯了,打怪升级走起来!(PHP网站开发在线培训课程)
2、首先从C语言开始。有的朋友可能认为C语言太难了,应该从VB开始。虽然,对于一个初学者来说,用一些控件堆砌成一个小软件会有一些成就感,但是,基础才是最重要的!C语言对于数据类型的描叙,远比VB更全面、明白,而这些正是编程中的根本!
3、学C语言,从数据类型,基本表达式,再到条件语句,循环语句,然后学习函数,再加上一些简单的数组知识,足矣。到现在为止,你只要理解结构化程序设计的思想也就够了!
4、有了以上的基础,就要开始学汇编了。汇编刚开始学的时候很难,那些各种各样的寄存器,分段的内存地址,很难理解,可是这些知识理解了以后,后面的内容就简单了。到此,你会对计算机有更深一层的理解!
4. 如何快速学好编程
这边是互联网来it学校,源初中起步入学的
对于没有编程基础的人来说,要想高效的学习编程语言,需要做好以下几个方面的事情:
第一:注重概念的理解。学习编程语言要从上到下对编程语言有一个整体上的认知,然后再自下而上逐渐掌握各种概念的作用。对于面向对象编程来说,最重要的概念就是类、对象、属性、方法、封装、继承、多态、集合、异常处理、多线程等概念,掌握了这些概念基本上就对编程语言有了一个整体上的了解。
第二:注重实验。实验是验证想法最直接的途径,实验也是锻炼动手能力的重要途径,尤其在学习的初期更应该看重实验的作用,通过实验可以建立概念的画面感。编程语言本质上来说就是一种工具,只有多用才能越来越熟练,所以一定要注重实验,理论上来说,实验做的越多越好。
第三:注重交流。学习编程语言一定要注重交流的作用,如果在学习的过程中能与专业人士进行交流一定会节省不少时间,如果有人指导也会少走不少弯路。
第四:参加实习。在掌握了基本的编程语言知识之后,接下来应该找一个项目组参加实习,实习在学习编程语言的过程中会起到非常重要的作用,因为在实习的过程中会接触到真实的项目,会快速的帮助程序员成长。
5. 如何更加有效的学习一门编程语言
在了解到,如何写一个软件或者程序后,想要深入的了解的话,那么你就要补课了,什么是数据结构,什么是计算机网络,什么是操作系统,只有了解这些之后,你才会发现,原来是这样,为什么接口是这样的,算法这么写才更简便呀。
快速有效的学一门编程语言,不是找一个视频课跟着学,而是在学习的过程中,自己上手来敲一遍,这样才能快速有效的掌握。
6. 电脑程序员怎么学
程序员的岗位需求很多,例如大型网络公司、软件开发公司等等都需要程序员。
程序员需要学习:
1、掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;
2、理解计算机的组成以及各主要部件的性能指标;
3、掌握操作系统、程序设计语言的基础知识;
4、熟练掌握计算机常用办公软件的基本操作方法;
5、熟练掌握基本数据结构和常用算法;
6、熟练掌握C程序设计语言,以及C++、Java、Visual Basic中的一种程序设计语言;
7、熟悉数据库、网络和多媒体的基础知识;
8、掌握软件工程的基础知识,了解软件过程基本知识、软件开发项目管理的常识;
9、了解常用信息技术标准、安全性,以及有关法律、法规的基本知识;
10、了解信息化、计算机应用的基础知识;
11、正确阅读和理解计算机领域的简单英文资料。
程序员必备技能:
1、熟练开发工具
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。
而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。
其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。
另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
2、熟知数据库
作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。
虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
3、了解操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。
要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。
Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。懂得网络协议TCP/IP。
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式。
从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。
至少,需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
4、明白DCOM/CORBA/XML/WEBServices存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。
XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布式计算的基石之一。
5、不要将软件工程与CMM分开
大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员。
一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能。
如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。
6、需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求。
要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
7、模块化思维能力
作为一个优秀的程序员,他的思想不能局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。
这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
7. 作为一个程序员,至少需要掌握哪几种编程语言
1、 C语言
C语言有多基础在这就不做更多的描述了,现在势头很猛的几种语言的底层都是C语言搞定,重要性不言而喻。作为最基础的底层语言,对于有志于做系统工程师或者有架构师梦想的程序员来说,了解底层如何实现的,C语言是必备的。
2、Java语言
Java语言目前在应用范围实在太广,不得不选择来学习,无论从手机App,还是到后天的云端,还是在大数据方向,都java存在的影子,java相对入门还不是那么难。
做过很多年java的几乎都有这种感觉,java语言入门容易但是真要成为顶级高手真的很难,高级语言就存在这种特性,入手容易成为高手很难。
3、Python语言
Python目前在很多领域都在涉猎,而且在成几何倍数增长的速度,py最初以爬虫而闻名,现在在人工智能以及大数据上都开始抢占自己的地盘,以至于很多主流的人工智能框架很多都是以py切入的,而且越来越多,py是这三种语言里面最简单易学入门最简单的语言。
注意事项:
当然从众多语言之中选择三门语言其实是件很纠结的事情。C++在某些方面比Java语言更加适合做底层的框架,是很多架构的最爱,也是程序员推崇的博大精深语言的代表。
从应用角度也在各个领域都有不同程度的涉猎。还有别的语言比如php,ruby,go等等都有自身鲜明的特性。不可能把所有的语言都有学到为,精力有限只能选择最该学的去搞。
8. 怎么学好编程语言
对于编程语言的初学者来说,如果想全面掌握一门编程语言,需要从两个方面入手,一方面要掌握编程语言自身的语法,另一方面要掌握该编程语言的编译过程,而这个过程需要掌握大量的计算机基础知识,也涉及到数据结构和算法设计的内容。
以Java编程语言为例,初学者首先可以从Java的基本编程语法开始学起,此时的重点在于建立Java的面向对象编程思想,搞清楚Java的编程过程。初期学习Java时要搞清楚各种抽象概念,这个过程需要通过大量的实验来完成。由于Java语言的抽象程度比较高,所以学习的初期还是具有一定难度的。
在掌握了Java语言的基本语法之后,下一步需要从Java虚拟机入手(JVM),来进一步了解Java编程语言的解析规则,这对于提升对于Java语言的理解有非常直接的帮助。要想搞清楚JVM的机制,还需要具有一定的编译原理基础,这个过程也涉及到对于操作系统的了解。另外,在学习编译原理的期间还会同时了解操作系统的体系结构,以及与解析效率关系密切的数据结构知识和算法设计知识。
编程语言本质上只是一种工具,所以要想搞清楚整个编程语言的运行机制和自身特点,一定要多做实验,通过实验来建立各种概念的画面感,同时也会验证很多“猜想”。另外,在学习编程语言的过程中,还需要有一个大的学习方向,围绕这个大方向来组织自身的知识结构,这对于提升就业能力有比较直接的影响。