在Khan Academy(Khan Academy中文名称为可汗学院,是著名的网络课程学校,在iTunes U以及Youtube上非常火爆。),将以一种新的有趣方式教授学生计算机科学。其中最有趣的部分就是可能会将JavaScript作为学科的第一语言。
John Resig是Open Source的院长,他在博文中表示:
我们主要是教授那些已经接受了数学和科学中心课程的学生。因此我们能够做一些更加能激发大家兴趣的练习或是项目。
将JavaScript作为第一语言是一件非常令人激动的事情。向熟悉传统继承方法的开发者教授原型继承方法是一件令人沮丧的事情(导致许多诣在复制JavaScript中继承类的库如雨后春笋般涌现)。向那些没有接受过任何继承方法学习的人员介绍原型继承相对而言会轻松很多。学习函数型程序设计也是同样的道理。使用JavaScript也可以体验到函数型编程方式,并且也是我们课程的一个关注重点。
在将JavaScript作为第一语言之前,还有几点困难需要克服(这是人们在使用JavaScript时常常会碰到的)。为了避免这些常见的问题,我们需要在代码编辑器中使用某种形式的linting(JSLint或是JSHint,又或是其他类似的东西),用来告诉用户环境信息。
我们希望避免传统的语法教学方法,让大家能够通过使用这门语言更加容易地掌握它。这里有两个突出的改变,用来简化学习的过程。
注意:只有当学习者是那些从来没有接触过任何编程语言、相关规范、代码和库的人,这些特别建议才能真正有效。当然,如果需要提升学生的层次,让他们能够“看到任何一个跨浏览器的JavaScript代码,都能理解代码的含义”,还有许多工作要做。
强制类型转换
正如许多人指出的,强制类型转换是一件很混乱的事情,这一点Douglas Crockfor在JavaScript: The Good Parts中特别提到过。
可以在学习了其他的课程以后再来讨论这个问题…比如学习了原型,函数程序设计和闭包之后。
我推荐第一个改变就是只让学生使用===(和!==)。虽然使用‘==’在语法上比较短,但是它有许多强制类型转换的限定和用法,在初步学习编程以前教授这些内容没有太大的意义。
一个例外的情况是,如果你需要检查一个变量是否是一个null或者是一个未定义的值。这可以通过一个简单的someVar == null示例带过,这也是唯一使用==的地方。(另一个例外是在IE中的浏览器bug,用===检查Windows对象总是返回false,但是我们并不会在我们的课程中介绍这个例子。)
Falsy值
和==一样,falsy值也肯能引起混乱。进行严格的布尔检查将减少边缘效应,但是会增加代码量。可以将falsy值限定为布尔值,null和未定义的数值,而将字符串falsy值留给大家以后学习。
函数声明
其中最有趣的改变是一个很微妙的变换,它避开了创建匿名函数和为他们指定变量时的函数声明。
使用这个技巧能培养一些好的习惯。
- 更易于理解“函数即对象”。我发现当你将一个指定了变量的函数展示给开发者时,他们更容易理解函数就是一个对象(以及一个函数可以作为一个参数传递给另一个函数)。学生们能够更好地理解函数程序设计。
- 它能够形成良好的分号使用习惯。只有在传统的函数声明中不需要使用分号结束(当然,还包括条件语句和循环语句),这样学生对于应该如何使用分号就相当清晰了。
- 不要有太多与功能函数和循环有关的包,
块作用域
这是最后一个具有挑战的知识点,目前为止我还没有找到一个特别好的教学方案。光是弄清楚在循环内声明的变量就已经令开发者非常头疼了。如果无法更加直观地解释变量声明的作用域的话,就只能从纯粹的技术角度来解释了。
(但是我还不确定是否应该在一开始就介绍function(){…}();这样的函数块。)
将JavaScript作为第一语言
需要指出的是尽管我们准备将JavaScript作为第一语言——主要是由于它具有普遍性,符合大量工作环境的需求,无需事先安装,开发的内容可以分享——但我们不会将眼光只局限在JavaScript上。还有许许多多的其他语言也是非常重要的,从这些语言里面能学到许多在JavaScript中没有的技巧,我们也应该将这些内容加入到我们的课程中来。
在视频中介绍了更多关于我们选择JavaScript的原因,以及我们开发中支持的浏览器介绍。
我尽量避免跨浏览中出现的各种特殊问题。因此我们会尽量使用现有的库(如绘制canvas或是操纵DOM),只有在与我们最终支持的浏览器一致的情况下才会使用JavaScript语言的功能。
作者简介:John Resig是Open Source的院长,以及Khan Academy的JavaScript开发组长,出版了Pro JavaScript Techniques,他还参与了 jQuery JavaScript library的开发并且担任了领导工作。
目前,John在Boston, MA,并在准备他的第二本书Secrets of the JavaScript Ninja。
文章来源:JavaScript as a First Language
译文来源:http://www.webapptrend.com/
WebAppTrend是一个独立的技术博客,关注Web App前瞻和实践,以及智能浏览器发展
请大家在关注ITeye的同时,关注我们的新浪微博 @WebAppTrend,关注我们的腾讯微博@WebAppTrend,欢迎加入我们的Q Q群:193775364
发表评论
-
响应式Web设计资源整理
2012-03-02 22:50 839这篇文章是对以往发表在Smashing Magazine上关于 ... -
投身移动开发必须知道的20件事
2012-03-01 23:42 755移动开发需要具体的设计考虑。这个所指的范围非常广,可以从“ ... -
聘用NodeJS开发者的六个建议
2012-03-01 23:41 845假设你正想聘用一名Node ... -
[摘要]Vision Mobile发布2012跨平台开发工具报告 PhoneGap最受欢迎
2012-03-01 23:41 902国外知名调查分析机构V ... -
Facebook发力Mobile Web 推出支付和测试工具
2012-02-28 23:49 821Facebook入场了,在MWC大 ... -
【数据】《移动优先》作者:为什么移动如此重要?
2012-02-28 23:48 939三 年前,前雅虎用户体验总监Luke Wrobl ... -
重新审视Mobile Web
2012-02-28 23:48 701作者简介:Byron是一个 ... -
WebAppTrend周刊:Google Chrome工程师推出Web App开发指南
2012-02-26 00:52 1218从本周起,WebAppTrend将精选一周内(2月20日~2月 ... -
Google Web App开发指南第四章:构建优秀的Web Apps
2012-02-24 23:13 1279构建漂亮的应用 一个web app 的视觉设计不仅 ... -
零基础学习Sencha Touch(资料和教程集合)
2012-02-23 00:41 1287译者注:本篇文章为开发者提供了零基础使用Sencha To ... -
Google Web Apps开发指南之项目样例(上)
2012-02-23 00:41 934如果缺少项目案例部 ... -
如何一步一步制作出高品质Infographic?
2012-02-20 21:23 979译者注:Infographic就 ... -
海豚浏览器CTO刘铁锋:Mobile Web App发展现状及展望
2012-02-18 00:10 877在计算机的发展过程中 ... -
海豚浏览器CTO刘铁锋:Mobile Web App发展现状及展望
2012-02-18 00:09 0在计算机的发展过程中 ... -
新手必读:PhoneGap入门六大问题
2012-02-18 00:08 1028很多PhoneGap新手总是需要一些基础问题的解答,Ado ... -
Google Web App开发指南第一章:什么是Web Apps?
2012-02-18 00:07 928很多人向我问起学习HTML5技术的权威入门资料,我总是毫不 ... -
Lanyrd是如何应用HTML5创建出优秀的移动Web应用的
2012-02-15 00:28 649当很多人都在等待观望 ... -
Appcelerator收购Cocoafish,旨在为Titanium平台提供即时移动云服务
2012-02-15 00:17 915译者注:Appcelerator是 ... -
Android官方文档之Web Apps最佳实践
2012-02-15 00:14 685为移动设备开发web页面或者web应用与为桌面浏览器开发web ... -
Android官方文档之Web Apps调试
2012-02-15 00:13 909概览 你可以使用控制台的Javascript方法调试你的w ...
相关推荐
萨尔曼·可汗已成为教育领域的超级巨星,并吸引了可观的资助,比尔·盖茨基金会先后提供了550万美元支持其事业。可汗于2010年入选《财富》“全球40大青年才俊榜”,2012年入选《时代周刊》“100位最具影响力人物”。
[电子书] 翻转课堂的可汗学院 互联时间的教育革命....
《翻转课堂的可汗学院》是一本关于教育革命的书籍,作者萨尔曼·可汗提出了一种新的教学模式,即翻转课堂教学法。该教学法强调学生的自主学习,教师的导演型角色,并将教学过程分为四个步骤,即检测、作业、协作、...
可汗学院是一个知名的在线学习平台,由萨尔曼·可汗创立,旨在提供免费的教育资源,涵盖数学、科学等多个领域。在其逻辑问题中,常常设计出一些需要深入思考和策略解答的智力挑战。以下我们将分析文中的三个逻辑问题...
网易公开课, 可汗学院 统计学第28课 正态分布excel的练习。
9. **教育模式的未来探讨**:可汗学院的模式启发了教育界对个性化、自适应学习的关注,很多学校已经开始将可汗学院的视频作为辅助教学工具,让学生在课后自主学习,课堂上则专注于讨论和解答疑惑。 总之,可汗学院...
可汗学院,一个知名的在线教育平台,提供了一系列的文章来教授这些知识,旨在让学习者掌握计算思维和编程能力。在"computing-curriculum"这个资源中,我们可以期待深入学习与HTML相关的编程概念。 HTML,全称...
khan-exercises, 用于构建与 可汗学院 一起工作的练习的( 已经废弃) 框架 可汗学院 练习可汗学院 为构建练习创建了一个通用框架。 这个框架和练习本身,可以完全独立于 可汗学院 应用程序使用。这里 repo 由两个部分...
在这个主题中,我们通过一个孤岛模型来理解基本概念,模型中一个人既是家庭又是企业的所有者。在这个场景中,家庭支出等于企业收入,即3500美元,这涵盖了食物、住所和其他商品与服务的消费。 【GDP(国内生产总值...
微观经济学 一份具详细的一看就懂的学习笔记,课程From 网易公开课 可汗学院 公开课
KA-程序这个存储库用于组织、备份和版本控制我使用可汗学院的计算机科学环境创建的一些程序。 我的课程的完整列表可在: : 文件显示为 JS 文件,但需要 Processing.js 和此处所述的一些更改: : 每个文件的第一行是...
可汗学院_7.6.1.apk.1s
总的来说,“KhanAcademy_clr”为OS X用户提供了一个便捷的方式来接入可汗学院的官方色彩,使得在日常工作中可以更好地融入可汗学院的视觉语言,增强用户与这个教育平台的连接。通过深入理解和利用这一资源,无论是...
Khan Academy API(Python包装器) 这是Khan Academy API的Python包装器。 文档可汗学院API: : ...如果尚未通过身份验证,则将创建一个OAuth身份验证会话,该会话需要通过浏览器验证。 current_us
可汗学院的Chrome扩展程序 可汗学院的Chrome扩展程序。加入我们的Discord,以获取项目更新:https://discord.gg/Bhd9FjN功能:*实时编辑器设置,具有多个主题,制表符/空格间距和自动完成功能*复制链接按钮可复制...
在可汗学院的现有或,复制所需构建类型的代码。 CDN 通过jsDelivr CDN从外部加载Essentials,就可以使用它。 使用以下可以使用其他受限制的功能。 // jshint ignore: start 使用的方法加载库。 $ . ajaxSetup ( {...
可汗学院PyCharm插件 PyCharm IDE的插件,供可汗学院的开发人员使用。 当前,它具有一项功能: 它用类似的菜单选项替换了常规的“运行测试”上下文菜单选项,这些菜单选项创建了与Khan Academy的测试基础结构兼容...
感染这是我对可汗学院感染面试问题的解决方案。运行代码JAR 文件 (khanacademy-infection.jar) 是存储库的一部分。 运行模拟的最简单方法是下载此文件并使用 Java 运行。 该代码是一个 IntelliJ IDEA 项目,因此 git...
这个扩展将实现可汗学院的tota11y JS文件 所有学分可汗学院和他们的真棒剧本。这个扩展只是在所有页面上加载脚本。有关更多详细信息,请参阅http://khan.github.io/tota11y/。 v0.1.5 - 6/29/2016 - 将脚本更新为...
教师可以利用手机等移动设备,结合线上教育资源,如慕课、可汗学院等,打破传统课堂的束缚,实现随时随地的学习。 针对这些变革,教师可以采取以下对策: 1. 注重知识的应用能力培养。通过使用模拟器,如思科...