Language Agnostic

The terminology that I use when describing someone who doesn't fall for all the religious BS involved in LanguagePissingMatches and instead has the ability to PickTheRightToolForTheJob based on the requirements of the component.

This is really only do-able with the proper framework in place, such as MicroSoft's ComponentObjectModel. You can also be semi-LanguageAgnostic (read C and C++ also) in the JavaLanguage because of RMI.

-- DrewMarsh

But would a LanguageAgnostic insist on using TheRightToolForTheJob? E.g., management demands it should be written in Java, but the LanguageAgnostic knows (or thinks to know) that TheRightToolForTheJob is SnobolFour. What to do? If the above is taken literally, the true LanguageAgnostic will always insist to use TheRightToolForTheJob, so in this case he might appear to the rest of the team as a LanguageBigot?.

-- StephanHouben

If he's always picking the *same* language, he would appear to be a LanguageBigot?. If he's picking a different language every time ...

That's a good question Stephan. Personally, if management is picking/demanding the technologies, I would quit. =)

The architect should be analyzing the requirements and he/she should PickTheRightToolForTheJob. Management should not care, within reason of course, how the product is implemented as long as they trust their architects.

-- DrewMarsh

... With the exception that hiring people to maintain the product after the architects leave is a management-level concern. SnobolFour may be TheRightToolForTheJob at first glance, but not when you consider that "TheJob?" includes maintaining the product for a couple of decades.

As long as an open-source (or similar) implementation exists, TheRightToolForTheJob will continue to exist. Finding programmers isn't a problem either -- good programmers won't have problems learning non-mainstream languages (and that includes SnobolFour). -- DonaldFisk

It's worth noting that this is true of a lot of different scenarios, not just working with component frameworks. For example, this week I had to test a Java library for interfacing with an external server in about a dozen different ways, each of which requiring a java class for its test case. I was able to write the Java-side test cases in one Scheme file (using a Java-integrated compiler [KawaScheme?]), configure the server to run those cases using M4 macros in its configuration file, and then drive the test using Erlang code in the server. All in all it saved a lot of typing and was much more fun. I fear to think what people can do in these situations when they have things like Perl in their toolbox :-) -- LukeGorrie

That's nice Luke, a lesson to us all.

I'd fear having to try to understand what someone who had Perl in their toolbox would do in this situation.

I used to do things like Luke describes all the time, but have stopped doing it. I got tired of hearing other people complain that they would have to learn "a bunch of weird languages" to extend or maintain my stuff. I also got tired of spending several hours installing a bunch of tools whenever I got a new development machine (see TravelLight). My own LanguageAgnosticism now takes the form of letting others choose the language for me, rather than imposing my choice upon them. I'll state my preferences and recommendations, but if somebody insists that I develop a web application in QuickBasic or Fortran, well, it's their money. -- KrisJohnson

It all depends on your work environment, right? Around here, people have broad interests and a willingness to appreciate new things, and we do a lot of really fun stuff. There's no buzzword or "don't spill that on my resume!" mentality. Other places seem completely soulless, and use only the lowest common denominator tools (aka "latest most revolutionary e-tools") and practices so that everyone is replaceable - and indeed frequently replaced. Is there already a Wiki page about this, and perhaps how/why people end up in one environment (or maybe even "profession") rather than another? -- LukeGorrie (who has wondered for a long time whether that "lesson to us all" comment above is sarcastic - the ambiguity is a stroke of genius I think :-))

This principle goes much deeper than choice of language, see MethodAgnostic.

(EditHint: move to HardwareAgnostic?) Those of us who used AppleIi computers then switched to 680x0 AppleMacintosh then PowerMacintosh became HardwareAgnostic?. We discovered that the most important things computers do (text editing, email, web surfing, spreadsheet calculations) could be done on just about any kind of computer. A practical understanding of the TuringMachine. We became intolerant of machines and applications that tried to "lock in" our data and our code -- we became used to the cycle of moving to a new machine every few years, and we don't ever want to go through the hassle of re-typing common reference information and re-writing the custom software we've written, merely because the hardware has moved out from under us. I think this was one of the big reasons for the switch from AssemblyLanguage to HighLevelLanguages, the switch from various application-specific text-formatting languages to HTML, and for the popularity of JavaLanguage -- DavidCary

See also: ComponentObjectModel, ComPlus, JavaLanguage, MethodAgnostic

Are these uses of agnostic correct? An agnostic doesn't know whether God exists, whereas a language agnostic is more akin to someone who believes in God but doesn't know what church to join, or perhaps prefers to belong to none.

The analogy makes more sense if we define an agnostic as "someone who doesn't know whether God exists, but does know that it's not worth getting in a big argument over". [EditHint: I'm pulling this quote from fallible human memory. If someone famous said something like this, please replace with an exact quote and who said it.]

Perhaps LanguageNonDenominational? makes more sense? -- PeterHill?

Agnostic is a fine word for this situation. Its original meaning was the religious one you mention, but my dictionary lists a secondary meaning of "noncommittal".

Is there such a thing as a LanguageAtheist??

[How about "alinguist" -- that would be a non-programmer.]

{If a LanguageAgnostic is one who doesn't care because all languages have their uses or it's just not that important, a LanguageTheist? is one who cares a great deal because there is only one true language then a LanguageAtheist? must believe that all languages are fundamentally useless - they are all only UsefulLies after all. (Which I know is a bit of a paradox, perhaps 'fundamentally flawed' would be better.}


View edit of September 8, 2006 or FindPage with title or text search