I'm new to Mathematica and I've just begun reading Paul Wellin's Programming in Mathematica.
The book, like many other books and online tutorials, revolves around using the notebook, with all its helpful formatting and other facilities. However, given my background as a C++ developer, mostly using vim and other "traditional" IDEs for development, Doxygen-style commenting for document generation, and Perforce, git, and svn for version control (all of which, as far as I'm aware, operate by diff-ing newline-delimited code), I'm anxious to know: Is it possible (and more importantly, not limiting) to program Mathematica in "plaintext"? (And if so, how would one go about it, i.e. through a mode in Mathematica's front-end, or writing separate files and "running" them via terminal?)
For the record, I'm not at all opposed to learning a new way of doing things. I'd just like either (1) to ascertain that programming in plaintext is indeed an option and not limiting (at least, there are alternative techniques for getting around any limiting factors) or (2) to ascertain that there are clear advantages to using the notebook, in which case, I'm happy to commit to using the notebook.† Of course, it'd be nice if I could touchtype Mathematica code in vim, but I'm sure there would be good reasons for preferring the notebook, if indeed it is preferred.
Perhaps I'm searching for answers using the wrong keywords (mainly "plaintext"), but these are some other threads I read here, on the meta, and on SO, before deciding to ask.
- http://stackoverflow.com/questions/5010346/mathematica-plain-text-notebook - This hinted to me that it is possible (and practiced) to program in plaintext, but there are no details on its merits or pitfalls, much less guidelines for doing so.
- Converting a notebook to plain text programmatically - This again hints at plaintext programming (I think), but also again offers no insights into doing so.
- Mathematica as a normal programming language - I think this touches upon the subject but it's a bit abstract and maybe more about the language implementation rather than the use of it.
- Is there an open source implementation of Mathematica-the-language? - This is not relevant as I'm not looking for any alternative to Mathematica.
- Running a Mathematica program without Mathematica - This is not really relevant, as I'm fine with running the kernel and MathLink-ing or whatever is necessary to program in plaintext.
If this question is defective, please help me improve my question. I'm very much for asking only relevant questions, and I'm happy to take this elsewhere, or rewrite the entire thing.
† The reason I'd like to ascertain one or the other is that in my current state of mind, uncommitted to either style, I'm subconsciously resistant to imagining myself programming in Mathematica as I read the book and online tutorials. That is, not having a clear idea of how I'll be writing code, my mind seems to avoid even thinking about it! I think reading actively (imagining myself applying what I'm learning) is a critical factor to learning, so I'd like to remove this mental barrier as early on as possible.