
I would stick to one of them just fine, but even using Web tools, there are Unix-like interfaces and PC-like interfaces so that to understand any small item, one has to know the overall differences between all systems. This was more apparent in earlier times when PCs didn't quite speak TCP/IP as well as Unix systems, so that there were many competing network protocols (not to mention the higher level protocols such as FTP, HTTP, SSL and so forth.) PCs still use MS specific protocols for network file systems.
I used commandline interfaces for a lot of things, as in Dos Windows, Unix terminals, shells, interpreters, scripting languages, etc. Since I have written so many programs that either emulate Unix on Windows or emulate Windows on Unix, wherever I wind up, I am using all of the mixed programs all at once. I don't really notice the problems until I try to use someone else's computer. Suddenly there is a complete vacuum of tools, or just the minimal toolset unique to whichever OS.
This is also a problem with programming languages as well. I use C for most things, not because it is better than something else, but because it is the most portable. If I try to write in C++, then the horrible mind-bending to encompass GNU on one extreme or .NET on the other extreme causes more trouble than the "benefits" of C++ are worth. Mainly I don't see any benefit to C++. Why? Because it is foolish to swim upstream against the reality of the underlying hardware. The hardware is always procedural, or verb-oriented, as in Von Neuman architecture, and C++ is completely object or noun oriented.
There are hardware CPU instructions that operate on registers or memory, such as ADD R1,R2 or MOV mem1,r2 and so on. Machines do not have such a thing (yet) as R1.ADD(R2) or other object-oriented-isms. There is good reason for that, since one cannot use a graphics controller as a disk drive, as in GC.seek(1000) or vise versa as in DD.drawline(x,y). It seems silly to try to pretend that objects and methods can universally intertwine in glorious polymorphic splendor.
I go ahead and play the game as the rules demand, that's my job. But the irony does not escape me.
For commandline issues, Dos batch commands are very different from Unix shell commmands, although there are some similarities or at least equivalences. One problem with Unix is that there are so many shells, sh, bsh, csh, tcsh, tclsh, xsh, rsh, ksh, etc, and that is just a few. I haven't even gotten into the scripting languages. There is python, perl, ruby, C#, javascript, html, xml, php, and others.
Most of the time I am trying to solve a scientific problem that just happens to use computers. One such problem involves video cameras for area security. I really don't want to write more tools for the computer so much as solve the fundamental problem, but due to the glut of issues pertaining to the computerization of video (e. g. using heavy mathematics to simulate some physical system versus GUI interfaces to display results) that I can't just isolate myself to some single mindset.
Anyway, I now navigate through about a dozen scripts, languages, compilers, shells and computer hardware types, and they have all become a mish-mash in my head, much like the half-English half-Spanish half-Porteguese half-Indian that someone has to speak in the jungles of South America.
It is my job, yes, but it still seems like a computer scientist must now be a master of all trades AND speak in tongues. And I see a sea monster up ahead. Its name is Vista. It has the MS trademark on all its teeth. Oh, well. Another mish-mash of gluttonously object-oriented verbage to chew.
No comments:
Post a Comment