编程plc编程入门怎么学。

我是如何学习计算机编程的
我是如何学习计算机编程的
  我在很小年纪的时候就开始学习编程,我学习编程的方法是创建大量的不同的网站。下面列出的是我创建的主要的网站,其中最早的一个是我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,最近的两个夏天我就是在这些公司里度过的。你会从那些优秀的人那里学会如何更好的编程,如何阅读和理解他人的代码,如何在大项目中进行团队合作。
  还是那句话&&比什么方法都管用&&学习编程最好的方法就是做项目练习。我是不是重复这句话无数次了?
  如何学会编程:
  做练习性项目。
  看编程书籍。
  做项目练习。
  上计算机课程。
  做练习性项目。
  读编程类博客。
  做项目练习。
  这就是我能给出的最好的建议。
  祝编程愉快!
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&12280人阅读
Windows开发(10)
有很多初入门的小朋友跟我说,他们想学“底层”的技术,因为觉得技术含量高,所以想学Windows C++开发,看着调用一个个的参数超级多,调用起来超级麻烦的Windows API,觉着很酷。于是我念头一转,就有了这篇文章,根据我多年来做Windows 客户端的经验,跟大家谈谈Windows C++,该从哪一方面入手,这不会是一个有技术深度的文章,只是偶尔会涉及到一些术语以及一些入门书籍而已,对于Windows开发的老鸟们来说,只当是看着好玩了。
首先来谈谈最初的Windows开发。
如果打开《Windows程序设计》这本书,关于Windows开发的来龙去脉就一目了然了。但是要注意,《Windows程序设计》是一本纯讲述Windows API的书,确切的说,这本书主要讲的是关于Windows 用户态的API,也就是User32.dll GDI32.dll这两个库文件中的函数,大部分的内容都是关于Windows最基本的窗口元素的操控方面的API,比如创建窗口,绘制窗口,关闭窗口,消息循环等等。这本书不需要你有C++方面的知识,理论上说只要你有C语言的基础就可以看懂,但是如果你连C语言的基础也没有,看这本书可能会发生一些困难,如果你学过其它一门非面向对象的语言,这本书实际上也能够勉强看懂。我在大学的时候就看了这本书,但是直到现在也没有看完,书中的某些知识,实际上在Windows开发中已经很少用到了,我个人认为是没有必要把这本书从头到位看一遍的,在看了前面几章以后,我就蠢蠢欲动,写了一些简单的程序,迅速巩固了关于这些API调用的记忆,为今后进化到Windows
C++阶段打下了一个良好的基础。所以,写程序是很重要的,这个阶段,我建议大家写一些简单的程序,比如打字测速程序,自己创建一个消息循环,创建一个窗口,创建一个光标,用GDI函数输出图形及文字,这样下来,基本的Windows程序设计概念就有了,不过注意写的时候不要大段的Copy书上的代码,全部自己写,否则无助于理解各个API的含义,这个程序,因为是自己写的第一个Windows程序,所以时间限定在一个月到一个半月之内比较合适。度过这个阶段以后,Windows编程的基本概念就应该在你脑海中形成了。
下面进入第二个阶段,也就是C++风格的Windows开发,也就是职场上需求量很大的Windows C++程序员干的事。
这时候你需要了解一下这个老掉牙的叫做MFC的东西,MFC是啥呢,其实是一个很原始的,用代码来拼搭界面的C++库,当然,因为是C++库,所以你必须具备了一定的C++知识。不过别因为原始就小巧了它,MFC比传统的Windows SDK开发方式还是要前进了一大步的,因为不管怎么说,它总算沾了面向对象的一点边,有那么一点点面向对象的意思了,比如一个窗口,会被封装成CWnd类,里面有创建窗口的成员函数,窗口绘制的函数也被封装了进去,CWnd又会有其它的窗口派生类,比如CView啊CFrameWnd以及各类窗口控件。学了MFC,你就基本上对Windows
C++开发入门了,换而言之,如果你学的还算过关的话,应该能在市场上淘到一份关于Windows C++开发的工作了。其实现在很多公司还在使用MFC这个老黄牛,虽然MFC跟现在流行的界面库的易用程度比实在是差的太远,但是MFC的界面效率高,细节操控丰富这仍然是不争的事实。
在这个阶段上,你可以做一些简单的稍微上得了台面的程序了,比如开发一个基于IE内核的浏览器,之所以我让你开发这个程序,是因为开发IE相关的程序能学到很多跟COM有关的知识,COM也同样是Windows客户端开发人员的必备技能,它的生命力跟MFC一样的顽强,甚至有过之而无不及。
这个阶段上,如果你对MFC足够熟悉了,还可以接触一下WTL这个轻量级的模板界面库,其实如果有了MFC的基础,WTL的学习过程是很愉快的,很多MFC中的概念,比如消息映射,在WTL中都有对应的东西,WTL更小巧,封装的更高端(模板库嘛),但是微软官方不支持,所以不像MFC在MSDN上有专门的文档。最重要的是,WTL和ATL可以结合的非常好,这样就使得在WTL上调用ATL写的COM组件或是在ATL写的COM组件中调用WTL的窗口变的简单轻松,所以,以我现在的脾气,是更加推荐大家使用WTL而非MFC的,但是毫无疑问的,WTL的学习成本更高,所以仁者见仁智者见智啦。
接下来就该学习COM了,学习COM嘛,几本关于COM的基础理论书籍还是要看的,比如《COM技术内幕》这个本书我比较推荐,比较浅显,适合COM的初学者,另外潘爱民的《COM原理与应用》我也看过,马马虎虎也还算过得去吧,虽然感觉还是前面那本更好一点。至于那本神乎其神的《COM本质论》,我觉得不看也罢,那本书初看的时候没看几页就走神,实在是晦涩,素我直言,《COM本质论》这本书,如果你没有好的C++基础还是别看了,纯粹给自己添堵。
等到有了COM的基础概念了,就可以看看《深入解析ATL》,ATL就是用来写COM的,虽然它也封装了一些窗口,控件,不过这本书稍微写的深了一点,大段的代码剖析,初学者看起来还是有难度的,我当初很多地方都是强迫自己看完的,看完了后,收获还是不小的。
在你有了一定的Windows程序开发经验之后,可以看《Windows核心编程》,这本书讲的都是关于Windows内核方面的东西,比如进程啦,内核对象啦,线程啦,DLL啦,SEH啦,总之我的看法,这本书与《Windows程序设计》遥相呼应,弥补了前者的不足,大篇幅的讲述了Kernel32.dll里面的函数,这本书很多内容我都通读了好几遍,某个国内排名前三的互联网公司面试,面试官的很多问题都是这本书里的东西,所以强烈建议大家把这本书好好学习一下。
总结了一下,看书是很重要的,但是不要忘了写代码,我得感觉,看书的时间和写代码的时间在三七开是比较好的,战争中学习战争,实践出真知,这才是最重要的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:63819次
积分:1066
积分:1066
排名:千里之外
原创:33篇
评论:58条
(1)(2)(1)(4)(1)(1)(1)(1)(1)(1)(2)(6)(1)(2)(1)(1)(1)(1)(1)(2)(3)(1)PHP100告诉你应该如何学习编程
来源:腊八粥&&&时间: 10:34:45&&&阅读数:
[导读] 在过去的几个月里,我一直在学习用Objective-C编写iOS app,最后我开始理清思绪。这比我想象中要难很多,也花了太长时间。我经常遇到困难、感到沮丧,修复bug比实际写代码要花太多时间。但是,在我的手机上把玩我从头开发的app有一种让人惊奇的感觉。
&&&&&& 在过去的几个月里,我一直在学习用Objective-C编写iOS app,最后我开始理清思绪。这比我想象中要难很多,也花了太长时间。
&&&&&& 我经常遇到困难、感到沮丧,修复bug比实际写代码要花太多时间。但是,在我的手机上把玩我从头开发的app有一种让人惊奇的感觉。
&&&&&& 用这种方式我学到了很多,除了开发iOS app,还有平常的编程。我还遇到了一些问题,如果用不同的方法学习Objective-C,或许我就可以避免了。
&&&&&& 回头看,如果我今天要学习编程,那么我会做一些不一样的事情。
找到一名编程小伙伴
&&&&&& 我还找到一种学习方法,那就是有一个可以交谈的、活生生的人。我的合伙创始人Josh,主要做Python开发,实际上和我一起学习Objective-C,并为我解答了很多编程理论方面的问题(&怎么让一个if语句再次起作用?&),在我真正遇到难题时帮我调试。至少有了极具耐心的编程伙伴,他可以解释基本的编程原则,这是莫大的帮助。在我用Objective-C搞清楚具体细节之前,Josh经常帮助我思考解决某个问题的大部分逻辑方法。
&&&&&& 如果你不够幸运,身边缺少有耐心的程序员解答问题,那么,其它一些地方可以让你从真实的人那里获得帮助:
Stack Overflow
&&&&&& 关于具体语法或实现的问题,Stack Overflow是我最近访问最多的网站之一。我自己还没有在那儿问过问题(由于该社区对初学者相当友好,我对提问持谨慎态度),因为我很少需要去问&&通过浏览其他人的问题的答案,我的大部分问题就得到解决了。
&&&&&& Treehouse通过视频课程教授编程,还建立了社区论坛,你可以在这里讨论有困难的bug,或者你在听课过程中碰到的具体练习。
&&&&&& 在你需要帮助的时候,askadev支持你联系到有经验的开发者。我还没有尝试过这项服务,因此我不知道有多大用处、或是否囊括了所有编程语言,不过它是免费的,下次你有需要,不妨一试。
Codementor
&&&&&& 如果你想给有经验的开发者支付现金来获得帮助,Codementor会把你和熟悉你在学的语言的人匹配到一起。它们涵盖了Android、iOS、HTML、CSS、PHP、Python,以及很多技术。
小黄鸭问题的解决
&&&&&& 如果你以前没有看到,《小黄鸭式解决问题》的博文是非常有用的。具体操作是:对着一个小黄鸭或其它静物,比如面包机,阐述你的问题,大声点儿。大声讲述问题的过程,经常有助于你自己意识到答案(或至少知道错在哪里了)。我已经发现,大声地讨论我的代码是一种难以置信的好习惯,每次在我找别人帮忙之前,我都要尽量这样做。
&&&&&& 在我学习编程的时光里,最影响我的就是对于我正在使用技术的误解和陌生。比如,开发API意味着我需要理解API的工作原理、怎样使用POST和GET请求、怎样分析JSON数据,甚至我需要掌握接收JSON数据。
&&&&&& 学习Objective-C不是开发iOS app所需要知道的全部,至少,不是我想开发的那种。我犯了个错误,我认为只要知道Objective-C就行了。甚至更糟糕的,我经常遇到困难,因为Stack Overflow回答问题的人、在线教程和书籍章节都在解释如何用Objective-C开发,完全跳过了必需的、我需要知道的、基于web的原则,因为他们认为我知道了。
&&&&&& 如果我今天重新开始,我将首先补充、积累HTML和CSS方面的知识。当我开始碰到一些我不太了解的新技术时,在准备用Objective-C实现之前,我会大概了解一下。
任何语言都可以起步
&&&&&& 如果你真的不确定从哪里开始,或者你想开发什么,请不要因此受到影响。虽然我花时间学习Ruby和Python、还没有用它们完成任何项目,但是我不觉得时间被浪费了。
&&&&&& 初学者通常的起点是学习HTML和CSS去开发网站。它们实际上是标记语言,如果你想开发移动或web app,貌似学习HTML和CSS是浪费时间。但是在这种情况下,你将获得知识和经验,对你继续学习编程语言是有帮助的。如果你急切希望开始学习编程却不知道从哪儿开始,就挑一本书、教程或在线课程,只要你喜欢,就搞定它!一旦你对想开发的东西有了更好的理解,你总是可以选择学习一种不同的语言。
找到你真正关心的项目
&&&&&& 对我而言,最大的学习曲线可能就是找到让我坚持学习代码的动机。过去我尝试了很多次:在我小时候学习HTML和CSS,几年后学习Ruby的基础知识,最近在学Python。
&&&&&& 我决定学习Objective-C,不是因为它胜过了Ruby或Python我才喜欢,也不是因为我认识学Objective-C的人,只是因为我有一个iOS app的想法清单,我想完成&&我真的想去开发。我学习Objective-C的动机比以前学习任何其它语言都要强烈,因为我想开发的私人项目在鼓励着我。
&&&&&& 最重要的是,随着难度加大,我感到沮丧、遇到困难时,我没有放弃&&因为我正在开发我真正关心的项目。每次我设法实现一些新功能,运行良好,得到的收获甚至更好了,因为它是我有激情的项目的一部分。
&&&&&& 如果你正在考虑学习编程,而你没有选择语言或平台的任何限制,我明确建议选择你真正有激情的项目,这样才能为项目需要所选择的语言打下基础。
&&&&&& 每个人的学习方法都不同,因此你可能有着与我不同的经历,不过如果你只是刚起步、或在考虑学习编程的事情,那么希望我的经验和错误能帮你学得更快。关于编程,PHP100还为你推荐《》《》《》《》。
注1:小黄鸭调试法,又称橡皮鸭调试法,黄鸭除虫法(Rubber Duck Debugging)是软件工程中使用的调试代码方法之一。就是在程序的调试、纠错或测试过程中,耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感。
(原文标题:如果学习编程可以重来)
手机扫描下方二维码,关注php100官方微信。
同步官网每日更新,为您带来随时随地的资讯与技术信息。更有不定期的互动抽奖活动,赢取实用贴心的小礼物。
除非特别声明,PHP100新闻均为原创或投稿报道,转载请注明作者及原文链接原文地址:
延伸阅读 More
视频教程 Video
网站服务:
会员问题 :
友情链接 :
网站投稿 :
@php100官方
php100官方微信
Copyright (C) 2007-, All Rights Reserved 版权所有 粤ICP备号-4
粤ICP备号-31您所在的位置: &
业余爱好者如何学习编程
业余爱好者如何学习编程
因为Aaron Swart 的自杀,这两天看了不少关于他的报道以及他自己的博客,对我触动最大的是尽管他一直在做技术相关的事情,但眼光和理想却远远超越了技术。
的自杀,这两天看了不少关于他的报道以及他自己的博客,对我触动最大的是尽管他一直在做技术相关的事情,但眼光和理想却远远超越了技术。他把技术当作推动 自由和社会变革的工具,所以 Twitter 签名也是 &Applied sociologist&, 而不是经常可以在程序员那里看到的
&Geek& 和 &Hacker& 等。我非常钦佩他的社会理想和为之做出的努力,然后开始思考自己可以做些什么,于是就有了这篇文章。
现 在有关编程的书籍非常多,网上也有很多教程,但大多都是针对职业程序员或者计算机专业的学生,对那些只想实现一些自己想要的东西的业余爱好者帮助不大。业 余爱好者并不想以编程为职业,也不想花太多时间去学习基础,他们只是想尽快做出自己想要的东西。这样的东西在专业程序员看来可能很烂,但我觉得非常有意 义。会编程的人越多,信息流动的渠道就越多,做出好玩的东西的机率也越大。
我的技术水平一直不怎么样,而且越来越业余,不过正因为如此, 我非常能体会初学者的痛苦,或许写这样的东西正合适。本文的目的是帮助业余爱好者扫清一些思想上的障碍,分享一些我的经验,并不会涉及太多技术细节,毕竟 每个人想做的东西和想学的编程语言都不同,不过后面会给出一些学习资料。
重要声明:本文只针对那些不想以编程为职业,只想学习编程以便自己做东西的业余爱好者。想要成为一个优秀程序员的同学请看这篇经典的《十年学会程序设计》。
思想准备:
1. 编程不难,至少做出一个能用的东西不难。别把它当回事儿。很多人之所以觉得编程很难是被专业术语和趾高气扬的程序员吓到了。别担心,业余爱好者不需要对自己要求那么高。
2. 编程不需要数学基础。没错,就算你数学很烂也能做出东西。大部分算法都已经有成熟的解决方案,可以直接拿来用,完全不用担心。我们的目的是做东西,不是研究算法和数学。
编程不会改变你的生活方式。你完全可以学习编程而不接受和它有关的文化。不一定要崇拜某位大神、阅读技术新闻或者参与社区,也不一定要不修边幅、熬夜工 作。如果愿意的话,精装打扮穿上最漂亮的衣服去编程也可以。反正不想成为职业程序员,不用担心因为「不像程序员」而被鄙视。
4. 有很多友善的程序员。程序员给很多人的印象要么是邋遢、木讷、害羞的书呆子,要么是性格怪异、智商极高的大神,其实大部分程序员并不是那样,只不过媒体和大众更偏爱怪异的东西。以 Linus 为例,在他的自传 《Just for Fun》 中提到:
「Linux 不是靠牺牲宝贵的睡眠时间换来的。事实上,如果你想听真话,那我就要说,我更喜欢睡觉。」
「在那个时候,只要一想到姑娘,Linux 系统就变得不再重要了。在某种程度上,今天也还是这样。」
瞧,这位大神其实大部分时间和普通男性差不多,更喜欢「睡觉」和「姑娘」。所以,如果真的遇到了无法解决的问题,完全可以大胆地去请教专业程序员们,一般都可以得到答复。
5. 习惯无知。无论学习什么东西,往往越深入就越觉得自己无知。这样的无知本身并不是坏事,它可以让你保持谦虚,但千万不要被它吓得不敢继续前进。及早适应无知的感觉,你并不需要全知全能才能做出东西,如果觉得困难,可以试着假装自己擅长编程 。
如何开始:
首先,完整阅读这篇文章:《你第一要做的是开始去做》(这篇文中翻译自 The first step is to start )。
如 文中说的那样,不要以「基础不够」、「知识不全」等借口停下来,一开始甚至可以先在纸上勾勒出想要的东西。当然,完全不懂编程肯定无法开始真正的创造,但 学习的时候不要抱着「先专心学习,学好本领再回来做」的念头。正确的做法是:只学那些最基础的东西,然后立刻着手去做,遇到不会的地方再去学。
没 有技术背景的人学习编程很容易被错综复杂的技术体系吓到,网上的教程中也经常会出现「一定要读这本书,非常经典」、「最好先有 XX
基础再看这篇教程」之类的警告,结果有时候会出现这样的情况:本来你只打算学习编写网页
,结果几天后莫名其妙地开始苦读《精通正则表达式》。为了能够专注于自己想做的东西,要十分警惕「学习」这件事情。尽量学习最少的东西,然后把时间都花在 创造上。当想要学习的时候,慎重考虑它是否会让你偏离目标,或者绕太远的路。这样做肯定会导致基础不够好,但我们是业余爱好者嘛,能尽快做出东西就行了。 如果你真的非常在意基础,说明你可能更想成为职业程序员,请返回参考前面的重要声明。
没有人天生就会编程,在做东西的过程中会不断学到新 的知识,然后就会发现自己之前的代码很愚蠢。这个时候你可能会很想推倒重来,或者从头改进之前的代码。要抑制住这种冲动,不然就会掉入代码优化的无底洞。 事实上,几乎所有的专业程序员都会对半年前自己的代码感到不满,而且一开始代码质量不好完全没有问题。举个例子,假如要在网页上显示 10 次 &I
love you.&,你并不知道如何使用循环,于是就复制粘贴了 10 次 &I love
you&。这样的做法或许很笨,但是你做出了想要的效果,对于业余爱好者来说,完成一个东西要比代码质量重要得多,不要为了这种笨方法而感到羞愧。
如何解决问题:
在 创造的过程中肯定会遇到很多问题,对于初学者来说,大部分的问题都是语法或者拼写问题,只要仔细检查代码就可以解决,少数摸不着头脑的问题也可以用
Google 找到答案。很多非 IT 行业的人平时都只是搜索中文,可能并不觉得 Google 比百度要好,但当你开始学习编程,就会立刻发现
Google 比百度好用得多,一般都可以在搜索结果第一页找到想要的东西。使用 Google
搜索的时候,请尝试用英文描述问题,或者直接把出错信息直接粘贴到搜索框。
如果实在搜索不到解决办法(这种情况对业余爱好者来说极为少见,请善用 Google),可以去 Stack Overflow 提问。提问的时候请注意描述好自己的问题,把错误信息以及相关的代码都写进去。 Stack Overflow 的氛围相当好,应该很快就会有人回答你的问题。比较不方便的地方是你必须使用英文提问,没办法,因为类似的中文社区并不存在。如果执意要去中文社区提问,那么我真诚地建议你使用女生头像和昵称,可以有效提高回复率,呵呵。
有 关编程的一个恼人的地方是,就算看书之后觉得自己掌握了,真正写的时候还是经常会出错。它只能通过实践来掌握,所以需要很多耐心。当你被折磨得想要放弃的 时候,或许可以换一种角度,以此为契机挣脱过去那么多年的学院派教育。想一想吧,我们在学校里待了那么长时间,几乎所有的学习路径都是「先阅读,再应用」 或者「只阅读,不应用」,是时候体验一下如何在应用中学习了。
面对批评:
有些人做出想要的东西之后就已经很满足,但有些 人可能会想要展示一下自己的作品并获取一些意见。因为业余,所以当专业程序员看到这样的作品之后可能会非常不屑,甚至大肆批评。这个时候不要自卑或害怕, 因为他们对作品的了解都是片面的。他们只是一味拿专业的技术标准来衡量,不清楚你只是想做出一个东西,不清楚你只是业余时间在做,不清楚你在整体上的考量 和妥协。作为这个作品的创造者,你才是专家,如果按照他们的要求,你可能永远都做不完。
之所以提到这一点,是觉得业余爱好者大都是自己一 个人慢慢自学,被打击一下说不定就完全放弃了,那样实在可惜。对于专业程序员的批评,如果有用就记下来,下次不要再犯就好,没有必要气馁或者把之前的东西 重写一遍。从无到有实现了自己的创意已经很了不起,不需要对专业程序员有什么交代。
注意事项:
1. 不要过度关注编程语言的优劣。很多编程语言都可以达到相同的目的,选中一个之后把它用好就是了。和别人争辩哪个编程语言更好是很多职业程序员的一大爱好,是他们生活的一部分。我们是业余爱好者,只要求工具够用,不需要像他们那样一定要用「最好的」语言。
2. 用不着关注国内的 IT 红人和八卦。对学习编程和做东西没有任何益处。(补充:这条可能带了个人情绪,请自行判断,但我关注了那么久觉得确实没有任何益处。。。 &_&)
不要自称 &Geek&,&Hacker&
或其它什么东西。当开始给自己贴标签的时候,就会试图表现得像那类人,束缚自己的同时还会做出许多愚蠢的事情。我们要做的事情很简单,就是掌握技术并做出 能用的东西,没有必要给自己贴任何标签。事实上,能做出东西的人比自称 &Geek& 或 &Hacker& 的人稀有得多。
4. 利用开源代码。感谢开源事业的蓬勃发展和无数程序员的无私奉献,使我们可以学习和使用别人的代码。当需要一些功能时,可以先去找一下是否已经有开源的实现,没有必要自己从头写。
5. 先找到自己想做的东西。不要为了学习编程而学习,那样就算记住了很快也会忘掉。如果实在找不到什么想做的,可以考虑给一些公益组织义务做一个网站,锻炼技能的同时还可以关心一下社会。
保持初心。业余爱好者拥有的最宝贵的财富就是初学者的心,也正是因为这份初心,才让代码质量问题变得并不那么重要。可惜的是,随着技术越来越熟练,初心会 渐渐消失,做东西的时候首先考虑的不是结果而是实现方式,当初那个满脑子想法苦于不能用技术实现的人不见了,取而代之的是一个精通技术却乏味的人。所以, 作为业余爱好者,应该把「完成作品」和「保持业余」作为首要目标,如果精通技术的代价是失去初心,那就不要精通好了,反正并不想以此为生。
学习资料:
由 于我的工作大部分是 web develop, 所以这里给出一些不错的相关资料。如果你想要做一个简单的网站或者 app,
那么这些知识够用了。也欢迎补充好的入门资料,我会不断更新。(之所以没有推荐其它方面的资料,是因为我并没有相关的经验,不知道其中优劣。编程可做的东 西非常多,比如 Arduino 硬件编程,有兴趣的可以去找一下资料,也欢迎补充。)
。在大学图书馆偶尔看到过这本书的英文版,很喜欢。本书非常适合初学者,里面很多插图,写得也很有趣。
一个很好的在线学习 HTML & CSS 基础的网站。
HTML & CSS 进阶,里面还包含了 jQuery 的学习。
这本在线电子书是 Learn Ruby The Hard Way 的繁体中文翻译,也是 Zed Shaw 写的 Learn XXX The
Hard Way 系列中的一本,之所以推荐 Ruby 是因为我很喜欢这门语言。本书非常注重实践,全书由 52
个习题构成,当你完成这些习题的时候就已经写了很多代码了。我觉得书中后面的一些习题(比如读写文件)可以先跳过,用到的时候再去学习。
备受推崇的在线学习编程网站,而且有中文界面,非常推荐。
和 Codecademy 类似的在线学习网站,评价不错。
很实用的学习 CSS 的网站。
最后再次提醒一下,如果你选择了学习编程,以后很长一段时期内业余时间都会被占据,而且期间会体会到很多痛苦。但是当完成第一个作品的时候,你就会发现之前的痛苦都是值得的,它们是创造不可或缺的一部分。
后 记:想要写这篇文章的时候激情满满,觉得自己在做好事,但写的过程中一直诚惶诚恐,非常担心文中业余爱好者可能面临的问题都是自己臆想出来的。毕竟在这个 行业待的时间不算短,早就变成了一个乏味的职业人士。如果你是一个想学习编程的业余爱好者,欢迎留言告诉我哪些担心是不必要的,以及漏掉了哪些东西,我会 及时修正或补充。
原文链接:【编辑推荐】【责任编辑: TEL:(010)】
关于&&的更多文章
本书是ESXI5.5+vCenter Server 5.5+Horzion View 5.2平台的基础
网友评论TOP5
所以姑娘,让我们做一枚花见花开的程序媛。
讲师: 0人学习过讲师: 35人学习过讲师: 58人学习过
又到周末了。昨天是感恩节,小编也是听同事说起,才想
离年末越来越近了,不知道各位有没有倦怠的感觉?本周
怎样尽可能的缩短浏览器上页面渲染的时间?我们可以从
本书将介绍如何创建可交互的Web站点,包括从最简单的订单表单到复杂的安全电子商务站点。而且,读者还将了解如何使用开放源代码
51CTO旗下网站}

我要回帖

更多关于 怎么学电脑编程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信