自学编程需要看什么书用什么计算机

物理专业自学计算机应该学些什么?
我是理论物理大四学生,即将去美国读物理学博士。读这个物理博士完全是出于兴趣,而非对于职业规划的考虑,但是未来职业规划又是一个不得不面对的问题,所以我需要在接下来读物理PhD的五年里面自学计算机,在此征求一下大家的建议:我的背景:学过数值计算方法,计算物理(主要是各种蒙特卡洛还有元胞自动机之类的)数据结构和一些简单的算法,高中时参加过信息学奥赛不过只拿了个省二。会的语言包括Pascal,C,python,Matlab(Octave),Mathematica,能用这些语言做一些不太复杂的科学计算(包括物理实验的模拟和数据处理)。操作linux比较熟练但是不太会折腾,遇到各种问题都需要google。前端方面会写HTML,CSS,了解一些HTML5和CSS3的知识,能看懂Javascript但是自己写不出来。大三的时候被哥们拉着创业做了点网站不过搁浅了。自认为在理论物理里面培养出来的数学比较好。期望:本人对三个方向感兴趣:1)计算机图形学。这个来自于学习计算物理的时候,编写物理模拟程序(比如随即行走,晶体生长,元胞自动机)产生出来的一些数据用图画出来感觉非常有成就感,而且我特别喜欢线性代数,对游戏动漫之类也很有兴趣,小时候经常拿3dmax建模。本来我想说是对设计感兴趣的,因为小时候就想当个艺术家,阴差阳错的后来喜欢上了物理,计算机图形学是我唯一能想到的艺术与数学物理结合的比较好的东西2)移动开发,最好是软硬结合的那种,我没什么经验就是觉得非常酷。而且觉得在五年之后可穿戴设备智能家居什么的的时代就会来临。3)数据类,包括机器学习数据挖掘之类的。我现在就在学coursera上的机器学习课,才上了三个星期,感觉有点意思。我现在的问题是,感觉无从下手。想学的各种东西要用到的库或者api都很庞大,学起来很烦。而且不知道是否有必要去学操作系统,编译原理这些课程。请各位给予指点
每个人站的角度不同,现在的答案基本都是从图形学的角度建议,我换个角度。从研究生计算机科学做研究的角度来讲,我认为本科最适合的专业首先是物理,其次是数学,再次才是计算机。数学学的太抽象,抽象层次太高,研究现实问题的人往往处在鄙视链的底端。计算机学的太底层,对于概率论、随机过程、线性代数等学科学的太少,不了解建模分析的那套方法论。而物理学一方面的数学知识足够多,另外一方面主要研究的方法也是对这个世界建模,然后进行观测,这与前沿的机器学习领域做的事情几乎是一样的。至于会不会写代码,其实科研里面要写的代码不多,主要都是在推公式,研究如何设计模型使得其拥有很多良好的性质。代码很多时候写写matlab就可以了。所以恭喜你,如果你想转行做CS的科研,你有很大的优势。事实上,很多CS领域的大神都是学物理的,比如华人图灵奖得主姚期智,CMU Machine Learning领域大神Alex Smola。如果你真的励志做CS相关的研究的话,物理PhD的选择最好到CS极好的学校,比如UCB, CMU, MIT, Stanford,一般这些学校都可以辅修Machine Learning的Master, 多修CS相关的课程,都是很好的选择。Coursera上的Machine Learning课程都很入门,如果想进阶,你可以看看CMU 10701(Machine Learning), 10702(Statistical Machine Learning), 10708(Probabilitic Graphic Model) 课程的课件、视频、相关阅读和作业,基本都不需要写代码,主要是数学证明、建模和分析。当然,如果你想做应用而不是做理论什么的,当我以上没说。
我个人觉得上边的答案,都不符合一个非计算机的对于学习计算机的真正渴求。以我对于国内计算机专业的了解,国内的大多数计算机学院,倒不如称之为WEB学院,我不是有意看低做WEB的同胞们,我也是你们中的一员。现在工科专业中大部分都要求编程,但是却不给讲计算机基础架构的知识,即使是计算机专业的人,对于计算机的学习和理解都是半吊子水平。所以就出现了非计算机专业对于计算机的好奇,因为他们发现,解决问题的绝大部分时间都耗费在跟计算机纠结去了。当我还是一个无知少年的时候,最让我兴奋的事情莫过于解决了一个物理或者数学问题。高中毕业时,最吸引我的莫过于核物理专业、应用数学专业、化学专业了。那个年代我对于技术的了解还是最多停留在19世纪。当时的我曾经狂言,世界上的有关科技的东西我都了解的差不多了,只是还有一个东西我没法看懂它是怎么运作的,就是一个小小的计算器,算是当时我理论水平一小片乌云。当时完全没把它当回事,现在想来,教育让我有知识的同时,也让我变得愚蠢。我大学学的是计算机专业,是因为这一小片乌云。几年前,我也是个门外汉,我曾经想花一天的时间搞懂计算机是怎样工作的,为什么计算机就算不错,编程到底是个什么东西。在实验室困顿了这么多年,终于有了一点自己的理解,但是这也只是冰山一角。现在回答问题:可以肯定的是:必须要学CPU架构、操作系统、编译原理、Linux程序设计相关课程,但是是以一种理解的方式。当你理解了我说的这些个东西,你说的那些个问题都不是个问题,只是细节的问题,你也会发现学计算机是有通法的。希望题主将目光放远。我觉得每个人都应该懂计算机如何工作,就像理解发动机的四冲程、发电机电动机的电磁感应。这是个信息社会,计算机是个工具,必须理解这个工具,因为这个工具正在让我们的各行各业都在发生一个烂大街的变化:智能化。不要让自己的时间过多的浪费在怎么使用工具上,计算机就是一个就在我们手中,但鲜有人能说我就是理解它的一个工具。如果你能像理解物理定律一样去理解计算机,你就有睥睨天下的资本。这是一个信息化的时代,可是有好大一部分人都好像还没有适应,工科基本被信息化、计算机化了,这是一个时代的趋势。编程是一个基本能力,就像你出国就必须会说英语一样。看我的这篇回答:这篇文章大概讲了一个计算机人或者说程序员大概需要的知识结构。
爪机主动答。我觉得考虑职业发展要向前看,囿于“要把原来学过的domain knowledge用上”没有必要,基本上都是在限制你的思路,constrain太多最后得到的local optimal很有可能就不是你真正适合去做的了。具体来说,图形学的大多数东西依旧是程序和数学,跟物理学关系大的只有Physically-based Computer Animation/Simulation,就这个领域用到的物理知识也绝对没有超出普物,反而跟数学关系更大,而且做的好的人大多数也不是物理出身的(比如stanford的Rom Fedkiw读的数学)充分说明很懂物理不是必要条件。而且如果你要真的想以这个为工作并且要求做的理论背景比较深的话就会发现job market异常的小…总之,这个领域跟物理学之间的match很小(虽然确实很有趣ww)。其实我觉得你才本科的话基本上没有什么沉没成本可说的,程序员大把不是CS本科出身的,不用把自己想得太特别,就把自己当成一个数学和物理基础比较好的新手,然后使劲学你感兴趣的就好。祝你成功。
这个得看你的boss push你狠不狠了可以找找计算机系的培养方案,再去亚马逊豆瓣上看看书评,就可以确定下一个书单可以选择按照科班路线来,也可以自己先捣鼓项目然后再带着问题看书至于库或者APi这种东西会查文档就好总之,你要花大量的时间,前提是你以后的boss会给你宽裕的时间祝好运看了一下别的答案我觉得得多写几句一个没有系统学习过物理学,但是编程很叼的人,能做计算物理么?反过来,如果对计算机这个学科缺少整体了解,但是物理很强,就真的能胜任计算机中和物理紧密相关的分支么?显然,两者都不可能。前者只能成为实现别人思想的工具,后者只能空谈。每个人总觉得自己已经掌握的东西是理所当然的,而往往特别憧憬自己不熟悉不了解的东西。别的人给题主的建议当然是好的,却未必能解答题主的困惑。打个比方,你们已经在代码的千军万马之中杀了几进几出,发现一个难以攻克的据点需要物理学的知识才能拿下。你们说,快来啊题主,这里是需要你的地方。而题主此时还在战场之外看的云里雾里,虽有心但是却还没有融入战场的环境。所以题主还是现需要融入战场的环境,该学的还是得学,该搞明白的还是得搞明白。
其实在计算机图形学里有很多与物理相关的课题,例如物理模拟(刚体、柔体、流体等)、基于物理的渲染(光源、材质、媒介等),还有一些涉及物理的跨学科课题,例如生物力学、基于物理的声音渲染、光场摄影等等。简单介绍几本书有空可以看看最前沿的图形学发展,特别是当中涉及物理部分的看看那些文献的作者网站,可能会发现不少研究者都有物理背景。我觉得能做理论物理研究的人,其智商做哪种科学问题也不大吧。而计算机科学之本就是算法,无论是哪一个应用方向都是必须的,建议深入学习。个人不建议浪费时间在API、OS、UI编程上面,不竟这些东西许多人都能做,有研究能力的人可以探索新世界。因为游戏、动画、电影这些娱乐工业,计算机图形学的职位在行业上也有需求。
推荐你一本书:《game physics engine development》,讲刚体物理引擎的。国内似乎还没引进,只能看盗版。
我是理论物理大二的…给师兄回答这个问题吧。================================================当师兄看到很多API繁杂但无从下手,答案是唯一的:多写。再说说我的建议吧,掌握一门快速开发语言:强力推荐Python,因为有scipy和numpy存在。可以把这玩意当Matlab用。我做过测试,进行大矩阵乘法numpy的速度比matlab快50%,这二者都比mathematica快20倍…而且python有一个很好的web framework django,结合html css,可以写出不错的网站(比如知乎)如果你是OI的,数据结构神马不用太多虑,直接上计算机图形学吧。建议可以OpenGL+PhysX(物理引擎)+.NET/Cocoa(win/mac)一起做一个项目,像我做的是一个无人机控制的仿真平台。这个对于学习三这玩意都有效。特别是mvc的构建方式。另外还有一个很轻巧的构建计算机图形学的方式是webgl,很漂亮。或者直接unity3d(游戏引擎)引擎亦可。如果你会了html也就是如果你会了javascript,建议入手node-webkit,二十分钟构建一个跨平台桌面应用。对于交互UI我比较倾向于两种,一个是轻量级的html+js的形式,好看简单,一个是unity虚拟现实,我最近做的一个项目就是这两种结合的模式。强力推荐CUDA(GPU计算),物理口必备…想在自己的PC上模拟核聚变CUDA绝对是居家旅行,杀人放火必选。而且CUDA的模型天生是为物理学家设计的。同时需要学点cpp,可以把鄙校丁泽军老师计算物理A书上的习题全部CUDA一遍基本就练习的差不多了ML/DataMining我只看过一些些,这些东西如果自己写算法的话需要用c/cpp如果只是玩玩可以用python+一堆库的方式来搞。主要可能还是数据源吧。嵌入式&单片机,如果不慎入实验物理坑会点单片机嵌入式还是有必要的,入个树莓派玩玩ROS吧。从树莓派+arduino玩的方式入手玩起来很简单无压力,最练手的就是写机器人控制了。这个是从机械折腾到前段的。树莓派既是典型的嵌入式Arm开发版,优势在于社区庞大。arduino是一种高度简化后的单片机。比起51等用起来真的简单多了移动开发:学习学习swift吧。玩玩iOS。。总是觉得Android怪怪的学习轨迹:1.熟练使用linux/unix(格式化硬盘一个月内可以生存)2.选一个自己顺手的IDE(vim/emacs/VS),基本熟练cpp、python(均指一万行代码,可以写写计算物理习题)3.搭建一个自己的服务器(using
ec2)4.写一个桌面app .net/cocoa,(学c#/o-c),在这里折腾OpenGL CUDA等5.写一个绚烂的个人网站use Django&html5&css3&webgl6.研究妹子回你短信速度和她对你好感度的关系(使用支持向量机/deep learning)7.学习CUDA并在你的pc上模拟EAST using MHD model in FEA(其实能跑出来一个N-S方程出来个卡门涡街就很好了)8.学习单片机并且控制一架四轴飞行器给那个追了四年没追的女神泼一盆冷水(someone你丫两年以后给我等着)。可以适当从ROS+树莓派入手,加上一些有意思的硬件比如kinect什么的,就很好玩,推荐学习OpenCV(人脸识别)+讯飞各种接口(语音)。对了。。。工程控制论,或者什么ML,DataMining的数学比物理口的数学真的是弱爆了。一群不用解偏微分方程的渣渣。顺便抛我的blog (呃最近好像数据库挂了)就这些差不多了…剩下做点小项目自己也就会了=====================操作系统建议看看,就是看看而已。。我大二选了操作系统课最后发现完全没听。编译原理没有必要,想深入学推荐MIT的计算机结构和解释同时学习LISP
作为物理系的计算机图形学自学者,我恰好可以说一下。计算机图形学里所谓的基于物理动画,其实倒不如说是基于“力学”动画。固体力学、流体力学现在基本都不在物理学的范畴内了。这些内容都在力学系的范畴,而且现在的“力学”都差不多是独立的一个分支了,这也是很多不是物理系的(包括我刚开始的时候)不清楚的地方,虽说“力学”实质上更靠近数学(因为涉及物理图像的东西不多),基本上都是各种复杂的偏微分方程,但过了理论物理一关就算从头学也不至于遇上很大的困难。如果说基于物理渲染,基本上也在光度学打转,用到波动光学的机会都不多,至于理解荧光、磷光要用到的量子理论,还是老老实实用经验公式吧。当然,会更高层次的光学理论,会有不一样的看问题方式。总的还是来说,你学的物理对图形学有一定帮助,但帮助其实不大,但理论物理都搞的定,还怕图形学这点问题,我觉得只要有耐心,沉得住气就行了。
如果想学习计算机科学,而不是玩玩而已浅尝辄止的话,建议先看离散数学(主要涵盖数理逻辑,素朴集合论,图论,抽象代数,组合数学,数论。非数学或计算机专业基本不会接触,非常重要,属于理论基础。基础不牢后面所有的研究都是空中楼阁),再看具体数学(难度很高,要有非常好的数学分析与离散数学基础),随后算法导论(大篇幅的理论证明,可以开阔算法设计的思路,且非常有助于提高算法分析能力)。同时,可以看计算机组成原理与系统结构(关注程序的执行过程,深入理解程序设计语言。需要有电路分析和数字电路的基础),编译原理(高级语言如何转化为机器语言),操作系统原理等。但这些不是最主干的部分。
话说艺术和数学的融合不得不提分形几何(虽然我觉得图是很炫但也谈不上什么艺术和数学的融合)。分形是个很年轻的领域,值得发掘,在物理里面也应该有前景的。计算机作分形图像你可以做做看。
已有帐号?
无法登录?
社交帐号登录共有 7240 人关注过本帖
标题:学习编程要求一台什么配置的电脑
等 级:新手上路
帖 子:11
&&问题点数:0&&回复次数:9&&&
学习编程要求一台什么配置的电脑
我要学习编程
我准备买台电脑 配的太好买不起 所以我想问问大家配置一台用来学习编程的电脑要些什么样的配置
搜索更多相关主题的帖子:
等 级:新手上路
帖 子:83
要编程就太简单了,市面上配个3000左右的电脑足够用的了
等 级:新手上路
帖 子:445
[QUOTE]学习编程要求一台什么配置的电脑[/QUOTE]486,UNIX都可以在上面运行。配置好了那叫游戏机。
由于工作,N久都没来了!
等 级:新手上路
帖 子:112
直接点就去买一台二手电脑就OK了,如果顺利的话1500元应该没问题的。
等 级:新手上路
帖 子:207
仅仅为了编程那就太简单了
努力,努力吧,未来的天空,那一片湛蓝总会属于我的~
等 级:新手上路
就看装什么编译器了,如果安装VS2005那配置就得好了.
等 级:新手上路
帖 子:194
3000元以上的都可以。
米鼠网10群:(专为程序员设的)
18群现已爆满.
等 级:新手上路
帖 子:11
我知道那配置好的是给那玩游戏的人用的
心里有底了
没什么学不会的
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9797
专家分:208
一般配置3000左右的就够用的了.假如不玩特大游戏不做高要求的图之类的.
倚天照海花无数,流水高山心自知。
等 级:新手上路
帖 子:194
2500就不错了。
米鼠网10群:(专为程序员设的)
18群现已爆满.
版权所有,并保留所有权利。
Powered by , Processed in 0.034122 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved作为一个非计算机毕业的学生(无任何经验),怎样入门学习编程? |
作为一个非计算机毕业的学生(无任何经验),怎样入门学习编程? |
【陈良乔的回答(6票)】:
我个人理解,对于完全的初学者而言,建立这样一种观点非常重要,那就是:用自然语言来描述某件事物,是作文,用语言来描述某件事物,就是程序。
作文需要学习组词,造句,段落,篇章
而编程也需要一步步地学习表达式(定义变量等),控制结构(if,while等),函数,名字空间等等
两者是基本相似的
有了这个基本观点,学习起来就会轻松很多,编程也不再那么抽象乏味
在我写的这本《我的第一本C++书》中,有这样一个小例子,也许可以供你参考
将自然语言转换为C++程序设计语言就是编程
C++是一门程序设计语言,既然是语言,就有着语言的基本特征,我们可以像学习自然语言一样来学习C++。用自然语言描述一件事物,是作文,而用程序语言描述一件事物,就是编程。
语言,是用来描述和表达现实世界的,编程语言也不例外。为了描述现实世界的事物,我们需要一些名词。这些名词在C++中就是数据类型和用数据类型表达的数据。为了表达事物之间的关系,可以将各个事物连缀成句子,这些句子在C++中就是表达式。将多个句子通过一定的逻辑关系组合起来,就可以形成一篇文章。同样,在C++中通过一定的逻辑控制将多个表达式组合起来就形成了程序。通过C++编程语言和自然语言的对比,我们可以轻松地理解C++程序的含义。C++是描述现实世界的编程语言,编写程序的过程,是将自然语言翻译成C++语言的过程,如此而已。比如,在自然语言中,我们可以这样来描述一件事情:有个男孩叫小张,有个女孩叫小芳。男孩向女孩示爱。女孩对男孩进行考察,如果男孩有房又有车,则与男孩交往;如果没有,则与男孩拜拜。翻译过程可以参考图1-4。
图1-4 &编程就是把自然语言翻译成C++语言
如果把自然语言翻译成C++语言,则是这样的:
//有个男孩叫小张
//有个女孩叫小芳
Girl XiaoF
//男孩向女孩示爱
XiaoZhang.ShowLoveTo(XiaoFang);
//女孩对男孩进行考察
//如果男孩有房又有车
if(XiaoZhang.HasHouseAndCar() )
&&& //女孩与男孩交往
&&& XiaoFang.SayHiTo(XiaoZhang);
else // 如果没有
&&& //则与男孩拜拜
&&& XiaoFang.SayByeTo(XiaoZhang);
通过将自然语言翻译成C++编程语言,就形成了一段C++程序。只要我们会说话,就会用C++编程。C++编程,就这么简单!
【陈琨的回答(2票)】:
我觉得是否要学习编程真的要考虑清楚。
“无论哪个行业都要涉及到和互联网”并不代表“学习编程无论对工作还是生活都将有很大帮助”。其他行业的大部分人不会编程照样活的很好,杂志社也不会要求主编是一个会编写C++程序的人。大部分只需要会计算机办公软件等的操作以及互联网的使用即可,
正如你所说的,"想学习编程是出于好奇和求知欲望",这极大可能只是一种冲动,如果你一个月后,两个月,或者半年后还想学习编程那才是真的想学。而且非计算机专业的,如果不是真的对计算机极度感兴趣,只是为了一时好奇或工作需要,我觉得坚持不下去的可能性比较大。
@CocoaBob 说的对,逻辑能力确实很重要。你是否喜欢思考一些逻辑题?是否喜欢做一些有挑战性的工作?此外,你是否有耐心在那里调试一整天却不知道错误究竟在哪里?
假设你已经决定你要学且有较强的逻辑能力(或坚信自己可以培养出来)等,那么,开始学吧。
随便抱一本书,学完你就可以入门。如果只是想玩,那么学开发一些东西,手机的应用可能比较有趣。android、ios、wp7等都可以,网上找找一些教程都有。如果想深入,那么学C/C++等都可以。不过对于前者你也可以学学C,学一些基本的语法,认识一下编程。
新手浅见。
【林翔宇的回答(1票)】:
建议用Python入门,上手快,学得方便,也可以快速做出一些小东西解决实际问题,据说笨办法学Python不错,
如果想系统学习计算机科学与技术相关的知识,建议用C语言入门,为将来算法、系统编程等学习打下基础,不建议用谭浩强的书,C语言好书多了,老谭的实在不怎么样。
初学编程,重要的是实践,将书上的例子打上一遍,提高熟练度,打好扎实的基础。多搜索接触到的新名词,可以扩充许多知识。
【ZeroD的回答(0票)】:
别问了,学就是。。。
【CocoaBob的回答(1票)】:
从我教自己女朋友做编程的经验来看,如果一个人仅擅长艺术、文史、娱乐之类感性项目的话,就不太适合逻辑性很强的编程。所以,首先需要培养自己逻辑思考能力,培养自己探究事物原理的兴趣。
嗯,然后当然也要培养自己对编程的热爱。我是从移动设备下手的,一想到自己能在一只小巧的手机上通过编程来实现无限的可能性就感到兴奋~
然后就是选择技术了,从自己的兴趣点入手会比较好。比如喜欢移动开发的话,可以根据手头的设备选择是用Java开发Android软件,还是用Objective-C开发iOS软件,还是用.Net开发WP软件。
个人推荐学习iOS软件编程。这个平台的开发文档详尽,官方API的bug极少,模拟器性能十分优良,软件生态系统完善,Obj-C这门语言也是比较简单易用的,比C更适合用来入门编程~不过由于Obj-C的语法跟C/C#/Java有很大区别,看习惯了后不一定能习惯其他语言……
【Kubar的回答(0票)】:
记得有个趣味编程网站,现在用的手机不方便,回头发你网址。
发表评论:
馆藏&51484
TA的推荐TA的最新馆藏您的位置: >>
  英文原文:
  作者:Feross Aboukhadijeh(花了3个小时开发出实时搜索 YouTube 视频的网站,在建成之后的10天里获得了1百万用户的访问量,详见报道)
  我在很小年纪的时候就开始学习编程,我学习编程的方法是创建大量的不同的网站。下面列出的是我创建的主要的网站,其中最早的一个是我11岁时开发的。我希望读者能从我这些复述中获得的信息是:如果你想学习编程,做大量的练习性的项目是非常必要的。
  学习一种技术最好的方法就是练习,练习,练习。所有我知道的最优秀的程序员都深深的享受编程 && 编程是一件让他们无比快乐的事情,也因此他们大量的编程。经常,那是一种不健康的废寝忘食。学习如何编程 && 以及如何编好程 && 并不需要你具有超人的能力。你只需要去按照自己的意愿动手去做,做出点什么东西。
  做什么东西并不重要,重要的是你找到东西动手去做。我所认识的那些优秀的程序员,他们都有各自不同的最初学习编程的动机。有些人学习编程是为了开发动画游戏。有些人是为了解决他们在使用计算机时遇到的问题,或让工作更有效率。有些人是为了开发产品来满足人们的需求。有些人(真正的程序员)学习编程只是他们为了深入了解计算机工作原理的步骤之一,他们希望能搞清楚这种机器。有些程序员编程只是因为他们享受解决难题的挑战。
  让所有这些&优秀程序员&统一起来的唯一因素就是,他们全因为生活中的某些原因而为编程着迷,继而花大量的时间编程,做大量的、大量的用于练习的项目。
  那么,我就不再罗嗦了,下面就是我如何学习编程的故事:
  我的第一个网站
  在我大概十一二岁的时候,我感到需要给自己做一个网站。我已经记不清为什么需要一个网站了,只记得那样就开始做了。于是我就在网上搜索关于网页、Web 浏览器、HTML 如何工作的信息。很多的信息我发现都已经过时了,有些明显是错误的或给了错误的向导(例如为 IE 浏览器和 Netscape 浏览器分别做网站),但过程是非常有趣的,我学到了很多新东西。
  尽管在网上搜到了很多粗制滥造的信息,我还是想办法做了一个简单的网站,我叫它&Feross 的网站&。开发它,我使用的是微软的 Frontpage,那是一个非常棒的的 HTML 编辑器。我使用很常见的语法,例如粗体,斜体等对网站做修改,在编辑器里即时查看这些 HTML 标记能达到的效果。这是很有效的学习方式。
  下面是我的第一个网站的截屏。这个网站已经不存在了。
  你从上面的图片上看不出来,这个网站上的每个元素都在动,闪烁的动画,还能出声。我在网站的每个页面上都放置了不同的 MIDI 格式的歌曲。而且都是自动播放,你没有办法让它们停下来,除非把电脑消音。哈,这就是当年流行的网站设计风格。
  等再长了几年岁数后,我重新设计了这个网站,让它变的漂亮些。我使用了在网上发现的一些免费的网站模板,用微软的画图工具修改了一些图片。
  尽管我大量的依赖于模板,但这不失为一个学习 HTML 和 Web 浏览器的好方法。&Feross 的网站&除了用来收集我小时候的一些视频外没有其它用处,所以不久后我就对它失去了兴趣。
  我的第一个真正的
  当我9年级(14岁)时,我和我的朋友都非常着迷于观看像
这样的网站上的 flash 视频和动画(这是2005年之前,还没有 YouTube)。我在这种网站上花了大量的时间,所以我知道所有最好的视频和游戏。我想,如果做一个网站来收集这些在网上发现的我喜欢的 flash 动画、视频、游戏,会是一件很酷的事情。这就是我做出 FreeTheFlash 网站的初衷。它是这个样子的:
  我从开发&Feross 的网站&的过程中学到了很多 HTML 知识,这次我使用了 Macromedia 公司(现在的 Adobe 公司)的 Dreamweaver 编辑器,这个东西能让我在网站的重复部分使用同一个模板。
  一段时间后,我意识到,我应该让网站动起来,听说是应该使用一种叫做 PHP 的编程语言来做网站,而不是只使用静态的 HTML。于是,我花了20美元从 Amazon 买了一本书,叫做《PHP and MySQL for Dynamic Websites》,使用 PHP 和 MySQL 对网站进行了重新设计。我还给它进行了新的美化:
  在高中时期我对这个 FreeTheFlash 网站的开发持续了2年。它对于我第一次尝试做一个&真正&的网站来说是相当成功的 && 在2006年,它获得了60万人/次访问,页面浏览量达3百万。FreeTheFlash 让我知道了做出一个产品、让它杰出、看大量的人使用它,是一件多么自豪的事情。它让我想做出更大的网站。
  我的第二个网站
  在中学,我在上计算机课程时做了大量的笔记。于是,在11年级时,我觉得应该把这些笔记放到网上,让那些不喜欢看课本的学生使用。我做了一个网站,叫做 StudyNotes,使用的是 PHP 和一个叫做 Joomla 的内容管理系统。我也尝试过使用 Drupal,但发现它太复杂了。
  同年,我为我的学校 Key 俱乐部分部做了一个网站,如今也不用了。
  这段时间,我花了大量的时间泡在
里,这是一个论坛,主要关于网站站长和 SEO 专家推测 Google 算法,讨论 AdSense 技巧,调试网站问题等。
  大量的学习和阅读
  等我进入了斯坦福大学后,我学习了大量的计算机课程,诸如
和 ,我还超前学习了部分 课程。
  所有的课余时间我几乎都在阅读关于设计、编程、浏览器和 JavaScript 等方面的资料。一般每天4-5个小时。
  如果你要问我都读什么?乱七八糟的。但大部分都是我敬仰的设计师和程序员写的博客。你可以从的右侧看到我列出的部分博客链接。
  关键一击
  之后,在2010年夏天,当我在 Facebook 实习时,因为跟一个朋友打赌,我开发了 ,它是一个用来实时搜索 YouTube 视频的网站。这个网站在建成之后的10天里获得了1百万用户的访问量,YouTube 的 CEO 甚至给我发消息说提供一个职位给我,你可以从看到这些媒体的躁动。
  我知道 YouTube Instant 的成功归功于当前的好时机和一点幸运。我想,我们很多人不知道自己能做出什么。
  继续前行
  我注意到很多人使用 YouTube Instant 来听音乐视频,这让我想到了另外一种使用 YouTube API 的好方法。于是,我的朋友 Jake Becker 和我在2011年的头3个月里开发了 ,它能让你轻松的向朋友分享音乐播放列表。通过这个项目我们都学到了很多新的东西。
  在这个工程中我掌握的技术:
以及 ,用来解决跨浏览器问题的)
(web framework/server)
(版本控制) &
  以及其它一些我们学会使用的东西:
(web server)
(to daemonize Tornado)
(to build and deploy the site after a push)
  动手去做!
  我把从11岁就开始做的东西都不厌其烦的曝出来,目的就是要说,如果你想学习编程,你需要动手去做东西!现在就去。不要找任何借口。
  做东西是最好的学习方法。
  从头到尾读一遍编程语言书籍是一件很无聊的事,读到一半你就读不下去了。但,如果你想做一个项目,你在做的过程中会知道你该学习哪些知识,这是认识和掌握知识更有效的途径。
  计算机课程
  大学里的计算机课程是学习编程的另外一种十分有效的方法。大多数好的计算机课程都十分强调学习计算机科学领域里的重要概念和范式,而不是教你某个特定的语言。这能让那些从来没有接受过正规教育的人在自学时开阔眼界。
  记得在斯坦福大学上第一堂计算机课程时(那是教授 C++ 的课程),我在想&怎么可能变量前不带$符号呢?&当时我只使用过 PHP! &我用了好长一段时间才改掉在变量前加$符号的习惯!
  在软件公司工作
  另外一个提高编程水平的方法就是到软件公司实习,比如 Facebook 或 Quora,最近的两个夏天我就是在这些公司里度过的。你会从那些优秀的人那里学会如何更好的编程,如何阅读和理解他人的代码,如何在大项目中进行团队合作。
  还是那句话 && 比什么方法都管用 && 学习编程最好的方法就是做项目练习。我是不是重复这句话无数次了?
  如何学会编程:
做练习性项目
看编程书籍
做项目练习
上计算机课程
做练习性项目
读编程类博客
做项目练习。
  这就是我能给出的最好的建议。
  祝编程愉快!
程序人生热门文章
程序人生最新文章

我要回帖

更多关于 自学编程先学什么 的文章

 

随机推荐