Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I disagree, I think the notebook is one of the best interfaces I've ever found. Just not for "traditional programming".

The notebook is a literate programming document. It contains my thoughts and process for creating an algorithm/piece of code along with tests and examples. This is very, very different from how people traditionally "program".

However, Mathematica has some very real, very strong deficiencies if you wanted to build an application end-to-end within it. It's dynamically typed, with everything-is-a-list mentality. So you will get type errors.

Unit testing (let alone combinator libraries like quick check) are only available at the higher price levels.

Warning personal opinions ahead!! Wolfram employees often have have strange views on how software is built outside of Wolfram Inc. Unit tests are alien, and type checking or datatypes (Say, to make sure that order your fancy Mathematica based trading system is going to make is sane) are seen as only things dumb rails programmers need. Rather than tools to make developers more powerful.

I would honestly recommend every programmer learn Mathematica. I'm sure they'll find that they can aim far higher when they have the right tools behind them. It's the same distance again from Python/Ruby as Python/Ruby are from C. Probably more.



> Unit testing ... are only available at the higher price levels.

Actually, this is now available for everyone, something I advocated for. VerificationTest and TestReport are the key functions there.

Good implicit suggestion about QuickCheck.

We've supported unit testing in our Eclipse plugin for years, and with V10 brought the MUnit package into the System context with a redesign of the essential functions.


Yeah quickcheck (and smart check which minimizes the counterexamples) seem like places where mathematica could shine bright for software debs.

I would absolutely adore seeing smart check implemented in Mathematica. Please make it so.


There's the beginnings of an algebraic type system hiding in 10 (do Get["TypeSystem`"], then try RandomData[Vector[Atom[Integer]]). So generating synthetic data for a function with a given signature is already possible. Now we need to be able to express invariants etc, and then minimize counterexamples.


I would add that watching someone who has mastered Mathematica use it is truly an awe inspiring moment.

A coworker is a former Wolfram employee who can explore data analysis in minutes in what it would take me hours/days to do in python.




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

Search: