`
long_yu2
  • 浏览: 313382 次
社区版块
存档分类
最新评论

学习计算机编程的方法

阅读更多
我在很小年纪的时候就开始学习编程,我学习编程的方法是创建大量的不同的网站。下面列出的是我创建的主要的网站,其中最早的一个是我11岁时开发的。我希望读者能从我这些复述中获得的信息是:如果你想学习编程,做大量的练习性的项目是非常必要的。
  学习一种技术最好的方法就是练习,练习,练习。所有我知道的最优秀的程序员都深深的享受编程——编程是一件让他们干起来无由的高兴的事情。也因此他们大量的编程。经常,那是一种不健康的废寝忘食。学习如何编程——以及如何编好程——并不需要你具有超人的能力。你只需要去按照自己的意愿动手去做,做出点什么东西。
  做什么东西并不重要,重要的是你找到东西动手去做。我所认识的那些优秀的程序员,他们都有各自不同的最初学习编程的动机。有些人学习编程是为了开发动画游戏。有些人是为了解决他们在使用计算机时遇到的问题,或让工作更有效率。有些人是为了开发产品来满足人们的需求。有些人(真正的程序员)学习编程只是他们为了深入了解计算机工作原理的步骤之一 ;他们希望能搞清楚这种机器。有些程序员编程只是因为他们享受解决难题的挑战。
  让所有这些“优秀程序员”统一起来的唯一因素就是,他们全因为生活中的某些原因而为编程着迷,继而花大量的时间编程,做大量的,大量的用于练习的项目。
  那么,我就不再罗嗦了,下面就是我如何学习编程的故事:
  我的第一个网站

  在我大概十一二岁的时候,我感到需要给自己做一个网站。我已经记不清为什么需要一个网站了,只记得那样就开始做了。于是我就在网上搜索关于网页、Web 浏览器、HTML 如何工作的信息。很多的信息我发现都已经过时了,有些明显是错误的或给了错误的向导(例如为 IE 浏览器和 Netscape 浏览器分别做网站),但过程是非常的有趣的,我学到了很多新东西。
  尽管在网上搜到了很多粗制滥造的的信息,我还是想办法做了一个简单的网站,我叫它“Feross 的网站”。开发它,我使用的是微软的 Frontpage,那是一个非常棒的所见即所得的 HTML 编辑器。我使用很常见的语法,例如粗体,斜体等对网站做修改,在编辑器里即时查看这些 HTML 标记能达到的效果。这是很有效的学习方式。
  下面是我的第一个网站的截屏。这个网站已经不存在了。

  你从上面的图片上看不出来,这个网站上的每个元素都在动,闪烁的动画,还能出声。我在网站的每个页面上都放置了不同的 MIDI 格式的歌曲。而且都是自动播放,你没有办法让它们停下来,除非把电脑消音。哈,这就是当年流行的网站设计风格。
  等再长了几年岁数后,我们重新设计这个网站,让它变的漂亮些。我使用了在网上发现的一些免费的网站模板,用微软的画图工具修改了一些图片。

  经管我大量的依赖于模板,但这不失为一个学习 HTML 和 Web 浏览器的好方法。“Feross 的网站”除了用来收集我小时候的一些视频外没有其它用处,所以不久后我就对它失去了兴趣。
  我的第一个真正的
  当我9年级(14岁)时,我和我的朋友都非常着迷与观看像 Newgrounds 和 eBaumsWorld 这样的网站上的 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 俱乐部分部做了一个网站,如今也不用了。
  这段时间,我花了大量的时间泡在 WebmasterWorld 里,这是一个论坛,主要关于网站站长和 SEO 专家推测 Google 算法,讨论 AdSense 技巧,调试网站问题等。
  大量的学习和阅读
  等我进入了斯坦福大学后,我学习了大量的计算机课程,诸如 CS106X 和 CS107,我还超前学习了部分 CS106 课程。
  所有的课余时间我几乎都在阅读关于设计、编程、浏览器和 JavaScript 等方面的资料。一般每天4-5个小时。
  如果你要问我都读什么?乱七八糟的。但大部分都是我敬仰的设计师和程序员写的博客。你可以从这篇博客的右侧看到我列出的部分博客链接。
  关键一击
  之后,在2010年夏天,当我在 Facebook 实习时,因为跟一个朋友打赌,我开发了 YouTube Instant,它是一个用来实时搜索 YouTube 视频的网站。这个网站在建成之后的10天里获得了1百万用户的访问量,YouTube 的 CEO 甚至给我发消息说提供一个职位给我,你可以从这里看到这些媒体的躁动。
  我知道 YouTube Instant 的成功归功于当前的好时机和一点幸运。我想,我们很多人不知道自己能做出什么。

  继续前行
  我注意到很多人使用 YouTube Instant 来听音乐视频,这让我想到了另外一种使用 YouTube API 的好方法。于是,我的朋友 Jake Becker 和我在2011年的头3个月里开发了 Instant.fm,它能让你轻松的向朋友分享音乐播放列表。通过这个项目我们都学到了很多新的东西。

  在这个工程中我掌握的技术:
jQuery
CSS (和 Modernizr 以及 YepNope,用来解决跨浏览器问题的)
Python
Tornado (web framework/server)
Git (版本控制) & GitHub
Last.fm API
YouTube API
团队合作
  以及其它一些我们学会使用的东西:
Nginx (web server)
Supervisor (to daemonize Tornado)
SQLAlchemy (ORM)
Apache Ant (to build and deploy the site after a push)
  动手去做!
  我把从11岁就开始做的东西都不厌其烦的曝出来,目的就是要说,如果你想学习编程,你需要动手去做东西!现在就去。不要找任何借口。
  做东西是最好的学习方法。
  从头到尾读一遍编程语言书籍是一件很无聊的事,读到一半你就读不下去了。但,如果你想做一个项目,你在做的过程中会知道你该学习哪些知识,这是认识和掌握知识更有效的途径。
  计算机课程
  大学里的计算机课程是学习编程的另外一种十分有效的方法。大多数好的计算机课程都十分强调学习计算机科学领域里的重要概念和范式,而不是教你某个特定的语言。这能让那些从来没有接受过正规教育的人在自学时开阔眼界。
  记得在斯坦福大学上第一堂计算机课程时(那是教授 C++ 的课程),我在想“怎么可能变量前不带$符号呢?”当时我只使用过 PHP!
我用了好长一段时间才改掉在变量前加$符号的习惯!
  在软件公司工作
  另外一个提高编程水平的方法就是到软件公司实习,比如 Facebook 或 Quora,最近的两个夏天我就是在这些公司里度过的。你会从那些优秀的人那里学会如何更好的编程,如何阅读和理解他人的代码,如何在大项目中进行团队合作。
  还是那句话——比什么方法都管用——学习编程最好的方法就是做项目练习。我是不是重复这句话无数次了?
  如何学会编程:
做练习性项目。
看编程书籍。
做项目练习。
上计算机课程。
做练习性项目。
读编程类博客。
做项目练习。
25
12
分享到:
评论
3 楼 justforxugaofeng 2012-04-28  
确实,实践对于工科特别重要!!!
2 楼 爪哇鱼 2012-04-27  
strong!
1 楼 tochange_2011 2012-04-27  
mark,WebmasterWorld

相关推荐

    我是如何学习计算机编程的

    我是如何学习计算机编程的。 我在很小年纪的时候就开始学习编程,我学习编程的方法是创建大量的不同的网站。下面列出的是我创建的主要的网站,其中最早的一个是我11岁时开发的。我希望读者能从我这些复述中获得的...

    计算机编程学习方法介绍.pdf

    计算机编程学习方法介绍.pdf

    面向中小学生的计算机编程设计和实现--计算机科学技术专业.docx

    - 12 - -11 - 第1章绪论 北京工业大学毕业设计(论文) 面向中小学生的计算机编程设计和实现--计算机科学技术专业 II II 摘要 I II II 面向中小学生的计算机编程设计和实现--计算机科学技术专业全文共61页,当前为第...

    《计算机编程基础》课程教学大纲.docx

    [1、2、3、5] (3)建立科学的工作方法:对计算机编程的初步认知,培养学生逻辑思维能力,掌握利用计算机编程解决科学问题及实际应用问题[1、2、4] 课程简介 本课程以C#语言为媒介,教授学生有关计算机编程的...

    计算机编程python.docx

    计算机编程python Python是一种高级编程语言,它被广泛应用于各种领域,包括科学计算、数据分析、人工智能、Web开发等。Python的语法简洁、易于学习,同时具有强大的功能和丰富的库,使得它成为了许多程序员的首选...

    《计算机视觉编程》

    作为一本面向计算机视觉编程的书,本书涉及了这一学科中相对成熟并且被以往实践验证有效的部分典型算法,因而具有很好的实用性。例如第 2 章描述子部分选择了 Harris 角点检测器和 SIFT 描述子及其实现加以介绍;第 ...

    计算方法经典编程例题

    计算机专业学习就算方法的经典例题 通过实在编程代码解释例题

    计算机编程python(1).docx

    计算机编程python Python是一种高级编程语言,它被广泛应用于各种领域,包括科学计算、数据分析、人工智能、Web开发等。Python的语法简洁、易于学习,同时具有强大的功能和丰富的库,使得它成为了许多程序员的首选...

    C++,学习编程的方法

    C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它...

    《轻松学用linux编程》的PDF版

    本书通俗易懂,语言风趣,内容丰富,是一本面向Linux编程初学者的书。...本书是一些没有学习过计算机编程技术的初学者或还没来得及学习Linux编程的 程序员的良师益友,对迅速掌握和提高Linux编程技术定会有很大帮助!

    3D游戏引擎设计 实时计算机图形学的应用方法 第2版-内附目录

    《3D游戏引擎设计实时计算机图形学的应用方法(英文版·第二版)》基于作者自身在游戏产业中的工作、研究经验,提供了算法、编程技术、代码等大量实用信息,对于游戏设计者及相应的编程人员来说,是一本非常有价值的...

    轻松学用linux+shell编程

    本书通俗易懂,语言风趣,内容丰富,是一本面向Linux编程初学者的书。...本书是一些没有学习过计算机编程技术的初学者或还没来得及学习Linux编程的程序员的良师益友,对迅速掌握和提高Linux编程技术定会有很大帮助!

    python计算机视觉编程基础

    作为一本面向计算机视觉编程的书,本书涉及了这一学科中相对成熟并且被以往实 践验证有效的部分典型算法,因而具有很好的实用性。例如第 2 章描述子部分选择 了 Harris 角点检测器和 SIFT 描述子及其实现加以介绍;...

    计算机应用基础学习过程表现——国开大.docx

    本学期通过本课程的学习,我明白计算机已经成为人们生活与工作的必需品,只有掌握这些基本知识和基本使用方法,才能为今后的学习和工作打下坚实的应用基础。 我们学习了以下这样一些知识内容: 1——计算机基础知识...

    教孩子学编程(Python语言版)-带目录高清版.pdf

    本书属于No Starch的经典系列之一,英文版在美国受到读者欢迎。本书寓教于乐,易于... 本书适合任何想要通过Python学习编程的读者,尤其适合父母、老师、学生,以及想要理解计算机编程基础知识的未成年人阅读学习。

    论文研究 - 编程语言的符号学分析

    本文介绍了基于Charles S. Peirce的符号学对计算机编程语言的分析。 作者描述了这种语言如何发展以实现自然语言的某些表达特征。... 这建议对实现更简单的计算机编程方法所需的技术功能进行进一步研究。

    初学者编程学习的文章

    教育你如何学好编程,正确的学习方法。 这就是大多数计算机专业的学生,在我在大学玩了两年之后,我突然明白该为自己的未来打算打算了,但还有许多人仍然还什么都不明白,所以就有了这篇文章。 如果你是以上我说的...

    编程学习技巧 快速掌握一个语言的最常用的

    想知道怎样快速掌握一门编程语言吗? 编程学习技巧 快速掌握一个语言的最常用的

    OpenCV计算机视觉编程攻略

    本书不仅基于OpenCV库介绍了计算机视觉编程,让零基础用户能全面掌握各种开发方法,更可贵的是注重实用性。作者不单纯罗列各种功能,而是逐一讲解了如何使用各种功能完成特定任务。你将在学习概念、原理、示例的过程...

Global site tag (gtag.js) - Google Analytics