想自学编程?霖哥建议从JavaScript开始!

我是霖哥,一个因兴趣入行的商学院毕业的程序员。最近有不少人,来问我,想学编程,但是又不知怎么开始。所以,我想在我的公众号“商学院毕业的程序员”中,把我自学编程的经历,毫无保留的分享出来。

现在的世界,是互联网科技的世界,人一天生活下来,从玩手机、购物、看新闻、听音乐,无处不在的都是编程代码所编织出来的世界。

不论是工作中的人,还是学生,很多人都有自学编程的想法,但是却不知道从哪里开始。

上网搜集相关自学编程的学习资料,什么C++、Java、Python一堆又一堆的术语,根本让人无从入手。

如果去问相关的计算机的朋友:“学编程该学啥呢?”

得到的答复,一般是先学一门编程语言吧,说学习C++或者Python吧。

接着,你就跑去买了一本C++或者Python的语言书。

才翻了没几页,完全看不懂,整本书都没一点人话,又碍于面子,不知道怎么问别人,担心别人说自己笨。

最后,一本厚厚的编程语言书,就这样成为了家里的装饰品。

霖哥没有接受过传统学校的编程教育,通过自学编程,用过11种编程语言做过项目。

总结多年的自学经验,建议自学编程,先学习的编程语言——JavaScript!

JavaScript不是Java!

(图:美国的Jordan品牌和中国的乔丹品牌,是没有关系的)

JavaScript(简称JS)跟Java,从编程语言技术上,没有半毛钱关系,别被她的名字欺骗了。

之所以叫JavaScript,是因为90年代Java大火,当年JavaScript的发明者网景公司把自己发明的脚本编程语言,带上“Java”的名号,让它更容易传播。

这就好比我们中国的乔丹,山寨了美国的Jordan品牌名气,其实它俩压根没关系......

在最初的十几年里,JavaScript一般是用于做网页上的动态效果的。而最近几年,有一个叫NodeJS的工具出现,它赋予了JavaScript全方位的应用能力,不论网页、App、后台服务器......总之,JavaScript语言几乎无所不能。

当然了,今天我们探讨的是,新手自学编程的第一门编程语言,我们不多介绍NodeJS,来关注用JavaScript用来做网页的部分。

奥巴马学编程

奥巴马编程(图片来自Wired)

2015年的时候,奥巴马参加了一个“编程一小时”活动,呼吁世界上的所有人都应该学习编程,并以身作则,编写了一段很简单的计算机代码,在屏幕上画了一个正方形。

这也让他成为了美国历史上首位编写计算机程序的总统

那么,那时候,奥巴马学习使用的,是什么编程语言?

答案是:JavaScript

奥巴马写了啥?

据说,当时奥巴马学编程,曾写了这么一段代码。

moveForward(100);

在上一篇霖哥自己的经验,「我是如何用10天自学编程,改变一生」里,霖哥提及过,英语能力不能太差。因此,只要你英语不差的话,看到奥巴马的这一句代码,你应该能明白它的意思:

移动向前(100);

(图:奥巴马的编程学习网站)

没错,他执行了一个函数,叫moveForward(100)。 因为奥巴马当时使用的是code.org编程学习网站,它使用这个函数,促使屏幕上的卡通人物,向右(卡通人物的前方)移动了100像素!

理解「函数」

这里提及了霖哥认为编程中最最最最重要的概念——函数

函数,很多时候,又会被叫着“方法”。所以要注意了,跟别人沟通时,“方法”、“函数”,很可能是同一个意思,它们英文是Method和Function。 (两者严格学术定义有一点差别,这里先不追究,认为一样的就好了)

所谓函数,学术上来定义,是一个统一的代码块;而霖哥的理解,函数就像一个别人生产好的工具

看看你现在桌子上的杯子,我们知道,喝水要用杯子喝,杯子是别人生产好,我们买回来的。“函数”,就像是一个生产好的杯子,我们拿过来直接用

上面,是站在“喝水者”的角度来说的,假如换个角度来说,“我”是杯子的生产商呢?那么,要做一个杯子,我们还需要各种各样的“函数”——比如,陶瓷、玻璃、包装盒...等等等。如果我是包装盒生产商呢?我还需要纸皮、绑绳等等等。

你想要生产某个商品,但是不可能说,所有的零配件都是自己生产的,部分零配件需要从外部获取。 而零配件,就是“函数”。 同理,你要开发一个软件,不可能所有函数,都是自己写的,大部分(甚至是绝大部分)的函数,也是需要从外部获取的。

所以,霖哥建议自学编程的第一课,一定要搞清楚“函数”的意义! 编程的本质,大部分时候,就是对“函数”的操控;而对函数的操控,它就像我们的生活那样,商品是从别人那里获得的!

这引申出霖哥自学编程的第一定律:

任何编程技术,都可以从生活中找类比!

搞清楚“函数”的意义,你就能理解大部分的软件工程了。

你要做一个网页,你需要调用“浏览器”的函数;你要做一个浏览器,你需要调用“网址解析”的函数;你需要做一个游戏,你需要调用“游戏引擎”的函数;你需要做一个游戏引擎,你需要调用“显示器显示画面”的函数;.....................无数的“函数”,一环扣一环的,组件了我们各种各样的计算机软件。

这又回到「我是如何用10天自学编程,改变一生」里谈到的话题了:自上而下的学习过程。这里对软件工程的思考,也是一个自上而下、从高到低的思考过程,先思考要做一个这样功能的程序软件,然后再思考,使用什么“零配件”去堆砌我们软件。

为什么霖哥推荐JavaScript作为初学编程语言?

开发环境到处都是

JavaScript的开发环境很容易弄起来,同时它是一只易入门的编程语言。

它是唯一能运行在浏览器网页的编程语言。因此只要有浏览器运行的地方,它就可以运行起来,试问一下,现在还有哪一台电脑或者手机是没有浏览器的吗?

而常见的Java、C++语言,就没有这样的好处。要学习他们,你就必须经过复杂的安装、编译过程,好不容易地才能运行一个小小的程序。这对初学者来说是一个不小的门槛。很多的初学者光在安装开发环境,就被折腾得半死。

JavaScript用途广

我们也经常看到,微信里经常出现的各种各样的所谓H5的活动网页,其实,就是用JavaScript开发的。

不论是做活动宣传、企业宣传、企业网站,经常需要工程师来做网页。做网页需要用到什么编程语言?就是JavaScript。

随着这几年JavaScript的发展,JavaScript已经不单只局限于网页前端了,现在还可以使用JavaScript来开发后端服务器、手机App甚至游戏。

它是目前编程语言中应用最全能的编程语言,并且普及程度还在上升趋势。

JavaScript职业需求量大

有一个职位,叫Web前端工程师。说白了,就是JavaScript工程师(另外还要有HTML、CSS知识)。

直到今天,2017年,前端工程师的岗位还是有很大的需求。

为什么呢?

霖哥觉得,因为大学计算机学科里,一般都是让你学Java和C++,就认为JavaScript一个搞网页的脚本编程语言没有前途。然而,时代早就在变化了。

教育供应跟不上,市场需求大,结果就是导致前端工程师工资水涨船高。

霖哥发现,很多学了几手JavaScript的前端工程师,比不少寒窗苦读几年、科班出身的C++技术大牛工资还要高。没办法,供求关系决定了薪资。

来一点实战

为了让准备自学编程的小白,加深对编程和“函数”理解,我们尝试来一段超级简单的代码,作为JavaScript的入门实战吧。

在以往的计算机语言中,我们经常会看见一个Hello World例子,其本质就是使用“屏幕打印函数”,然后输出“Hello World”文字。霖哥这里想弄个更复杂的例子,然后用拟人化的语言,来描述一遍机器的执行。

以下代码中,出现的英语单词都比较简单,能读懂英语单词,就能大概读懂意思了。

你也可以自己动手试一试,创建一个文件,叫test.html,把这些代码放进去,然后双击,就会看到浏览器的执行结果,输出了“300”

<script>
function add(a, b) {
    return a + b;
}

document.write( add(100, 200) );
</script>

它具体是怎么运行的呢?

我们首先把它翻译成中文方便理解:

<这里是代码(开始)>
函数 加法 (参数a, 参数b) {
    返回结果 a + b;
}

网页.写上( 加法 (100, 200) );
</这里是代码(结束)>

我们再用拟人化的语言,来模拟这些代码的操作:

你是一个上帝,

你创建了一个函数,叫add(加法);

你手下有一个家伙,叫document(网页);

你说:document啊,执行你的write(写) 函数! 稍等,add(加法)函数会告诉你怎么执行的!

你说:add函数,给你100和200,把它们相加,完了告诉write!

add函数说:JavaScript语言机,把100和200加起来,返回结果!

write函数说:输出结果!

这段代码里,出现了两个“函数”,它们分别是add和write。

编程的本质就是操纵代码,也就是说程序员是代码的上帝。所以很多时候编程只是使用英语,对一系列的“函数”进行操作,各种各样的的“函数”,是程序员们的千军万马。

所以霖哥会说,英语很重要,因为只要懂得英语单词,并且愿意看,就能很容易看得懂很多的程序代码执行。

理解“函数”至关很重要,程序开发当中,几乎90%的代码都在不断地调用函数。当程序员想做一件事的时候,第一个要想到的,是“找函数”,而不是写具体的函数。

所谓的大牛,就是那些知道很多各种各样“函数”的人,他们利用各种自己所知道的“函数”,来满足自己的需求。

究竟怎么系统的学习JavaScript呀?

听霖哥说了这么多,霖哥更着重的,是希望自学编程的人,能先理解“函数”思维这一编程的本质。

如果现在就想具体地学习JavaScript,还是建议使用霖哥上一篇文章所说的《W3School:JavaScript》,快速学习、快速试验、快速理解。

往后的日子里,霖哥也会更多地讲解一些编程概念,希望把一些抽象化的编程理论,用具象化、拟人化的方式叙述出来。

下一篇文章,霖哥想说说建房子与编程的关系,能让你更好的理解“函数”思维。

作者相关系列文章:

我是如何用10天自学编程,改变一生


我是霖哥,一个商学院毕业的程序员,通过自学编程成为一家大型上市公司的资深软件工程师。

在《商学院毕业的程序员》专栏中,我想持续分享我自学编程的经验和心法,用通俗的话提炼我的技术思维和对科技世界的理解,希望可以帮助到你。

如果觉得有用就分享给你的朋友,转载请注明出处《商学院毕业的程序员》。

如果在了解或学习编程的过程中有迷惘、或对一些生涩的科技概念的不解,用力留言!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 我是霖哥,一个因兴趣入行的商学院毕业的程序员。最近有不少人,来问我,想学编程,但是又不知怎么开始。所以,我想把我8...
    陈凯利阅读 7,634评论 31 195
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,397评论 25 707
  • 生活中你有没有遇到这样的问题?在恋爱关系中,竭尽全力用力去爱换来的却是漠视和不在乎;亲子关系中,妈妈事无巨细嘘寒问...
    一念静心花开遍世界阅读 760评论 0 0
  • 有一天,我会和她旅游到不知名的地方,吃着不知名的美食,拍下永远的回忆,许下永恒的诺言。
    午后图书馆阅读 89评论 0 0
  • (一) 狗是没有姓的 我叫做狗才儿,一个正值盛年的男,哦不,公狗。都被你们人类给洗脑了。 在没遇到我的主人之前呢,...
    小云哪阅读 418评论 4 0