Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
I Wrote a Book to Teach the Wolfram Language (stephenwolfram.com)
130 points by champillini on Dec 9, 2015 | hide | past | favorite | 61 comments


...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...


A mathematica license costs $2745 or $1000/year for “professional” use, $300/year for “hobbyist” use, or $115 for students. Every serious university in the world and a large number of technical businesses need to pay for site licenses.

If it were open source, many more people around the world would have access, but Wolfram’s cash cow would dry up.

Thankfully, open source programming environments keep improving, and between R, Python/Numpy/Scipy, Julia, etc., platforms like Mathematica and Matlab become less relevant every day.


He's spent time, thought, and money developing software, and people are expecting him to just give it away, and allow others to make money out of it without giving back anything in return? That would be fair only if the companies which use it to increase their profits also open sourced their software.

Before you suggest developers the consultancy route, that penalizes the developers of software which is so well written and documented it can be used straight out of the box.

One thing I'd do differently to him: whenever the user isn't goint to profit from the software financially (in this case, hobbyists and students), there's a good case to be made not to charge for it, as without an initial user base, it will be difficult to sell it to companies. But if he wrote the code, he can decide on its licence.


He doesn't have to open source it/give it away if he doesn't want to, of course, but if he doesn't, his language and tools will probably eventually be surpassed in use by other, more open tools and languages. That's the way language and tool development has been going lately.


That helps to prevent his software from becoming a cash cow, as it encourages constant innovation on his part to stay ahead of the open-source competition. But until the open source replacement is as good, he'll still be able to earn money by licensing it.


The question would be whether open-sourcing now might lead to higher profits over the long term than remaining closed-source until some later date. In the case you suggest, it could be that once the open source replacement is as good --- or nearly as good -- the closed-source business simply shrivels up and dies.

By switching now, before open source has caught up, the currently closed-source company could attract users and grow greatly now, quite possibly preventing the open source options from ever catching up (and at least greatly delaying that).

This, of course, requires a change in the business model, idea would be that revenue is generated differently, probably much less per-user, but with a great growth in users. It's then an open question which option will generate more profit over the long-term, but it is at least not clear to me that open sourcing now -- when product is way ahead of open source alternatives -- is the wrong decision.


I'm unclear about how you suggest people make money after giving their software away for free. I've dealt with consultancy in an earlier post.

The term open-source is ambiguous. It's possible to release the source and still charge for the software and have restrictions on its use or distribution, e.g. by having a shared-source licence.

Use of shared-source would mean anyone intending to release their version of the software on a different licence would not only have to rewrite the code from scratch but, to avoid suspicions of plagiarism, take great care that their code bears no resemblance to the source code, which they have already been given.

Finally, I've already pointed out that requiring payment for commercial also buys the developer time, and encourages them to improve the software or develop entirely new software.


> ... because they simply don't grok how "business growth" and "software ecosystems" work in the 21st century...

Well, to be fair, Wolfram is one of the few scientists actually making money from scientific software. I've seen software companies doing much worse, to the point that I actually doubt there is any serious money to be made from most scientific/engineering software.


Yeah, I agree. In the meantime there is an awesome re-implementation in Python called Mathics. It's also fun to hack some of the not-yet implemented Mathematica commands (I did that last summer).

https://github.com/mathics/Mathics


Mathics maintainer here.I'm glad you find Mathics fun to contribute to, I certainly do. Each function is a small independent part so it's really easy to get involved (that's a major goal of mine at least) Thanks for your contribution.


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.


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/), 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.


I'm wondering why they didn't opt for a purely functional language. That would make much more sense in a mathematical context, since the program text would then be much easier to reason about mathematically, and it would be much easier to treat programming constructs as first-class objects.


The language editor is what's really good. It allows full structural editing, mixing Lisp-style and math-style expressions. And the workbook allows to display all kinds of objects. Which (like images) you could actually copy-paste as values in expressions.


It reminds me of "rebol". Although rebol never actually had a large market to begin with.

Mathematica might have a chance if open-sourced, but it's not the language which is interesting from a technical perspective, but the entire ecosystem of base libraries which is quite well done and which probably has much deeper copyright issues.


Agreed. Mathematica is awesome, and I did research with it that would've not been possible with any other tool, but the day I had to contact the company for permission to transfer the license to another computer made me realize I didn't want to build any IP on top of their tech.

A language, unlike a complete environment like Mathematica, allows you to build your own programs whole-cloth. But if those programs ultimately require Wolfram's permission to run, I don't really care how awesome it is, I wouldn't touch it with a 10 foot pole, for fear of it becoming the next J++.

They can still make money by charging for printed manuals, support, or offering some sort of supercomputing back-end like EC2 for research institutions. But for a serious developer to invest their own time learning this tool, the risk of a closed ecosystem is too high.


I've advocated this too. One (large) practical issue is that Mathematica includes several libraries and APIs that have been licensed from third parties to fill out its suite of algorithms and data. Removing these for an open source edition would leave gaps in the language, though it's unclear to me how 'neat' the holes would be, or how much they might cripple the experience.

Even if Mathematica is never open sourced, there's still value in having a commercial language that can incubate new ideas or applications of existing ideas, for open source efforts to either ignore or riff on. The document+repl model used by IPython/Jupyter is an example of something that WRI didn't pioneer but certainly helped popularize in its modern form.

Another example that I think should be more widespread is the idea of 'superfunctions' whose arguments exploit a simple grammar to scale from simple invocations to arbitrarily complex ones. In effect you have a lightweight DSL -- a large or infinite family of functions fused into one -- which I think can buy a great deal of concision and flexibility.

GroupBy (https://reference.wolfram.com/language/ref/GroupBy.html) is one small example of this idea; in its simplest form it just partitions a list into equivalence classes, but scales up via its argument grammar to something more like (optionally nested) MapReduce. Part (https://reference.wolfram.com/language/ref/Part.html) would be another example. Again, this isn't something unique to Mathematica, you see variants of this idea in e.g. Clojure and Haskell, but my impression is that we've incorporated it into a wider cross-section of our language and made it more light-weight and convenient to use.

Another thing that I often think about is the notion of having a deep web of interrelated structures and behaviors, for example colors both have a visual display form (little colored boxes), IDE edit mechanics (you can click them to edit them in a palette), and polymorphic properties like distance, so that functions such as Nearest and FindClusters can 'automatically' operate on them. That's of course hardly novel, typeclasses in Haskell were designed to do precisely this, arguably more elegantly and user-extensibley.

But I think Mathematica shows how it is really valuable to have not just the capability to do this, but having it built in and working -- with many of those n^2 possible interactions between functions and data already curated and implemented. WRI is far from having done this completely, but again, we're trying, and I don't know of other groups that are trying to do this in an as integrated a way, across so many areas of computation.


> ...if only S. Wolfram would finally have the most obvious insight that he's totally missing:

> Open-source it!

Agreed. But I think the main reason for doing so, is in service of open, reproducible research. I'm sure if you're modelling blast patterns for a rocket to replace the Hellfire, you don't really care if your model stands upon series of locked, proprietary stuff -- as long as it is useful.

But if you're modelling influence effect of various ways to organize voting in democratic government, or doing publicly funded fusion research -- it's much more important that your results are transparent and easily reproducible (now, and in the future, which could be decades, or even centuries, away).

And I think that exploratory research and experimentation is exactly one of the strengths of Wolfram. But it needs to be much better than open solutions for it to even make sense to recommend a closed tool over various open tools -- for producing open research.

Consider if Einstein's research was locked up in some proprietary platform, rather than presented as simple text. While we'll see many papers and innovations in the space that is readily covered by human readable equations and text -- we're already firmly in a world were there are real discoveries that are made and proven only with the help of code.

I really can't see any future for a closed system in such an academic setting (but I can certainly see that closed systems can sell, and be used as tools in companies... provided that those tools continue to be taught and used in universities...).


I don't know if that would help, but what I really like about the it is how close it feels to the whole Xerox PARC vision of software development.


Wolfram has never freed up anything. I would be extremely surprised if he ever did it. Leadership of his company would have to change, I think, before he considered releasing anything as free software.


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.


That already exists using Wolfram tech: http://www.wolfram.com/programming-lab/


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.


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

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


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.


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


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

- Casey Muratori


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


That is unfair.

JonnieCache didn't bring this up, in response to what reads as an honest response by someone not familiar with Wolfram.

This quote is a succinct way of pointing out that Wolfram is, in fact, famously lacking in humility and self awareness, to the degree that many find it detracts from his legitimate achievements.


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

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


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.


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


Sorry, you are right my comment was not constructive. You raise a good point. It's the first time I'd come across that style of writing and got a weird vibe from it and thought I'd comment about it. But in hindsight it was pretty negative.


Don't worry. It was more the quote that set me off.


He is that irritating combination of someone who lacks humility and is unable to ever admit being wrong (except superfluously to make a larger point) and yet is demonstrably, objectively a genius.


It is not clear how much of a genius he is or not. His NKS is just a bunch of repackaged ideas, mostly unacknowledged, with lots of pretty pictures, with some original work. It's borderline crank mathematics. The other things attributed to him are dubious, as he has a big problem attributing to himself the work of others. He has threatened to sue employees of his who try to publish mathematical results of their own without attributing them to his company. He keeps acting like Mathematica was all him, whereas in reality he got it from a bunch of coauthors after suing them into submission and silence. It's difficult to find any evidence of this other than oblique allusions, because, well, he won or settled the lawsuits in his favour.

Wolfram certainly has talent, but like Steve Jobs, it may be more people-talent to know how to manipulate and impress others than mathematics talent. He certainly has some of the latter too.


His physics Phd from Caltech at 20 and MacArthur grant at 21 are objective and substantial accomplishments, which predate Mathematica, etc.


I've read this http://bactra.org/reviews/wolfram/ linked in another comment on this post.

He is one of those smart douchebag assholes type (L. Torvalds, S. Jobs etc.), probably even a prodigy genius level of smart. I have not read enough bios about, lets say, Torvalds or Jobs, but S. Wolfram looks like pure evil against them.

The eye opener for me was that Mathematica was basically stollen from University of Illinois[0]. It goes on and on, like that [1].

I am amazed how S. Wolfram managed to settle courts in his favour, or just successfully threaten with courts. How can you threaten someone of citing your (I guess public) work, if it will be openly and correctly cited, and people know details about it? Threatening your employees, etc. How can anyone work there?

Sorry, for this rant, but after some reading today, S. Wolfram looks like Genghis Khan of academics. Gives impression of great leader, who have accomplished something who have not done before, though simply chops heads for everyone who can cross his path.

In my eyes, a person who does not respect others, does not deserve respect themselves.

[0] > Wolfram quit Illinois, took the program private, and entered into complicated lawsuits with both his former employee and his co-authors (all since settled).

[1] > ..because one of our citations referred to a certain mathematical proof, and they claimed the existence of this proof was a trade secret of Wolfram Research.


Sure, he was a precocious student. What came after that is more difficult to measure.

edit: He may well be a genius. To almost all of his contemporaries, Galois seemed like an incomprehensible twit. Wolfram may be a Galois, or he may just be a precocious blowhard full of nothing but hot air.


Fortunately, pistol duels have fallen out of style nowadays...


It's not just you. Browse through the 372 reviews of A New Kind of Science on Amazon!


Read http://bactra.org/reviews/wolfram/ to know more about him, or at least how he is perceived by other people.


I watched a TED talk by him and got the same impression. Maybe he is a genius, but it certainly is off putting to my own ego for him to laud how great he is all the time.

Maybe I should just get over it.


Indeed. He's not only a blowhard, he's an accomplished blowhard, the most annoying type of blowhard.


I actually disagree. Having thought that about some stuff he's written in the past, I actually thought he came across as quite humble and just really excited about his book.


Normally very smart people have an huge ego and hate politics. It's always a pity to see so much potential wasted.


What's wasted?


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.


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.


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.


An open version of the language exists for individuals to try on the cloud: https://www.wolfram.com/development-platform/


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


http://www.wolfram.com/language/elementary-introduction/06-m...

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.


Array is also very similar to table

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

And so Range is Array[Identity, 10]


The difference is the last case of your second link. For example,

    Table[i+j,{i,0,3},{j,0,i}]
yields

    {{0},{1,2},{2,3,4},{3,4,5,6}}


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...


He says the book is zero->useful, you are asking for zero->expert.

FYI here are your answers...

WordCloud[StringTake[WordList[], 1], WordSpacings -> 10] (* spaced out * )

WordCloud[StringTake[WordList[], 1], Binarize[CurrentImage[]]] (* shaped like your face * )

twitter = ServiceConnect["Twitter"]; ServiceExecute[twitter, "ImageTweet", Image ->WordCloud[StringTake[WordList[], 1]]] ( * Tweet a wordcloud *)

For that kind of detail, you will always want the documentation http://reference.wolfram.com/language/ref/WordCloud.html


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...


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.


Code is read more than it's written, so I think Times[2,3] is actually a very good idea. I think a lot of languages give arithmetic a privileged place in the syntax, because it's used in simple example programs and was one of the first things computers were used for, when actually they'd be better off spending their syntax budget on more general features.


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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: