[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: sysadmin qualifications (Re: apt-get vs. aptitude)



berenger.morel@neutralite.org wrote:
Le 16.10.2013 13:04, Jerry Stuckle a écrit :
Anybody who thinks that being able to write code (be it Java, C, or .NET
crap), without knowing a lot about the environment their code is going
to run in, much less general analytic and design skills, is going to
have a very short-lived career.


Anyone who can't write good cross-platform code which doesn't depend
on specific hardware and software has already limited his career.
Anyone who can write good cross-platform code has a much greater
career ahead of him. It is much harder than writing platform-specific
code.


If writing portable code is harder than platform-specific code (which is arguable nowadays), then, could it be because you have to take about type's min/max values? To take care to be able to use /home/foo/.bar, /home/foo/.config/bar, c:\users\foo\I\do\not\know\what depending on the platform and what the system provides? Those are, of course, only examples.

Absolutely harder, by a long shot - in some cases you can write to the lowest-common-denominator of all platforms, and in some cases cross-platform libraries can help, but in most cases "cross-platform" means you have to include a lot of tests and special cases.

Consider several examples:

1. Simple HTML/JavaScript apps to run in browsers - it's practically impossible to write stuff that will run the same in every browser - different browsers support different subsets of HTML5, and beyond that Explorer does things one way, Firefox another, Safari another, Chrome another - and that's before you start talking desktop vs. mobile. Yes, things like PhoneGap can hide a lot of that for you, but you still end up needing to write a lot of tests and browser-specific accomondations (and then test in every browser).

2. Anything that does graphics, particularly things that are graphics intensive (like games). Different GPUs behave differently (though OpenGL certainly hides a lot for you), and you still have to detect, if not accomodate, systems that don't have a GPU.

3. Just look at all the tests and compile time options that get run by make (or config) granted that automake generates a lot of that for you, but still. Or for that matter, consider dependency checking when you to an apt-get install - selecting libraries based on machine characteristics (big-endian, little-endian for example). Writing a program is more than just writing the C (or Java or Erlang or whatever) - one then has to put together all the build-time stuff that goes with it - and that has to know about and accomodate differences in build- and run-time environments.

It can be awfully illuminating watching a verbose display of what follows ./configure; ./make install - (Watching cpan auto-assemble/install a perl-based application is similarly illuminating).

Miles Fidelman

--
In theory, there is no difference between theory and practice.
In practice, there is.   .... Yogi Berra


Reply to: