
I Wrote a Book to Teach the Wolfram Language - champillini
http://blog.stephenwolfram.com/2015/12/i-wrote-a-book-to-teach-the-wolfram-language/
======
nnq
...if only S. Wolfram would finally have the _most obvious insight_ that he's
_totally_ missing:

Open-source it! The _only_ programming languages that will _ever_ succeed from
now on will be the _open source ones_. Yeah, he can keep special-purpose
libraries closed-source. And the server-software behind Wolfram. Maybe even
the Mathematica GUI if he also offers a free "community version" or something
on the side. But otherwise this will just not work. But the _core language_
and _core engine_ must be open-source with a liberal MIT or BSD license for it
to ever grow an ecosystem around it.

Even _Microsoft_ gets it now (with C# and many other stuff)! _Apple_ also gets
this with Swift! Typesafe gets it with Scala. Even _Oracle_ partially got it
in a twisted way, by allowing things like OpenJDK to exist!

Really, Mathematica and Wolfram seem wonderful tools, but probably as many as
10x the number of paying users would start to use them and contribute to their
development (and most of them would also pay for "pro versions",trust me), if
only they had an open-source core...

But it's probably too late and any future scientific computing platform will
be built around Python and Julia and all the great work done by Wolfram
Software will simply be forgotten because they simply don't grok how "business
growth" and "software ecosystems" work in the 21st century...

~~~
IshKebab
Is the language itself that interesting anyway? I think 99% of the appeal is
the algorithms and datasets they provide, which I seriously doubt they would
ever open.

~~~
tenfingers
The language in itself is mildly interesting, since it's based on term
rewriting.

The closest language implementation in open source is "Pure"
([http://purelang.bitbucket.org/](http://purelang.bitbucket.org/)), which I
personally find superior in many respects.

Term rewriting is an interesting topic, but it's not a deal-breaker as wolfram
is trying to convey. We have _many_ alternatives nowdays.

The perhaps non-obvious limit is that the ordering of the rules plays a
central role in term rewriting (as it does in it's close cousin: pattern
matching), which makes it "cumbersome" (or quirky) to extend in a truly
modular way.

------
edtechdev
He has the same 'expert blindspot' as so many others when it comes to learning
and pedagogy.

If you show this book or go through this book with a true novice, like a child
or complete non-programmer (no one has 'zero' knowledge like he says), this
would turn them off programming for a long time.

To hook people in, to give them an actual /reason/ to learn programming, you
need to show them how programming can be used to do something fun or useful.
For example making a little game, or making something to help with a
spreadsheet or so forth.

Instead, he waits until the very end of the book to start thinking about using
the language to create something useful: "OK, so now everything is ready to
talk about deploying things to the web. And at this point, people will be able
to start creating useful, practical pieces of software that they can share
with the world."

Start with how to make a simple web page, or a simple game that others can
play, etc. Don't end with that. Make it easier for people to use your tool to
make games or practical applications.

Then again, as others have pointed out, the fact that this tool is proprietary
though makes it a non-starter for novices, anyway, in my opinion.

~~~
kesselvon
That already exists using Wolfram tech: [http://www.wolfram.com/programming-
lab/](http://www.wolfram.com/programming-lab/)

------
maurits
I really don't like the fact that he is forever hinting that higher level
functions, such as recognizing an image of a cheetah, are (only) possible due
to the unique omnipotent nature of the mathematica language.

------
brudgers
Direct link to book [because it's not all that obvious]:

[HTML]: [http://www.wolfram.com/language/elementary-
introduction/](http://www.wolfram.com/language/elementary-introduction/)

------
sriram_malhar
Beautiful! Much as I dislike Stephen's self-aggrandizing style of
presentation, it would be lovely to be taught this way. It (the language and
environment) is functional, has real examples that readily lend themselves to
visualization, has extensive databases of useful real world data ... there's
no wasting time on pointer arithmetic or reversing strings.

------
xupybd
Just me or does that guy seem to lack humility, I don't know something about
the way he wrote that.

~~~
JonnieCache
_" Does anyone want to bet as to which will gain self-awareness first: Wolfram
Alpha or Wolfram, Stephen?"_

\- Casey Muratori

~~~
frou_dh
The like-clockwork sniping at the man whenever he's brought up borders on
being more irritating than his original "offence".

~~~
TeMPOraL
This is what 'dang famously described as a Pavlovian hashtable reflex[0].

[0] -
[https://news.ycombinator.com/item?id=9722096](https://news.ycombinator.com/item?id=9722096)

~~~
jjoonathan
The root of this comment tree was written by someone who wasn't familiar with
Wolfram's reputation but saw cause to gripe anyway. The transition from
"Stephen Wolfram" to "absurdly self-centered" occurred by observation, not
hashtable.

I hadn't heard of "Pavlov's hashtable" before, it's a neat concept, and I'm
glad you brought it up. I just don't think it's responsible for the direction
of this particular comment train. Which is in itself a testament to the
peculiar qualities of Wolfram's personality.

~~~
TeMPOraL
Fair enough. I was providing a reference to the phenomenon 'frou_dh described.

------
relojeje
What I like about W. Language is that the full name is used for many commands.
When you want to develop a big library you have to stay away of short cuts
like using two or three letters for a name. Long name is a distintive of a
language designed to be used in a wide ecosystem. Numpy names are longer than
R names, for example for rnorm (random numbers from a normal distribution).
One way to connect (pipe things) would be to use a full name version of a
language using an option like: use fullnames.

~~~
bloaf
That, and there is a sort of consistency to most of the commands. E.g. it is
possible to develop an intuition about the order of arguments while solving
one type of problem, and have that intuition _still apply_ when you switch to
commands from a completely different domain.

------
nswanberg
A free version of the "Wolfram Language" (I can't help but still think of it
as Mathematica) runs on the Raspberry Pi, which makes for not only a fast way
make little hardware prototypes and tinker, but also a cheap way for someone
to learn to be comfortable getting a computer to do things. I would have loved
something like this in addition to the Lego, Construx, chemistry, and physics
kits I toyed with as a kid.

~~~
kesselvon
An open version of the language exists for individuals to try on the cloud:
[https://www.wolfram.com/development-
platform/](https://www.wolfram.com/development-platform/)

------
munificent
This page contains the word "Wolfram" 102 times. Really outdid yourself today,
Stevey.

------
igravious
[http://www.wolfram.com/language/elementary-
introduction/06-m...](http://www.wolfram.com/language/elementary-
introduction/06-making-tables.html)

[https://reference.wolfram.com/language/ref/Table.html](https://reference.wolfram.com/language/ref/Table.html)

Strange that this function is called Table when what it clearly is is an
iterator that outputs a list. Its output is no more tabular than Range; it
outputs an ordered list as does Range. In fact Range[10] seems to be shorthand
for Table[n,{n,10}] yet they have completely different names.

~~~
carlob
Array is also very similar to table

Array[f, {10}] is basically Table[f[n], {n, 10}].

And so Range is Array[Identity, 10]

------
danso
Going to have to join the, _I don 't quite get what Wolfram thinks is the big
deal_ crowd:

> _The goal of the book is to take people from zero to the point where they
> know enough about the Wolfram Language that they can routinely use it to
> create programs for things they want to do. And when I say “zero”, I really
> mean “zero”. This is a book for everyone._

One of the examples he gives is how to: Make a word cloud from the first
letters of all the words:

    
    
         WordCloud[StringTake[WordList[], 1]]
    

OK, leaving aside the debate of whether word clouds are the text-analysis
equivalent of a 3D rainbow donut chart, this simple example quickly leads to
questions about how to express natural variations, such as a word cloud that
is more spaced out. Or not shaped like a ball. Or how to render into something
I can connect to my Twitter account so I can tweet out a cool viz. The
tutorial treats the novice with the promise of doing very visual things in a
seemingly more direct way -- what other language could generate a word cloud
in so few commands? -- but...so? The power of programming, to me, is the
ability to get into the details, to create something that uniqueness expresses
something in my mind...and the trade off is that we start by learning syntax
and abstract concepts (e.g. Loops and functions). Going past the non-trivial
examples gets us quickly into the butting heads against the magic involved,
and from first glance, the Wolfram syntax does not look particularly elegant
for software design.

Sure, "Times[2,3]" might seem more human friendly than 2 * 3...until I get
tired of writing that phrase out and doing an explicit function call just to
get 2 numbers. But of course, in most software development, when am I really
ever multiplying 2 numbers? Infrequently enough that I imagine I'll have to
frequently Google whether the function name is "Times" or "Multiply", proving
the first example of the classic adage about the 3 hardest things about
computer science.

So there's a lot of things about the language that seem like a disaster to me,
but I'm not smart enough to design my own language. Sometimes I'll take the
opinions of the masses into account...for example, Python's use of significant
white space seemed profoundly annoying but plenty of smart people are able to
build profound things elegantly with it, so I took the jump. If Wolfram
language is such a step beyond competing languages, where are the examples of
things elegantly built with it?

Edit: apparently David Auerbach has said the things I think I want to say, but
more eloquently
[http://www.slate.com/articles/technology/bitwise/2014/03/ste...](http://www.slate.com/articles/technology/bitwise/2014/03/stephen_wolfram_s_new_programming_language_can_he_make_the_world_computable.html)

~~~
carlob
FYI you can write Times, but mostly you'll write _. I guess that example was
about explaining the lispy concept "everything is an expression". It's right
there at the top of the screenshot, he actually went from explaining _ and +
to saying they are actual functions like anything else.

[http://www.wolfram.com/language/elementary-
introduction/02-i...](http://www.wolfram.com/language/elementary-
introduction/02-introducing-functions.html)

~~~
taliesinb
carlob meant to write a single * there, which became italics instead. Point is
that Times is the actual 'FullForm' for multiplication, the and * is syntax
sugar for it.

------
sjg007
Mathematica is great. The whole notebook concept was light years ahead of its
time.

