理论指导编程
1. 什么叫编程编程课是指什么
编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
例如说为了使计算机能够理解(understand)人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
编程课是大学里的一项专业课程,主要就是通过各种相关的理论知识和专业技能来达到使计算体系按照该计算方式运行,并最终得到相应结果的一项学习。目前在市面上有关于编程课学习的课程有很多,除了大学以外,还有少儿编程,不少国内的孩子在初中或是小学就已经开始学习相关的少儿编程课程了。
(1)理论指导编程扩展阅读:
编程课对孩子综合能力提升的主要体现在以下四个方面:
(1)编程课开发孩子大脑
小的时候孩子还没有形成良好的思维模式,可以对孩子进行适当的锻炼,增强孩子动手动脑能力,有利于开发孩子大脑智力发育,帮助孩子得到启发,有助于孩子编程启蒙发展。
(2)编程课提升专注力
少儿编程学习以编程游戏吸孩子注意力,让孩子能够主动投入少儿编程学习,有利于提升孩子专注力,全神贯注学习编程。
(3)编程课提高耐心与意志力
编程课学习是不断试错的过程,如果孩子独自完成编程游戏制作,需要足够的耐心与意志力,有助于孩子实现编程程序运行。
(4)编程课提高创造力及想象力
编程课学习是不断创造的过程,需要孩子发挥想象力与创造力,将脑海中的编程游戏设计出来,有助于提升孩子创新能力,让孩子获得进一步的能力提升。
2. 在学习编程的过程中,应该注意什么
在当你学会了一门语言的时候(也就是说,你记住了该语言的语法,词法,还有一些常用的函数),就意味着你已经掌握了编写程序的基本工具。无论你用的是啥语言,都差不多。只是工具之间有长有短。比如说,Delphi,VB之类做Windows环境的应用程序很方便;用Java开发基于网络的程序很轻松;C,C++适合开发系统级软件。假如我们用C(C++)写一个记事本,估计要写数百行代码,而且不能保证没有大错误,而用delphi,,或VC来做,就只要鼠标点点控件,几下就完成了,可谓方便。这就是说工具各有特点,各个方面都有各个方面的最适合的工具。不过工具只是工具,光靠工具是写不出好的程序的。就好比我要写一篇文章出来,首先确定用啥语言来写(汉,英,俄还是其他?很显然,如果我是写给中国人看,自然用中文,写给美国人看,当然用英文。)好,确定了语言之后呢?我就能写文章了吗?文章结构如何设计?写文章的方法技巧和注意事项是什么?这些我都不知道,自然写不出好文章。可见,要写一篇好文章,会语言是远远不够的。同样,要写出好的程序(程序运行结果正确,时间,空间效率高,健壮性好,可读性强等等),光会一门语言也是远远不够的。学习编程方法才是我们应该做的。 大学计算机教育也是先从教授一门语言开始(一般是C语言),然后,紧接着就开始数据结构和算法的学习。数据结构和算法设计分析是整个编程方法的基础,重中之重,也是考研专业课必考科目。以前流行过一句话:数据结构+算法=程序。这是不无道理的。数据在计算机中的表示和存储不是无组织的,是有规律,有结构的。因此,当我们对这些数据操作的时候,理论上存在一种与某结构相比配的最优(或近式最优)算法,以次来确保操作数据的时空效率。打个比方,现有一排数据:a,b,c,d,e,如果经常要对其进行查找操作,顺序排列存储该数列能降低操作的时间。同样如果经常要对其进行插入或删除操作,采用链接存储则能降低该操作的时间复杂度。由此可见,合理的数据结构,高效的算法对程序质量有着多么重要的影响!又比如,我们要编写程序能对中国所有公民的身份证号进行排序。这是极其庞大的一组数据,如此多数据采取什么结构来表示和存储,以及应用什么算法来对其排序,使该程序在排序时尽量的快,占用的空间尽量的少。这都是学问,编程的学问!所以,我觉得,程序员对数据结构和算法的领悟程度直接决定了他的编程水平的高低。那么如何提高自己的水平呢?我们可以学习研究像C(C++)函数库(API)里的函数,或JFC(JAVA类库)中的函数,这些函数实现都是非常有经验的程序员编写的,有着很好的运行效率。再者,就是数学的重要,我认为数学对程序的重要性体现在对算法的支持上。像微积分思想,为计算机数值计算提供了理论指导;而数据结构和算法来源与离散数学,线性代数和概率统计中的思想和方法。另外,像计算机密码学,计算机图形学,计算机多媒体都离不开数学。好的算法需要数学工具来理论验证,也需要数学来改进,来完善! 那么,面向对象又扮演什么角色呢?说到底,我觉得面向对象思想的宗旨就是代码重用。面向对象里的三大概念:封装,继承,多态都是为了代码重用。重用质量高的代码,不但可以节省人力,而且极大提高了本身原程序的质量。比如,我要编写一多功能计算器,我依据自己喜好设计了界面,在具体功能实现上我继承了别人已经写好的正确功能类,不但省去了自己写的麻烦,而且也保证了该计算器的正确性,一举两得。面向对象思想在写小程序时或许体现不出优越,但在中大型软件开发时,它的无比威力便会体现出来。没有作过中大型项目的人是不会感觉到面向对象思想的伟大。在这里,我还是要强调一点,面向对象思想是极好的思想,极好的编程方法。但是如果没有质量好的代码可以值得被重用,面向对象方法就没有用武之地!可见,拥有良好数据结构和算法的功能代码块是保证整个程序质量的奠基石。(再次强调数据结构和算法的重要!) 软件质量好坏还有一个很重要的因素:软件体系结构。 我再打个比方,我要建房子。软件体系结构就好比房子的结构,采用哪种样式(欧式?中式?)决定了房子的结构, 软件体系结构的规划设计也就决定了软件本身的结构(软件的环境,功能模块的安排,位置,互相联系关系等等)。那么,房子的结构设计好了,就要解决建筑材料的问题。显而易见,牢固的砖头和横梁是房子牢固的根本保证。同样,拥有良好数据结构和算法的功能函数或函数块也是整个软件质量的根本保证!有了质量过硬的砖头和横梁,只要结构合理,房子的寿命是完全可以保证的。一样道理,我们手头有了大批信的过的功能函数或函数块,在编程的时候合理运用 面向对象方法,按照科学的体系结构要求,就能在经济的条件下,开发出优良(准确,健壮,时空效率高,易修改补充,美观,易使用)的软件。 现在社会上多的是基本工不扎实的程序员,盲目追风,今天C#,明天JAVA。而开发工具又层出不穷,许多软件公司上半年在.net平台上做项目,下半年又在J2EE上开发,导致许多写代码的人来都来不及学。要应付这种现象,只有牢牢的打实基本功,以不变应万变。不管用什么语言,在什么平台上,有扎实功底的程序员都可以很快适应新环境,用极短的时间就可以产生效益,这也是软件公司所愿意看到的。所以,我想对刚刚步入编程领域的人们说,不要被书店里眼花燎乱的编程书迷惑。很多都是语言工具书,商业书,没有内涵,没有研究价值的。真正想深入的,还是先把理论基础打扎实为妙。说的大一点,中国软件的发展不需要知道几门语言,会用几个工具,却写不出优质代码的程序员。
3. 怎样学习编程
如何学习编程,主要有自学和报班两种途径,至于需不需要报班,可以结合自己的实际情况来进行判断,这里简单介绍下。
学编程的注意点:
1、要确定好自己一定能学下去,不能是三分钟的热度,只是学个热闹,这样永远没有办法学的会。
2、一定要打好基础,刚开始学习编程的时候可能会很慢,感觉自己没学会啥,这可能是因为正处于打基础的阶段,只有把基础打好,未来才可以学得更好。
3、要注意实践操作,理论知识学得再多,如果不能实际的运用,还是等于0的。
自学还是报班:
1、如果你可以规划好自己的学习过程,坚持一步步向前走,那么自学当然是很好的。
2、如果你没人监督就学不进去,也没有自己的学习规划,那么还是建议你报班,可以少走冤枉路。
不管是自学还是报班,学编程的要注意的点是相差不大的,希望我的回答对你有帮助!
4. 计算机和编程的理论基础是什么
理科大学生学计算机,应该学什么? 对于大学生来说,计算机是一个非常重要的1、计算机数学基础计算机数学基础是计算机专业重要的基础课程,它是学习专业理论
5. 编程入门学习指导JAVA
《JAVA编程思想》初学者可以先看前面几章的基础理论知识,然后再看《JSP应用开发详解》系列书籍,里面有源代码,最好能自己敲一遍。一定要理解后再写代码,不要对着书抄。等你能做完一个简单的项目后,就会发现自己已经入门了,如果想要深入的话,就得要找具体相关方面的书籍了,比如:XML、oracle、sqlserver、ejb、j2ee框架等等。
总之一句话,多实践才是学JAVA的根本。祝你能早日进入JAVA的世界。
6. 如何学好编程请各位编程高手帮帮忙
前几天重读Eric S. Raymond的How to become a hacker,看到他推荐编程入门选用Python,突然觉得很压抑,有了些想法。我建议编程入门的人学C或者Pascal,如果更进一步的话可以用汇编语言,因为这样能更清楚的了解底层。
下面针对一些支持选用Java, Python, C++(指用了非C特性的C++)等高级的OO语言入门的人可能的原因作些说明。
1. Pascal, C太老了,过时了,平时用得很少,现在流行Java等等。
标准Pascal的确是比较老了,不过有Delphi后继呢,说C老恐怕就是无知了,C现在用得很广泛,似乎sourceforge.net上的项目还是 C的最多。推荐Pascal不是因为Delphi。选择Pascal, C是觉得两个现在很常见,语法很有代表性,简洁明了。
不要动不动觉得什么东西过时了,COBOL还有OO版本面世,还有FORTRAN,LISP,好古老的语言吧,现在还用得很广呢。
2.入门要从OO开始,培养用OO方式思考的习惯。
首先要说明,OO是方法,不是语言,初学者一入门便摆弄Java, Python, Delphi等很容易形成误解,似乎OO=Java, Python, C++...
其次,过程式语言(或者说结构化方法)的精髓不会消亡,OO里面也不可能摆脱掉一条条的语句、函数调用,结构化方法还是需要提倡的。OO方法不是那么容易学会的(OO语言的语法弄得很熟练不代表你懂OO),而结构化那套方法,自个写个千把行的程序就很能体会了,我是说写个实用点的东西,比如试着自个实现一些数据结构和算法,写几个小游戏等。写个一千行Hello world等于没写。
我觉得方法是实践中体会出来的,不是看看书就能学会的,你看Design Patterns等把模式背的滚瓜烂熟很可能会陷入过度设计的泥潭,你写了几千行代码,然后再去读一读,改改调试调试,慢慢增加功能,你就会发现自己代码写的有多么臭了,然后看看书听听别人意见你就知道什么叫Best practice了,最好的经验就是在焦头烂额之际得到的。
过程式语言的代码一般比较简练,我们编程序最终的目的是要解决问题,是要计算,是要获取信息,不要被OO, pattern, EJB, Web Services等迷糊了(我不是反对这些技术).
强烈建议各位多读代码,你去看看莱昂氏的那本UNIX v6源码分析,仔细看,慢慢看,你就能体会到什么叫精致的代码了,然后尝试按照那个风格写代码。
3.过程式语言弄久了,很难转入OO的思维模式
我以前也没有深想过这个理由,不过时间久了,发觉自己不过是把数据和方法集中在一起而已,看着方便,其实有很多不合理的东西,这里头就需要OO 的理论指导了,还是需要时间来体会。我相信有很多用OO语言的人也不过是在框架里头添添代码,调用来调用去而已,把人类当作数据和操作的打包器。
个人觉得只有在用过程式方法做了十来年,编码上十万行后才有思维定势,难以习惯用OO的眼光看待系统,然而这个转变,我仍觉得比改变一个人的恶习容易许多。OO方法不是学了个Java, Python, C++等就能掌握的,需要实践,需要时间。过程式语言也容易培养一个人严谨的做事态度,比如用Pascal, C等写代码,没有namespace,没有function overload, 没有reference(Pascal有,呵呵,我喜欢),没有template, 没有exception, 你要花很多心思处理一些细节,比如警惕数组索引越界,悬挂指针,野指针等等,请不要觉得麻烦,这个就是计算机啊,底层就是这样的啊。 4.别用C, Pascal了,看我用Java, Python, Delphi, VB, VC等轻轻松松就写了个PP的GUI,NB的分布式应用...
这篇文章是给初学者看的,也可以给一些浮躁的人看看(我也反省,呵呵),初学编程的人精力应该放在数据结构、算法上面,尽量多看一些底层的东西,数字逻辑,操作系统,编译原理,计算机组成、体系结构,计算机网络等等基础知识。编写GUI拖几个控件有什么好吹的,你懂界面设计的原则么,你知道窗口消息怎么回事么,你编的界面是把易用放在第一位呢还是把漂亮放在第一位呢,你的GUI程序容易修改吗?比如我一会要加个button,一会去个 listbox,你会不会改的疯掉呢?你是不是在OnClick里头写了大段大段的代码,做类似“从edit1.text中去掉不是数字的字符,搜索 xxx再转成16进制,再复制到edit2.text”的事?
嗯,你socket弄得熟练,recv来,send去,可是如果你不懂tcp/ip协议那就有点可笑了,除了用别人做好的函数库你还能搞出什么新花样?弄分布式应用的知道“分布式”怎么回事吗,
你是否只是在用API堆砌代码呢?倘若有一天这个函数库没人支持了,你是不是就傻眼了?
比如编游戏,没看过3D图形学便搞DirectX,也是比较可笑的。
我并不是说你编比较高层的东西就必须先得透彻了解底层怎么实现的,我只是建议你好歹把底层的东西混个脸熟,遇到问题时心里有个谱,查查资料,别动不动扑某个论坛求救。以前在BBS上看到某人的话,说BBS不是学习的地方,是开拓眼界的地方。深以为然。
学习还是找纸版的书老实的看比较好,想想你积攒了多少电子书而又看了多少。
底层不了解,仅多也就飘在别人上头,别人一闪身,你就得摔下来。
初学编程的人一来就IDE, GUI, Network啥的猛搞,能不浮躁么?还是沉下心来研究一下基础知识吧,我以脑袋担保你有生之年会觉得他们有用的(呵呵,你转行我就没辙了),别看着别人弄JFC, Socket了你还在头大这个quick sort怎么就不对呢就心里惶惶的,你要知道在一批API不被支持后不少人心里空空的没个着落:天啊,我除了那个就啥都不会了,郁闷啊,花了我那么久时间钻研那套API,呜呜。。。。
5. C好难啊,我入门还是从Java,Python开始吧
首先,是自个要做程序员的吗?是想编程还是想赚钱啊?
其次,我们来比较一下难易:
C: k&r那本书真的不算厚,经典的C的书很少,说C难,大概是传说中C的指针很难吧,C的语法很简明的,就是指针,只要你认真看看书,写几个程序试一试,那几个指针的用法不难掌握,另外大家千万不要去死钻*++ ++*之类的语法,关于这点在《开发高手》最后一期上裘宗燕老师有一篇精彩的文章。大家记住写代码是要维护的,别耍弄语法技巧给自己或后人制造麻烦,你想想自己看别人写的天书代码是赞叹还是咒骂?
Java: 书太多了啊,就说Gosling(没拼错吧)那本,相当厚,学Java的人一开始都被classpath和package的问题烦过吧,还有Java的关键字,语法,Sun鼓捣出来的一堆堆Java技术名词,是不是有点晕了?
C++的确有难度,你可以看看C++语言的设计和演化,就可以知道C++怎么这个德行了,呵呵。有意思的是Java现在加入模版,而且因为伪模版的实现被人诟病,还有那个EJB的转变,有意思,大家可以思考一下“复杂”、“实用”这些词。
Python的确比较清爽,不过深入一点后其内部对象模型也不简单,想想操作一个列表有多少方法,各种功能强大的操作符,而且现在的OO语言逼着你OO, 结果往往是语法OO而已,没多大新意,我还是欣赏Perl, C++这类语言,你想怎么就怎么,重要的是要用合适方法,趁手工具,最少的时间做有价值的东西,把你钻研语言的语法的时间拿来锻炼一下身体,泡杯茶看看小说我觉得更好一些。
语言只是表达思想的工具,不要只局限于一种语言,不要狂热于某一门语言。
学编程时选书最好先看一看书中的代码,是取自实际应用中的吗?写的漂亮吗?(指代码自身的精致,以及排版是否工整)代码中有语法错误吗?(鄙视某些没编译试试就把代码到书里的作者)
有本Essential C#,取的是.Net类库的代码,很棒,讲delegate(希望没拼错,好久没弄这个了)时举的例子很清楚地让人看到这个东西该怎么用。
另外推荐Learning Perl,我个人觉得是我看过的最好的关于编程的书,该讲么,不该讲什么,按什么顺序讲,很好,也许是Perl的精神的感染吧,当初看这本书很有震惊的感觉,原来程序设计语言还可以这么使!爽!
7. 新手如何学习编程
熟悉以下关键东西,可以边学边做,定期训练,经常思考,长期积累:
1、语法。
2、基础理论(数学、数据结构、算法等)。
3、设计方法(编程原则、设计模式、框架设计等)。
4、库(核心、基础、UI、扩展、游戏引擎等)。
5、计算机相关(操作系统、网络、图形学等)。
6、领域知识(游戏设计、网站设计等)。
7、开发工具(编辑器、IDE、自动部署等)。
8、项目管理(进度管理、分工协作、Bug管理、版本控制等)。
最普遍也是最重要的能力:创造力。努力分析并理解好做什么以及怎么做。要知道上面那些东西一开始都是不存在的。
具体方法包括:
1、快速阅读入门教程和书籍,适合学习语言和基础库。比如我学Java读的《Java编程思想》,练习题做过一点,然后学ActionScript就没读过书,只读过Adobe官方文档《ActionScript 3.0编程》。
2、阅读库的文档、实例、源码。比如Flash、Flex开发,熟悉官方API很重要,很多细节要具体使用时才注意到,这时候最好做个笔记,虽然我从没看过我的笔记。
3、做一个自己感兴趣或熟悉的小项目,比如我就以黑白棋游戏作为多个语言的试水项目,一样的逻辑,便于把关注点放在语言特点上。
4、自己动手丰衣足食。厨师有菜谱,程序员可没菜谱。比如我做游戏,最关键的游戏编程知识全部是动手学出来的,很少有专门针对某个业务领域(如游戏)的编程书籍,要么是入门书,要么是模式书(如算法)、理论书(图形学),很少有书籍教你如何开发一个45度角地图系统加编辑器的,全靠自己思考,以及看前人的代码,需要时找些网络资料。关键是,可以培养最重要的创造力。
对于算法和设计模式,可以研读下,但是关键还是靠平时如何使用了。新手勉强不来的。
项目管理方面的,就得靠工作经验了,多思考多提意见不要只走流程。
8. 编程怎么才能让自己有思路呢
“我感觉自己没有编程思想,没有解题思路”
这其实主要是不清楚算法,也就是逻辑思维需要锻炼。
可以尝试去看一些关于算法的书籍,或者找一些实例书籍(推荐),对照实例学习程序的算法。如果比较笨一点,第二个方法很有效。看实例的时候要把好的算法变成自己的,要记住优秀的算法。C语言(C++)算法很多,看的实例多了遇到类似的问题就可以借鉴甚至是完全照搬,不会手足无措。
打个比方,比如c++的标准库里自带了list,那么如果你需要一个list你就可以完全使用标准库里的list而不应该自己去编写一个,这样既不用为如何写list而犯愁,又节省调试的时间。(仅仅是个比方,list相信大家都会写)
其实我们的成长过程也是一步步汲取别人的经验。
同时,对自己的逻辑能力的训练也是一个程序员不要忘记的部分。可以去做一些这方面的练习,上搜索一下应该到处都是。比较经典的有海盗分钱、12球找出异常球等等这些。
逻辑能力就相当于理论指导,实例算法就相当于实战经验。
不断锻炼自己的逻辑思维能力、多学习一些实例算法,相信你也能快速成长。