On Mar 17, 2008, at 9:00 AM, grass-dev-request@lists.osgeo.org wrote:
Not really. Simple tasks can be done with just the GUI.
One certainly won't go far only doing simple tasks.
Actually you can do some pretty complex stuff with the GUI. Try it.
More complex tasks really deserve a proper programming language. The
range inbetween, where bash is a reasonable solution, is actually
quite narrow.The only thing that I have to say in the defense of Bash is that
the little languages always have a narrow, but not a negligible
niche.
The thing that bash allows you to do is to chain together the same commands that you get in the GUI. That is, you can do the same stuff in the GUI that you can do by scripting, but it might take you a LOT longer to accomplish it.
Any scripting language that can interact with GRASS commands (i.e., most of them) can serve this same purpose. You can do it with Python, PERL, Java, TclTk, etc. Bash is handy because it comes preinstalled on Linux and Mac systems (and sh on earlier Unix systems) and was consistently available even when other scripting languages were not. It is only for this historical reason that it has become a standard for scripting in GRASS. IMHO, it's a pretty primitive and opaque programming language (e.g., you have to use another scripting language like awk to do floating point math). You can do a lot with it, but it is not easy to do or to deconstruct (or debug) what others have done. I say this in spite of having made a number of the existing GRASS Bash scripts, including some pretty complex ones (e.g., d.vect.thematic).
With GRASS 7 and opening up of GRASS for Windows, we have an opportunity to modernize scripting on GRASS (Note I am not a Windows user). There will always be people who script in Bash. It's great that one can do so. However, I think that it would benefit the community settle on a new scripting "standard" that is truly cross-platform and an easier, more up-to-date, powerful, and easier to use language. There are several good candidates for this, but Python has a number of pragmatic advantages in the current context.
What this means is that we need to have Python people volunteer to begin to rewrite existing Bash scripts in Python and begin writing any new scripts in that platform so that we can have the critical mass to encourage others to learn it and write in it. A couple people have started on this.
Michael