前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >发布笔记本的新时代

发布笔记本的新时代

作者头像
WolframChina
发布2019-12-18 10:37:26
4890
发布2019-12-18 10:37:26
举报
文章被收录于专栏:WOLFRAMWOLFRAM

我们已经在这块领域投入了很多年的精力,然后最终有所收获:一个非常流畅的将Wolfram Notebook(笔记本)发布在网络上的工作流程——这也将交互发布和允许计算的交流推到了一个新的高度。

在桌面或云端创建一个Wolfram笔记本——使用所有Wolfram语言和Wolfram笔记本系统的功能。然后只需要按一个按钮将其发布在Wolfram云端——然后任何人可以立刻在任何地方不仅阅读到这个笔记本还能与其交互。

将丰富的、可交互可计算的内容发布到网上会变得前所未有的容易。而且加上Wolfram语言作为可计算语言的助力,可以推进一个计算式交流的新时代,而且会是“computational X”发展的一个重要驱动力。

当Wolfram笔记本发布到云端时,就可以立即被人们阅读并与其互动。但还不仅止于此:如果你点击“Make your own copy(制作自己的副本)”按钮,你会得到你自己的笔记本副本,你不仅可以阅读并与其互动,还可以编辑并直接在网络上进行计算。这也就意味着笔记本不仅仅能让你阅读,还可以立即使用。

顺便说一句,我们设置成这样是想让所有人都能有一份自己的已发布笔记本的副本并对其加以使用,用户所需要的只是一个(免费的)基础云端账户 - Wolfram Cloud Basic Account - https://www.wolframcloud.com/。拥有基础云端账户的用户还可以将他们的笔记本发布到云端,但是如果他们想在云端存储更久的时间那就需要升级账户了。(我们还在通过Wolfram Foundation开发一个公益永久笔记本内容管理的档案库-https://notebookarchive.org/。)

还有很多其他重要的工作流程。在电脑上,你可以立即将笔记本下载到桌面,并在本地用已经免费开放很久的最新版本的Wolfram Player使用它们。你还可以在IOS设备上用Wolfram Player应用本地运行该笔记本。而且Wolfram Cloud应用(IOS或安卓系统)会以流线方式为你创建一个可以在云端使用的笔记本副本。

你可以将Wolfram笔记本发布到云端,而且你可以将其用作一个完整内容丰富的网页。但你也可以把笔记本嵌入一个已存在的网页并为其提供从单个(可以是动态更新的)图片到完整的交互界面或是嵌入文件等等丰富的内容(https://reference.wolfram.com/language/WolframNotebookEmbedder/)。

顺带提一句,让Wolfram笔记本在云端使用的科技还可以为你提供立即设置Wolfram语言API或形成界面的功能,可以直接在网络上使用,或通过数据库用Python或Java等语言进行使用。

笔记本的故事

我们在1988年开发出的笔记本是Mathematica第一版的界面,在之后的30年中,有无数的Wolfram笔记本相继面市。有些记录了工作进程,有些是练习,有些包含了大大小小的发现。有些是展览、讲座或者线上书籍或论文。还有些是交互展示。而全范围计算语言Wolfram语言的出现让更多笔记本变成了丰富的计算式小论文,以前所未有的效率用一种混合人类语言和计算机语言的方式交流。

这些年我们一直在完善笔记本的使用心得,坚持进行用户交互界面创新,并不断地在为桌面系统调试和最优化。但是让我们得以开始做全范围笔记本网络发布的是——在这么多年的努力后——我们现在有一个精心研发的可以在云端基本实现和桌面使用功能相近的Wolfram笔记本版本。

在桌面或云端创建一个笔记本,并写上代码、分级结构、交互元素、图形等等。等这个笔记本在云端发布时,人们就可以像访问任何网页一样访问这个笔记本,只是这个笔记本会自动“活过来”并且允许所有方式的交互。

有些交互会在浏览器内本地发生,有一些则会在云端自动访问服务器。但是最终,都会反映我们的整个超架构方法——Wolfram笔记本会在桌面端、云端和移动端无缝运行。一旦创建了你自己的内容,就可以让人们不仅可以在任何地方阅读它,还可以与其交互、修改并进行计算。

笔记本里有什么?

如果这是你第一次在云端看见Wolfram笔记本,可能觉得它看起来就像一个普通的网页。但是实际上这是一个动态的计算型文件,你可以即刻用它做很多事情。如果里面有图形,你可以立即调整其大小。如果里面有三维图形,你还可以旋转它。笔记本通常都是分级结构的单元格,你可以立即打开和关闭单元格组以浏览整个分级结构。

笔记本中还可以有动态交互内容。在Wolfram语言中,像Manipulate这样的函数可以自动在笔记本中设置用户交互界面,比如滑块等等的内容——然后这些内容会在已发布的云端笔记本中自动变为动态内容。还有其他可以是动态的内容:使用像Dynamic这样的函数可以动态实时地从Wolfram知识库或Wolfram Data Drop中提取数据,或者——如果用户允许的话——可以从用户的电脑相机或麦克风中提取数据。

你在写计算型论文的时候你通常希望人们可以阅读你的Wolfram语言代码,因为这是你内容交流的一部分。但是在Wolfram笔记本中,你还可以使用Iconize这个函数对你的代码细节做一个图像化的版本(比如设置如何展示图形的选项):

当你在Wolfram笔记本中做计算时,通常有一系列的In[ ] 和Out[ ]单元格。但是你还可以双击Out[ ]单元格来关闭In[ ]单元格,这样读者可以先看到输出,而不是产生这些输出的计算型语言代码。

Wolfram语言一个很重要的特色是其整合性和独立自足。意思是你可以只截取一段代码,并期待它可以在其他地方同样有效。在发布的笔记本中,你只需要点击一小段代码,复制并粘贴到你在做的云端或桌面端的笔记本中。

Wolfram笔记本这些“现成的”交互内容的一个主要来源是Wolfram演示项目中的12,000+的交互型演示。点击复制到复制板这样你就可以把整个演示(包括闭合单元格和其中的代码)粘贴到你的笔记本。

一旦整合好了你想要的笔记本,你就可以发布了。在桌面端,点击“文件”>“发布到云端”。在云端,只需点击“发布”。你可以为笔记本指定名称——或你可以让系统自动选一个UUID名称。总之你可以用任何笔记本——甚至是那些尺寸比较大的——在云端快速发布。

计算型期刊

在1988年我们发明了笔记本后不久,我就开始思考如何创造出一种新的带有计算型日志的发布方式。而且实际上,甚至在很早的时候,就已经出现了应用这一功能的精彩范例。

但是计算绑定在桌面端限制了可以发挥的空间。甚至在有网络之前,我们开发了一个将笔记本分布成桌面文件的系统。后来,当网络浏览器出现以后,我们又开发了可以从浏览器内部使用桌面计算功能的插件。而且在1990年代中期,我们开发了通过网页内的网络服务器生成内容的机制。但这只有现代网络技术和Wolfram Cloud的整个流线型笔记本发布方式的架构才使得今天这些功能得以实现。

我们现在有了这些技术,我认为终于有一个机会可以转换科学和技术内容的形式,让它们的发布充分利用计算型范式。是的,会有很多交互型图形,任何人都能在网络上使用它们。而且是的,它们可以被动态更新,比如说在Wolfram知识库中或其他地方基于实时的数据。

但是尽管这些事情很重要,我认为它们比起Wolfram笔记本对知识的利用程度和复制性还是很苍白。因为Wolfram笔记本不仅会给你阅读的内容并让你与其交互,它还能给出你在使用——或者复制——文件所需的任何东西。

无论是直接在笔记本内部,还是在Wolfram数据资源库,或云端的任何其他地方,都会有从比如观察或实验得来的底层数据。在笔记本中会有根据这些数据计算图形或其他输出的代码。而且是的,这些代码可能就是在那里,或者隐藏在一些不可阅读的计算式脚注中。

但是还有一些更强大的功能只能由发展到现在的Wolfram语言可以实现:Wolfram语言不仅可以提供计算机可以运行的代码,还能够把内容表达成人类可以直接读懂的方式。技术性论文通常使用数学标注精确地表达数学概念。我们这些年一直想要做的是让Wolfram语言提供一种可以解释计算型概念的全范围计算型语言。

比如你现在有一篇用Wolfram笔记本呈现的技术性论文,很多内容都是用Wolfram语言编写的。那你能对它做什么?你当然可以运行这些计算型语言代码来确保输出和论文的描述一致。但是更重要的是,你可以截取一部分其中的计算型语言代码并以此为基础,用在你自己的笔记本里为不同的目的运行它们,或修改这些代码等等。

当然,这个概念能真正实现是很不容易的,依靠了我们做的大量开发工作。因为首先也是最重要的,这需要一个开发过程中有连贯性的全范围符号计算型语言——也只有这样才能实现即使截取一小段代码它们也能在不同环境下独立工作。但还有更多,现在能工作的代码未来也要能运行正常,这一点很重要,我们在过去30年一直有一套开发规则使得Wolfram语言在兼容性方面有卓越的历史成绩。

70年代我刚开始写技术性文章的时候,通常都是手写的文章。后来我们会用打字机,然后如果有期刊想要刊登这些文章,通常要经过审稿和排版,然后才会印刷出来。这一过程不仅费人工,而且不可避免的会有高成本。

到80年代,带有文字处理器和排版系统的个人电脑开始普及,而且不久之后就出现了照片式最终电子版的论文。(1986年我开始做当时可能是第一家形成惯例接受这种版本论文的期刊。)

然后随着科技发展,作者可以呈现的质量和印刷商需要的完整的排版标准逐渐趋近,使得期刊的作用更多走向了品牌和对文章的挑选,但很多人质疑期刊这个作用的价值。

但是对于计算型期刊,那就是一个崭新的故事了。如果一篇论文含有计算型代码,那立刻浮现出的问题就是,这个代码是否可以运行,以及是否可以正确运行。这有点像以前对一篇论文进行编辑排版的过程。这里需要有真正人工的工作和主观理解来确保代码正确运行。好消息是可以利用软件质量保证的方法,而且还可以用现代机器学习的理论加以辅助。但是仍然还有其他工作需要做,计算型期刊的“官方发布”确实会增加价值,而且也有确实的理由需要把计算型期刊制作成有条理有商业潜力的作品。

我们这些年一直在检查和调整Wolfram演示项目的内容。而且现在也有所成效。我们可以自信的说我们现在发布的所有演示都可以运行,而且在未来也一样可以运行。对于Wolfram数据资源库,我们也有一套检查流程来保证数据可以在合适的标准上进行计算。

终有一天会出现“首次运行”的计算型期刊,在这里新结果照惯例在计算型论文上发表报告。但是在此之前,我们可以期待一下辅助计算型期刊可以提供的真正的“以计算为基础”和“以数据为基础”的论文发布。过去还没有合适的技术来实现这一设想。但是现在有了Wolfram语言和新的Wolfram笔记本流线网络发布方式,有了实现这些设想所需要的所有条件。

改变我工作的方式

如果一样东西可以改变人们工作的方式,那么这是一个很重要的判断信号。对我而言在笔记本发布方面这就是正在发生的事情。

我可能会在搭建笔记本的时候做一个演讲,比如做一个现场试验或者演示。然后在演讲的结尾,我会做一点新的东西:我会在云端发布一个笔记本(通过按键或者使用CloudPublish)。然后我会做一个笔记本URL的二维码(比如使用BarcodeImage),然后在大屏上展示。听众可以用手机扫描二维码,然后点击URL,这样就可以立即在他们的手机中的Wolfram Cloud使用我的笔记本了。

我可以说关于笔记本发布我可以越写越多,因为我现在有一个很方便的方法可以发布我写的东西。我通常会针对一些内容做计算研究。过去我可能会在我的文件系统中储存我做的笔记本(是的在过去三十年中我有大量的文件)。但是现在只要加一点文本就可以很快把笔记本变成计算型论文,我可以即刻把它发布到云端然后所有人都可以访问它们。

有时候我会像这里一样放一个已发布笔记本的链接(https://www.wolframcloud.com/obj/blog-posts/Published/TheNewWorldOfNotebookPublishing.nb),或者有时候我会把这个发在推特上(https://twitter.com/stephen_wolfram/status/1181703254767554560)。但是重点是,我现在有一个非常流线的方法可以直接让人们访问我做的计算工作,而且他们可以与之交互并在此基础上做自己想要的东西。

从科技发展的角度来看,发展到现在的道路很长也很复杂,包括了很多在软件工程领域的重大成就。但是结果的概念很简单清晰,同时也很强大——而且我认为可以有一个新的以计算为基础的交流:一个笔记本发布的新时代!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WOLFRAM 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档