A few more notes...<br><br><div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I'll make it short (it's 1:35am here :-) without looking at the references
<br>(sorry, I'll look at them sometime later, but I doubt they will change<br>my reply). 1. C-Shell is taught as a "tool" for manipulating programs<br>(in MaTaM's view, especially for testing) - this answers also the Q
<br>of "why scripting at all?" 2. Students are not expected to become<br>Csh experts (I may agree that some technical details that are taught<br>are not necessary) but they are expect to understand its usefulness.
<br>In that respect - any scripting language will do, even Perl.</blockquote><div><br>Actually, a great deal of the problem I have is that users aren't really shown the benefits of scripting - they are given that as a constraint. The exercises the students are given are, very often, solvable with one bash script using sed, and in extreme cases - a simple perl one-liner. There is an inherent problem designing a "big" exercise around shell scripting, which is inherently at its best for small, interactive assignments. The students don't learn to see shell scripting as a useful day-to-day tool, but as a convoluted programming paradigm.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">3. AFAIK all Technion servers are csh or tcsh (I don't know whether<br>they provide bash) so it is the environment we have.
</blockquote><div><br>Ever since I've been a Technion student, bash was installed on T2, csl1, and all of the farm boxes; I've never had access to TX, but I'd be extremely surprised if bash weren't installed there.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">4. Coming to think of it, the resemblance with C is an advantage<br>(despite the "defects" and defects of csh).
</blockquote><div><br>Seeing as C and shell-scripting are used for inherently different purposes, I do not see why this is an advantage; furthermore, I think that in the exercises which are being taught, far too much stress is being put on loops and "if" statemenets; Too little on effective usage of "&&" and "||" operators. Also, extremely useful unix commands such as sed and find are not taught, and I have actually seen an exercise given in the course where the students implement a crippled version of "find". More relevant uses for shell scripts are never brought as an example - students are not shown, for example, how to use them in conjunction with "make" in order to create a test suite for their programs. If you want to teach scripting - use a scripting language (preferably something more organized than perl, like Python). If you want to teach SHELL scripting, the exercises must be relevant to that style of programming.
<br><br>And two further notes on CSH itself:<br><br>* It is sometimes non-deterministic, as testified by Matam students;<br>* One-liners are not possible - blocks have to start on separate lines. This makes tcsh very uncomfortable to use in interactive mode.
<br>* Its syntax is, in certain cases, much more complicated than bash's: Files are not auto-created when using the append (>>) operator, and outputting to both<br>an stderr and stdout file is a mess. In bash it's just "command > outfile 2> errfile", or for a combined version, "command > combinedfile 2>&1".
<br></div></div><br><br clear="all"><br>-- <br>Man is the only animal that laughs and weeps, for he is the only animal that is struck with the difference between what things are and what they ought to be.<br> - William Hazlitt
<br><br>Ohad Lutzky