【游戏·数学】辅导电脑编程 Java/C++,3D图形,iPhone/Android 应用开发。为中小学生开设国际信息学奥林匹克竞赛,加拿大CCC比赛培训课程

游戏数学

新手上路
注册
2012-01-02
消息
131
荣誉分数
12
声望点数
28
线上教学, 辅导大学作业,启发青少年编程兴趣,帮助程序员解决工作中问题。例如, 可以对以下几个方面授课:

1。电脑编程(C/C++, Java, Objective C)
2。3D图形编程 (OpenGL, Ogre)
3。iPhone/Android 应用开发(xCode, Android Studio)
4。电脑游戏开发

为中小学生,专门开设国际信息学奥林匹克竞赛辅导课程,帮助学生准备加拿大CCC竞赛。

授课老师拥有十多年移动平台应用程序开发经验,曾在知名游戏公司EA (Electronic Arts) Montreal 做过四年多移动系统结构工程师, 在Apple AppStore有多款应用发表(例如:CloneFace)。欢迎带着项目合作开发新APP !

请发Email到:gamemathstudio@gmail.com 或者发悄悄话(QQH)
 
最后编辑:
二十万个高薪职位空缺,加拿大IT人才缺口大

【CFC新闻】据渥太华太阳报报道,最近一项调查研究显示,截至2019年,加拿大将有近20万个IT行业高薪职位,而加拿大本国的教育系统完全无法满足如此需求,难以为就业市场输送足够人才。

通讯技术调研委员会(Information and Communications Technology Council, ICTC)、微软等科技公司与渥太华教育局及多个教育机构合作,完成了本次调查研究项目,并于本周三发布了长达51页的调查报告。报告中称,为了防止就业市场在2020年左右陷入人才荒,加拿大政府应尽快将信息技术课程加入学校课程,并鼓励更多在校学生学习相关专业。

报告数据显示,到2019年,加拿大将有182000个信息科技行业的高薪职位空缺;2020年间会再多出32000个职位空缺。研究人员认为加拿大即将迎来一个信息科技行业飞速发展的时段,虚拟现实、机器人、网络安全、3D打印等先进制造技术的发展都需要大量人才支持。

加拿大目前有约877470名从事信息科技行业的在职人员,其中约43%受雇于科技公司,其余的则分散在医疗、公共服务、生产制造等行业。

ICTC表示,这些大多数都是薪资待遇优厚、工作稳定的岗位。但尽管如此,加拿大的高校中,选择就读科技行业的学生还是远远不够市场需求。约221万名在读高效学生中,仅有约6%即126000名学生在读科技相关专业。2015年间,全加拿大仅有12800名就读科技专业的学生顺利毕业。

这份调查报告发布前不久,加拿大娱乐软件行业协会(Entertainment Software Association of Canada, ESAC)也发布了一项报告督促联邦政府应采取行动鼓励青少年选择相关专业,否则娱乐软件行业也将面临用人荒。ESAC的报告称,加拿大的游戏软件行业正在迅猛发展,在未来12到24个月内,会有约1400个与电子游戏相关的高薪岗位招不到合适的人才。2015年间,电子游戏开发行业的平均年薪标准是$71300加币。
 
最后编辑:
孩子课外靠电脑游戏来打发时间?

在加拿大,中小学生的课业负担不太重, 有一定的空间, 适合孩子们发展自己的兴趣. 如果不正确地加以引导,
则大部分课外时间靠电脑游戏来打发, 实际又不利于孩子的健康成长. 在加拿大, 实际上孩子们有很多机会来发展
自己的学业. 每年有很多适合所有在校学生参加的各种学科(如数学, 物理, 化学, 科学等)的全国性竞赛. 这些竞
赛大部分不是很难, 只有25%的竞赛题具有挑战性. 而且, 这些竞赛绝大部分都是欢迎所有的孩子们参加, 并不是
只允许少数学习好的尖子学生参加. 这些竞赛对孩子们发展自己在应对各学科的学习挑战很有帮助. 下面, 我们将
适合于加拿大中小学生参加的计算机学科的竞赛活动做个介绍. 以使家长们对加拿大的中小学生可以参加的竞赛有一个
了解。

1. 加拿大全国中学生计算机竞赛

加拿大全国中学生计算机竞赛(Canadian Computing Competition) 是由Waterloo 大学计算机系与加拿大数学与计
算机教育中心联合举办的全加计算机竞赛, 简称CCC竞赛. 至今已举办了11届. 该竞赛的目的有两个, 一是给中学
生一个机会以发展他们的计算机编程和算法设计能力, 另一个目的就是选拔选手组成加拿大代表队参加当年的国际
奥林匹克计算机竞赛. CCC一般每年二月份开始举行第一阶段竞赛.
每一届的CCC竞赛均分为两个阶段. 第一阶段, 即初赛阶段, 在各报名选手所在的学校举行. 初赛阶段有分
JUNIOR组和SENIOR组. JUNIOR组的学生限定与在学校只修过一个学分的计算机课程, 并不限定与学生所在的年级.
其他人则只能参加SENIOR组. 同时, 根据这边的鼓励早出人才的一贯政策, 任何学生均可参加SENIOR组. 第二阶
段, 相当于决赛阶段, 在Waterloo 大学举行, 进行两天. 在第一阶段的SENIOR组的前25名选手才有资格进入第二
阶段. 而加拿大参加国际奥林匹克计算机竞赛的代表队便由第二阶段产生.

2. 以科学为主题的全国中小学生网页设计大奖赛


该竞赛的英文名称是: Virtual Science Fair, 简称VSF. 为了推进加拿大中小学生计算机和互联网知识与技术的
普及, 加拿大 ” Virtual Science Fair Inc. (VSF)” 于1999年设立了一项特殊的科学竞赛活动, 叫做”虚拟科
学竞赛- Virtual Science Fair 该竞赛的宗旨是, 推动互联网知识的普及, 同时提高学生对科学知识的广泛兴趣
与探索. 主办者VSF 是一个注册的非赢利的慈善机构. 对于Virtual Science Fair, 竞赛主办者甚至还特别提及,
欢迎边远地区和原住民的学生通过远程通讯技术参加这项竞赛.

每一个参赛作品相当于一个独立的网站(当然, 它并无独立的IP地址), 用来表达一个科学主题. 即参赛者通过网页
设计的相关技术, 如声音, 图形, 图像, 文字, 甚至动画, 影像等, 将一个科学问题或主题丰富多彩的表达出来.
为了很好地表达一个主题思想, 需要作者具有一定的题材组织能力. 比如, 被表达的一个科学主题, 哪一部分用文
字表达比较合适, 哪一部分用图形图像表达比较合适. 如何选取素材, 如何组织素材, 如何构造页面等等. 既需要
学生有一定的科学知识, 又需要有一定的美学知识和网页设计知识.

虚拟科学竞赛的参赛者可以由Kindergarten 至 G12 年级. 但主要参赛者还是中学生. 它有个人赛, 也有TEAM赛.
该赛事的优胜者可以获得一笔不菲的奖金, 最高奖金额度如下: $1000 for G10-12; $500 for G7-9; $250 for
G4-6.
 
最后编辑:
【超级生活网 sUperLIFE.ca专讯】
多伦多奥林匹克学校计算机竞赛大面积丰收

12名同学入选加拿大全国奥林匹克计算机竞赛

据日前加拿大数学与计算机教育中心-即加拿大官方数学与计算机竞赛组织机构公布的结果, 全国有3千多名中学生计算机高手参加的Canadian Computing Competition(简称CCC)竞赛, 在全国前25名优胜者中, 奥林匹克学校共有12名学生, 占前25名的48%. 接近一半。 所有这25名选手都接到邀请, 将于5月9日至13日前往滑铁卢大学, 参加加拿大全国中学生计算机奥林匹克竞赛。 在滑铁卢大学的计算机奥赛中, 将从这25名选手中决出前4名选手, 组成加拿大国家队, 参加国际计算机奥赛。

奥林匹克学校接到邀请, 前往滑铁卢大学参加全国计算机奥赛的同学是:
Brian Chau , Jim Gao , Thomas Guo , Yesung Jung , Yikuan Li , William Wen,
Tommy Xiang, Jeffrey Xiao, Joey Yu, Jason Yuen, Bill Zheng, Weiwei Zhong.

奥林匹克学校在上一年有两名同学Yikuan Li和Ben Zhang入围国家队,代表加拿大参加国际计算机奥赛。占国家队人数的一半。 其中Yikuan Li在国际奥赛中获得银牌, Ben Zhang获得铜牌。Yikuan Li还是去年CCC竞赛的全国唯一一个满分获得者。

加拿大通向国际计算机奥赛的道路

1)概况:

加拿大全国中学生计算机竞赛Canadian Computing Competition(CCC) 是由Waterloo 大学计算机系与加拿大数学与计算机教育中心联合举办的全加计算机竞赛. 至今已举办了15届. 该竞赛的目的有两个, 一是给中学生一个机会以发展他们的计算机编程和算法设计能力, 另一个目的就是选拔选手组成加拿大代表队参加当年的国际奥林匹克计算机竞赛. CCC一般每年二月份开始举行第一阶段竞赛.

2)过程:

每一届的CCC竞赛均分为两个阶段. 第一阶段, 即初赛阶段, 在各报名选手所在的学校举行. 初赛阶段有分JUNIOR组和SENIOR组. JUNIOR组的学生限定与在学校只修过一个学分的计算机课程, 并不限定与学生所在的年级. 其他人则只能参加SENIOR组. 同时, 根据这边的鼓励早出人才的一贯政策, 任何学生均可参加SENIOR组. CCC每年通常在二月下旬举行。 第二阶段, 即全国中学生计算机奥赛(CCO), 在Waterloo 大学举行, 为期一周. 通常在每年的五月份举行。 在第一阶段的SENIOR组的前25名选手才有资格进入第二阶段. 而加拿大参加国际奥林匹克计算机竞赛的代表队便由第二阶段产生.

3)竞赛内容:

在CCC竞赛的第一阶段, JUNIOR组和SENIOR组各使用不同的试卷. 每一个试卷各有5道试题. 其中, 竞赛详细信息如下:

JUNIOR组, 第一, 第二题, 考基本概念, 如循环和条件判断等; 第三和第四题, 有一定难度的, 如循环组合, 条件判断及计数等; 第五题, 更高难度的, 考递归, 有效排序等.

SENIOR组, 第一, 第二题, 考基本算法, 如排序, 搜索等等; 第二, 第三题, 更高级的算法, 如计数, 数学推理等; 第五题, 极高难度, 接近国际奥林匹克计算机竞赛.

两套卷子, 每题15分, 每张试卷共75分.

需要说明的是, 所有这些竞赛试题, 都是与数学有关的题. 主要是测试学生的对数学问题的理解能力, 逻辑推理能力和计算机编程能力, 而与图形设计及软件开发无关.

4)竞赛评分

在第一阶段, 各参赛选手所在的学校都会得到Waterloo大学提供的详细的评分规则. 同时各学校还须从指定的网站上下载统一的测试数据, 用来检测选手的程序是否可以通过.

5)参赛所用的编程语言

在第一阶段, 选手可以用任何的编程语言, 只要学校的计算机系统可以支持, 如PASCAL, C/C++, Basic, Turing, Java 等. 但可进行符号处理的编程语言则不行, 如MATLAB, MAPLE.

在第二阶段, 只有PASCAL, Jave 和C/C++可以使用.

我们的期望:

大陆新移民的孩子, 尤其是处于中学生年龄段的孩子, 普遍喜欢计算机. 但他们又限于知识和能力, 便更多的是沉溺于玩电脑游戏或是网上聊天. 长此以往, 于身心健康和学习都不利. 而加拿大全国中学生计算机竞赛是一项很有意义的学科竞赛. 它既能培养孩子学会编写程序, 又能用程序解决一些实际数学问题. 对孩子们的成长很有帮助。

多伦多奥林匹克学校在上一年也为加拿大参加国际奥林匹克计算机竞赛的代表队贡献了两名同学。
 
最后编辑:
Facebook支付了1万美元给一位10岁的芬兰男孩


20160508_14627233441007-1.jpg


社交媒体巨人Facebook最近支付了1万美元给一位10岁的芬兰男孩,以奖励他在其下属的Instagram图片社交应用里找到了漏洞。

这位芬兰男孩名叫贾尼 – Jani(他由于隐私原因未透露姓氏)。他成为了世界上获得了Facebook为找出其平台里漏洞和弱点而设立的“漏洞奖金”最年轻的人。

贾尼在告诉芬兰报纸《Iltalehti》:“我只是想试一下Instagram的评论功能能否抵挡住恶意程序攻击。最后证明它没有抵挡住。”

Facebook表示该漏洞已经在二月份修补,三月份支付了奖金给Jani。

贾尼年龄太小,他自己还不能拥有Facebook 和 Instagram 账户。他说他从Youtube视频上学习写代码并找到一个删除Instagram上评论的方法。

他告诉芬兰报纸《Iltalehti》:“我能够删除所有人的评论,甚至是‘贾斯汀.比伯’的。”

他说他已经考虑在数据安全领域的职业发展,但眼前他的计划是用奖金买一辆自行车和一个足球。
 
最后编辑:
苹果公司将在渥太华设立研发中心

【CFC新闻】据渥太华商业期刊报道,有可靠消息称苹果公司在渥太华Kanata地区租赁下了一处办公地点,并计划在渥太华设立一家分公司。

虽然苹果公司还没有正式宣布建设渥太华分公司的计划,但消息称其已经开始着手实质性的筹备工作了。苹果公司在Kanata地区租赁下的是G. Best Building办公楼内总面积约2053平方米的办公空间,位于Kanata Research Park工业园区Legget Dr. 路段411号。据悉,苹果公司渥太华分部将主要负责研究和开发工作。

这栋办公楼属于KRP Properties地产公司,目前这栋楼内最大的商户是主营微波无线技术服务的DragonWave公司。地产公司网站上称,出租的办公空间装修完善、配套设施非常齐全,除了必备的会议室、独立办公室、午餐室,还有淋浴间、阳台、实验室等空间。截至目前,KRP Properties地产公司暂未对此事做出回应,没有确认苹果公司是否租下了这处办公楼、租约时长多久。

作为全世界首屈一指的科技公司,苹果公司在2015年间的营业额高达2330亿美元。近几年间,苹果公司一直在增加研究开发项目的资金投入,仅在2015年间就投资了80亿美元,比上一年度增加了34%。在过去12个月间,苹果公司已陆续在英国剑桥市和日本横滨市设立了研发部门。

此前有消息称,主营电脑、平板电脑、手机登电子设备的苹果公司有意向进军电动汽车产业,而且已经开始在全球范围内招揽资历深厚的汽车工程师。黑莓公司的汽车软件开发部门就设立在渥太华,已成功研发出QNX Software Systems汽车控制系统软件。作为“加拿大硅谷”,渥太华地区集中了不少科技领域的顶尖人才,在汽车软件领域也很有竞争力。在电动汽车和无人驾驶汽车的潮流推动下,会吸引苹果这样的大公司在渥太华建设分公司,也不足为奇。

(CFC记者易颉编译)
 
苹果公司:找苹果系统漏洞 赢最多20万美元奖励

苹果软件的一个漏洞值多少钱?由于该公司之前并未向发现漏洞的研究人员支付费用,所以这个问题一直都是个谜。但本周四,谜底终于揭晓:答案是20万美元。
苹果安全主管伊万·克斯迪克(Ivan Krstic)表示,该公司将向找到其软件漏洞的研究人员支付最多20万美元的漏洞奖金。

克斯迪克是在黑帽网络安全大会上透露这一消息的,他说:“我们很高兴宣布苹果安全奖励项目。”他还披露了苹果如何保护用户数据的详细技术信息。事实上,许多大型软件公司和非常依赖电脑的企业都提供类似的安全奖励项目,包括微软、雅虎、克莱斯勒和美联航。例如,谷歌上月宣布,该公司去年共向发现Android软件漏洞的研究人员支付了55万美元奖金。Facebook也在今年2月表示,从2011年开始,该公司的漏洞奖励项目总共向全球800名研究人员支付了超过430万美元奖金。

事实上,很多研究人员都会及时发布他们发现的苹果系统漏洞。由于市场份额更小且产品更加安全,所以苹果面临的攻击相对较少,因此找到苹果漏洞可以提升自己的声誉。

但并非所有人都愿意将自己找到的漏洞告知苹果,而是选择私下出售这类信息。而这个最新项目似乎可以鼓励研究人员首先将漏洞汇报给苹果。
 
最后编辑:
苹果奖学金获得者:我的自学 iOS 开发历程

转自:mobilehub公众号,作者:左辰豪

作者简介: 左辰豪(Nero),苏州大学计算机科学与技术学院物联网工程学生,WWDC 2016 奖学金获得者,RoDot 作者,2015年接触 iOS 开发,热爱 Swift,博客地址:http://nero5023.github.io/

我是一名来自苏州大学物联网工程的学生,马上读大三。今年凭借一款游戏 RoDot 获得了苹果的奖学金,受邀参加了今年的在旧金山举行的 WWDC。因此有机会享受了加州的阳光,参观了硅谷、斯坦福大学,很荣幸地与库克等苹果高管合影。

成长历程

接触计算机对我来说是个巧合,高考填志愿的时候原来一直想学建筑学,但是由于高考的失利的原因,最终选了物联网工程,就是看好物联网的发展,也没好好了解过。我是从大学才接触编程的,也是像大多数计算机学生一样通过学习 C 语言入门的。但我能取得现在的成绩,是因为我有了自己的想法,有那么一点点的叛逆。

刚进大学时候还是挺迷茫的,就跟着课程学习,但是学了一个学期后发现所学的东西和自己所期望的相差很大,并不能做出一个实际的项目出来。我就开始自学 iOS 开发,观看斯坦福大学 iOS 开发公开课,但对于没有接触面向对象开发的我来说太难了,还买了一些书,如从零基础到上架、从入门到精通这种书,但基本都没用,走了很多弯路。慢慢地开始看国外的网站,同时庆幸的是,在大一下学期的时候遇到了贾俊铖老师,给我项目做,将我带入了门。同时在大一暑假时找了份实习工作,这个经历真的让我学到了很多东西,接触到了正式工程代码,详细得了解了团队人员构成。

同时我也接触了 Udacity、Coursera 等 MOOC 网站,让我见识到了内容更丰富,更先进的教育资源。Udacity 上的课程都是计算机课程,我学习了 Full Stack Nanodegree 以及各种课程,学会了用 Python 开发 Web 后端,数据库、Linux、HTML、CSS 等相关知识,增强了自主学习的能力,使我少走了很多弯路。Coursera 上的课程各个门类都有,我参加了面向对象高级课程和数据科学家的工具箱这两门课,学了一些 UML,及数据分析所用工具语言,对数据分析有了大概的了解。在大二时积极参加 GDG 苏州等开发者社区活动,社区交流是学习、分享技术、答疑解惑最好的途径之一。现在所获得的计算机的知识基本都是自己学习的,学校并不能给我们什么,所有的一切必须靠我们自己。

苹果诠释美国梦

苹果奖学金是苹果为鼓励更多学生投入开发者群体而专门设立的一个奖项,我觉得他们做到了,苹果将美国梦诠释得很形象。今年 WWDC 的 Keynote 上,苹果还放了一段激励下一代视频,并在 iPad 上推出 Swift Playground,目的就是让更多的年轻开发者投入到苹果的怀抱。

我大一时就关注到了这个奖学金,但是当时刚接触 iOS 开发,还没有能力,而且也完全没有时间了,就准备在下一年申请。因此做了很多功课,暑假实习,增加经验,学习 Web 技术,提高自己的技能,参加开发者社区活动,扩展视野。

开发经历

我是凭借一款小游戏 RoDot 拿到了这个奖学金的,其实这个游戏就是为了申请奖学金的,还有就是想要挑战一下自己,之前从没有做过游戏,想要尝试一下。整个开发过程花了 3 个月时间,所有的课余时间都花在这个上了。

代码之外

对我来说最难的不是代码,而是灵感和设计,这对程序员来说很难。完全不懂设计,就凭个人感觉来做,最后做出来的效果也还好,不算特别丑。

整个项目都是我一个人完成,这就意味着我承担了很多角色,我是 iOS 工程师、后端工程师、前端工程师(一小部分)、设计师、产品经理、测试工程师,我不仅要写代码,还要设计、指定计划、控制开发进度。整个过程我虽然遇到些意外、困难,一些地方还不完善,但最终还是如期完成了。我戏称自己做了次全栈工程设计师,当然也远远没有达到这个程度。我个人认为我能拿到这个奖学金的最大因素是我游戏的灵感,感觉实现这个游戏其实也不算难,最重要的是敢想敢做。

申请流程

每年5月左右苹果会在 https://developer.apple.com/wwdc/scholarships/ 这个网址开放申请通道,这上有一些关于申请奖学金的具体要求,有兴趣的可以看一下。申请这个奖学金需要提交一款自己做的 App,不管是上架的还是非上架的都可以,另外还需要填写一些个人简介,关于你用到什么技术,遇到什么困难怎么解决等的问题,这些其实都是次要的,另外还要提交英文的学籍证明。最后只要静等最终结果的邮件即可。

申请建议

通过阅读申请要求,不难发现创意和所用技术很重要。所以做的 App 一定要有创意, 多用 Apple 的技术,尤其是最新的那些,用最新的特性组合创造更多的可能,另外关注 Use Accessibility,这一部分苹果也极其的重视。还可以做一些帮助一些患有特殊疾病的 App。另外界面一定要好看,苹果给我们奖学金得主一个建议就是:做一个 App 时,要 Design first。

WWDC 见闻总结

这次 WWDC 还认识了一些来自中国的奖学金得主,有来自北京科技大学的李鑫,来自香港的何一非,来自长沙的匡定宇,在美国纽约读高中的周睿。他们都相当地优秀,给我印象最深刻的是一位来自巴西的奖学金获得者,他有自己的公司,一个人做了很多游戏,特别敬佩他。参加这次 WWDC,得到了很多来自前辈的帮助,十分感激,谢谢你们的建议和帮助。原本参加这次 WWDC 的目的就不是学什么技术,而是去感受 WWDC 的气氛,认识更多的人,聆听前辈的建议,多表达、多交流。这次参会也达到了自己的预期,整体还是比较满意的,因为英语不是很好,没有进一步的交流,留下了些遗憾。
 
最后编辑:
软件故障 Bug 引发的 18 次重大事故

无论工程师做了多少枯燥的测试工作,无论他们熬了多少不眠之夜在编程,但最终他们得到的是:会导致软件彻底出问题的 bug。你知道吗,由于软件故障(bug),美国经济每年在浪费生产力、返工和实际毁坏上损失了数十亿美元。

软件故障背后的常见原因有:
  • 错误的结构定义和底层设计;
  • 脱离大量可靠数据和分析的强制性计划或里程碑日期;
  • 没有考虑和调整需求增长;
  • 整合过量员工去实现不现实的进度压缩;
  • 利益相关者基于直觉或情感的谈判;
  • 沟通不畅、自负以及消极的态度;
本文列举了一些由软件 Bug 引发重大事故,其结果是大量金钱损失,甚至人员死亡。如果你有任何建议或者其他案例,欢迎提出。

12.英国护照系统(1999年)

1471254218425333.jpg


英国护照办事处启用了一种新的计算机系统,而这种新系统无法及时向超过 50 万公民发放护照。后来办事处赔偿了数百万,员工也加班为在雨中排队等候护照的人们提供雨伞。

损失:1400 万美元

故障原因:办事处没有经过适当的测试,没有对员工进行有关新系统的培训,就推出他们的软件。另外,(与新系统同时发布的)新法律要求所有 16 岁以下的儿童在出国旅行时都要拥有一个护照密码。这就导致了护照需求瞬间激增,从而致使新软件系统负载过重。

11.水手一号探测器(1962年)

1471254233706713.jpg


1962年,发射往金星的水手一号探测器在发射 293 秒后偏离了预定轨道。它的任务在 5 个星期后由成功发射的水手二号完成。

损失:1900 万美元

故障原因:两个故障:探测器制导天线的硬件故障,还有板载制导系统的软件故障。制导天线并没有达到应有的标准。因此,探测器不得不依靠一个有 Bug 的制导系统。

一个程序员将某个公式转换成了计算机代码转错了,漏了一个下标。这个下标原本是半径 R 的第 N 次平滑时间导数值。由于缺少数据光滑化处理功能,制导系统把正常速度当成错误处理,并造成了修正不精确,最终探测器偏离航向的。

10.Mydoom 病毒(2004年)

Mydoom 是一种计算机病毒,于 2004 年 1 月 26 日首次出现。病毒出现第二天,SCO 组织悬赏 25 万美元,以奖励提供病毒作者信息的人。据 MessageLabs 称,当时每十二封电子邮件中就有一封携带这种病毒。

损失:380 亿美元

故障原因:该病毒能够在操作系统中创建一个后门,让未经授权的用户访问您的个人数据。同时,它可以欺骗邮件,使其源头很难被跟踪。和其他病毒一样,Mydoom 可以搜索电子邮件里的联系人,并将请求发送给所有的搜索引擎。

9.哈特福德体育馆倒塌

1471254780610330.jpg


1978 年 1 月 18 日,(美国康涅狄格州的)哈特福德市中心体育馆在近 5000 名观众离开后的几个小时内轰然倒塌。其钢网壳组成的屋顶在雪的重压下崩塌。

损失:7000 万美元 + 当地经济的 2000 万美元损失

故障原因:有很多相互冲突的失败原因,包括设计流程、结构以及编程错误。CAD 程序员假设屋顶支撑结构仅需要面临纯压缩,从而做出错误的设计。

此外,计算机模型假设所有的顶部弦杆进行了横向支撑,但实际上只有内部框架符合标准。固定荷载被低估了超过 20%。当顶部其中一个支架被大雪意外压弯时,便引发了屋顶其他部分的连锁反应。

8.火星气候探测者号

1471254794661195.jpg


火星气候探测者号是由美国宇航局于 1998 年发射的一个空间探测器,用于研究火星的大气层、气候以及表层变化。发射后第 286 天,进入火星轨道时失去了通讯。导航故障让火箭过于靠近火星大气层,从而导致燃烧并解体。

损失:1.25 亿美元

故障原因:任务失败的主要原因是人为失误。火星气候探测者号上的飞行系统软件使用公制单位牛顿计算推进器动力,而地面人员输入的方向校正量和推进器参数则使用英制单位磅力。这个因计量单位混淆的错误在此后的所有任务中被 NASA 小心地避免。

7. IRS:缺少欺诈检测系统

1471254818360621.jpg


2006 年,美国国内税收系统(IRS)缺少自动还款欺诈检测系统,无法监测返还申报资金时的潜在欺诈案件,损失了数百万。

损失:3 亿美元的损失,21 美元修复

故障原因:在 2005 年 1 月,计算机科学公司本应交付电子欺诈系统(EFDS)。然而在 2004 年 10 月,IRS 担心他们的 2100 万个系统将无法按时准备好,这也是为什么他们决定在 2005 年的归档阶段使用旧系统。

据 IRS 局长 Mark Everson 称,IRS 及其承包商在提高自动还款欺诈检测系统方面管理不足,不可接受。

6.阿丽亚娜 5 型运载火箭

1471254830636236.jpg


1996 年,阿丽亚娜 5 型运载火箭首次飞行,搭载发射星群航天器(欧洲航天局的四大航天器之一的星座)。然而由于运载火箭无法到达指定轨道,任务以失败告终。

损失:3.7 亿美元

故障原因:阿丽亚娜5型运载火箭基于前一代4型火箭开发。在4型火箭系统中,对一个水平速率的测量值使用了16位的变量及内存,因为在4型火箭系统中反复验证过,这一值不会超过16位的变量,而5型火箭的开发人员简单复制了这部分程序,而没有对新火箭进行数值的验证,结果发生了致命的数值溢出。因此,飞行器在发射后 37 秒便从原始路径偏移。最终不得不启动了火箭自毁程序。

5.奔腾的长除法

1471254844782741.jpg


1994 年,英特尔的奔腾微处理器芯片的浮点计算单元出现了一个 Bug。对于精确计算,处理器将返回不正确的十进制值。当时有大概 500 万个缺陷芯片在流通,英特尔最终决定为所有投诉的人更换芯片。这之后,英特尔把他们的故障处理器做成了钥匙链。

损失:4.75 亿美元 + 品牌名誉受损

故障原因:在奔腾浮点单元的分频器中有一个有缺陷的除法表,在约一千个条目中丢失了五条纪录。然而,这个错误在 90 亿随机浮点小数的除法中仅可能出现一次。例如,将 4195835.0 除以 3145727.0 得出 1.333739068902037589,而不是 1.333820449136241002,有 0.006% 的误差。

4. 1987 年的华尔街崩盘

1471254866493975.jpg


1987 年 10 月 19 日(也被称为黑色星期一),道琼斯工业平均指数(DJIA)下跌了 508 个点,损失了总价值的 22.61%,且标准普尔 500 指数下跌了 20.4%。这是华尔街一天之内见过的最大损失。

损失:一天 5000 亿美元

故障原因:问题出在交易程序和估价程序。在交易程序中,计算机基于外部输入执行快速股票交易,如相关证券的价格。该交易程序理应实施投资组合保险策略,并试图从事套利。

1987 年初,美国证券交易委员会针对内幕交易开始了一系列的调查。直到 10 月,投资者决定搬出华尔街。随着人们开始大规模外流,计算机交易程序出现了大量的销售订单至 DOT(订单转送及成交回报系统),于是系统超出负载、市场崩溃以及所有的投资者懵逼了。

3.千禧危机

1471254897746272.jpg


千年虫(千年问题)是计算机系统的编码问题,在从 1999年 12 月 31 号过渡到 2000 年 1 月 1 号时,这个错误将在计算机网络和软件中引发一场浩劫。

损失:5000 亿美元

故障原因:为了节省计算机存储空间,大多数传统软件使用两位数字来存储日期中的年份,例如,用“97”来代表 1997 年。这导致了 2000 年 1 月之后日期相关程序的错误操作。

此外,有些程序没有考虑到 2000 年是闰年。甚至在 2000 年到来之前,人们都在担心一些软件可能在 1999 年 9 月 9 号(表示为 9/9/99)无法工作,因为早期的开发人员常使用一系列的 9 来表示一段程序代码的结束。

2.癌症治疗与致死性放射治疗

1471254910582022.jpg


1985 年到 1987 年期间,Therac-25 医疗放射治疗装置让成百上千的患者暴露在大量过量的辐射之中,少数患者接受了高达预期 100 倍的放射剂量。2000 年,巴拿马城也发生了同样的辐射剂量误差。

损失:10 余人死亡,20 人重伤

故障原因:基于输入数据的顺序,治疗计划软件计算出并提供双倍剂量的辐射。

1.爱国者导弹

1471254921383894.jpg


1991 年 2 月第一次海湾战争期间,部署在沙特宰赫兰的美国爱国者导弹系统未能成功追踪和拦截来袭的伊拉克飞毛腿导弹。结果飞毛腿导弹击中美国军营。

损失:28 名士兵死亡,100 多人受伤

故障原因:时间计算不精确以及计算机算术错误导致了系统故障。从技术角度来讲,这是一个小的截断误差。当时,负责防卫该基地的爱国者反导弹系统已经连续工作了100个小时,每工作一个小时,系统内的时钟会有一个微小的毫秒级延迟,这就是这个失效悲剧的根源。爱国者反导弹系统的时钟寄存器设计为24位,因而时间的精度也只限于24位的精度。在长时间的工作后,这个微小的精度误差被渐渐放大。在工作了100小时后,系统时间的延迟是三分之一秒。

0.33 秒对常人来说微不足道。但是对一个需要跟踪并摧毁一枚空中飞弹的雷达系统来说,这是灾难性的。飞毛腿导弹空速达4.2马赫(每秒1.5公里),这个”微不足道的”0.33秒相当于大约 600 米的误差。在宰赫兰导弹事件中,雷达在空中发现了导弹,但由于时钟误差没能精确跟踪,反导导弹因而没有发射拦截。

灾难仍在继续

13. 微软客户被控诉盗版:

Windows 团队的有个成员不小心在所有的 Windows 服务器上安装了有 Bug 的非成品的软件。在接下来的 19 个小时内,所有正版 XP 用户都被告知他们在运行盗版软件。

14. 被假释的罪犯

2011 年,由于计算机程序代码中的一个小错误,约有 450 名暴力罪犯从加利福尼亚州监狱被释放。

15. 一触即发的第三次世界大战

1983 年 9 月 26 日,苏联的核早期预警系统报告了来自美国发射的导弹。苏联的系统错误地接收到太阳光的反射并将其解读为导弹发射。

后来,导弹袭击警告被一名苏联防空部队的军官认定为假警报。这一决定阻止了一场核战争以及数以百万计人们的潜在死亡。

16. 黑暗降临(大面积停电事故)

2003 年,黑暗在美国的八个州蔓延开来,影响了 5000 万人。该问题的源头是一个竞争条件,这是一个单一操作中的两个独立线程使用同一个代码中元素的结果。

17. 洛杉矶国际机场的航班停飞

2007 年,美国边境和海关控制网络发送了大量错误数据。这导致洛杉矶整个机场关闭了 8 个小时,在问题解决之前,超过 17000 架飞机不能起飞。这件事的罪魁祸首是一段有 Bug 的嵌入式软件。

18. Bug 葬送了日本 18 亿元的最新卫星

1471254991903856.jpg


2016年2月17日,被日本寄予厚望的 X 射线天文卫星“瞳”成功发射升空,但仅仅一个月后,“瞳”与地面的通信出现严重故障,经地面光学望远镜测控发现其运行轨迹出现多块太空碎片。4月28日,日本宇宙航空研究开发机构(JAXA)正式宣布,无法恢复对X射线卫星“瞳”的操控,事故原因经初步调查源自底层软件错误。卫星的控制系统在发现飞行姿态失控时,采取了错误的调整,推进器点火时朝向了错误的反方向,导致自身旋转更加严重,最终彻底失控。

本文由伯乐在线-伯小乐翻译。英文出处:rankred。
 
最后编辑:
这娃太聪明了! 美国一高中生黑客到免费无限流量

无限、免费的流量简直是梦想啊!一位名叫Jacob Ajit的17岁来自美国弗吉尼亚的美国高中生,就用自己的黑客技能,得到了免费无限的流量!

6896093022497423464.jpg


Jacob说:刚开始只是因为无聊。我有一张T-Mobile(美国移动运营商)的SIM卡,但没有开通服务,有天我突然想到一项有趣的挑战:我能不能不买流量包,就能用这张SIM卡用流量上网呢?

对于一个17岁的孩子来说,这个挑战很有难度啊,然而万万没想到,Jacob还真找到了实现的方法。他注意到用这张没有买流量包的SIM卡,是可以上T-Mobile的网站的,大多数app是用不了的,但是“Speedtest.net”的app是可以用的,即使是使用第三方服务区。出于好奇,他尝试学习Speedtest是怎么运作的。

6896093022497426137.jpg


Jacob说:“我决定把手机连到在Mac上运行的Mitmproxy,做了一些试验,让我更好的理解了Speedtest。我发现这些文件都是在名为 /speedtest的文件夹里的。”

于是Jacob就想:是不是名叫“/speedtest”的文件夹都适用呢?还!真!是!的!Jacob在自己的服务器上,把Taylor Swift的歌和视频放到一个名为“/speedtest”的文件夹,然后尝试下载,结果真的成了。

Jacob说:“太赞了。我不用买流量,就能下载Taylor Swift歌到我手机啦。”

6896093022497424898.jpg


然而Jacob想要能用全网,于是他建立了一个代理服务器,并放在名为“/speedtest”的文件夹中。这样,他就能不买流量,而免费访问全网了!

这娃太聪明了……不过你可别想着学他,目前这个问题已经被T-Mobile修复了……
 
12个可以在线学习编程的免费游戏酷站

编者按:玩游戏也可以学编程!今天这篇译文推荐了12个可以学习编程的游戏平台,支持的程序语言从Java、 Python、Vim、JavaScript、PHP等等都有,游戏界面也特别棒!想成为全栈设计师的同学,是时候试一下咯。

1、Code Combat

一个面向学生的通过把玩真正的游戏来学习计算机科学的平台。它是一个由上千玩家共同志愿维护的项目。支持Java, JavaScript, Python, Lua, CoffeeScript。

1470811118858721.png


2、CodinGame

解决具有挑战性的编码问题,支持所有编程语言。(搭梯子访问)

1470811092658615.png


3、Screeps

通过玩游戏来学习JavaScript。据称是全球第一个面向程序员的大型多人在线沙盒游戏。

1470811057958805.png


4、Check iO

一款需要你使用Python来推进的页游(需要登录)。

(搭梯子访问)

1470811037891069.png


5、Vim Adventures

游戏中学习Vim。

1470811009220050.png


6、Cyber DoJo

程序员练习编程的一个地方,支持JavaScript, Java, Python, PHP, Ruby等。(搭梯子访问)

开源代码在这里

1470810973848938.png


7、Code Monkey

通过编写代码来抓住香蕉。主要用于教师教学生们学习编程。(付费的)

1470810941731677.jpg


8、Elevator Saga

一款电梯升降式游戏,一步步解决问题,如在第一关中,你要在最多60秒内运输15人。

开源代码在这里

1470810918286791.png


9、Codewars

通过跟他人的实际挑战赛达到逐步掌握编程语言的目的。支持 JavaScript, Python, C#, Java, Python等。

1470810893688568.png


10、Ruby Quiz

面向Ruby编程者,每周一次挑战赛。现在已经收录了156场数据。

1470810872274992.png


11、Git Games

一款基于终端的游戏,教会大家使用git的一些特性。其本身是一款解密游戏,要求你使用git命令找到线索进而实现解谜的目的。

1470810846607808.png


12、Hacker Org

包括一些列的谜题、测试和智力题去探索你的黑客技能。为了解决一系列问题,你需要解开密码,写出轻巧的代码,突破一切障碍。

(搭梯子访问)

1470810817454636.png
 
40岁后学习编程:永远不会为时已晚


1470129178807242.jpg


万万没想到,正是水族饲养诱惑了43岁的Ken Hart进入网页设计世界。在有了多年在自己家中照顾水生生物的经验之后,Hart开始使用诸如Wix这样的免费网站建设工具来制作一个水族饲养的博客。这个博客引起了其他水族爱好者的共鸣,因此很快就有了稳定的流量。新得到的人气让Hart开始认真研究他的网站,以及重新评估设计选择。

“我真的觉得不好意思,因为还是在用免费的网站模板,而没有一个合适的网站,”Hart说。 “所以我觉得投入精力去学习如何构建一个网站。”

无论是水族饲养,养蜂,还是一些其他类型的面向动物的嗜好,最终上升到规模的,很多人都会在年过40以后去学习写代码,这个年纪正是很多人开始感到对新技术脱节的时候。

“对于我们这样的老家伙,网络是一个神秘且令人混淆的地方,”Hart说。 “但是,与其畏畏缩缩地躲在报纸后面,被那些精通互联网的孩子们嘲笑讥讽,我决定拥抱网络,并学习如何设计网站。”

在考虑了请家教的费用之后,Hart决定自学,于是在YouTube的茫茫资源之海中寻找。他最终发现了由Tyler Moore制作的侧重于讲述如何使用WordPress构建网站的视频系列。这些视频既全面又易于执行,并且可以强化已经学到的东西,Hart会在实际应用到工作中前反复观看每一个视频。这些视频给了他信心去购买新的域名,上传免费的WordPress模板,并开始深入研究代码。不久,他发现了比之前他使用的免费网站更有吸引力的东西。于是他着了魔。

“我开始为朋友和家人建造网站,哪怕他们并不真的需要!”Hart说。 “我只是想尽可能多地磨练自己的技能。”

在为一个当地遛狗的人建立网站之后,Hart得到了步行者之父的注意——他正在为他的数字化机构Aims Media Glasgow寻找一个网页设计实习生。Hart决定尝试一下这个实习机会。

“我觉得在线阅读让我走了这么远,并且如果我真的想提高Web设计的技能,在团队中工作我会更有进步,哪怕只是兼职。 “

Bill Barnett,另一个40多岁才来学习这门工艺的程序员,也从团队协作中受益良多。

在担任了17年飞机机械师之后,Barnett受了伤,被放到了文职位置。由于极度无聊和不安,他开始用他的IBM 386来排序工具,并找出如何跟踪和记录它们。由此,他开始阅读关于关系数据库方面的内容,并开始编程以便于生成库存报告。

“我被用高效的方式组织信息的能力迷住了,”Barnett说,很快他就能在几秒钟内自动操作数据并对精密测量设备生成最新的校准计划。他原先不过是希望他的工作能够被推广,但是虽然它得到了管理层的关注,但仅此而已。

“这让我郁闷了半年时间,”Barnett说。 “然后我意识到我可以在这方面大大提升自己,于是决定回学校充电。”

以着40岁的“高龄”,Barnett去了辛辛那提大学学习计算机科学。作为在课堂上最老的学生,他努力跟上班级中最聪明成员的进度,并鼓励他们形成学习小组和协作。令他惊讶的是,他的同学们比他预想得更愿意这样做,并且接受了他加入他们的阵营。除了偶尔会有一些“老人家”的戏称,Barnett并没有遭受年龄歧视,并且他的成功很大一部分归咎于这种积极合作的过程。

“学习没有捷径,”Barnett说。 “更多的是要脚踏实地,要辛勤耕耘和坚持不懈。不要害怕问问题,要参与到开发者社区中去。要面向用户群体。要与人交谈。尤其是作为一个年纪大的开发者,不要害怕接近年轻的开发者就因为他们经验更丰富。不要有倚老卖老的心态。”

Barnett现在是Gaslight的合作伙伴,Gaslight是辛辛那提一个27人的软件开发商店。他和5个来自于技术社区他通过聚会和其他社区活动所遇见的人一起创建了这个公司。

Hart,与此同时,自从加入那个机构之后就一直在那工作了四年。他在家工作,每隔两周去办公室和团队交流思想。他的核心力量仍然是设计,但他坚定不移地提高自己的开发技能。事实上,这个机构看到了Hart的潜力,于是他们为他支付了为期6个星期的开发课程。

“这是一段疯狂的旅程,但是我热爱它的每一分钟,”Hart说。 “全职工作于网页设计真是太棒了。”

无论是在什么年纪,学习代码都是一件艰巨的事情。三十年的技术缺席,很容易让人彻底怀疑自己的能力。幸运的是,Hart和Barnett这样的人用实际行动告诉你,40岁以后学习代码不仅是可能的,而且甚至可以由此而创立一个新的事业。

英文原文:Learning to Code after 40: If You Think It’s Too Late, Read This
 
孩子该不该学编程?

事关孩子未来发展,确实马虎不得。

1476850398364480.jpg


争论
随着年岁渐长,高中同学微信群里面的讨论也从奶粉代购变成了子女教育。

同学A是华尔街精英,大女儿已经六岁了。现在他每天都要操心女儿的教育问题。他主张培养孩子兴趣,课余活动的选择都按孩子自己的意愿来决定。

他的大女儿和几个同学现在正在用乐高教育(Lego Education)旗下的一款产品Wedo 2.0学习编程。

1476850411833992.jpg


同学A家附近华人比较多,这些家长就轮流带着孩子们去博物馆和科技馆找灵感,然后指导孩子们在室内用Wedo来编程做设计。

家长里面藏龙卧虎,许多是名牌大学CS和EE专业毕业,指导孩子们编程得心应手。我这同学专业是会计和金融,不懂编程。每次他都多给孩子们带些点心糖果,在一边看着孩子们自己学自己玩儿,很没有成就感。

受到这种激励,他也想学点编程。我把自己的那篇《七周学会做搜索引擎》发给了他。他读了好几遍,觉得编程很值得学,MOOC太有用了,兴奋得睡不好觉。

他问孩子们的编程该如何入门?我依然推荐了Python语言,但是使用的MOOC与成人的完全不同。

我俩在群里的交流引起了许多老同学一起参加讨论,气氛很热烈。

旅居澳洲的同学B自称科技民工,其实他毕业于国内某著名工科院校,绝对是专家级别。他觉得编程尝试一下就好,不可以深入进去学。在他看来,编程的模式会固化孩子的思维,让孩子不容易接受新的知识和技术。而编程语言、系统环境总是在变化的,小时候深入学了某一种编程语言,长大基本上都已过时,用不上了。因此学编程还不如学下棋,对孩子的思维更有启发。

我俩不同的观点引起同学们的热烈讨论,许多没有IT背景的同学一时无所适从。

路径
同学B和我的初衷都是为了孩子好。我们的主要分歧来源于对“学编程”的定义。

我们这些80后,基本上都是上了中学才拥有学习电脑的机会。教材都是先是从ENIAC开始讲历史。了解了一大堆看不见摸不着的体系结构、内存寻址方式之后,还得掌握各种数据结构。考试之前不得不去背诵冒泡排序、选择排序和快速排序算法之间的差别。

上机的机会是很稀缺的。学校机房里面空调、地毯一应俱全,机器却是早已过时的Apple II,里面只能敲点儿Basic语句。大部分人家里都没有电脑,难得有机会自己编写代码解决感兴趣的问题。

今天的孩子境遇可是完全不同。智能手机、笔记本电脑早已不再是奢侈品。孩子完全可以用自己的一二百块压岁钱或者零花钱买个 Raspberry PI 这样的电脑芯片。计算机的构成根本无需再拆机介绍,一目了然。这种电脑芯片麻雀虽小五脏俱全。插个键盘、鼠标和显示器,就是一台全功能主机了。编程环境全都齐备,学习门槛极低。

1476850428892822.jpg


我给孩子们推荐的Coursera平台MOOC来自Rice大学,叫做"An Introduction to Interactive Programming in Python"。这门课不是让你记诵排序的N种方法,也不要求你懂得级数求和公式,更不需要你会用递归方法写汉诺塔解决方案。

这门课是教你用Python语言游戏!

教师是这几位怪蜀黍。



他们为了这门课程专门设计了一个在线的程序编辑和运行环境。初学者最为头疼的系统兼容性、程序下载安装和版本依赖等问题在这里统统不会遇上。只要你打开课程提供的这个地址,就可以看到编辑器了。

1476850473664513.jpg


左侧你输入Python语句,运行结果如果是文本,就会出现在右边。如果调用了图形界面,结果会出现在单独的窗口中。

点击Demo可以看到许多作品。不少都是这门课之前Coursera学员做出来的。

1476850462997880.jpg


我们看看其中Steve Knock创作的Rice Racer。

1476850444450904.jpg



编辑器左侧就是普通的源代码和说明文档。游戏全部的要素都在这里。你可以深入进去了解程序运行机制,也可以随意修改源码让它执行你想要的操作。点击屏幕左上方的执行按钮,你就可以在新窗口里面玩儿游戏了。

1476850489532288.jpg



这游戏的画面确实不如极品飞车做得精美。但是如果你的孩子学完课程,自己做出了这样的游戏,你能想象出他/她和好友脸上兴奋的表情吗?

这个课是给编程零基础的人准备的。不用担心老师会快速嘟囔一堆让你望而却步的艰深专有名词。课程深入浅出,老师会一步步教你Python语言的知识,每次课都能让你掌握一个新技能,不断给你的小游戏添砖加瓦。



学这课需要多长时间?因人而异。我班上曾有一个学工商管理的学生,之前毫无编程基础。她在24小时之内就搞定了这门课的第一部分(课程共分为两个部分)并且拿到证书。

这样的编程课,你如何让孩子浅尝辄止?他们一旦上手,恐怕根本就停不下来,因为乐在其中。我不认为值得学习的必要技能可以通过蜻蜓点水的“尝试”便能真正掌握。

能力
学会了编游戏有什么用?能保送吗?高考能加分吗?能保证将来找到好工作吗?

咱别那么急功近利好不好?

记不记得几年前曾经有一款深受大众欢迎的游戏《愤怒的小鸟》?该款游戏霸占iTunes Store免费应用下载排行榜第一名很久。你知道它最终被谁赶下了冠军位置吗?

是这个当时年仅14岁的小伙子。

1476850502894319.jpg


别的孩子都在疯玩儿的时候,他一头扎进图书馆,找书籍自学iOS程序设计,然后做了自己的一款免费游戏,叫做Bubble Ball。

1476850527505277.jpg


游戏没有什么花哨的界面,但是人们疯狂地喜欢上了它。游戏上架才1个月的时间,下载数量就超过300万。

有了这种深受大众欢迎的好作品,名誉和财富会主动找上门来的。

游戏编程与其说只是一项技能,不如说是个催化剂。我们不妨来分析一下。

玩儿游戏的时候,规则是别人定的,你是消费者

一旦你开始编游戏,规则就是来定的,你变成了生产者

千万不要小看这个微小的变化。从此之后,当你的孩子看到新的好游戏的时候,他/她获得的就不只是兴奋感,而是随时都可以汲取营养,学习知识。别人傻玩儿的时候,他/她在考虑的是“这款游戏我能不能做?”“为什么作者要这样设计规则?”以及最重要的“这款游戏为何受欢迎?”

这就是“外行看热闹,内行看门道”。

我们信息管理领域有所谓的“信息偶遇”,很多时候人们一直渴求的信息会突然自己找上门来。就像溢出的洗澡水之于阿基米德、落下的苹果之于牛顿。

1476850541526994.jpg


许多人以为这不过是纯随机事件,可遇不可求。但是首先你心里必须有疑惑和问题存在,然后才更有机会受到外界信息的启发。如果你没有思考过吸引力的事情,别说苹果,就是被椰子砸了也照样没用。

能编出好游戏的孩子,肯定是具备优秀观察力的。此外他/她还会在游戏制作中逐渐感受到和用户的互动,会主动愿意了解美术、音乐、用户界面设计和心理学的知识。

他/她可能会遭遇失败,但这并不要紧。从不断的迭代和改进中,他/她会逐渐明白所有的作品都不可能完美和一蹴而就。这样的孩子,将来可以大概率摆脱“表现型人格”和拖延症的困扰。

游戏越做越大,便需要与他人的协作。他会学习沟通,照顾他人的感受,以及积累管理经验。

而且最好的消息是——作为家长,你根本不用去督促他/她,上述所有的知识获取与能力习得全都可以靠兴趣驱动,而且效果还比你照本宣科的劝导和说教要好得多。这就是兴趣的威力。

比尔盖茨上中学时积极帮学校设计座位分配系统,为什么?

为的是能够和最漂亮的女生们坐在一起。

创造
谈到这里,家长们应该不再担心学编程对孩子知识和能力的“不良影响”了。下面我们来谈谈家长们可能最担心的一个问题——小时候学编程会不会限制孩子们的创造力呢?

我们来看看他的例子。

他的外公是个大学统计学教授。因为眼花了,自己打字编程不方便,外公就把他抱在腿上,让他替自己把草稿纸上面的统计程序代码输入计算机。那台旧计算机是Commodore VIC-20,当时就已经不再是什么流行的型号。输入的程序语言是Basic,现在的孩子连编程入门都不再会使用这样的语言了。

但是他在外公的指导下学会了Basic语言后,开始编制自己的程序,而后触类旁通,自学了汇编语言等其他编程语言。

上大学时他发现自己计算机上面安装的操作系统用着不是很得心应手。而当时品质最好的操作系统Unix又太贵。

换做是你怎么办?找盗版?

他的解决办法是——自己做了个操作系统,还免费共享给了所有人。

1476850557132648.jpg


你嗤之以鼻。这种手工作坊生产的山寨操作系统能好用吗?怎么能和微软的Windows比?别逗了!

如果你今天用的是安卓手机(基本上就是除了iPhone以外所有主流的智能手机品牌和型号),你在用他的系统。

1476850571870019.jpg


如果你用过搜索引擎,你用过他的系统。

如果你用过电商平台购物,你用过他的系统。

甚至连“根据伟大的指导者金正日同志多次莅临指导”,“独立”研制而成的朝鲜操作系统,也不过是在他的系统上改了改界面而已。

1476850584601114.jpg


如果他打算挣钱,仅这个操作系统的授权费就足以让他早早当上亿万富翁。

他没有要一分钱。

如果他愿意停下来,享受成功的荣誉。每天都出去做演讲也能过上富足的生活。

他也没有。因为他的创造力还远没有发挥完。

2005年,他又创造了Git。这东西能干什么请自行Google,但现在世界上最优秀的程序员们离开了这东西就无法协作。请自己脑补画面。

他就是Linus Torvalds,IT领域大神级别的人物。

1476850601597605.jpg


他就是从小学编程的。用当时就已过时的系统环境学了过气的编程语言。

他长大后缺乏创造力吗?
 
我似乎理解了编程的意义

编程的意义是什么,我又为什么要编程呢?这是一个不时会浮现在我脑海中的问题,它来得并不频繁,但每次却都伴随着对自己职业生涯或人生目标的质疑而产生,令我感到些许困惑和不安。而在这十几年的职业生涯中,我也似乎总能在每个阶段为自己找到一个继续热爱编程的理由,直到它已无法解答再一次疑惑的产生。就这样一次又一次的循环往复,我似乎渐渐理解了编程的意义……

编程是一项技能

回想大学毕业刚成为一名程序员时,自己对技术是如此狂热,我不断地购买各类技术书籍,几乎所有的业余时间也都被用来钻研技术,提高自己的编程能力。我也因此很快成了同一批入职新人中,编码效率和质量最突出的一个。而在那段时间里所做的技术积累,也成了我日后工作的坚实基础,编程作为一项技能已经深深地嵌入到了我的身体里。

即使到了今天,我仍非常怀念那段心无旁骛,一心钻研技术的日子。我为能在工作中写出的每一行优秀代码而兴奋,更为每一天能在技术上取得的点滴进步而喜悦,一切都是那么单纯,编程的意义对于那时的我来说就在于技术本身。

编程是去解决问题

“能力越大,责任也也大”,这句电影“蜘蛛侠”中的经典台词同样适用于程序员的职业生涯。随着技术能力的提升以及工作中获得的认可,我的职位也由原来的初级程序员变为了资深开发工程师,以及后来的架构师。相应的,除了编程之外,我工作中的很大一部分时间需要用来与用户进行沟通,并分析他们提出的需求。对于我来说这个角色转换的过程,是艰难甚至有些痛苦的。 我不得不用自己最薄弱的沟通技能去和用户打交道,更要命的是我所习惯使用的那些技术语言有时很难让他们理解。

我很快意识到自己已不再是那个只需被动接受任务安排,并将自己的编程工作完成好就万事大吉的初级程序员。除了技术之外,我更需要能够突破程序员思维,去发现用户需求背后所隐含的真正问题。我比以前变得更加务实,不再刻意追求技术的高深,而是尽可能从问题本身出发,选择最有效的技术手段去解决它。

此时,编程的意义也发生了改变,它已不再局限于技术本身,而成了解决问题的理想工具。

编程是在表达,也是在创作

就这样又过了几年,当“为什么要编程?”这个问题再次摆在我的面前时,自己也已过了而立之年。对于大多数中国程序员来说,这个年纪已经算是高龄,甚至还有很多人会认为30岁还在编程,一定是混得不够好吧。当然,对于这些质疑我也总是一笑了之。其实,在此之前我也有过很多转型的机会,比如去业务部门,或是转作管理等等,但最终我还是选择留在了技术岗位上,因为我觉得编程仍是我最喜欢的,或许也是我唯一擅长的吧。

而这个时期也成了我整个程序员生涯的黄金期,我写了公司的核心框架以及一些重要业务系统的核心算法。我很享受这段时光,因为我已几乎感受不到那些技术上的牵绊,我更像雕刻师使用手中的刻刀一般,自如地运用编程来实现那些我认为优秀的东西。

编程对于我来说已不再是一项技能或是工具,我是在通过编程进行着自我表达与创作,这种感受带给了我极大的自由度,而我也从中感受到了前所未有的喜悦与乐趣。

编程是为了留下痕迹

最终我还是走上了管理岗位,这里面有很多个人无法左右的因素(包括大环境、家庭、经济等等)。但我仍然更乐意被大家称为程序员或者“老”程序员。就像在简书的自我介绍中,我总是把全栈工程师放在那些“头衔”的第一位,我也还在利用业余时间做自己喜欢的开源或个人项目。当我再一次问自己“为什么要编程”时,获得了与以往不一样的感悟:或许我们编程是为了能够留下一些痕迹吧。

公司里最近都在为一个老系统的升级问题发愁,这个系统已经运行了将近20年时间了,为了升级系统,大家不得不深入到这个系统的框架中,去读底层代码。我们读到了一位已经退休的美国同事Bill所实现的数据库连接池代码。在那个时候JAVA刚开始流行,还没有像Spring这样的框架,或是如Hibernate或MyBatis这样标准的持久层实现,这个系统中所有的数据库连接池及核心持久层代码都是由我的这位美国同事写的,这些代码让整个系统稳定运行了将近20年,大家都不禁为他高超的技术水平发出由衷的赞叹。

我还认识一位从事证券交易软件研发的公司CTO,看年纪应该已经接近50了,但他仍然在亲自写着那些证券交易的核心代码。当我问他到了这个年龄和职位,为什么还要坚持写代码时,他告诉我,当他看到自己所写的代码每天在支撑着千亿级的证券交易时,他感到非常兴奋和自豪,并不断地希望能够通过自己的努力将它做得更好。

我的这个美国同事不会听到大家为他十几年前所代码发出的赞叹,股民们也不会知道这位CTO所写的代码正在支撑着他们的日常交易。那些优秀的代码是他们留下的痕迹,我们不能确定这些痕迹能够保留多久,或许几年,或许更短,但它们都曾经在我们的日常生活中产生了重要的价值,而新的未来也将构建在这些痕迹的基础之上,我想这可能才是编程的意义所在吧。

我似乎理解了编程的意义,但我明白未来的某一天,我一定还会问自己同样的问题——为什么要编程,希望到那个时候自己还能是那个热爱编程,有着一颗匠心的“技匠”吧……
 
国际信息学奥林匹克

国际资讯奥林匹亚International Olympiad in Informatics,IOI),是面向中学生的一年一度的资讯学科竞赛。第一届国际资讯奥林匹亚于1989年在保加利亚布拉维茨举行。

这项竞赛包含两天的电脑程式设计,解决演算法问题。选手以个人为单位,每个国家最多可选派4名选手参加(2004年共有81个国家参赛)。参赛选手从各国相应计算机竞赛中选拔。


IOI 2006的比赛现场
在两天的比赛日中,一般来说参赛选手每一天都需要在5小时内一台计算机的帮助下独立解决3道题目。比赛中不允许任何形式的交流或是查阅参考资料。通常,参赛选手都要为每一道题目编写一个程序(编程语言为C++或是Pascal)并在比赛结束之前提交。随后大赛的主办方将采用10组或者20组测试数据对程序进行测试。如果根据给定的某一组输入数据,程序可以在限定的内存空间和时间内正确的得到输出结果,那么该名选手即获得这一组数据的相应分数。[1]近年出现了一种新的比赛题型(提交答案题)——在比赛开始之间参赛选手将获得各组测试数据,他们要提交的是相应的计算结果,而非程序本身。选手可以通过编写程序、手工计算或者两者结合来完成这类题目。

每名参赛选手的各题得分之和即为总得分。在颁奖仪式上,参赛选手将根据他们的得分获得相应的奖项。排名前50%的参赛选手(平均每个国家2名)将获得奖牌。获得金、银、铜牌和未获奖牌人数之比约为1:2:3:6。与其他学科的奥林匹克竞赛不同,国际资讯奥林匹亚章程严格禁止对参赛国家的排名[2]但是每场比赛之后仍然会有不少非官方的排名出现。
 
后退
顶部