Let’s do this!新手程序员的入门指南(转)
计算机科学(Computer Science)无疑是现在最热门的学科之一,这领域的工作薪水高、工作时间弹性,而且科技业对工程师、开发者的需求至今有增无减,科技龙头们随时虎视眈眈着出色的程式开发者、创意工作者,也因此吸引了许多人开始学 Coding。
写程序不只是一种工作技能,更是一个可以实行点子、实现梦想的好途径,任何人都可能在学写程序的过程中,因为一个灵感而创作出价值几十亿美元的「课堂作业」!
对于写程序新手来说,也不必将 Coding 视作如此艰巨的挑战,其实「学写程序」也能想做「学弹吉他」,没学过乐理(电脑科学背景)没关系,只要一开始有人为你指引个学习方向,先学基本和弦跟指法(基本程式功能跟语法),很快你也可以弹出一首简单的歌(Code 出第一个程式)。
虽然写程序这种东西跟学乐器一样,天份绝对有影响,有些人音感(逻辑)特别好,学起来特别快、没障碍,但是多练习(多 Code)绝对是成功的关键!之后你能够演奏多复杂的歌曲、技巧有多娴熟,所谓师傅引进门,这些「修行」就看个人啦。等到你到达一定的程度,建立起自己的乐理知识(程式逻辑跟思维),别说吉他,其他乐器(其他程式语言)相信也能信手捻来。
最重要的是,学写程序应该和学玩乐器一样是轻松、有趣的,是一个能够发挥创意、自由创作的途径,一旦有了灵感,你也可能写出一首百万畅销歌曲、千万价值 APP。
这篇文章参考 Code.org 联合创办人 Hadi Partovi 提供给写程序新手的几个建议,介绍学程式语言应该从何开始,如何快速上手 Coding,并推荐几个热门的程式语言,让新手们用最快的速度进入状况。Let's do this!
在学任何语言之前,先试试图像式程式工具
图像式程式工具(Visual Programming or "Drag and Drop" Programming)也算是一种程式语言,但不需要学专业的程式语法(Syntax)就能进行开发。这种语言通常是用「拖拉方块」的方式来写程序,不同的方块有着不同的功能,让开发程式像是玩拼图、堆积木一样「组合」起来。
Hadi Partovi 认为,这样的拖拉式程式工具,最能快速建立起初学者写程序的逻辑思维。毫无程式开发经验的新手可以借此认识程式语言的基本功能,例如循环、判断式等,避免一开始先花费太多时间背记各种功能的语法,然后因为少一个分号、少一个括号、或是拼错一个字,而造成程式错误讯息一堆,程式思维还没建立起来就已经挫折连连。
麻省理工学院开发的 Scratch 、Code.org 的 Code Studio、还有 Google 的 Blockly 都属于这种图像式、拖拉式程式语言,这样简单的工具开发出来的程式也能很复杂、很有创意呢。
Scratch 的使用跟介绍,可以参考 Inside 文章:MIT 为孩子量身打造的程式语言 – Scratch 猫爪。
入门的第一种程式语言:Python
根据 Hadi Partovi 的说法,Python 对于初学者来说相对的容易。主要是因为 Python 语法强调简单易读,比起其他程式语言较为宽松,像是句尾不用加分号、变数不用事先宣告类型等,开发者不需要耗费太多时间专注在语法的细节上。值得一提的是,Python 的设计哲学是优雅、明确与简单,其格言是「There is only one way to do it.」,这句话是想表达,用 Python 写程序,一个目的只有一种写法可以达成(尽可能只有一种写法),以符合「简单」的设计哲学。
但说到入门的程式语言,一定会造成一点争议。除了 Python 以外,通常会有另一派支持先学 C 语言1。两种语言主要的分别是,C 语言是系统式语言 (System Programming Language),主要是用来替代原有的低阶语言,为了程式的撰写与维护,语法上会较为严谨,程式需要编译、连结才能执行,可以有效发挥程式的效能;然而 Python 则被视为描述式语言(Scripting Language),主要以灵活度取胜,程式无需编译(正确来说,是自动「半编译」,只编译成 bytecode,而不用再往下编译成 machine code),对初学者来说开发工作比较单纯,只要专注在程式的逻辑功能。曾听工程师这样说过:「系统式语言节省系统资源,而描述式语言节省的是『程式人员的时间』。」
无论如何,两种语言当然各有各的好,要我说,我会告诉你厉害的 Programmer 都是精通好几种语言的。所以随便哪种都好,先学就对了。
JavaScript 学起来绝对不吃亏
JavaScript 学起来可能没有 Python 简单,不过最大的优点,也是其无人能比的强大之处,就是跨平台。JavaScript 可以运行在 Mac、Windows、iOS、Android 等装置上,跟 Chrome、Safari、Firefox、IE、Opera 等各式各样的浏览器,虽然支持度有高有低,但基本上都支持!就连新推出的硬件设备,像是智能手表,都会一定程度的支持 JavaScript。
对于 JavaScript 的这个特点,Hadi Partovi 说:「当你达到这种程度的普及,是不可能被淘汰的。(Once you reach that level of critical mass, it's not going away.)」
知名部落客兼开发者 Jeff Atwood 提起 JavaScript 时,甚至提出了一条 「Atwood 定律」2:「所有能用 JavaScript 编写的程式,最终都会被写成 JavaScript。(Any application that can be written in JavaScript, will eventually be written in JavaScript.)」
这种道理大概就跟英文是国际通用语言一样,英文讲得吓吓叫绝对是一个职业利器啊!
接着玩 Ruby 跟 Ruby on Rails
Ruby 跟 Ruby on Rails 虽然有着相似的名称,但其实是两个完全不同的东西。Ruby 是一种描述式语言(Scripting Language),如上述的 Python。Ruby on Rails (也简称 Rails)则是用 Ruby 语言写的网页开发框架(Web App Framework)。简单来说,Ruby 是一个语言,Ruby on Rails 则是一个平台,让开发者能够更简单的在上面用 Ruby 进行网页开发。
Hadi Partovi 认为 Ruby on Rails 是一个让大家学习后端开发的超好工具,其最吸引人的地方就是,开发者不需做太多的原型设计(Prototyping),Code 写好,成品就呼之欲出了!其弹性大、维护性高,修改起来很无痛。即使你决定专注于前端开发,例如当名网页设计师,会一点 Ruby 跟 Ruby on Rails 也可以帮助你跟后端开发人员有更好的合作。
想更深入了解 Ruby 跟 Ruby on Rails,可以参考 Inside 的文章:「学习 Ruby 与 Rails 的最佳时机就是现在!」
会一点 HTML 跟 CSS 超加分
不管是自己创业还是到别的公司工作,你都很可能会需要建立网站、或修改网站内容,这 HTML 跟 CSS 便是网页的基础了。
HTML 跟 CSS 都不算是程式语言,HTML 正确的讲法是「Markup Language」,用来描述网站的内容、资讯,而 CSS 则是一种「样式表(Stylesheet)」,目的是控制网页内容显示的样子,为网页添加背景、字型、颜色等效果。有兴趣的话,推荐到 w3school 上学习。
HTML 跟 CSS 学起来不难,但学起来实在好处多多3!举例来说,你可以为自己打造一个个人网站(Portfolio Site or Resume Site),用来记录个人成就跟经历,应聘工作的时候还可以拿来当简历用,超级加分!或是替你的公司修改网页(非常可能是建在 WordPress 上),展现你的额外价值;或是单纯的制作一个精美的 E-mail 给你的客户、厂商,让你独树一格、从百封 E-mail 中脱颖而出!
以上这些建议希望能给写程序新手们一个学习方向,如果能利用上述五大招好好学习,相信你也不再是新手了!Happy Coding!
http://news.cnblogs.com/n/512923/
Let’s do this!新手程序员的入门指南(转)的更多相关文章
- 一个想法照进现实-《IT连》创业项目:创业时该不该用新手程序员
前言: 距离上一篇文章,转眼已然一个多月了,这段时间没出来和大伙汇报创业的进度,怪我了. 最近又感冒了,已经一个多星期了,还在感冒中,不过感冒也不能偷懒了,每天都有大把的事情等着我解决~~~ 不过今天 ...
- C++代码书写规范——给新手程序员的一些建议
代码就是程序员的面子,无论是在工作中在电脑上写程序代码还是在面试时在纸上写演示代码我们都希望写出整洁,优雅的代码.特别在工作中当我们碰到需要维护别人的代码,或者是多人参与一个项目大家一起写代码的时候, ...
- <程序员从入门到精通> -- How
定位 自己才是职业生涯的管理者,想清楚自己的发展路径: 远期的理想是什么?近期的规划是什么?今日的任务和功课又是什么? 今日之任务或功课哪些有助于近期之规划的实现,而近期之规划是否有利于远期之理想? ...
- Java程序员快速入门Go语言
这篇文章帮助Java程序员快速入门Go语言. 转载至 开源中国社区. http://www.oschina.net 本文将以一个有代表性的例子为开始,以此让Java程序员对Go语言有个初步认识,随后将 ...
- 新手程序员随笔2——初识html、css和javascript
翻看博客,发现好久木有发blog了.纠其原因,一则是近来工作上卡到了一个编程难题,我是一个单线程的小猿,当我手头有事情做的时候,我不想分心去做其它事情,如写blog.二则是我个人的写作能力不佳,想到写 ...
- 如何向新手程序员介绍Java编程
学习Java,他们都说很easy. 作为一名刚从斯康星大学麦迪逊分校计算机科学系毕业的大学生,我通过一些编程课程认识了很多使用Java的朋友.现在很多学校都在从别的编程语言(大多是C ++)转教Jav ...
- 新手程序员求职简历缺少这 3 点!别说8k薪资,4K你可能都拿不到!
制作一份简历可能需要八百到千字,但HR看简历的时间只不过短短十秒,甚至可以说是一目十行. 我想针对想做程序员的刚毕业的学生分享着一点自己在求职招聘方面的感悟,不针对工作了多年的老同志了.快毕业那会儿, ...
- C++程序员如何入门Unreal Engine 4
摘要: 一位程序员网友小保哥分享自己的UE4快速上手过程,只是笔记,52VR做了一点更加适合阅读的修改,整理给大家. 首先,本文只是针对有比较熟练C++技能的程序员,他可以没有任何图形学或游戏引擎方面 ...
- 程序员装B指南
一.准备工作 "工欲善其事必先利其器." 1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好.一个用来查资料,一个用来写代码.总之要显得信息量很大,效率很高 ...
随机推荐
- jvm Classload method介绍
1,jvm Classload默认几个重要方法介绍 findClass:Finds and loads the class with the specified name from the URL s ...
- Ceph之数据分布:CRUSH算法与一致性Hash
转自于:http://www.cnblogs.com/shanno/p/3958298.html?utm_source=tuicool 数据分布是分布式存储系统的一个重要部分,数据分布算法至少要考虑以 ...
- rbd块映射
rbd块映射: root@u18:~# rbd create kvm/test002.img --size root@u18:~# rbd info kvm/test002.img rbd image ...
- for语句之侦查队挑选人、猴子吃桃、5个小朋友算年龄、1 () 2 () 3 ()4 = 4;问括号里我要填 (- 或 +)问题
1.某侦察队接到一项紧急任务,要求在A.B.C.D.E.F六个队员中尽可能多地挑若干人,但有以下限制条件:侦察兵A和B两人中至少去一人: a+b>=1(由于每个队员有两种状态:去与不去,假设不去 ...
- ST官方翻译的中文应用笔记汇总
ST官方翻译的中文应用笔记汇总 http://www.51hei.com/stm32/3382.html 官方中文AN:AN3116:STM32? 的 ADC 模式及其应用AN1015:用于提高微控制 ...
- python学习(2)
编码: 需要注意的是:python 没有字符的概念,但是比如a='abcd',当中字母a占用一个字节,通过 方法len我们可以求出这个字符变量a所有字符个数,如:print len(a)显示结果为:4 ...
- Tcl语言笔记之二
1,表达式 1.1 操作数 TCL表达式的操作数通常是整数或实数.整数一般是十进制的, 但如果整数的第一个字符是0(zero),那么TCL将把这个整数看作八进制的,如果前两个字符是0x则这个整数被看作 ...
- 基于visual Studio2013解决算法导论之021单向循环链表
题目 单向循环链表的操作 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> ...
- 《白手起家Win32SDK应用程序》(完整版+目录)
<白手起家Win32SDK应用程序> 目 录 <白手起家Win32SDK应用程序> 第一篇.预备知识 第二篇.创建Win32工程和主函数 第三篇.增加一个回调函数 第四篇.注册 ...
- [置顶] 图书推荐:SQL Server 2012 T-SQL基础 Itzik Ben-Gan
经过近三个月的不懈努力,终于翻译完毕了.图书虽然是基础知识,但是,即使你已经使用T-SQL几年,很多地方还是能够弥补你的知识空白.大师级的人物写基础知识,或许你想知道这基础中还有哪些深奥,敬请期待吧. ...