如何开始学习编程?
最近有几个朋友私信问我如何学编程。我上知乎基本就是随便写点代码来着,这种误人子弟的问题我真的不敢乱说。也罢,找个问题随便谈谈吧,聊胜于无。千万不要当真。
我觉得SICP作为第一本编程书非常合适。SICP可以让我们从零开始建立起整个对于程序语言和程序语言如何被解释的粗浅认识。
知道什么是数据,数据结构如何用一个小小的cons组织起来,什么是过程,过程可以接受过程做参数并且返回过程,还有和解释器息息相关的囿变量、自由变量、环境,等等这些重要的概念。
然后我们需要接触机器相关的知识了。我建议学汇编。8086汇编就行了(硬核的话,或许可以学PDP-6汇编)。注意一开始从最基础的move,add,lea开始。
然后引入栈的push和pop指令,有了栈就可以很方便的复用过程了。栈一定要好好理解,这是过程在机器里面如何抽象的关键。然后引入call和ret两个语法糖。学会汇编写二叉树就够了。
因为用汇编写二叉树,一大堆dword,lea,肯定迷糊死了。这个时候可以上C语言了。看TCPL就行,简单了解C语法就够了。
C语言有指针和int等基础类型,用C写一遍二叉树,明显能体会到类型的好处。另外,C是汇编语言的又一层抽象,这里可以结合SICP里的数据抽象和过程抽象好好理解,C到底是怎么抽象汇编的。
写过一些C之后,了解类型的好处了。这个时候可以看TAPL。结合SICP就知道scheme基本上就是λNB的少糖形式。TAPL也是SICP这种从零开始逐渐复杂的结构,非常适合萌新看。完全弄懂λ cube和subtype就够了。TAPL里面还有很多细节,萌新看的时候可以忽略。
到这,编程基本上就入门了。对机器底层感兴趣的去学体系结构;对数据结构和算法感兴趣的去打ACM;对PLT感兴趣的继续看ATTAPL,SF;对钱感兴趣的忍着自己对C++语法的恶心去学C++;对John McCarthy感兴趣的去学ML,等等。安排的明明白白。
想学编程怎么开始
熟悉以下关键东西,可以边学边做,定期训练,经常思考,长期积累:
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度角地图系统加编辑器的,全靠自己思考,以及看前人的代码,需要时找些网络资料。关键是,可以培养最重要的创造力。
对于算法和设计模式,可以研读下,但是关键还是靠平时如何使用了。新手勉强不来的。
项目管理方面的,就得靠工作经验了,多思考多提意见不要只走流程。
如何学习编程?
孔子说:“知之者不如好之者,好之者不如乐之者”。在学习编程之前,首先想想自己是不是适合学编程,自己是不是爱编程,自己对软件开发这个行业有没有很高的热情。如果你只是听说做软件开发的人拿很多money,就想学编程,那么我劝你不要学编程。软件开发是一种艰苦的工作,没有热情是学不好的,如果你想发财,最好去搞房地产,去开医院,因为只有这些行业是暴利行业,软件开发不是暴利行业。如果你不确定自己是否适合从事软件开发,你可以先试着学学编程。要学好编程,首先得有很好的英文基础,如果英文不好,请马上开始学。英文不好,绝对是你从事软件开发的一个障碍。每天花一些时间来学英语,是一个很不错的时间投资。其次是数学了。可能有很多人不以为然,但是我要说的是,一个合格的软件工程师必须有很好的数学功底。高等数学,线性代数,概率论,数理统计,离散数学和数值分析都要好好学。数学决定了你在软件这个行业里的深度。数学和英文是软件开发的内功,请一定要注意。再学一门编程语言。c或者c++都可以,在学c语言和c++的时候,一定要把它们当做两种语言来学。学习c语言,理解结构化程序设计思想,学习c++理解面向对象的思想。学编程语言的时候,多注意编程的细节。最好把书上的每一个习题都做一遍,然后上机调试一下,注意,在纸上写不出正确的程序。最好多看一些英文原版书,如《The c programming language》,《The c++ programming language》,《c++ primer》,《thinking in c++》等。学了一门编程语言后,就要学习《数据结构》了。《数据结构》也是编程的内功,一定要学好。要深刻理解图,线性表和树等等这些概念,还有一条,就是多编程。学数据结构就是学算法。如果写不出高效的算法,绝对不是合格的程序员。当然,好的算法可能让你的程序运行效率提高几十倍,上百倍。学了上面这些后,就可以学一些开发工具了,比如vc,vb等。千万不要赶时髦,没有学会c或者c++就急着学这些流行的东西。今天学.Net明天又看java,这样是学不好编程的。 如果做到了上面的几条,可以做一些项目练练手了。当然,做一些实际的项目开发就可以是自己掌握一些开发技巧和经验.在这个阶段还要好好学数据库,操作系统,编译原理,计算机体系结构等。这些东西都很重要,不懂这些,也不是一个合格的程序员。另外,在业余,还要学一些软件工程方面的知识,看一些uml方面的书等. 最后,一个合格的程序员应该戒焦戒噪,善于学习,注意细节,多动手多动脑。
罗嗦了半天,送你一句话吧“编程的大道上荆棘丛生,这也是好事,常人望而却步,只有意志坚强的人例外”。
希望可以帮到你,谢谢!
我想学习编程,但是不知道该怎么开始。
我建议最好是从基础入手,而不是一开始就进行可视化编程。虽然如今国内绝大多数pc都是使用的windows,但是毕竟这知识这个世界的冰山一角。扎实的基础自然会更有用处。编程其实重要的是程序思维,然后是算法和数据结构。这些都是超出语言的,就是说不管是学c学java学delphi还是别的什么,这一部分都是一致的。因此培养这部分的知识可以说是一本万利的事情。初学肯定是通过语言熟悉思想熟悉算法和数据结构,到一定的时候就是纯粹的思想和算法数据结构的学习,便已经脱离程序语言了。经历过这些阶段,换一种语言不过是重新了解一下描述的方式,就像你了解了中文思维,山东话和四川话的差别就不会太大;了解了拉丁语的思维,整个语系的语言都不过是简简单单的记忆工作,应用就好。入门的语言,理论上是怎么方便学哪个,看那个顺眼学哪个。当然这里面还是有不同的推荐的。一般来说我比较推荐pascal、c/c++、java。并不是因为这三个东西很通用很有前途,而是它们实在是严整而有规则(c/c++还显得稍微的宽松了一点),而严谨的语法要求和明确的概念区分是有利于编程思维的形成和算法数据结构的学习的。同样的因为这个理由我不推荐vb,而并不是因为它功能不强大(事实上vb在windows环境中是相当牛的语言)另外一个建议是,如果学c,不要一开始就用vc。ms提供的很多东西很方便,有很多很简单的实现方法,但是它们不标准。vc与ansic标准是有很大的差距的。首先一个不遵循标准的c/c++程序是不通用的,换个编译器说不定就不被承认了。所以我非常推崇gcc,理由之一是它完全符合
ansi
c标准,无论它的c还是c++编译器都很严整,功能上一点也不缺乏(有人说gcc不能做图形界面的程序,这一点完全错误,到处都有的qt库和gtk库都能做出很好的界面),另外一个理由便是它免费,毕竟稍微大一点的软件企业就不会屈从与微软的编译器和平台,而一个免费的c编译器无疑可以创造更多的利益;就算要转vc,标准的c程序也是几乎不要作任何改动的。当然,这一切的前提是,你真的很想很好的学编程,做一个这方面的精英。如果只不过是兴趣,或者只是想拿一个ms的工程师认证然后在国内企业找份诸如设计vf、vb程序之类的工作,那完全可以忽略我上面的话,去找个认证培训班,认认真真听听课,好好完成练习,从vb或者vc入手,考好认证是很不会太难的。毕竟现在很多很好的大学里都从来不缺乏计算机的课程,不会缺少算法或者编译原理的课程,不会没有计算机科学的研究院,而那里面出来的人一般都具备了很好的基础知识,会更加容易成为前面所说的精英。
我是一个初学者,该如何开始学习编程
先了解一些基本知识
c语言的背景
C语言是一种高级编程语言,其前身是ALGOL。它的创始人是BrownW.kanihan和DennisM.leach。当C语言出现时,它有很大的局限性,因为它只能在UNIX系统上使用。然而,随着科学技术的进步,计算机产业的发展,C语言逐渐从UNIX中分离出来。1987年,美国标准化协会制定了C语言的国际标准,简称ansic。从那时起,它已经成为一种广泛使用的编程语言。
之后二大语系的学习
例如:C、C+(C语言的扩展)、QBASIC、VB(basic的可视化)、JavaScript、JScript、VBScript、Java、ASP、FoxPro、Perl等,根据我的实践,实际上高级编程语言分为两种主要语言。所有的方法都是基于C的编程语言,如JavaScript、Java等,它们在函数调用、程序语句编写和循环控制方面非常相似。
另一种是以basic为主导的程序语言,如FoxPro、VBScript等,它也有类似的函数调用、程序语句编写和循环控制,但不同于C语言家族。所以如果是从QBASIC开始的,在学习C语言之前最好先洗脑。不要在C语言上使用基本的学习方法和思想。
扩展资料:
首先明确学习目标,看你要学到什么程度,以及用来干什么。
如果你是要学到足以找一份高薪的工作那最好就是考研。
如果是急着找份初级程序员的工作可以了解一下各种编程语言适合做啥然后根据自己的兴趣报个培训班,不过很贵而且还会被鄙视。
如果是觉得编程很好玩儿想简单了解一下,可以买一本计算机导论的书,学一门入门语言,C语言 java python 等等都行。不想看书网上视频教程也很多,慕课网之类的。
如果不是为了工作但是有明确的目标,比如我要学黑客,我要学做游戏,我要学做网站之类的,可以自行百度XX学习路线之类的。然后再辅以计算机专业基础课,比如计算机原理、数据结构算法什么的,同样可以自行百度,很容易找到。
新手如何学习编程?
可以先学 Pascal。 Pascal 是一门很好的教学语言。然后对过程式编程有些了解以后可以学习数据结构,C 和 C++。 然后可以学一下 Java 或 C#。 当然我的建议只是帮助你能够了解过程式和面向对象的编程。至于要进入IT业,方向和门类很多,所以学什么更好不能一概而论。如果希望能够进入计算机系,拿一个“科班出身”的学位,从Pascal学起不错,可以把Structured programming的基础打好。但是大部分人,从Visusal Basic学起更能够速成,并增加自信。
大计算机科学的底子:c ,c++,离散数学,数据结构,数据库,软件工程,(可参考MIT Open Courseware)。业余者自修:Visual Basic, Scripting,Frontpage, Flash。
C++是C的延伸,所以两者有很大的重叠部分,分不清很正常。我觉得C是基础。用C能够熟练地写程序以后,再逐渐接触C++的程序设计理念可能更好一些。
“学习一门语言的最好方法是用它来编程序”。
最后,不能只学语言。许多大学生认为学最新的计算机语言、技术、标准是最好的铺路方法,因为许多公司招聘时要求这些方面的经验。这些新技术虽然该学,但是学习计算机基础课程更重要,因为计算机语言和开发平台日新月异,但是万变不离其宗的就是那些基础课程:数据结构、算法、编译原理、计算机组成、关系型数据库原理等。有位同学生动地在“开复学生网”上把这些基础课程比拟为内功,把新的语言、技术、标准比拟为外功。只追寻时髦的学生最后只懂招式,没有功力,是不可能成为高手的。
如何学习编程?
首先先把一些常用的样式代码主要了解一下,一些深入的特殊的代码可以往后再了解,因为只有对这个有一定认识之后,学习的速度效率才会更快。下面就列举一下一些常用的样式并写出用法来
1、背景background:url(images/bg.jpg)00no-repeat#000;是4个关于背景的简写;如:背景图平:background-image、背景图片位移:background-position、背景平铺:background-repeat、背景颜色:background-color;
2、高度height:100px、宽度width:100px;其中px是一个单位(像素),网页是以像素为单位的
3、边框border:1pxsolid#000;是3个关于边框的简写;边框粗细:border-width:1px;边框样式(实线):border-style:solid;边框颜色:border-color:#000;
4、字体:font:bold12pxArial,Helvetica,sans-serif;分解开的话就是:字体粗细font-weight:bold;字体大小font-size:12px;字体样式:font-family:Arial,Helvetica,sans-serif;字体行高line-height:20px;字体颜色color:#666;
5、内边距padding:10px20px30px40px;分解开就是上内边距:padding-top:10px;右内边距:padding-right:20px;下内边距:padding-bottom:30px;左内边距:padding-left:40px;
6、外边距margin:10px20px30px40px;分解开就是上外边距:padding-top:10px;右外边距:padding-right:20px;下外边距:padding-bottom:30px;左外边距:padding-left:40px;
7、float:left;向左浮动以我这些年来的工作经验,上面列举的这些样式是比较常用的样式,只要了解上面这些样式代码的功能,做出一个页面来是不成问题的。
当然,这里列举的只是一些常用的,其他的样式等熟悉了,再自己学习一下可以用Dreamweaver来写代码,因为这个软件有代码提示功能,只要打代码样式的头一个字体就会有相应的代码样式提示,只要能够大概的了解代码的功能,也就没必要把代码全记住,做这行我都四五年了也不能完完全的写出多少代码的全称,因为我根本没有去记,我只要看到这个代码就知道这个是做什么用的就够了有一点要提醒下,最好是把Dreamweaver当做一个辅助输入工具,多锻炼一些手写代码,这样对自己学习很有帮助。