[PLUG] Computer Science at PSU a nightmare

Alan alan at clueserver.org
Thu Dec 20 21:12:13 UTC 2007


>> A Linux specialist needs to know: bash, perl, python, and php more than
>> Java and C++.
>
> This list seems arbitrary. Of these, bash is the only one that
> might be considered mandatory, though a Linux specialist may
> choose another shell. My servers run more Java code (code
> that runs in a servlet container) than Perl and Python. You
> won't find any PHP code on my systems but you will find Tcl,
> Scheme, and Lua. I'm considering Forth for a future application.
>
> I think it's useful to expose students to the universe of
> possibilities instead of restricting them to the fashion trends.

Enforcing fashion trends is what college is all about.

The needs of a "Linux Specialist" is different than those needed by a
Computer Science specialist.  (I will argue against specialization at this
point.  You should know all things well, not just Linux, not just
computers.  There is always something to learn. As Heinlein said,
"Specialization is for insects".)

The one language all Linux "experts" should know is "C".  (Not C++ or
Objective C, but C.)  That is what the kernel is written in.  It is what a
large number of applications are written in.  C++ is an easy step once you
understand C.  (And I said "understand", not "able to code in".)  If you
are using OS X, you should learn Objective C as well.

>From there, you need to know Perl and Python.  That is what a large chunk
of your tools are written in, if they are not in C.

Java is not as big of a player in Linux because the compilers have all had
closed source issues until recently.  This may change.  (Unless you are
doing web programming.  Then you need to know Java.)

If you are doing web programming you will also need to know PHP and
Javascript.  (I can hear Randal spinning in his grave at this point.)  You
may not like those languages, but if you program for the web, you will
need to know them at some point.  (Even if it is to know them enough to
know why you don't want to use them for any particular task.)

For shell programming, BASH is good to know.  From there you can pick up
the other variants.  If you are using BASH to any great degree, you should
learn awk and sed as well.  (It means you are probably working with legacy
code and the two seem to go together.)

If you are learning Computer Science, you have the above to some extent
(especially C), but there are others as well.

You should know scheme and lisp and haskel.  You should know at least two
architectures of assembly. You should know Bison.  You should be able to
understand the structure of languages, not just the command set.  You
should know not only how the programs fit together, but why.  (At this
point, new languages should not be an issue because they are just
variations on a theme.) You should understand the underlying structures of
data and how to construct them efficiently.

And if you really want to be an expert, you should know all of the above
and more.



More information about the PLUG mailing list