我写了本书来教沃尔夫拉姆语

Wolfram语言简介是可用的在印刷中free on the web等。

Wolfram语言简介

我不确定我是否会再写一本书。我的最后一本书一种新的科学-我花了十多年的时间集中精力工作,and is thelargest personal project我曾经做过。

但不久前,我意识到还有一本书我必须写:一本书可以介绍那些不懂编程的人沃尔夫拉姆语and the kind of 金宝博188投注computational thinking it allows.

结果是Wolfram语言简介,今日出版在印刷中free on the web等。

Wolfram语言入门网站

这本书的目标是把人们从零带到他们对Wolfram语言足够了解的程度,这样他们就可以经常使用它来为他们想做的事情创建程序。当我说“零”时,我的意思是“零”。这是一本适合所有人的书。它没有任何编程知识,或数学(超出基本算术)或者别的什么。它只是从零开始并解释事情。我试着让它适合成人和儿童。I think it'll work for typical kids aged about 12 and up.

过去,像这样的书是不可想象的。The necessary underlying technology just didn't exist.严肃的程序设计总是很困难,而且没有一个好的方法来连接现实世界的概念。但是现在我们有了Wolfram语言。花了三十年时间。但是现在,我们已经积累了足够的知识,并且对编程过程进行了足够的自动化,使得几乎所有人都能从零到计算所能达到的极限,这实际上是现实的。

本书的第(123)页

但实际上应该怎么做呢?你应该怎么解释?按什么顺序?Those were challenges I had to address to write this book.我写了一篇程序员快速入门在大约30页的篇幅中,向已经了解现代编程的人们介绍了Wolfram语言的核心概念。但是,那些对编程一无所知的人呢?

多年来,我发现了各种各样的机会,向像这样的人展示现在的Wolfram语言。现在我已经用我的经验来找出在书中应该做什么。

这是一次谈话

本质上,这本书使读者与计算机交谈。有两个伟大的事物about the Wolfram Language that make this really work.第一,语言是象征性的,所以任何人要处理的事情-颜色,安形象,a图表,对话框中可以有任何内容。第二,语言可以是纯功能的,所以一切都是无状态的,每个输入都可以是独立的。

Wolfram语言基本介绍第25页的一部分

Wolfram语言也非常重要内置知识这让我们可以立即用真实世界的东西来计算。

Wolfram语言入门第79页的一部分

Wolfram语言入门第96页的一部分

哦,可视化也非常重要,所以很容易看到人们在计算什么。

Wolfram语言入门第48页

从哪里开始?

好啊,但从哪里开始呢?这个第一页是关于算术的,因为这是一个人人都能看到计算实际发生的地方:

Wolfram语言入门第一页

有一个部分叫做词汇,因为它就是这样的:一个人正在学习一些“词汇”用Wolfram语言。Then there are exercises,我要说的是很快.

好啊,但一旦做了算术,接下来应该去哪里?我决定要做的是立即functions-首先从算术的角度介绍它们。这样做的好处是,虽然函数的概念可能是新的,它正在执行的操作(即算术)是熟悉的。

Wolfram语言入门第3页

一旦你理解了功能加上,一个人可以立即进入如下功能马克斯没有特殊的输入表单。什么马克斯does isn't that exciting,不过。所以作为一个稍微令人兴奋的功能,我接下来介绍的是随机整数-人们经常喜欢一次又一次的奔跑,看看它会产生什么。

好啊,那么接下来呢?显而易见的答案是我们必须引入列表。但是我们应该如何处理列表呢?做一些像从中挑选元素这样的事情并不令人兴奋,很难马上就明白为什么它很重要。因此,我决定让我为列表显示的第一个函数列表图.It's nice to start getting in the idea of visualization—and it's also a good example of how one can type in a tiny piece of code,and get something bigger and more interesting out.

Wolfram语言入门第7页

事实上,最简单的例子是范围,在这一点上我也展示了。范围是一个很好的方法来显示计算机实际上在计算什么,结果很容易理解。

但是,好吧,所以现在我们要强化函数的概念,和功能一起工作。函数反向在实践中并不常见,但很容易理解,接下来我介绍一下,然后加入.

Wolfram语言入门第8页

好的是介于反向范围加入we have a little microlanguage that's completely self-contained,但是让我们做各种各样的计算。而且,当然,无论做什么计算,我们可以立即看到结果,无论是象征性的还是视觉的。

Wolfram语言入门第9页

接下来的几节将讨论显示操作在列表中,加强已经说过的话,并介绍在实践中有用的各种功能。然后它就开始了-一个非常普通和强大的功能,实际上,它打包了很多本来可能需要显式循环的内容,等等。

我从简单的版本开始,没有任何迭代变量。I take it for granted (as people who don't know "better"做!)那个可以生成图形列表,就像生成数字列表一样。(当然,事实上,它可以做到这一点,是Wolfram语言基本符号特征的结果。)

Wolfram语言入门第19页

下一个重要步骤是将变量引入.我想了很多关于如何做到这一点,决定最好先展示的是纯符号版本。毕竟,我们已经介绍了函数,有了符号版本,我们可以立即看到变量的去向。但现在我们有了使用变量,我们真的可以去城里,开始做人们认为的“真正的计算”。

Wolfram语言入门第20页

The Arc of the Book

In the first few sections of the book,the raw material for our computations is basically numbers and lists.接下来我想做的是证明还有其他东西可以用来计算。我选择colors作为第一个例子。颜色很好,因为(a)每个人都知道它们是什么,(b)你可以用它们进行实际计算,(c)它们产生彩色输出!!).

Page 25 of An Elementary Introduction to the Wolfram Language

颜色之后,我们准备好了绘图.我还没谈过坐标,所以我只能显示单独的图形对象,没有位置信息。

Wolfram语言入门第29页

绝对没有理由不去看3D,and I do.

Page 30 of An Elementary Introduction to the Wolfram Language

现在我们都准备好了“高级”的东西:交互式操作.很像,除了一个完整的交互式用户界面。And since we've introduced graphics,这些可以是接口的一部分。人们已经在许多消费软件中看到了交互界面。我的经验是,他们非常兴奋能够从零开始创造他们自己。

Wolfram语言入门第33页

下一个,也许我在书中介绍的令人惊讶的事情是图像处理。对,图像处理背后有很多复杂的计算。但在Wolfram语言中,这都是内部的。人们看到的只是功能模糊色盲-他们的目的很容易理解。

It's also nice that people—especially kids—can compute with images they take,or drag in.这实际上是书中的第一个例子,其中有大量的数据从外部进入计算。(我需要一个该部分的样本图像,所以,对,我刚在那里抓拍了一本书。)

Wolfram语言入门第39页

接下来我说字符串和文本.字符串本身的操作非常枯燥。But in the Wolfram Language there's lots of interesting stuff that's easy to do with them—like visualizing word clouds from Wikipedia,or looking at common words in different languages.

Wolfram语言入门第47页

下一个封面sound,并讨论如何生成音符序列。在印刷的书里你听不到它们,当然,尽管小分数图标给人一些感觉。

Wolfram语言入门第53页

有人可能会想,“为什么不在图形之后谈论声音?”好,首先,我觉得把事情搞混也不错,有助于保持流程的有趣。但更重要的是,there's a certain chain of dependencies between different areas.For example,音符的名称被指定为弦,所以在音符之前必须先谈论弦。

接下来是“数组,或列表“。然后是“坐标和图形“。起初,我担心坐标太“数学”。但特别是在看到阵列后,理解坐标并不难。一旦有了二维坐标的概念,很容易进入3D。

Wolfram语言入门第65页

在书中的这一点上,people already know how to do some useful and real things with the Wolfram Language.所以我把下一节做了一种插曲,一个元部分,它给出了整体的感觉。范围沃尔夫拉姆语,以及如何查找特定主题和功能的信息。

Page 74 of An Elementary Introduction to the Wolfram Language

现在人们已经了解了一些抽象计算,是时候谈谈了real-world data,and to show how to access the vast amount ofdataWolfram语言与沃尔夫拉姆阿尔法.

Wolfram语言入门第77页

许多实际数据涉及单位,因此下一节将专门讨论working with units.完成后,我们可以谈谈地理计算: things like finding distances on the Earth,绘制地图。

Wolfram语言入门第93页

之后我再谈日期和时间.One might think this wouldn't be an interesting or useful topic.但它实际上是现实计算的一个很好的例子,它也是人们在各地使用的东西。

Wolfram语言入门第104页

Wolfram语言很强大。But it's based on a small number of ideas that are consistently used over and over again.书中的一个重要目标是涵盖这些想法。下一节讲选项-涵盖了一个在实践中被广泛应用的简单想法。

Wolfram语言入门第107页

覆盖选项后,我们将讨论一些通常被视为高级主题的内容:图形和网络.但我的经验是在现代,人们在日常生活中已经看到了足够多的图表和网络,所以用Wolfram语言理解这些图表和网络并不困难。当然,语言可以直接操纵它们,这有很大的帮助,作为符号对象的另一个例子。

Wolfram语言入门第115页

在图表和网络之后,我们准备好了另一个看似非常高级的主题:机器学习.But even though the internal algorithms for machine learning are complicated,在Wolfram语言中实现它的实际功能非常容易理解。And what's nice is that by doing a bunch of examples with them,人们可以开始对机器学习的核心思想有很好的高层直觉。

Wolfram语言入门第125页

在整本书中,我尽量保持简单。但有时这意味着我必须回去对我已经讨论过的一个主题有一个更深入的看法。“关于数字的更多信息“和“更多的可视化形式“有两个这样做的例子,包括当数字和可视化首次出现时会遇到的问题,但这需要说,以获得对这些领域的全面了解。

函数式编程

接下来的几节讨论了函数式编程.过去,函数式编程往往被视为一个复杂的主题,当然也不是教那些第一次学习编程的人的东西。But I think in the Wolfram Language the picture has changed—and it's now possible to explain functional programming in a way that people will find easy to understand.我从更抽象地谈论应用函数的过程开始。

Wolfram语言入门第141页

The big thing this does is set me up to talk about纯匿名函数.原则上,我可以早点谈这些,but I think it's important for people to have seen many different kinds of examples of how functions are used in general—because that's what's needed to motivate pure functions.

Wolfram语言入门第147页

下一部分是函数式编程的一些真正力量开始显现出来的地方。在摘要中,函数类巢穴巢图sound pretty complicated and abstract.但在书中的这一点上,我们已经介绍了足够多的Wolfram语言,有很多具体的例子可以给出非常容易理解的。

Wolfram语言入门第153页

接下来的几个部分涵盖了语言中一旦理解纯函数就被解锁的区域。有许多强大的编程技术是从少量的思想中产生的。

Wolfram语言入门第166页

功能编程后,接下来的大主题是模式and pattern-based programming.我本可以选择在书的前面讨论模式,但直到现在才真正需要它们。

Page 193 of An Elementary Introduction to the Wolfram Language

Wolfram语言中的模式之所以如此强大,是因为它更为基础:语言中所有事物的统一结构,基于符号表达式。If I were writing a formal specification of the Wolfram Language,我将从符号表达开始。And I might do the same if I were writing a book for theoretical computer scientists or pure mathematicians.

这并不是说符号表达是一个难以理解的概念。It's just that without seeing how things actually work in practice in the Wolfram Language,抽象地学习它们是很难激励的。但现在谈论它们是有意义的,尤其是因为它们让人看到了模式的全部力量。

整个堆栈

在书中的这一点上,我们正准备了解如何实际部署Web应用程序。还有几块要放在适当的地方去那里。I talk about联想—and then I talk about自然语言理解.内部,自然语言理解的工作方式是复杂的。但在Wolfram语言的层面上,虽然很容易使用,但是看看如何将它与事物联系起来,了解纯函数很有帮助。

Wolfram语言入门第213页

好啊,so now everything is ready to talk about将事物部署到Web.在这一点上,人们将能够开始创造有用的,他们可以与世界分享的实用软件。

Wolfram语言入门第217页

大约220页。But to me that's an amazingly small number of pages to go from zero to what are essentially professional-grade web apps.如果我们只是在谈论一些非常具体的应用程序,不会那么令人印象深刻的。但是我们谈论的是非常普通的应用程序,这几乎可以做任何计算。

Wolfram语言入门第224页

为变量赋值

如果你打开一本关于传统编程语言的书,比如C++或Java,您可能会看到的第一件事是讨论如何为变量赋值。But in my book I don't do this until第38节.在某种程度上,this might seem bizarre—but it really isn't.因为在Wolfram语言中,您可以做大量工作,包括部署一个完整的Web应用程序,而无需为变量赋值。

And this is actually one of the reasons why it's so easy to learn the Wolfram Language.因为如果你不给变量赋值,every piece of code in the language stands alone,每次跑步都会做同样的事情。但是一旦你给变量赋值,有隐藏的状态,您的代码将根据变量的值做不同的事情。

Still,在讨论了给变量赋值以及我们准备讨论的模式之后定义您自己的函数,这是在Wolfram语言中构建越来越复杂功能的方法。

Page 243 of An Elementary Introduction to the Wolfram Language

At this point,你对Wolfram语言的基本概念非常了解。But the last few sections of the book cover some important practical extensions.There's a section on字符串模式和模板.There's a section on储存物品,本地和云中。There's a section on进出口.还有一部分是关于数据集.不是所有使用Wolfram语言的人都需要数据集,但是当你处理大量的结构化数据时,它们是非常有用的。它们提供了一个有趣的例子,利用了来自Wolfram语言的许多不同思想。

论文部分

At the end of the book,我有一些基本的文章部分:关于编写好的代码,关于debuggingand about做一名程序员.我在这些章节中的目标是建立在我希望人们从阅读这本书的其余部分发展起来的思维方式上,然后交流一些更抽象的原则。

Wolfram语言入门第283页

组织演示文稿

I said at the beginning of this post that the book is essentially written as a conversation.几乎在每个部分,我发现增加两个附加部分很方便:问答和技术说明。问答的目标是有一个地方来回答人们可能会遇到的明显问题,不会分散主叙述的注意力。

Wolfram语言入门第127页

有几种不同类型的问题。有些是关于已经讨论过的功能的扩展。Some are about the background to it.还有一些问题(“被提升为权力”是什么意思?”)这对一些读者来说是微不足道的,但对其他读者则不是。

除了问答之外,我发现把我所说的技术笔记包括进去很有用。他们的目标是添加技术信息,并帮助那些在某些特定领域已经拥有成熟技术知识的人将其与他们在本书中阅读的内容联系起来。

练习

大部分章节的另一部分是练习集。绝大多数都是“写一段代码来做X”的形式——尽管有一些是“找到这段代码的更简单版本”。

Wolfram语言入门第51页

答案在所有的练习中,印刷本的背面和网络版都有额外的练习。当然,给出的答案只是可能的答案,它们几乎不是唯一可能的答案。

Wolfram语言入门第306页

写练习对我来说是个有趣的经历,在我思考诸如如何与AIS交谈.因为大多数练习实际上都说,“以英语写的描述为例,并将其转换为Wolfram语言代码。”如果你所做的足够简单,那么,英语作为一种描述语言也能很好地工作。但当你的工作变得更复杂时,英语不太好。在书的后面,I was often finding it much easier to write the Wolfram Language answer for an exercise than to create the actual exercise in English.

从某种意义上说,这是非常令人满意的,因为这意味着我们真的需要Wolfram语言来表达想法。有些东西我们可以用英语轻松表达,最终希望Wolfram Alpha能够理解。但是有很多东西需要Wolfram语言更高的结构和精度。

A Book?

在某种程度上,在当今时代,写一本可以印刷在纸上的书似乎很奇怪,而不是创建更灵活的在线结构。但我发现一本书的概念非常有用。对,一个人可以有一个网站,在那里你可以通过以下链接获得很多信息。但当人们试图系统地学习一门学科时,我认为有一个明确的有限的信息容器,如果期望按顺序消化,在那里你可以很容易地看到整体结构。

这并不是说把这本书放到网上是没有用的。现在这本书可以作为网站,在很多方面,这个网络版本工作得很好。但让我有点惊讶的是,我还是找到了实体书,with its definite pagination and browsable pages,对很多事情都有好处。

当然,如果你想学沃尔夫拉姆语,你实际上需要运行它。所以即使你用的是实体书,最好在你身边放一台电脑(或平板电脑),这样你就可以试试这些例子,做练习,等。如果你正在网上或云中阅读这本书,你可以立即这样做。但是有些人告诉我,他们发现重新输入这些例子确实很有帮助:他们通过这种方式更好地将它们内化,利用Wolfram语言中的所有自动完成和其他功能,输入代码很快。

书上没有什么

I call the book an "elementary introduction".就是这样。这不是一本完整的关于沃尔夫拉姆语言的书。它的目的是作为一个基本的介绍,让人们能够开始编写有用的程序。它涵盖了许多语言的核心原则,但只占大量语言的一小部分。特定功能领域.

一般来说,我尝试将实践中经常遇到的领域包括在内,或容易让人理解,没有外部知识,有利于启发原则。我对我能覆盖的区域的顺序非常满意,但是另一本书肯定会选择完全不同的区域。

当然,我有点失望,因为我不得不忽略了沃尔夫拉姆语言所能做的各种神奇的事情。在书的最后,我决定包括一个简短的部分,让我尝到了我无法谈论的东西。

Wolfram语言入门第295页

一些幕后故事

我把我的新书看作是启动Wolfram语言努力的一部分。回到1988年,当我们第一次发射的时候数学软件,我写了一篇为此,too.但这是一本不同类型的书:它是一本旨在为整个系统提供完整的教程介绍和参考指南的书。第一版共767页。但十年后的第五版,这本书已增加到1488页。在那一点上,我们认为一本书并不是传递信息的正确方式,我们建立了一个完整的在线系统。

数学书籍

我们做得很好,因为它让我们可以大大扩展覆盖深度,尤其是在例子方面。当然,实际的软件系统增长了很多,结果是今天文档中心包含超过50000页的内容。

许多人告诉我,他们喜欢最初的《数学》一书,尤其是这本书足够短,可以一页一页地阅读。我的目标Wolfram语言简介又是一本足够短的书,人们可以真正读完所有的书。

看那本书,有趣的是,直到最近,我们才发现其中有多少与Wolfram语言或Mathematica中根本不存在的事物有关。当然,我很高兴地看到,我们现在添加的内容非常重要,足以使它成为一个基本的介绍。但这也意味着,即使是通过数学认识沃尔夫拉姆语言很多年的人也应该发现这本书很有趣。

为什么是我?

我想应该有一本像我现在写的书。很明显,有很多人很了解Wolfram语言,原则上可以写一篇介绍。但我很高兴能成为这本书的作者。这会降低我在其他方面的工作效率,比如写博客一段时间。但这是一次迷人的经历。

有点像几百年前回来问,“一种方法应该如何向人们解释数学?”首先要讨论算术,然后代数,等等。好,现在我们必须为计算思维做同样的事情。金宝博188投注And I see the book as a first effort at communicating the tools of 金宝博188投注computational thinking to a broad range of people.

写作很有趣。我希望人们能找到它阅读乐趣-他们用从中学习到的东西用Wolfram语言创造出惊人的东西。

十三金宝博188.显示全部

  1. 我建议提供所有刚为新版本升级付费的人——他,学生,or otherwise — should get a free copy of the Nb version (I just paid for my HE upgrade).我建议在您的文档中心发布一个下载NB版本的链接。我在法律上是盲目的,拥有NB版本可以让我调整风格,更好地使用和阅读这本书。我希望你能考虑我的建议。这是一本过期很久的书,thank you.

    安得烈米特
  2. 这看起来不错!

    安德鲁MacFie
  3. 离线阅读PDF?

    内维尔
  4. 看起来真的很棒。Would it be possible to release this as an ebook (Kindle,iTunes Book) for a reduced price?我很想离线访问它,不想为此杀死树。;)

    斯文
  5. 感谢您让所有人都能免费使用。

    杰克
  6. Hi,我目前正在学习处理,一种基于Java的语言,旨在将计算机科学教给“新手”面向艺术家的平面创作,设计师,等。它的Wolfram是一种很好的语言,可以轻松创建高质量的图像(渲染选项,可以导出为矢量图像,PDF等)obviously interested in the king og graphics that you can create with programming,就像那些很酷的时空网络D

  7. 嗨,史蒂芬,
    我在Ted上看到了你的视频,nice work your doing.
    我知道你多年来一直在用你的软件,改进内部计算算法,我想。I think right now you shoud consider some kind of open source or open access Mathematica base software,或类似的东西,我不知道,只是创建自己库的基础。
    在我看来,这是一个很好的开始,使访问这本在线书籍,但是我们需要编码一些而且,因为Mathematica不是免费的,在开放源码和付费市场中,与其他软件相比,收集程序员开发和使用Mathematica的任何可能改进都有点困难。
    Anyway,现在我有了学生证,and I will start to review this book and check if any of the projects I have for the next year can be achieved with Mathe…
    感谢您与我共享此链接,
    我就在附近。
    问候语。

  8. MMA不仅仅是我的业余爱好。我用它来做严肃的工作,and I'm interested in knowing what Wolfram Language can add to my tools.据我所读到的,我已经在Wolfram网站上研究过这个问题,我还是不知道什么是WL。我用MMA已经很多年了,所以我很熟悉。既然如此,我为什么需要WL?它和MMA有什么区别?它是一组命令吗?像一个包裹,包括在我的MMA包里?它允许用户访问大量的知识数据库,大概可以从网络上找到,可以从WL访问。这对MMA也适用吗?Must I be online to use it?诸如此类。我到哪里可以找到这些问题的答案?

    Mark Harder
    • 感谢您的评论,作记号.Wolfram语言是你用来在Mathematica内部编程的语言,Wolfram开发平台,和Wolfram编程实验室。所有功能和整理数据都可以通过Mathematica和Mathematica在线访问,以及我们的其他产品和技术。有些数据只能在线访问,因为它经常更新。您可以了解更多关于Wolfram语言的信息在这里.

      Admin
  9. 感谢你所做的工作,加上你以前所做的一切。

隐藏注释»金宝博188

?斯金宝博188正网蒂芬·沃尔夫拉姆,LLC | 条款γ RSS