七周学会做搜索引擎

简介: 别逗了!……什么?是真的?!痛点我在大学里开设一门《信息系统开发》课程,授课对象是信息管理专业高年级的本科生。作为最后一门系统类课程,这门课需要大综合,就是把之前学到的知识都用上,做一个实际的系统出来。

别逗了!……什么?是真的?!

痛点

我在大学里开设一门《信息系统开发》课程,授课对象是信息管理专业高年级的本科生。

作为最后一门系统类课程,这门课需要大综合,就是把之前学到的知识都用上,做一个实际的系统出来。

系统开发需要进行多个步骤。规划、分析、设计、实施和测试维护。每当课程进展到了实施环节,就总会有学生来我这儿哭鼻子。

呜呜呜……

你怎么了?

我不会写代码!

img_18b68fd73e9ecce32f79abb47f63e026.jpe

怎么可能呢?C语言是必修课,许多学生还选修了Java和ASP.Net。如果你不会写代码,C语言课你怎么过的?

学生每到这个时候都很坦诚——背下来了,就考过了。

img_fac91ff4383819eac8f08731666430b2.jpe

背下来了?!这是编程好不好?绝对的实践类课程,你背了管什么用?我的三观受到了强烈冲击,立即感到脑缺氧。

学生这时候往往还不忘给我伤口上撒一把盐——“比思修还难背,考完就忘光了”……

许多学生刚开始学编程还有些新鲜感。但是如果遭遇到挫折,会立即选择四散奔逃。问题在于,他们第一门接触到的编程课是C语言

语言

计算机语言有高级语言和低级语言之分。如果你觉得高级语言好,低级语言不好,那就大错特错了。二者实际上是一个连续光谱上的两端而已。

img_1446154462d99bfbf44f60b9c0a8b838.png

最低级的语言只由0和1构成。计算机看得懂。人要想看懂……反正我是不去尝试的。

高级语言计算机看不懂的。开发者用着越舒服,这语言就越高级。如果电脑能听懂和执行人话,那它就在使用一种非常高级的语言。

img_ffd87de8aca383aabbf049a74f50d36b.jpe

天底下没有免费的午餐。语言的“高级”也是通过权衡换来的,牺牲的东西叫效率

如果你要设计的东西效率优先(例如操作系统或者导弹防御系统),那么应该选择低级语言。否则还是选择高级语言吧,别折磨自己。

小测验:C语言是高级语言还是低级语言?

别背了。我知道那本非常流行的教科书说它是高级语言,但它其实是披着羊皮的狼而已。

img_657376841f6236ab2778f339824ea2b4.jpe

C语言有指针。指针可以直接对内存操作,可控性高效率也就高。可是缺乏计算机体系结构知识的学生学起来却一头雾水。

C语言是计算机专业的必修课合情合理。因为这是计算机专业毕业生吃饭的家伙。如果你用的是iPhone,其中大部分的App都是用C语言的一个变种Objective C写的;如果你用的是Android,那么手机操作系统是C写出来的。

可是信管专业的学生编程应用是哪些?开发个网站系统,做数据分析和数据可视化。C语言真的用得上吗?就算用得上,非得统一设置为编程入门课吗?

有没有适合非计算机专业学习的编程入门语言呢?

借鉴

MIT之前数十年都采用Scheme(Lisp语言的一个方言)作为6.001计算机导论课程的入门语言,培养了许多计算机科学界的优秀人才。

img_7fdff730318e1ccc95adb6781b74f5e5.gif

选择这门语言就是因为语法极其简单,半个小时就能讲完语法,后面专注介绍编程的思想。

这语言看起来很奇怪,满屏幕都是括号。

img_f8b8787011586e1841f21e45bb63a80c.png

可是一旦你真正掌握了Lisp语言,那就是科技竞争中的核武器啊。《黑客与画家》中,格雷厄姆提到了他们公司自己的案例,那简直就是在碾压和欺负用其他语言的人们。

img_225de6bb49811b430d121a5203445c87.jpe

后来,MIT教学团队采用新崛起的Python语言替代了Scheme (Lisp),给学生的编程学习提供了更加无障碍且充满乐趣的路径。

为什么MIT不用C语言作为学生的编程入门课?MIT计算机系的教授不懂C语言吗?还是MIT的学生天资不足,难以学会C语言?

自己琢磨吧。

现在的程序开发,大都采用“搭积木”的方式。开发者会大量采用其他人制作的模块或者函数库。一种编程语言,如果有很多人用,社区就会更健康和强大。你使用这种编程语言,手头儿就会有更多类型的积木,会比其他人更好更快地搭出一个符合需求的系统。

img_0b8f8a048bdb76635063520c188f3a53.jpe

如果你来了兴趣,打算学Python。如何入手呢?

课程

Udacity平台上面有一门课很受学生喜爱,叫做”Intro to Computer Science”。主讲者是弗吉尼亚大学计算机科学教授Dave Evans,曾荣获弗吉尼亚州的大学教师最高奖。

img_76a13a993fc04c1b7031d538b7835eab.jpe

2013年,我学了这门课。课程介绍很简洁——“七周时间,从小白到会写搜索引擎”(意译)。

搜索引擎?!

img_12e15af291fa3692394bc0bb679de3e0.jpe

Google是个印钞机,它的成功让人们对于搜索引擎开发羡慕而又觉得遥不可及。这门课的最大贡献就是破除了迷信。如果一个毫无计算机常识的初学者可以通过七周的学习掌握构建搜索引擎的基本方法,那这种技术还有什么神秘可言?

虽然不是初学者,但是我之前并不掌握Python语言。

我反复听过Page Rank的概念,但是从来没有真正深入了解甚至实践过。

而且据说Udacity平台的证书可以帮助学生在硅谷找工作哦。

img_4142bed73f5da2930e0d66a66b6685b8.jpe

我开始了尝试。

该课程根据MOOC的理念从头设计。2-3分钟一个单元,随时都有可能蹦出来问题。大多数问题直接在视频停止的截图上给出选项或者文本框要求回答,把教学和实践的互促过程设计得非常紧密。

img_d7d81eb23aed50b229075b164aa809e8.jpe

课程里面还穿插介绍了很多有趣且实用的科技史知识,开阔了学生的眼界。

七周的时间里,这门课不仅介绍了Python作为结构化语言部分的基础数据结构,还让学习者自己从头用Page Rank算法搞了个小型搜索引擎出来。

最为贴心的是,所有编程环境都在线上提供,学习者只要拥有一个浏览器就行了。

尽管学生做出来的这个搜索引擎实用性并不高(想跟Google竞争市场还差得很远),但是——太有成就感了!

2014年的1月,我拿到了课程的证书。至今我还记得那种喜悦,那是一种眼见得汗水化作了收获的奇妙感觉。

img_e6d7d0f1f5a8aaa3943444b04f0b71de.jpe

延伸阅读

数据科学相关文章合集(玉树芝兰)

目录
相关文章
|
搜索推荐 程序员
谈一谈|搜索引擎的运用
谈一谈|搜索引擎的运用
81 0
|
存储 自然语言处理 搜索推荐
快速上手搜索引擎的秘密武器——Lucene
这篇文章介绍下这个 Lucene,下篇写写 ElasticSearch , 然后再继续填 Spring 的坑 🕳 内容的话就很基础啦🐖,希望能帮你快速入门,了解下它
152 0
|
人工智能 分布式计算 安全
2022年编程语言排名,官方数据来了,让人大开眼界。(上)
2022年编程语言排名,官方数据来了,让人大开眼界。(上)
1005 0
2022年编程语言排名,官方数据来了,让人大开眼界。(上)
|
数据库
2022年编程语言排名,官方数据来了,让人大开眼界。(下)
2022年编程语言排名,官方数据来了,让人大开眼界。(下)
222 0
2022年编程语言排名,官方数据来了,让人大开眼界。(下)
|
SQL 搜索推荐 测试技术
日拱一卒的意义:开源搜索引擎Typesense作者自述:每天写一点代码,写出Typesense
日拱一卒的意义:开源搜索引擎Typesense作者自述:每天写一点代码,写出Typesense
279 0
|
搜索推荐
这就是搜索引擎读书笔记-day1-搜索引擎技术架构
这是我看搜索引擎的第一天,希望通过记录督促自己学习
这就是搜索引擎读书笔记-day1-搜索引擎技术架构
|
存储 自然语言处理 搜索推荐
|
XML 搜索推荐 JavaScript
小弟对百度网站排名算法的总结归纳
最近在做深圳人才网的关键字排名,推广写软文的时间很少,所以直接进入主题、
142 0
|
自然语言处理 搜索推荐 算法
SEO之搜索引擎简史
SEO之搜索引擎简史
140 0
|
机器学习/深度学习 人工智能 搜索推荐
技术目前停滞不前,搜索引擎的未来在哪里? | 靠才华
6月20日消息,国外科技媒体Venturebeat撰文对搜索创新乏力的现状进行剖析,并指出未来的搜索技术将让内容更权威、精确,并具有更多样化的形态。知识图谱将为新型搜索提供举足轻重的驱动力。作为搜索界的主导公司,谷歌虽然拥有许多优势,也致力于开发知识图谱、会话应用等创新措施,但陷入了“创新者的困境”中,此外它还将面临苹果、Facebook和亚马逊等搜索领域的有力竞争者。文章表示,未来搜索市场的博弈中,无论哪方获胜,都将打造全球规模最大的数据库。
322 0