<br><div><span class="gmail_quote">On 10/19/07, <b class="gmail_sendername">Shlomi Fish</b> &lt;<a href="mailto:shlomif@iglu.org.il">shlomif@iglu.org.il</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Orr!<br><br>For some reason, I&#39;m receiving the emails that you send to me, but not the<br>emails you send to the mailing list. It&#39;s a bit annoying. And I do receive<br>emails that get sent to the mailing list.</blockquote>
<div><br>I don&#39;t know what is the cause of the problem.<br><br>I can only conjecture that you procmail me...&nbsp;&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&gt; Exactly. The point is not to teach the beauty of shell scripting.<br>&gt;<br><br>Then what is the point? To teach a crippled programming language, not unlike<br>many others?</blockquote><div><br>Actually - yes.<br>The idealized version of the world where you teach only the useful staff is far from being right for education due to many reasons. For example, the CS dept. of the Technion still uses the assembler of PDP11 to teach assembler. Now, if I had to &quot;change&quot; anything in CS in second semester, I would start with PDP11 and not with CSH. The reason for that is (hopefully obvious). On the other hand, the students will not gain much from this transition (in the overall). On one hand, now they&#39;ll know assembler of i386 (which is certainly more useful). On the other hand, now they&#39;ll have to spend lots and lots of time on addressing the long jump vs. the short jump (and we are not getting into the problems of 64-bit addresses!). So all in all, they still teach PDP11 because they have a good reason (because they want to teach the idea behind assembler, and not how to write assembly code for i386. Once you get the general idea of assembly, switching from PDP11 to i386 is only small details).
<br><br>So I guess teaching TCSH had its merits in the past. You will need to ask the teachers why they teach this.<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&gt; I suggest you&#39;ll approach the lecturers in charge to get a better<br>&gt; understanding why they teach this shell rather than that shell (like Eyal<br>&gt; did).<br><br>Maybe I will. But I still think my Anti-csh page was a good idea for
<br>concentrating all the arguments in one place.</blockquote><div><br>An Anti-XXXX page is always the wrong place to start any of these things.<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&gt;<br>&gt; As for the &quot;beauty&quot; thing - beauty is in the eye of the beholder.<br>&gt;<br><br>True, but I think we all can agree that shell scripting without sed, awk,<br>find, and much less Perl or whatever, is much less beautiful than shell
<br>scripting with them. And I don&#39;t see a point in teaching it this way.</blockquote><div><br>No. We do not agree on that.<br><br>I used to do shell scripting in DOS (batch files), where sed, awk, and other cool stuff were not available.
<br>&nbsp;<br>And we are talking about concepts. I find the concept of using a smaller instruction set to be actually more elegant then using many commands (think of interoperability of a DOS batch file between various windows distributions without any real support for stuff).
<br><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;">&gt; &gt; Well, from what I understood, up to a point TX still carried a Perl that
<br>&gt; &gt; was<br>&gt; &gt; 9-years-old or so (Nadav can fill the details). But even if it didn&#39;t<br>&gt; &gt; carry<br>&gt; &gt; bash, then bash was easily installable there.<br>&gt;<br>&gt; Yes and no.<br>&gt;<br>
&gt; Unlike what many people think, installing software on a server with<br>&gt; multiple users is not as simple as running yum/rpm/whatever your distro is<br>&gt; using.<br>&gt;<br>&gt; It is an obligation by the staff to support, update (to some extent),
<br>&gt; insure backward competability (in the case of updates), etc. The claim that<br>&gt; &quot;It&#39;s easy to install&quot; is wrong for systems which you do not own, nor<br>&gt; understand all the technical (or political) aspects related to.
<br>&gt;<br><br>Well, you can always install bash under some obscure path<br>(like /usr/local/DO-NOT-USE/gnu/bin). That way it would be useful for the<br>people doing the exercises, but people will know not to rely on it. And from
<br>what is said here:<br><br><a href="http://tech.groups.yahoo.com/group/hackers-il/message/4881">http://tech.groups.yahoo.com/group/hackers-il/message/4881</a><br><br>Maintaining tcsh is quite an headache in itself. This is while bash tends to
<br>be pretty straightforward to maintain.</blockquote><div><br>I am no longer a user of t2, but I would guess that they get the packages for tcsh sent to them by the supplier.<br><br>And I would find the maintenance of both as easy to handle.
<br>&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>&gt; For us it is very easy to say &quot;yeah, this can be solved by find&quot;. But these
<br>&gt; students need to learn how to implement find in a crippled scripting<br>&gt; language, because when they&#39;ll leave the academy and go to the dark side,<br>&gt; a.k.a., industry, they will have to work on machines which are not even
<br>&gt; POSIX complaint!<br><br>And I expect these machines to have an equivalent to a find command. Or you<br>can compile GNU find there.</blockquote><div><br>Shlomi, I think you lack some experience in real life companies. In many companies, you are not the owner of your machine (even in the CS dept., as Eyal can attest). You are the user of the machine the company supplied you. You cannot install whatever you like (due to legal issues, security reasons, or personal vendettas (
e.g., a system administrator who despises RMS personally)). So you cannot do that.<br>Sorry.<br><br>What people who work on machines which do not even have a C compiler do? (and btw, there are many such machines in the world, or more precisely, the majority of them do not have C compiler). There is a whole set of embedded systems, low-end devices, sensor networks, with very limited capability even to store the binaries they really need, so talking about even an extra 1 KB of a binary so Mr. Fish could use find in his shell script (rather than implement it using what he has) is so out of the question.
<br><br>Please note that it is easier for a person to learn to solve a problem with limited tools, and then add more tools, rather than teaching him how to solve a problem with all the tools, and then start to take them away.
<br>&nbsp;<br>Or in other words - The world is not made out of the standard IT you usually see around yourself. It has way more than that!<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;">
But back to our point - yes, students should know how to implement something<br>like find. But it&#39;s not a good practice to use it in one&#39;s shell script, not<br>the right way to do it, and that&#39;s what find (which will take some time to
<br>implement properly by hand) is meant for.</blockquote><div><br>According to your view.<br><br>According to my view, a programmer who cannot write for a restricted environment is not mature enough. And if you think this is only a problem of low end devices, I can assure you that driver developers also have to squeeze their code, squeeze their memory usage, and use only a limited set of instructions (as they work in kernel space rather than user space). Your vision about teaching the students will lead to students who need to work very hard to be able to work in kernel space.
<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">An exercise of implementing a find-like command without using find may be a<br>
good one, but find should also be taught.</blockquote><div><br>Only if the point is to teach UNIX nice tools. If the point is to teach shell scripting, then this is far from being a necessity.<br>&nbsp;They can mention that find exists afterwards, but only afterwards.
<br><br>The computer graphics course in the CS dept. starts by teaching you to put a dot on the screen. Then you write the library support for a line (despite the fact there is such a command). Then, you write a library for polygons (using the line command). Then you write library for objects (using polygons) and then you start to handle the shading, blurring, etc.
<br>At each point of time you can (in theory) use already given commands. But the idea is to learn to develop these things.<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;">
&gt; People, please remember we are talking on a degree in computer science (or<br>&gt; EE), i.e., you do not learn JAVA, you learn OOP methodology (for example,<br>&gt; by using JAVA). These two things are completely different.
<br><br>First of all, it&#39;s not &quot;JAVA&quot; it&#39;s &quot;Java&quot;. Secondly, I agree, but if you learn<br>shell scripting, then find is part of shell scripting.</blockquote><div><br>Only in UNIX. Not in Windows (yeah, I know there is find for DOS, but, let&#39;s be realistic, you cannot even compare the two, and as I said you cannot install GNU tools whenever you go).
<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt; oh, these kids who never worked on COBOL... ;)<br><br>Let me know when you&#39;ll be ready to have COBOL as your shell. ;-)
</blockquote><div><br>I can tell you that there are systems with even more horrible shells. And unlike people who live in the internet between CPUs of two cores with 2 GB RAM, and 120 GB hard drive, there are people who live on ARM, 6805, or slightly advanced FPGAs. These people have to make it with much less than the first set of people have at their disposals.
<br>&nbsp;<br>Orr.<br></div></div><br clear="all"><br>-- <br>Orr Dunkelman,<br><a href="mailto:Orr.Dunkelman@gmail.com">Orr.Dunkelman@gmail.com</a><br><br>&quot;Any human thing supposed to be complete, must for that reason infallibly
<br>be faulty&quot; -- Herman Melville, Moby Dick.<br><br>GPG fingerprint: C2D5 C6D6 9A24 9A95 C5B3&nbsp;&nbsp;2023 6CAB 4A7C B73F D0AA<br>(This key will never sign Emails, only other PGP keys. The key corresponds to <a href="mailto:orrd@vipe.technion.ac.il">
orrd@vipe.technion.ac.il</a>)