Afterword: Being a Programmer
If you’ve understood what’s in this book, and can do its exercises, then you can now consider yourself a Wolfram Language programmer! There’ll always be more you can learn, but you’re ready to start using what you know to do real programming.
What can you do? An amazing amount! In fact, there’ll probably be something you want to program every day. With a traditional computer language it’d take too long to actually do it, though. But with the Wolfram Language—with all its built-in knowledge and automation—anyone who knows the language can write very useful programs even in a matter of minutes.
And this means you’ll routinely be able to write programs for all sorts of things. Things you want to understand, things you want to create, things you want to do for other people. Sometimes you’ll dash off a program, run it once, and never use it again. But much more often you’ll end up using your program many times—and maybe progressively making it more and more sophisticated over time.
For everyday programming, it’s normally best to write Wolfram Language programs directly in Wolfram Notebooks, that let you—like in this book—mix results and textual explanations along with code. After a while, you’ll probably end up with lots of Wolfram Notebooks, that do lots of different things.
Quite often you’ll just run your programs in those notebooks. But you’ll also often want to deploy the programs to create websites, apps or whatever. And one of the great things about the Wolfram Language is that this is easy to do.
There’s nothing to say that with a few well-chosen lines of Wolfram Language you might not be able to create something like a website that many people will want to use. But more often you’ll find there are all sorts of extra details you want to cover, and you’ll end up writing a significantly longer program to handle all of them.
In many ways, there’s nothing different about a longer Wolfram Language program. Even if there are millions of lines of code (as, for example, in Wolfram|Alpha), they locally all look pretty much like the code in this book; just a lot more of it.
In any programming project, however, there are some new issues that come up when programs get larger. You need to be sure to maintain systematic tests (which in the Wolfram Language you can do using VerificationTest). You need to organize code into properly separated packages. And particularly if multiple programmers are involved, you need version control, code reviews, and other management structures.
But beyond that, you need good overall design and architecture. How will users—and programmers—understand your system? What structures will you use to represent whatever you’re dealing with? How will different parts of your code interact? These are the kinds of things people in charge of building large software systems need to think about, and it can take considerable skill and experience to get them right.
But what if you’re just getting started? What does it take to create the kinds of programs you need to do things? The first step in creating a program for something is to see how to think about the thing in computational terms.
It might be something where computers have long been used. It might be something that’s only now conceivable for computers as a result of the Wolfram Language. Whatever it is, try to imagine a Wolfram Language function for doing it.
What input would the function get? What output would it generate? What might the function be called? Don’t at first think about how you’d write the code. Just think about what the function should do. And only after you’ve understood that, start writing the code.
Look in this book and on the Wolfram Language website for examples that are similar to what you’re trying to do. If you’re lucky, you’ll get everything you need. But maybe there’ll be some part that it's just not clear how to achieve. And if that happens, it’s often good to imagine how you'd explain what’s needed to someone with infinite technical capability. Often just doing that will lead you to identify at least some definite tasks—which you can then start formulating in the Wolfram Language.
A great feature of the Wolfram Language is that it’s always easy to do experiments with. You can try all sorts of things, and see what works. It’s always worthwhile to be as systematic in your explorations as you can. And to recognize that in the Wolfram Language it’s usually less about writing lots of code than about understanding how best to think about what you want in computational terms.
It’s extremely satisfying to take an idea and turn it into a working program. It’s also a powerful and valuable thing to be able to do. And with the Wolfram Language there are now remarkable opportunities to build programs far beyond anything possible before—and to make advances in many areas. And with what you’ve learned in this book, you should now be in a position to be part of that.