在过去的几个月里,下面的问题一直困扰着我。在看到这里的回复质量之后,我希望在这里能得到一些很好的回复。
我在欧洲经委会的一个部门开设了一门题为“Exploring Digital Information Technology的课程,旨在让非专业人士对整个“计算机如何工作”这件事大吃一惊。作为一名计算机体系结构的研究生,我在这门学科上的背景与学生有很大的不同(他们中的许多人都是一个除了Word和YouTube之外没有任何计算机经验的新生),但我的整个思维模式似乎根本不同。我以前有过很多成功的技术课程,在那里学生不一定有任何背景的确切材料,但他们是注重细节,有技术头脑的人,摸索的东西,如变量,数组,索引,间接,功能等,我有。课程的第一个单元非常困难,基本上涵盖了HTML、javascript和Internet(网络拓扑、IP地址等)。
我向SO社区提出的问题很多,但我将从以下几点开始:
在最高层次上,如果你试图教别人如何像程序员一样思考(将人类层次的算法分解为简单的步骤,这些步骤可以转换为函数、过程语句、if then else语句和循环),那么HTML和javascript会是你的方法吗?这使得结果比其他方法更容易被关联(例如,一个做有用事情的网页),但是HTML和JavaScript的分离和集成,以及整个“声明性HTML与过程性JavaScript对话”的事情似乎都在大量抽象概念中死记硬背,以至于哦,很快。
如果你真的想把HTML和JS教给一个初学者(在算法上有困难的人),你会使用什么资源,你会分配什么项目,等等?我发现,即使我尽我所能将for循环这样的概念分解,它还是有点多。有没有什么地方可以从第一原则开始,真正帮助一个真正的初学者探索为什么括号和分号是必要的,函数的参数是什么,等等?
老实说,我还有很多问题要问,但我认为这是一个很好的开始。我期待着把你的研究成果汇编成一些东西,不仅可以用于本课程的未来迭代,也可以用于我个人的“技术福音”追求。我在这里读过另一个“如何教初学者做X”的问题,但他们似乎瞄准了一个完全不同的“初学者”类:数学思维能力强,对学习编程很感兴趣,但不知道从哪里开始的人。我觉得这个群体的答案与那些有着不同心态的人大不相同,而且学习的内在动机可能更少。
最佳答案
HTML和JavaScript绝对不是我的方法。标记和编程是两个非常不同的东西。将javascript加入到组合中有助于解决这一问题,但这也使事情变得非常复杂。您处理的是两种不同的语法,使用两种不同的概念模型,它们之间的桥梁不是透明的。您需要处理事件模型中输入等基本内容。分散注意力的开销不可避免地妨碍了基础知识的学习。
您如何连接到HTML/javascript?因为完全放弃HTML,使用更传统的编程模型似乎是一种更好的方法。在这一领域中,有大量关于Python的工作,因此您应该查看Python in Education。
关于javascript - 将非专业介绍给HTML/编程的最佳方法是什么? ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/118755/
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i