什么是计算论文?

表达思想的有力方式

人们习惯于用散文——有时是图画——来表达自己。但是在现代计算时代,一些新的东西已经成为徳赢中国可能,我想称之为计算性论文.

几十年来,我一直致力于开发支持计算机论文的技术,但直到最近,我才意识到计算论文对于人们的学习方式是多么重要,以及他们交流事实和想法的方式。未来的专业人士将定期以计算论文的形式提交结果和报告。教育家们通常会用计算论文来解释概念。学生们通常会制作计算性论文作为课堂作业。

这里有一个非常简单的计算论文的例子:

简单的计算题示例

基本上有三种情况。首先,普通文本(这里是英文)。第二,计算机输入。第三,计算机输出。关键的一点是,所有这些因素共同作用来表达所传达的信息。

普通文本提供了上下文和动机。计算机输入给出了正在谈论的内容的精确说明。徳赢彩票游戏然后计算机输出输出事实和结果,通常以图形形式。它是一种强大的阐述形式,将人类作者的计算思维与计算机的计算知识和计算处理相结合。

但真正起作用的是Wolfram语言-它所提供的高层次思想的简洁表达,定义人类计算思维与实际计算和计算机提供的知识之间的独特桥梁。

在一篇典型的计算文章中,每一个Wolfram语言输入通常都很短(通常不超过一行或两行)。但关键是这样的输入可以传达一个高级的计算思想,以一种既能被计算机理解又能被阅读这篇文章的人理解的形式出现。

对于所有这些来说,Wolfram语言有如此多关于世界和如何计算其中事物的内置知识是至关重要的。徳赢彩票游戏因为这使得它可以立即不只是讨论抽象计算,徳赢彩票游戏也包括世界上真实存徳赢彩票游戏在和发生的事情——最终提供一种真正的计算通信语言,连接人类和计算机的能力。

一个例子

让我们用一篇计算论文来解释计算论文。

假设我们想谈谈人类语言的结构,徳赢彩票游戏喜欢英语。英语基本上是由单词组成的。让我们得到一个常见的列表。

生成英语常用单词列表:

词表[ ]
γ

词表[ ]

一个典型的单词有多长?好吧,我们可以把常用词列出来,做一个直方图,显示它们的长度分布。

制作单词长度直方图:

柱状图[字符串长度[单词表]]
γ

柱状图[字符串长度[单词表]]

法语也是一样:

直方图[StringLength [WordList[语言- >
γ

直方图[StringLength[WordList[语言- >“法国”]]]

请注意,在法语中单词的长度往往较长。我们可以研究这是否是法语文件比英语文件长,或者它与文本的熵等量的关系。(当然,因为这是一篇计算论文,读者可以自己重新运行计算,比如用俄语代替法语。

但不同的是,让我们通过比较语言的翻译来比较,说,“计算机”这个词。

找到“计算机”的10种最常用语言的翻译:

把[WordTranslation [
γ

把[WordTranslation[“计算机”,所有,10]

找到每种情况下的第一个翻译:

首先/ @ [WordTranslation [
γ

第一个/@take[wordstranslation[“computer”,所有,10]

根据“计算机”的翻译,在“特征空间”中排列常用语言:

FeatureSpacePlot[首先/ @ [WordTranslation [
γ

FeatureSpacePlot[首先/ @ [WordTranslation[“计算机”,所有,40]]

从这个情节中,我们可以开始研究语言之间的各种结构和历史关系。但是从计算论文的角度来看,这里重要的是我们要分享普通文本之间的阐述,电脑输入,和输出。

这篇课文讲的是基本观点。然后输入给出了我们想要的精确定义。输出显示了它的真实情况。徳赢彩票游戏但是看看输入。即使只是通过查看其中的Wolfram语言函数的名称,你可以很好地理解它在说什么。徳赢彩票游戏虽然函数名是基于英文的,可以用"代码说明要理解另一种语言,说日语:

FeatureSpacePlot[第一/ @Take[WordTranslation[
γ

FeatureSpacePlot[首先/ @ [WordTranslation[“计算机”,所有,40]]

但是假设一个人不知道徳赢彩票游戏FeatureSpacePlot.它是什么?如果它只是英语中的一个单词或短语,我们可以查字典,但不会有确切的答案。但是在Wolfram语言中,函数总是被精确定义的。要知道它的功能,我们可以从它的文档开始。但更重要的是,我们可以自己运行它来明确地看到它的作用。

FeatureSpacePlot页面

这是计算论文伟大之处的关键部分。徳赢彩票游戏如果你读了一篇普通的文章,如果你不明白,最后你只需要让作者找出它们的意思。在一篇计算论文中,不过,Wolfram语言输入可以准确无误地指定一切——如果你想知道它是什么意思,你可以运行它,在你的电脑上探索它的任何细节,自动地,不需要与作者进行任何讨论。

实用性

怎样才能写出一篇计算论文呢?有了我们的技术堆栈,这很简单,主要是因为我们引入了笔记本的概念Mathematica的第一版回到1988年。笔记本是一种结构化的文档,它将文本单元格与Wolfram语言输入和输出单元格混合在一起,包括图形、图片,的声音,和互动内容:

一个典型的笔记本

在现代,一个伟大的(而且很难实现的)事情是,完整的Wolfram笔记本可以无缝地跨桌面运行,云计算和移动。你可以在本地写一本笔记本沃尔夫桌面应用程序(Mac)窗户,-或透过任何网页浏览器,或者通过手机Wolfram云应用.然后您可以通过Wolfram云,通过网络或手机访问,或下载到桌面,现在,iOS设备。

笔记本电脑的环境

有时你想让笔记本的读者只是看着它,也许是打开和关闭细胞群。有时您还希望它们能够操作交互元素。有时候你希望他们能够编辑和运行代码,或者修改整个笔记本。关键的一点是,在我们构建的云桌面移动系统中,所有这些事情都很容易做到。

新形徳赢中国式的学生工作

计算论文很适合学生阅读,但是他们也很适合学生写作。目前的学生工作模式大多非常陈旧。写一篇文章。给出一个数学推导。它们已经存在了几千年。并不是说他们有什么问题。但现在有了新的东西:写一篇计算论文。徳赢中国它极具教育意义。

一篇计算机论文实际上是一篇通过人类作者和计算机之间的合作讲述的智力故事。电脑就像一种智能外骨骼,让您立即编组大量的计算能力和知识。但它也是理解的执行者。因为要引导电脑了解你想讲的故事,你必须自己理解它。

当学生写普通文章时,他们通常写的内容在某种意义上“已经存在”(“讨论这段徳赢彩票游戏话”);“解释这段历史”;...).但是在做计算(至少用Wolfram语言)时,很容易发现新的东西,计算文章最终将得到一个基本上取之不尽的新内容,徳赢中国以前从未见过。学生将探索和发现,以及理解和解释。

当你写一篇计算论文时,计算论文中的代码必须产生与您所讲的故事相匹配的结果。这不是在做数学推导,然后有老师告诉你你的答案是错的。您可以立即看到代码的作用,是否符合你所讲的故事。如果没有,那么也许你的代码是错误的,或者你的故事是错误的。

学生写计算论文的实际过程应该是什么?在今年Wolfram暑期学校我们做了一个实验,要求我们所有的学生写一篇关于他们所知道的任何事情的计算性论文。徳赢中国徳赢彩票游戏我们最后得到72年有趣的文章-探讨非常广泛的主题。

在更典型的教育环境中,计算论文的“提示”可以类似于“英语中一个单词的典型长度是多少”或“探索英语中单词的长度”。

我还尝试了另一个工作流。作为课堂的“课堂”组成部分,进行实时编码(或实时实验)。创造或发现一些东西,每个学生都跟着做自己的计算。在课程结束时,每个学生将有一个他们制作的笔记本。然后让他们的“作业”是把笔记本变成一篇计算论文,解释他们做了什么。

根据我的经验,这是一个很好的练习,它可以测试和巩固学生的理解力。但是还有一些其他的东西:当学生们写了一篇计算论文,他们有一些东西可以永远保存并直接使用。

这是计算论文的一大特点。当学生们写的时候,他们实际上是在为自己创建一个计算工具的自定义库——在将来的任何时候都可以立即使用。学生在课堂上写笔记太普遍了,那就不要再提它们了。是的,他们可能会遇到一些笔记会有帮助的情况。但通常很难让人有动力回去读笔记,尤其是因为那只是个开始;仍然有实现讲义中内容的问题。

但重点是,通过计算性的文章,一旦你找到了你想要的,实现它的代码就在那里——立即准备好应用于任何出现的情况。

任何你想要的主题

计算论文是关于什么的?徳赢彩票游戏几乎任何东西!我经常说,对于任何研究X的领域(从考古学到动物学),现在,或者很快,“计算X”。任何“计算X”都可以立即通过计算论文进行探索和解释。

但即使还没有一个明确的“计算X”,计算论文仍然是组织和呈现材料的有力方式。在某种意义上,在一篇文章中,通常需要一系列的计算来“讲述故事”,这一事实有助于为整个文章定义一个清晰的主干。实际上,计算表示的结构化特性有助于为叙述提供结构建议——使学生(和其他人)更容易写出易于阅读和理解的文章。

但是实际的主题呢?徳赢彩票游戏好吧,想象一下你正在学习历史,比如说英国内战的历史。好吧,方便地,Wolfram语言内置了很多关于历史的知识(就像其他很多东西一样)。徳赢彩票游戏所以你可以通过对话的方式展示英国内战。例如,你可以问战争的地理位置:

γ

地理位置图\(\*namespacebox[“linguisticassistant”,dynamicmodulebox[typeset` query$=“英国内战”,键入'boxes $$ = TemplateBox[{"\"英文内战\"",RowBox[{“实体”,“(”,RowBox [{MilitaryConflict \“\”“”,“,”,EnglishCivilWar \“\”},“]”},“\”实体[\ \ \“MilitaryConflict \ \ \”,\ \ \ \“EnglishCivilWar \ \ \] \ ",军事冲突\“\”},“实体”),$$ = {{"type" -> "Clash","word" -> "English Civil War","template" -> "假设\"${word}\"是${desc1}。改为\${desc2}”,“计数”- >“3”,“值”->{{“名称”->“军事冲突”,“desc”->“一场军事冲突”“输入”- >“* C.English +民事+ _ * MilitaryConflict -战争”},{"name" -> "Word","desc" -> "a word",“输入”- >“* C.English +民事+战争_ *词“},{"name" -> "HistoricalEvent",“desc”->“历史事件”,“输入”- >“* C.English +民事+战争_ * HistoricalEvent——“} } },{"type" -> "SubCategory","word" -> "English Civil War","template" -> "假设${desc1}。使用$ {desc2}”,而不是“计数”- >“4”,“价值观”->{{“名称”->“英国内战”"desc" -> "英国内战(1642 - 1651)"“输入”- >“* DPClash.MilitaryConflictE.English +民事+ _ * \ EnglishCivilWar -战争”},“name”->“FirstEnglish Civilwar”,"英国内战(1642 - 1646)"“输入”- >“* DPClash.MilitaryConflictE.English +民事+ _ * \ FirstEnglishCivilWar -战争”},{"name" -> " second english civil lwar ","desc" -> "第二次英国内战"“输入”- >“* DPClash.MilitaryConflictE.English +民事+ _ * \ SecondEnglishCivilWar -战争”},{“名称”->“第三次英国内战”,"desc" -> "第三次英国内战"“输入”- >“* DPClash.MilitaryConflictE.English +民事+战争_ * \ ThirdEnglishCivilWar——“}}}},typeset`假设$=,排版'open $ $ = { 1,2 },type eset 'querystate $$ = {"Online" -> True,“允许”->真,“mparse.jsp”->1.305362`6.5672759594240935,“消息”->,DynamicBox[ToBoxes[AlphaIntegration 'LinguisticAssistantBoxes[",4,自动的,动态[typeset`query$],动态(排版'boxes $ $),动态(排版'allassumptions $ $),动态(排版'assumptions $ $),动态[typeset`open$],动态(排版'querystate $ $]],StandardForm], ImageSizeCache - > {265。{ 7。,17.,trackedSymbols:>typeset`查询$,排版'boxes $ $,排版'allassumptions $ $,排版'assumptions $ $,排版'open $ $,排版'querystate $ $ }],DynamicModuleValues:> { },UndoTrackedVariables:> {排版'open $ $ }],BaseStyle - > {“部署”},DeleteWithContents - >没错,可编辑- > False,SelectWithContents - >真正]\)[“战斗”]]

你可以要求一个战争开始的时间表(你不需要说“前15场战斗”,因为如果有人在乎,你可以从Wolfram语言代码中读到):

γ

TimelinePlot[Take[\!\(\*NamespaceBox["LinguisticAssistant",DynamicModuleBox[{Typeset`query$$ = "English Civil War",键入'boxes $$ = TemplateBox[{"\"英文内战\"",RowBox[{“实体”,“(”,RowBox [{MilitaryConflict \“\”“”,“,”,EnglishCivilWar \“\”},“]”},“\”实体[\ \ \“MilitaryConflict \ \ \”,\ \ \“EnglishCivilWar \ \ \ " \ \ ",军事冲突\“\”},“实体”),typeset`allassumptions$=“type”->“clash”,"word" -> "English Civil War","template" -> "假设\"${word}\"是${desc1}。改为\${desc2}”,“计数”- >“3”,“值”->{{“名称”->“军事冲突”,“desc”->“一场军事冲突”“输入”- >“* C.English +民事+ _ * MilitaryConflict -战争”},{"name" -> "Word","desc" -> "a word",“输入”- >“* C.English +民事+战争_ *词“},{"name" -> "HistoricalEvent",“desc”->“历史事件”,“输入”- >“* C.English +民事+战争_ * HistoricalEvent——“} } },{"type" -> "SubCategory","word" -> "English Civil War","template" -> "假设${desc1}。使用$ {desc2}”,而不是“计数”- >“4”,“价值观”->{{“名称”->“英国内战”"desc" -> "英国内战(1642 - 1651)"“输入”- >“* DPClash.MilitaryConflictE.English +民事+ _ \ * EnglishCivilWar -战争”},{"name" -> " first english civil lwar ","英国内战(1642 - 1646)"“输入”- >“* DPClash.MilitaryConflictE.English +民事+ _ \ * FirstEnglishCivilWar -战争”},{"name" -> " second english civil lwar ","desc" -> "第二次英国内战"“input”->“*dpclash.militaryconflicte.english+civil war-”,{“名称”->“第三次英国内战”,"desc" -> "第三次英国内战"“输入”- >“* DPClash.MilitaryConflictE.English +民事+战争_ \ * ThirdEnglishCivilWar——“}}}},typeset`假设$=,排版'open $ $ = { 1,2 },typeset`querystate$=“online”->true,“允许”->真,“mparse.jsp”->1.305362`6.5672759594240935,“消息”->,DynamicBox[ToBoxes[AlphaIntegration 'LinguisticAssistantBoxes[",4,自动的,动态[typeset`query$],动态(排版'boxes $ $),动态(排版'allassumptions $ $),动态(排版'assumptions $ $),动态[typeset`open$],动态(排版'querystate $ $]],StandardForm], ImageSizeCache - > {275。{ 7。,17.}},TrackedSymbols:>{         Typeset`query$$,排版'boxes $ $,排版'allassumptions $ $,排版'assumptions $ $,排版'open $ $,排版'querystate $ $ }],DynamicModuleValues:> { },UndoTrackedVariables:> {排版'open $ $ }],BaseStyle - > {“部署”},DeleteWithContents - >没错,可编辑- > False,SelectWithContents - >真]\)(“战争”),15]]

你可以看看军队是如何移动的,或者谁赢了,谁输了。起初,你可以写一篇计算性的文章,其中计算基本上只是生成定制的信息图表来说明你的叙述。但是你可以更进一步,开始真正的“计算历史”。你可以开始计算战争进程的各种统计数据。你可以找到量化的方法来与其他战争进行比较,等等。

你能写一篇关于艺术的“计算论文”吗?徳赢彩票游戏绝对的。也许是艺术史徳赢彩票游戏。随机挑选10幅梵高的画作:




梵高画作输出
γ

EntityValue[随机样本[\!\(\*namespacebox[“linguisticassistant”,dynamicmodulebox[typeset` query$=“梵高”,$$ =模板框[{"\"梵高\"",RowBox[{“实体”,“(”,RowBox[{ \“\”人”,“,”,“\”VincentVanGogh:9 vq62 \ " },“]”},“\”实体(\ \ \ \ \ \“人”,\ \ \“VincentVanGogh:9 vq62 \ \ \“\”,人\“\”},“实体”),typeset`allassumptions$=“type”->“clash”,"word" -> "van gogh","template" -> "假设\"${word}\"是${desc1}。改为\${desc2}”,“计数”- >“4”,"Values" -> {{"name" -> "Person","desc" -> "a person",“输入”- >“* C.van +梵高_ *人——“},{"name" -> "Movie","desc" -> "a movie",“输入”- >“* C.van +梵高_ *电影——“},“name”->“solarSystemFeature”,“desc”->“太阳能系统功能”,“输入”- >“* C.van +梵高_ * SolarSystemFeature——“},{"name" -> "Word","desc" -> "a word",“输入”- >“* C.van +梵高_ *词“} } } },typeset`假设$=,排版'open $ $ = { 1,2 },typeset`querystate$=“online”->true,“允许”->真,“mparse.jsp”->0.472412`6.1258659143333281,“消息”->,DynamicBox[ToBoxes[AlphaIntegration 'LinguisticAssistantBoxes[",4,自动的,动态[typeset`query$],动态(排版'boxes $ $),动态(排版'allassumptions $ $),动态(排版'assumptions $ $),动态[typeset`open$],动态(排版'querystate $ $]],StandardForm],ImageSizeCache - > { 227。{ 7。,17.}},TrackedSymbols:>{         Typeset`query$$,排版'boxes $ $,排版'allassumptions $ $,排版'assumptions $ $,排版'open $ $,排版'querystate $ $ }],DynamicModuleValues:> { },UndoTrackedVariables:> {排版'open $ $ }],BaseStyle - > {“部署”},DeleteWithContents - >没错,可编辑- > False,SelectWithContents - >真]\)(“NotableArtworks”),10),“形象”)

然后看看他们用的是什么颜色(令人惊讶的是选择范围很窄):

ChromaticityPlot (%)
γ

ChromaticityPlot (%)

或者可以写一篇关于创造艺术的计算性文章,徳赢彩票游戏或音乐。

科学是什么徳赢彩票游戏?你可以通过观察行星的性质来重新发现开普勒定律:

γ

\!\(\*NamespaceBox["LinguisticAssistant",DynamicModuleBox[{Typeset`query$$ = "planets",typeset`box$=templatebox[“\”行星\“”,RowBox[{“EntityClass”,“(”,RowBox[{“\”行星\ ",“,”,“所有”},“]”},“\”EntityClass[\ \ \“行星\ \ \”,所有]\ ",“行星”“},“EntityClass”),$$ = {{"type" -> "Clash",“单词”- >“行星”,"template" -> "假设\"${word}\"是${desc1}。改为\${desc2}”,“计数”- >“4”,"Values" -> {{"name" -> "PlanetClass",“desc”->“指行星”,“输入”- >“* C.planets _ * PlanetClass——“},{"name" -> "系外行星",“desc”->“指外行星”,“输入”- >“* C.planets _ * ExoplanetClass——“},{"name" -> "MinorPlanetClass",“desc”->“指小行星”,“输入”->“*C.Planets-*MinorPlanetClass-”,{"name" -> "Word","desc" -> "a word",“输入”- >“* C.planets _ *词“}}}},typeset`假设$=,排版'open $ $ = { 1,2 },typeset`querystate$=“online”->true,“允许”->真,“mparse.jsp”->0.400862`6.054539882441674,“消息”->,DynamicBox[ToBoxes[AlphaIntegration 'LinguisticAssistantBoxes[",4,自动的,动态[typeset`query$],动态(排版'boxes $ $),动态(排版'allassumptions $ $),动态(排版'assumptions $ $),动态[typeset`open$],动态(排版'querystate $ $]],标准格式),图像尺寸cache->171.,{ 7。,17.,trackedSymbols:>typeset`查询$,排版'boxes $ $,排版'allassumptions $ $,排版'assumptions $ $,排版'open $ $,排版'querystate $ $}], DynamicModuleValues: > {}, UndoTrackedVariables: >{排版'open $ $}], BaseStyle - >{“部署”},DeleteWithContents - >没错,可编辑- > False, SelectWithContents - >真]\)[{“DistanceFromSun”,“OrbitPeriod”}]

ListLogLogPlot(%)
γ

ListLogLogPlot(%)

也许你可以继续检查它是否有系外行星。或者你可以开始解行星的运动方程。

你可以看看生物学。这是人类线粒体参考序列的第一个开头:

GenomeData [{
γ

GenomeData[{“线粒体”,{1,150}}]

你可以开始把它分解成可能的密码子:

StringPartition[%,3]
γ

StringPartition[%,3]

在Wolfram语言中有大量关于各种事物的数据。徳赢彩票游戏但也有Wolfram数据存储库,它包含各种特定的数据集。就像这张美国州博览会的地图:

GeoListPlot [ResourceData [
γ

geolistplot[资源数据[“美国国家游乐场”][所有人,“地理位置”]

这是2010年以来颁布的国家宪法的云图:

γ

wordcloud[stringjoin[normal[resourcedata[“world constitutions”][选择[年颁布>\!\(\*namespacebox[“linguisticassistant”,dynamicmodulebox[typeset` query$=“2010年”,排版'boxes $ $ = RowBox [{“DateObject”,“(”,ROBOBOX { { },“2010”,}}),“]”},$$ = {{"type" -> "MultiClash",“单词”- >“”,"template" -> "假设${word1}引用\${desc1}。使用\“${word2}\”作为${desc2}。“计数”- >“2”,"Values" -> {{"name" -> "PseudoTokenYear",“word”->“2010年”,"desc" -> "一年",“输入”- >“* MC.year + 2010 _ * PseudoTokenYear——“},“name”->“Unit”,“单词”- >“年”,“desc”->“A单元”,“输入”- >“* MC.year + 2010 _ *单位——“} } } },typeset`假设$=,排版'open $ $ = {1},type eset 'querystate $$ = {"Online" -> True,“允许”->真,“mparse.jsp”->0.542662`6.18607404594303,“消息”->,DynamicBox[ToBoxes[AlphaIntegration 'LinguisticAssistantBoxes[",4,自动的,动态[typeset`query$],动态(排版'boxes $ $),动态(排版'allassumptions $ $),动态(排版'assumptions $ $),动态[typeset`open$],动态(排版'querystate $ $]],StandardForm], ImageSizeCache - > {86。{ 7。,18.}},TrackedSymbols:>{             Typeset`query$$,排版'boxes $ $,排版'allassumptions $ $,排版'assumptions $ $,排版'open $ $,排版'querystate $ $ }],DynamicModuleValues:> { },UndoTrackedVariables:> {排版'open $ $ }],BaseStyle - > {“部署”},DeleteWithContents - >没错,可编辑- > False,SelectWithContents - >真]\)&],“文本”] ]

通常人们对处理公共数据不感兴趣,但是有一些本地数据。其中一个方便的来源是Wolfram数据下降.在教育环境中,可以设置特定的数据库(或一般的云对象),以便某些特定组可以读取(和/或添加)它们。这是我为自己积累的一个数据库,显示我一天的心率。这是今天的节目:

DataListPlot[TimeSeries[Databin[
γ

日期列表图[时间序列[您的日期选项卡]]

当然,制作直方图也很容易:

直方图[TimeSeries [Databin [
γ

直方图(TimeSeries[YourDatabinHere]]

数学呢?徳赢彩票游戏数学中的一个关键问题是理解为什么事情是真的。传统的方法是证明。但计算论文提供了另一种选择。这些步骤的性质是不同的,但目标是相同的:展示什么是正确的,为什么是正确的。

举个简单的例子,我们来看看质数。以下是前50个:

表[[n],{ n,50 }
γ

表[[n],{ n,50 }

对所有这些质数取余余6

国防部[表[[n],{ n,50 },6
γ

国防部[表[[n],{ n,50 },6

但是为什么只有1和5发生呢?在素数2和3的平凡情况之后?我们可以通过计算得到。任何数字都可以写成6n+k对于一些nk:

表[6 n + k,{k,0,5 }
γ

表[6 n + k,{k,0,5 }

但是如果我们因式分解这些数,我们看看这个6n+ 1和6n+5是唯一不需要是倍数的数:

系数(%)
γ

系数(%)

计算机科学徳赢彩票游戏呢?例如,你可以写一篇关于实现欧几里得算法的计算论文,徳赢彩票游戏研究它的运行时间,等等。

定义一个函数,给出欧几里得算法的所有步骤:

gcdlist[现代,b_]:= NestWhileList[{去年[#],应用#]}&,{一个,b },最后[#]!= 0 &,1]
γ

gcdlist[现代,b_u]:=嵌套列表[最后一个[],应用#]}&,{一个,b },最后[#]!= 0 &,1]

找出200以下数字算法的运行长度分布:

柱状图(平(表[长度[gcdlist[我,j]],{我,200 },{j,200}]]]
γ

柱状图(平(表[长度[gcdlist[我,j]],{我,200 },{j,200}]]]

或者在现代,我们可以探索机器学习,开始,说,通过绘制部分MNIST手写数字数据集的特征空间图:

FeatureSpacePlot [ResourceData [[RandomSample[键
γ

FeatureSpacePlot [RandomSample[键[ResourceData [“MNIST”]],50 ] ]

如果你想深入了解软件工程,你可以写一篇关于HTTP协议的计算论文。徳赢彩票游戏这将从站点获取HTTP响应:

URLRead [
γ

URLRead(“https://www.wolfram.com”)

这显示了该URL网页上元素的树结构:

TreeForm(进口(错误的,aspectratio->1/2]“title=”treeform[导入[“http://www.wolframalpha.com”,{“HTML”,“XMLObject”},VertexLabeling - >假,宽度="497"高度="257" class="alignnone size-full wp-image-14978" />
γ

TreeForm(进口(" http://www.wolframalpha.com ",{“HTML”,“XMLObject”},VertexLabeling - >假,电气->1/2]

或者在一个完全不同的方向上,你可以谈论解剖学:徳赢彩票游戏

AnatomyPlot3D(左脚)
γ

AnatomyPlot3D(实体(“AnatomicalStructure”,“LeftFoot”]

怎样才能写出一篇好的计算论文?

在我看来,一篇好的计算论文,它必须尽可能容易理解。这种格式有很大帮助,当然可以。因为一篇计算性的文章充满了易于浏览的输出(通常是图形化的)。这立刻给人留下了一些印象这篇文章想要表达的是什么。计算论文是结构化文档,以封装良好的片段交付信息。

但最终还是要由计算论文的作者来解释清楚。但另一件有帮助的事情是,计算论文的本质是它必须有一个“计算叙事”——计算机可以执行的代码序列来完成论文中讨论的事情。一个人也许可以写一篇普通的文章,虽然没有多大意义,但听起来仍然很好,一个人最终不能在计算论文中做这样的事情。因为最终代码就是代码,而且还得跑着做事。

那么,哪里会出错呢?好吧,喜欢英语散文,Wolfram语言代码可能非常复杂,很难理解。在一篇好的计算文章中,普通的文本,和代码,应该尽可能的简单和干净。我试图通过说每个输入部分至多应该有一行或两行长,并且输入的标题应该总是只有一行长来实现这一点。如果我想做一些事情,它的核心(可能不包括显示选项等)需要的不仅仅是一行代码,然后我把它拆开,分别解释每一行。

在我看来,另一个重要的原则是:要明确。没有变量,说,隐式存储单词列表。实际上至少显示了列表的一部分,所以人们可以清楚地看到它是什么样的。当输出很复杂时,找到一些表格或者可视化的东西,让你感兴趣的特性变得明显。不要让“关键结果”隐藏在角落里;确保你设置的方式使它成为最重要的。

使用笔记本的结构化特性。用章节标题分解计算文章,再次有助于使他们容易脱脂。我遵循的风格是在每个输入之前都有一个“标题行”。如果这段话重复了一段话,不要担心;想想标题,有些人仅仅是“看着图片”就能读懂图片的含义,在他们深入到完整的文本叙述之前。

Wolfram笔记本的技术使得加入互动元素变得非常简单,就像操作,进入计算论文。有时这很有用,甚至是必要的。但是交互元素不应该被过度使用。因为只要有一个元素需要交互,这就降低了浏览文章的能力。

有时需要大量的数据或代码来建立一篇特定的计算论文。云对于处理这种情况非常有用。只需将数据(或代码)部署到Wolfram云,并设置适当的权限,以便在执行文章中的代码时自动读取。

笔记本还允许“反向关闭”单元格,使输出单元格立即可见,即使生成它的输入单元格最初是关闭的。这种代码隐藏通常应该避免在计算论文中出现,但有时它在文章的开头或结尾很有用,或者是对即将发生的事情给出一个指示,或者包括一些更高级的东西,你不想详细介绍它是如何制作的。

好吧,如果写了一篇计算论文,说,作为家庭作业,如何评估它?第一,简单的问题是:代码运行吗?这几乎可以自动确定。在那之后,评估过程非常类似于一篇普通论文。当然,将单元格添加到笔记本中,以便对其中的内容进行评论,这既好又容易。这些单元格可以包含可运行的代码,例如可以获取文章中的结果并处理或检查它们。

有好的计算论文的原则吗?以下是一些候选人:

0.明白你在说什么!!)徳赢彩票游戏

1.找到最直接最直接的方法来表达你的主题

2.将每一段Wolfram语言输入的核心保留到一两行

3.尽可能多地使用显式可视化或其他信息表示

4。尽量让每个输入+标题都能被独立理解

5.将不同的主题或方向分成不同的小节

学习语言

计算论文的核心思想是用Wolfram语言表达计算思想。但要做到这一点,一个人必须懂这种语言。现在,不像人类语言,Wolfram语言是显式设计的(并且,是的,这就是我在过去30多年来一直在做的事情)遵循明确的原则,并尽可能容易地学习。但仍有很多工作要做。

Wolfram语言的一个特性是——就像人类语言一样——它通常读起来比写起来容易。这意味着让人们学习他们需要什么来写计算论文的一个好方法是让他们先读一堆论文。也许到那时他们就可以开始修改这些文章了。或者他们可以开始写"笔记论文"基于在LiveCoding或其他课堂课程中生成的代码。

随着人们书写Wolfram语言越来越流利,有趣的事情发生了:他们开始用语言表达自己,并使用Wolfram语言输入来承载计算论文中重要的叙述部分。

当我写作的时候Wolfram语言简介(它本身在很大程度上是由一系列计算论文组成的)我有过一次有趣的经历。在书的开头,用英语解释计算练习相当容易(“用前10个方格做一张表”)。但在书的后面,这变成了一个令人沮丧的过程。

用Wolfram语言表达我想要的东西很容易。但是用英语表达这个词又长又别扭(而且听起来有法律术语的倾向)。这就是使用Wolfram语言的全部意义,我花了30多年来建造它的原因是:因为它提供了更好的,表达计算思想的更清晰的方式。

人们常说,你使用的语言决定了你的思维方式。目前还不清楚这在人类语言中有多正确。但在计算机语言中绝对是这样。Wolfram语言最强大的功能之一是,它帮助人们形成清晰的计算思维。徳赢彩票游戏

传统的计算机语言是关于编写描述计算机应该做什么的细节的代码。徳赢彩票游戏Wolfram语言的意义在于提供一种更高层次的东西——能够立即谈论世界上的事物,徳赢彩票游戏这可以让人们尽可能直接地把它作为一种计算思维的媒介。从某种意义上说,这就是一篇好的计算论文的可能之处。

计算论文的漫长道路

现在我们有了成熟的计算论文,我意识到我已经走上了通向他们的道路近40年.起初,我把交互式计算机输出和刻录的描述:

交互式计算机输出示意图

1981岁,当我建立SMP时,我经常编写文档,其中穿插代码和解释:

代码穿插解释

但直到1986年,当我开始记录什么变成了Mathematica和Wolfram语言时,我开始认真地开发一种风格接近于我现在喜欢的计算论文的风格:

Wolfram语言版本1文档

随着。的释放Mathematica 1.0在1988年另一个关键因素是Wolfram笔记本的发明。笔记本电脑的形式至少在表面上非常类似于它们今天的样子(而且在很多方面已经比25年后开始出现的仿制品更加复杂!)并且能够包含文本,可执行代码,绘图,等。

早期的Mac笔记本电脑

起初,笔记本电脑只能在Mac和NeXT电脑上使用。几年后,它们被扩展到Microsoft Windows和X Windows(后来,Linux)。但很快人们开始使用笔记本电脑来提供他们所做的报告,徳赢彩票游戏创造丰富的讲解和教材。几年之内,开始有基于笔记本的课程,还有笔记本打印的书,备有互动版本的唯读光碟:

笔记本出版的例子

从某种意义上说,计算论文的原材料在90年代初就已经存在了。但是要真正让计算论文成为它们自己的一部分,需要云的发展,以及现在Wolfram语言的一部分的广泛的计算知识。

到了1990年,完全有可能创造出一本叙述性的笔记本,人们这样做了,尤其是像数学这样的主题。徳赢彩票游戏但是如果有真实的数据,事情变得一团糟。必须确保所需要的任何东西都能从分发CD-ROM或任何东西中适当地获得。我们创建了一个球员的笔记本非常早,有时会和笔记本一起分发。

但是在过去的几年里,特别是随着。的发展Wolfram云,事情变得更加流畅。因为现在您可以无缝地将内容存储在云中并在任何地方使用它们。你可以直接在云端使用笔记本,只是使用web浏览器。此外,多亏了大量的用户帮助创新(包括自然语言输入)。用Wolfram语言编写变得更加容易,而且通过这样做可以实现更多的功能。

我认为重要的是,它已经变得足够轻,可以产生一篇很好的计算性文章,这是很有意义的,无论是专业的撰写报告,或者作为一个学生做作业。

古代教育历史

学生写计算论文的想法在现代是一种新事物,徳赢中国现在的技术使之成为可能。但是有一种奇怪的共鸣来自遥远的过去。你看,如果你几百年前在美国学过数学,你要做的一件大事就是写一本所谓的密码书,在这本书里,你花了几年时间仔细地写下了一系列问题的解决方案,把解释和计算混在一起。当时的想法是你把你的密码本留到余生,当您需要解决像它所包含的问题时,请参考它。

好吧,现在,通过计算论文,你可以做同样的事情。你可以解决的问题比你用手工计算要复杂得多,涉及面也广得多。但就像密码书一样,你可以写计算文章,这样它们将来对你有用,尽管现在你不必手工模仿计算;相反,您只需编辑计算论文笔记本并立即重新运行其中的Wolfram语言输入。

事实上,我只是最近才知道如何加密书籍。徳赢彩票游戏在大约2徳赢彩票游戏0年的时间里,我一直把一个奇怪的手写笔记本作为一件艺术品(创作于1818年,它说,某个叫乔治·雷曼的人,很显然的Orwigsburg,宾西法尼亚),像这样的页面:

密码书

我现在知道这是一本密码书,在这一页描述了如何找到“垂直物体的高度…通过给定阴影的长度”。当然,我无法抗拒现代计算论文的类比,哪一个不用说,可以更详细一点。

求太阳当前的位置为方位角,高度:

SunPosition []
γ

SunPosition []

为单位高度的对象查找阴影的长度:

1 / Tan(SunPosition[][[2]]]
γ

1 / Tan(SunPosition[][[2]]]

在10英尺的阴影下,找到制作它的物体的高度:

谭[SunPosition[][[2]]] 10英尺
γ

谭[SunPosition[][[2]]] 10英尺

路的前方

我喜欢写文字文章(比如博客文章)。但我更喜欢写计算论文。因为至少对于我想要传达的很多东西,我发现这是一种更纯粹、更有效的方法。我可以用很多单词来表达一个想法——或者我可以只给出一小段Wolfram语言输入,它非常直接地表达了这个想法,并通过生成(通常是非常可视化的)输出来展示它是如何工作的。

当我写我的大书的时候一种徳赢中国新的科学(1991年至2002年)无论是我们的技术还是世界,都没有完全准备好以现在可能的形式进行计算。我为这本书所做的研究记录了成千上万的Wolfram笔记本。但当我们真正开始写这本书的时候,我只是展示了这些记事本的结果——包括书后面的注释中的一些代码。

但是现在,这本书的故事可以用我已经开始编写的计算文章来讲述。(只是为了好玩,我一直转播画面我正在做的一些工作就是创造这些)非常令人满意的是书中的思想可以清晰而清晰地在计算论文中传达。

计算论文有很大的潜力。事实上,我们现在正在开始收集“主题探索”的项目,利用计算论文以前所未有的清晰和直接的方式探索广泛的主题。就像我们的Wolfram示范项目(现在有11000多个Wolfram语言支持的演示)。下面是我写的一个典型例子:

中心极限定理

计算论文开辟了各种新的交流方式。徳赢中国直接展示计算实验和探索的研究论文。描述已发现事物的报告,但允许立即调查其他案件。而且,当然,计算机论文为学生(和其他人)定义了一种非常直接和有效地展示他们所学知识的方式。

计算论文的写作和阅读都令人满意。徳赢彩票游戏就好像在交流思想时,我们最终能够超越单纯的人类努力,真正利用计算的力量。对我来说,将Wolfram语言构建为计算通信语言之后,看到它如何在计算论文中如此有效地进行通信,真是太棒了。

当我收到一篇格式很好的计算论文时,我感到非常高兴。因为我马上就知道我会得到一个我能理解的故事。不会有各种缺失的来源和隐藏的假设;只有Wolfram语言输入是独立的,我可以自己出去学习或跑步。

现代网络世界给我们带来了一些新的交流方式,比如博客,徳赢中国和社交媒体,像维基百科。但所有这些仍然遵循文字+图片的基本概念,这是自识字时代开始就存在的。通过计算论文,我们终于有了一些新的东西——看到它使一切成为可能将是令人兴奋的。徳赢中国

12评论.显示所有»

  1. 你好,斯蒂芬
    这个博客深深地打动了我,离提交一篇完全以数学笔记形式撰写的统计学博士论文只有几周的时间了。
    我有一个附录,在其中我对这种陈述形式提出了异议,我引用Richard Crandall 1991年出版的《科学的数学》的序言。
    今天我读了你的计算论文博客,并添加了一个新的部分来引用这个新术语来表示旧的想法。徳赢中国
    我已经使用编程的“反向关闭”单元格的所有标题的数字,事实证明,这对于制作吸引人的文档是非常有价值的,而这正是我在计算性文章中一直想要表达的。
    我应该感谢你,然后,感谢你的精神支持,希望考官同意我们的做法!
    最好的祝愿
    巴里

    巴里斯托克斯
  2. 好的文章!
    作为概率论和统计学的讲师,关于中心极限定理的笔记给我留下了特别深刻的印象,我想知道是否还有更多关于这些主题的笔记。

    鲁本
  3. 你可能会对计算机科学家Donald Knuth开发的“精通编程”的想法感兴趣。

    吉姆·泰森
  4. 我们不要忘了计算期刊文章,所有人都可以访问数据的地方。

    大卫·G。鹳
  5. 你写,“真正使这项工作得以开展的是Wolfram语言。”我很困惑。你的计算文章和你从降价中得到的有什么不同?iPython笔记本,等等?

    • Wolfram语言支撑着我们的技术堆栈,创建一个内聚过程。我们的笔记本电脑提供了完整的数据导入生产环境,原型,操作和测试都可以在同一个笔记本上完成,就像部署到云计算或生成最终报告或演示文稿一样。它不需要像iPython笔记本那样与不同的工具捆绑在一起,使我们的笔记本更适合计算论文,因为您不需要设置您的笔记本使用特定的库。
      最重要的是,因为我们的语言统一了我们的技术堆栈,像python这样相互不兼容的解释程序没有问题,甚至当你移动到Jupyter它可以使用多种语言内核,确保每种特定语言都有所需的包变得越来越困难。记笔记很有用,但是ipython笔记本的降价是不可折叠的,这使得它们很难构造。
      另一个关键特性是内置知识库。跨越数千个领域,知识库包含从主要来源直接获得的精心策划的专家知识。它不仅包括上万亿的数据元素,还有大量的算法封装了几乎每个领域的方法和模型。

      行政
  6. 我同意计算论文是一个重要的创新。他们一直都是数学的一个组成部分,这是多么美妙啊……这个想法的含义还在继续显现。我认为有趣的是,它给出了一个新的、更好的答案,来回答“数学家做什么?”徳赢中国计算性的文章不仅仅是一个问题的解决方案,或者描述如何解决问题,但是一个完整的模型和导游比印刷的纸张更能体现解决问题的过程。

    一个明显的问题是——计算机论文能否以一种深层次的方式相互联系,从而使论文链成为一个连续的证明?如。一串计算论文能成为一个完整的计算证明吗,说,怀尔斯对费马定理的证明?如果不是这样,缺失的是什么?一篇计算文章能证明另一篇文章中可以“称为”的定理吗?比如计算函数?在我看来数学文献应该被看作是一个庞大的相互联系的结构,而不是不相容符号的孤岛。

    为了充分理解这种形式的含义,我打算自己写一些计算论文。过去让我止步不前的困境是,我想写的几乎所有东西都无法(我相信)用Wolfram语言表达,徳赢彩票游戏由于它们涉及直接操作(拖放和装配多聚ominoes,例如)作为输入,Wolfram语言似乎不支持这个。

  7. 你会考虑发布一个样式表来编写这种文档吗?还是输入描述文本单元格的默认样式?您使用的单元格样式(据我所知)在默认样式表中不可用。我仍然对这些单元格使用旧的mathtitle,但希望使用更新的样式。

    丹尼尔
    • 输入描述单元格的样式将在下一个版本中可用,称为“代码文本”,虽然只能通过格式>样式>的其他对话框访问。之后将提供完整的样式表支持。

      行政
  8. 我使用这些计算笔记本(wolfram alpha / jupyter)的唯一问题是,图形与文本混合在一起,使我难以集中精力。我认为一个简单的双列用户界面可能更好,将文本与计算分离。

    De大凯文
隐藏评论”

?斯vwin中国蒂芬·沃尔夫拉姆,有限责任公司 条款| RSS