Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
News

Why Language Advocacy is Bad 212

richw showed us an excellent story talking about why language advocacy is bad. Its an excellent piece, and although many of the points he writes about are specifically related to Perl Programming, many of them can be equally applied to the irrational ways that people approach things like politics or Slashdot discussions.
This discussion has been archived. No new comments can be posted.

Why Language Advocacy is Bad

Comments Filter:
  • I don't think anyone would argue that the often irrational language advocacy that we see here and in other technical forums is a bad thing, because it obscures the fact that different tools are good for different tasks. Rationally, that's obvious, but the programming community isn't really very rational when it comes to discussions like this...

    It seems as though any time a group of people discuss something they can't help but to get defensive about their beliefs. Maybe it's indicative of the maturity level of a lot of coders, especially the more vocal ones that have the time to post a lot. After all, if you're old enough to act like a grown up then you've probably got a job and less time to waste on places like /. Which is why it seems as though most /. posters have the emotional maturity of 15 year olds I suppose.

    Unfortunately this all means that what could potentially be a very useful discussion for people interested in picking up new techniques and ideas devolves into a firefight between people who have backed themselves into a corner and have no intention of getting out.

    Why do programming languages generate such heated and zealous "discussions"? Maybe it's again because the people invovled are seeking some kind of group identity which they're lacking in real life. In lieu of having a social group of friends, they idenitfy themselves as "Perl hackers" or "Java programmers" or whatever. Then when their "group" is perceived as being under threat, they fight back to protect what they see as an instiution that legitamises them, even if it isn't really real.

  • If you do any AI or theorem-proving subjects you'll run right into philosophy. Turing's test [oxy.edu], Searle's Chinese Room [utm.edu], and so on, are intensely philosophical.
  • it weren't for language advocacy, I wouldn't find out nearly as many cool things about programming languages.

    I agree that language advocacy is very useful to outsiders, but I think the point is that sometimes it can be bad for the practicioners, especially when it gets petty.
  • by drenehtsral ( 29789 ) on Thursday December 14, 2000 @07:56AM (#559294) Homepage
    I think that running around shoving your favorite language down people's throats is a waste of time. But on a more subtle level, shoving it down your own throat can be a waste of time as well. I like C, it's a language that i get along well with, but there are times when it would be a pain to use C, so i will use something else that fits the problem better, like C++ (which is not half bad if you don't try and use a braindead class library... ). Some things may be better in Java, or even sometimes FORTH... Who knows, it depends entirely on the problem!
    People who are strong supporters one any one language are like carpenters who really like crowbars, so much so that they try to use them as hammers, saws, rulers, etc... and spend a very long time fighting with the wrong tool for the job. Needless to say, a carpenter that behaves like that is not a very efficient one, and not one you'd want to hire if you with to have your house completed in finite time.

  • I thought the entire Florida fiasco was criminal, for one reason and one reason only. No one ever mentioned how incredibly statistically insignificant the whole thing was, least of all the media.



    Amen to that. What we had in FL is a tie to within any reasonable estimate of measurement error of the machine counts. I happen to think that if the possible irregularities had been raised in advance, before anybody had a specific stake in the outcome, standards for manual inspections of non-readable balots could have been agreed upon to reduce the margin of error significantly.

    (laboring mightily to bring this back on topic)
    This point of view seems eminently reasonable to me, but in all honesty I have to admit that I don't know whether I would have felt differently had things broken the other way. Having a stake in the outcome irretrievably pollutes my objectivity -- which is why these matters need to be decided in advance.

    It is amusing how the debate about the whole taxonomy of chads does resemble a language war.

    (veering wildly off course again)
    Of course, the real problem with the system is winner-take-all plurality voting, which is a blunt and imprecise instrument. In terms of the "will of the people", the people don't particularly will one or the other of these candidates any more, even nationwide in the popular vote.

    Who won? Bush, maybe. Who lost? We did. What are we going to do about it? Probably nothing. That's politics for you. :)

    I don't think this process was, in itself, bad. Either way we would have had a president with limited legitimacy, no mandate, and a weak coalition. Whether this will change things -- well, things have a way of changing when you don't expect them to and not changing when you're sure they will. The great thing about this country is that no matter who's in there we seem to muddle through. We survived Nixon after all.

  • > I submit that perl really might be his favorite language.
    In the interests of full disclosure, I'll reveal that my current favorite language is Haskell, with APL second.

  • You miss out on an important piece of information.

    Example 1: I purchased the C-64 because it was superior to the Apple II in the ways that were important to me. Cost, features, software availability and the fact all my friends had one.

    Example 2: I spent 5 years of my professional career working with Microsoft products because I found them to be better than the competition.

    Example 3: I'm a Democrat because I can't stomach the lousy arguments the Republicans put forth. This election fiasco only cemented my dislike of the party.

    Keeping an open mind is fine, but once you've investigated the options and made a choice, you're not arguing to protect your position but rather because you are right.
  • I think it's due to a lack of resources or knowledge.

    I had heard of Ada when I knew Pascal, but I figured that I'd never be able to afford an Ada Compiler (or even find one...) and Turbo Pascal had object support anyhow, so what was I missing?

    Of course C has its limits too, as does C++. But at least I had heard of those back then. And at least we have decent C compilers...

    Also, WTF is Sather? I've played around with a few languages, but not *that* many...
    ---
    pb Reply or e-mail; don't vaguely moderate [ncsu.edu].
  • .

    interviewie: "The langauges that I have years of experience with and am deeply familiar with are of course the best languages and most suited towards what ever job it is that you have in mind for me."

  • the root of the problem is that we tend to organize ourselves into tribes

    Being part of a tribe is one step up from being a single family. And being part of a nation is one higher than being a tribe... each larger organisation brings new potentials for good and bad ... so tribes aren't inherently bad, so long as the problems you're trying to solve can be solved at the level of the tribe.

    Today we have an environmental problem, which cannot be solved at the level of the 'nation'. It transcends national boundaries, and demands a worldcentric identity/process/solution. Some problems can't even be seen until you transcend up a level. The car is not a problem to the individual motorist (it gets him from A to B), but it is a problem to the individual planet.

    Using this approach, the linux/microsoft tribalism will persist until both 'tribes' can be united in a higher and broader perspective. Maybe the internet is that perspective. Maybe we're still waiting.

  • Absolutely true. Its been mentioned around here many times that a "good programmer" is good irrespective of the languages he or she knows. However, even good programmers need to get past a HR person who has a sheet of paper on their desk that says "2 years PPL/ASD/SUA* programming in a KDF/HFG/SAFD* environment".

    Subconsciously, I think a lot of people are hoping that their advocacy of a particular language/platform/etc. will boost the odds that the next cool job offer will have the the check boxes that match his or her skills.

    The other motivator may be fear. If you DON'T advocate your favorite language, maybe in three years it will be as popular as writing TSRs for DOS**.

    Finally, no one likes being on the "losing side". In depth knowlege of a defunct technology or language is the programmer equivalent of rooting for the Washington Wizards***. Unlike professional basketball, however, maybe rooting for the language may actually keep it in the public consciousness. And, if it's in the public consciousness, maybe your skills are still in demand.

    I'm not defending mindless advocacy, but I do believe it involves more that the black and white statement "use the right tool for the job."

    * random acronyms used for artistic effect :)

    ** Who knows? There were probably a few people who were happy they knew COBAL right around 1999.

    *** Come on Jordan! Whip those guys into shape!

  • I agree. One thing I find with people who have taken tech courses in a specific language or on a limited skill is that they get very cocky. They seem to think that their language they know is the best one for all jobs.

    The main difference that I have found in Computer science (refeering just to programming side of thing, not algorithms and stuff. that's another topic) is that it's not important what language you use but how you accomplish your goal. A real experienced programmer will take a look at the job, and choose a language based on the task at hand. If not you end up with emulators written in java and web interfaces in assembler (well, not that bad).

    I'm only about half done my CS degree, but find myself turning to different languages based on what problems I have to solve. Languages are tools. Let's use hammers to hammer in nails and screwdrivers for screws and not resolve to arguing about how much better a hammer is.
  • by Laxitive ( 10360 ) on Thursday December 14, 2000 @09:08AM (#559303) Journal

    The author is restating an extremely valid point that is realized by most decent programmers: use a language where it is appropriate.

    I learned python before perl, and thought it was one of the coolest languages around (still do), and for about a year, did all my scripting in it. Then I had to debug some perl code, and doing so, managed to teach myself some perl. After learnign a bit more, I said to myself "hey, perl rocks!", and then proceeded to script solely in perl for the next 6 months or so.

    Then I started noticing how each had advantages in certain domains. Doing any sort of work with serious data structures in perl is annoying. Perl's pseudo-typing, and automatic flattening of lists (because lists can only hold scalars.. dontcha know), really makes it annoying to handle heirarchical data. You have to start using references, which makes code ugly and hard to read. Python is much more suited for that sort of thing.

    On the other hand, doing stuff like traversing the the filesystem quickly, munging text, ad-hoc parsing, is extremely sweet in perl. Python is just too verbose when it comes to those kind of things. My home machine is littered with perl scripts that automate administrative tasks.

    Use a language where it's fit, and dont take it personally when people point out that a language is not fit for particular task (they're usually right).

    -Laxitive
  • I agree. I see much of this, due to the fact that I am an expert Visual Basic programmer, and I use Windows 2000 as my primary OS. I'm on the VS.NET beta team, and I like the direction things are going.

    This type of "advocacy" extends to all areas of life these days. People assume that they have the only well-thought out opinions on life, the universe, et al. and don't take into account that others may have thought just as long and hard about things and come up with a different conclusion. Yes, it is possible for a clear-thinking individual to be pro-life. Yes, choosing Linux does indeed make sense in lots of situations. Yes, Visual Basic (and VB.NET) is a great language for certain tasks.

    I think we should all respect each other and try to understand more about why another person has chosen the viewpoint that they have. It may serve to change our minds, or re-enforce our position, but either way we will be better people for it.
    -----
  • When I was taking an AI class in college I chose Perl for many of the smaller assignments, because it gave a great mix of the features of Scheme and C. You have pseudo-first-class procedures, good reference capabilities, plus all the looping and iterative constructs that one sometimes misses in a language like C. I found my assignments were really easy when Perl was used in this fashion.

    I've always thought that Perl has a Lisp-spirit hiding in there somewhere, and I've programmed with it accordingly. Unfortunately the syntax is not meant to bring this forth, and it ends up as a mash of punctuation when one tries this programming style with it.

    I've lately gotten very interested in Ruby, since it appears to have taken most of the good part of Perl and made it into a more logical language, with even more of the features of Scheme and Lisp. Unfortunately, even Ruby isn't meant to be used the way I like.

  • I love French, however, my vote for best language is Latin. It has a few quirks, but as a whole it is more consistent than any other language. Memorize the conjugations and declensions and you've learned half the grammar. Also worth noting is that there are only five or so irregular verbs in Latin (not counting the other ones that are just compounds of the basic ones).


    "Homo sum: humani nil a me alienum puto"
    (I am a man: nothing human is alien to me)

  • Ummm scientist, logical... objective... Have you been to a grad school lately? When I think of scientists I think: grants, scheming, politics, building a grad student empire and attaching your name to all their papers.

    Universities operate under some different rules nowadays (different from 30 years ago as well as different from the private sector). By and large, engineering and science curricula do not encourage subjectivity. Misrepresenting facts seems to be a convenient and occasionally necessary way to get the means to do the work, but this runs counter to good science.

    Of course, it cuts the other way as well. Objectivity has been used as salve to the conscience for those working on projects that bring up ethical quandaries.

    -Jennifer

  • And just a hop, skip and a jump to the obvious: If language advocacy is bad for the reasons presented in the article, operating system advocacy, CPU advocacy, Open Source advocacy, database advocacy and Linux/BSD distribution advocacy are all just as bad.
  • Your arguments are all very good. The simple concept is: be objective.

    A lot of people learn a language, like it, and look for problems to solve with it. More objective people, often, I think, more experienced people, look for problems and then decide what tools to use to solve them. Children do this. You give them a hammer, they look for things to hammer. You look at a machinist, or a carpenter, and he looks at his problem and chooses or even invents the tools needed to do the job.

    The same thing goes for operating systems. Linux zealots always try to tell you how you can do everything you need with linux. Isn't this the same thing exactly? Sure, linux can do anything. SO can perl. Nevermind that both were written in C ;)

  • ...have never concatenated strings in VBScript. The semantics are no different from string concatenation in any other language, but the syntax has a major effect on ease of programming and code readability.

    My Beautiful Report Language [sourceforge.net] does extend Scheme semantics, but the way it extends Scheme syntax is arguably the more useful aspect, especially in web/database app development.

    Another cool semantic is tail-recursion, a la Scheme. Why don't more languages add tail-recursion?

    Tail-call elimination seems to be part of the Sun Java implementation if not part of the spec, based on benchmarking of recursive/non-recursive methods.

  • Someone below mentioned that advocacy by implementation is great, and works very well. Advocacy by implementation. What a great summary!

    The other point was from the article: "Passion doesn't convince. Passion makes you look like an idiot or an asshole." I've been trying to make the same point for years, but never quite got it so succinctly. Bravo!

  • I may be using the wrong terminology, but when I learned Scheme (long ago) we were taught to refer to a whole class of semantics as tail recursion.

    Using my terminology, You are actually making my point by lapsing into the "advocate language" trap that I'm advocating against. You will fail in anything like the short run to get programmers to change to the languages you are advocating. But, we could advocate and add tail recursive semantics to C and Perl, and programmers could immediately begin to use a semantic notion of iteration that becomes more functional and weans them from the need for "for" and "while" loops. Incrementally, we'd get to where you want to be more quickly.

    Strangely, you probably think that you are thinking more "high level" than I am, and yet your thinking indicates that you dive right into compiler implementation rather than staying at the level of programmer semantics, though perhaps I set you off by using a term that you think refers to a compiler optimization. I'm pointing that out not to tweak your nose, but to advocate for how I think we can best educate programmers: teach them one semantic at a time. If I should use different terminology to make this point, I'd love to be educated.

  • a suggested improvement to your RBL would be to make its syntax variable to the user's taste. I've worked on a large number of quick and dirty sorts of hybrids that are superficially similar to what you've done, and have found it a huge pain to wish to parse one of the embedded languages, but having to write a parser for the other one too just to make sure that text which appears to be one language is not in fact a piece of the other one.

    BTW, having syntax be a variant property does make it unimportant.

    Thanks for the info about Java's stack, though if they don't guarantee it, it would not be a good idea to rely on it. If they do guarantee it, Java programmers should be taught the semantic implications because they could write recursive, simpler to read and debug, code.

  • You forgot to include the word "like".
  • What an excellent article!

    I especially liked the point at the end, that languages do have strengths and weaknesses and are not all created equal.

    I firmly believe that we hackers at Evil Geniuses For A Better Tomorrow could not have implemented Mojo Nation [mojonation.net] as quickly as we did if we had been using Java instead of Python.

    Nonetheless, Mark-Jason Dominus is exactly right that tribalism is not a sane or effective way to grow, as a professional or as an industry. Developers and users of other programming languages are not our enemies, they are our friends.

    Regards,

    Zooko

  • What's wrong with arguing? Well, nothing, if the participants are mature enough to handle it. Problem is, most people *aren't* that mature. Most people can't stay objective in a debate on Libertarianism vs. The Rest of You Socialist Bastards... see what I mean? Our opinions are strong, our words harsh, our emotions get involved and then we start throwing punches. I'd like to think I'm mature enough to handle a good old fashioned argument. However, when a dinosaur who still lurks around the office told me "you only like gnome because you're too young to know any better" I got pissed off, and responded in kind. Same principle. As long as people believe that their choice of language/gui/linux distro/OS/text editor/etc makes them superior to the Unenlightened Everyone Else, advocacy hurts more than it helps. You don't change anyone's mind, you don't make them think, you just push them farther away.
  • Your point is well taken, but I would expect that a reasonable person (such as yourself) who keeps an open mind and decides on one thing or the other based on many factors, retains an open mind after the decision has been made and is also willing to see things in terms other than black and white.

    For instance, you make an important distinction when you talk about purchasing a C-64 over an Apple ][ because it is superior in ways that matter to you. Acknowledging implicitly that the C-64 had shortcomings in areas where the Apple product shone, albiet areas not important to you. I would suspect that you would be able to maintain a reasonable level of discourse when you discussed the differences.

    For an example of the kind of "oops now I have to protect my investment" advocacy I am talking about, check out www.planetdaikatana.com or www.dndmovie.com. These folks are desperately trying to convince themselves that their investment was a wise one. Not unlike your average TRS-80 owner back in the '80s.
  • I didn't understand your suggestion. Could you post an example?
  • Only novice or unexperience developers or completley unprofessional developers advocate specific langauges. Anyone who's been in the industry (ie: held a job) for a number of years quickly realizes that languages are like tools in a toolbox. Use the right one for the right job. Langauage advocacy indicates a developer's immaturity, and is something that most successful developers quickly grow out of.

  • The Scheme standard is fairly minimal because its main use is in education, and they want it to be easy to implement a complete Scheme. Real implementations generally include things like xor. There's a movement [schemers.org] afoot to standardize such extensions among Scheme implementations.

    The reason one doesn't totally get used to programming in Scheme even after a semester course is that the course is usually teaching a series of progressively more interesting CS principles, not giving you lots of practice at one level before moving on to the next. You have to use Scheme in real-world work for a while to get the kind of repetition that familiarizes you with the common constructs and techniques.

  • If it weren't for language advocacy, I wouldn't find out nearly as many cool things about programming languages.

    I seem to keep saying this, but your response is very ironic.

    I'm assuming you read past the first sentence, so it is very ironic that you're copping the very attitude that Dominus is criticizing. He does not say advocacy is bad -- he says exactly the opposite. But he criticizes advocates who reduce all arguments to statments of the form "x is (good|bad)". Which is exactly what you're doing now.

    __________________

  • What is it about this, your last paragraph and your sig, that make me think you're quite confused about the whole deal?

    I think we should all respect each other and try to understand more about why another person has chosen the viewpoint that they have. It may serve to change our minds, or re-enforce our position, but either way we will be better people for it.
    -----
    Visit the Ihateapple.com Forums


    ---
  • Sorry for the offtopic post, however I think
    slashdot may have a db problem. I was reading
    an article on Programming Advocacy, Hate,
    however when I selected the link to read the
    discussions on the article I found none.

    I found some "fp" conversations, the Jon Katz is
    gay code, and some topics on Bush's stupidity
    and some Texas Gov. and Jesus.

    If someone could please point me to the correct
    discussion group pertaining to the above mentioned article, I would really appreciate it.

    Thanks.
  • by Tom Christiansen ( 54829 ) <tchrist@perl.com> on Thursday December 14, 2000 @12:01PM (#559330) Homepage
    Latin is nice. Perl is nice. why settle for just one? :-) See Damian Conway's [monash.edu.au] incredible paper on Lingua::Romana::Perligata -- Perl for the XXI-imus Century [monash.edu.au]. You can fetch it from CPAN [cpan.org].

    ________________________________

    NOMEN

    Lingua::Romana::Perligata -- Perl in Latin

    DESCRIPTIO

    The Lingua::Romana::Perligata module makes it makes it possible to write Perl programs in Latin. (If you have to ask "Why?", then the answer probably won't make any sense to you either.)

    The linguistic principles behind Perligata are described in: http://www.csse.monash.edu.au/~damian/papers/HTML/ Perligata.html [monash.edu.au]

    The module is used at the start of the program, and installs a filter which allows the rest of the program to be written in (modified) Latin, as described in the accompanying documentation.

    EXEMPLUM

    #! /usr/bin/perl -w
    use Lingua::Romana::Perligata;

    adnota Illud Cribrum Eratothenis

    maximum tum val inquementum tum biguttam tum stadium egresso scribe.
    vestibulo perlegementum da meo maximo.
    maximum tum novumversum egresso scribe.
    da II tum maximum conscribementa meis listis.
    dum damentum nexto listis decapitamentum fac sic
    lista sic hoc tum nextum recidementum cis vannementa da listis.
    next tum biguttam tum stadium tum nextum tum novumversum
    scribe egresso.

    cis.

    SCRIPTOR

    Damian Conway (damian@conway.org [mailto])

    IUS TRANSCRIBENDI

    Copyright (c) 2000, Damian Conway. All Rights Reserved.

    This module is free software. It may be used, redistributed and/or modified under the terms of the Perl Artistic License (see http://www.perl.com/perl/misc/Artistic.html [perl.com])

    MUTATIONES IN EDITIO 0.01

    Initial release.

    ADITUS

    Lingua::Romana::Perligata has been uploaded to the CPAN and is also available from:

    http://www.csse.monash.edu.au/~damian/CPAN/Lingua- Romana-Perligata.tar.gz [monash.edu.au] _____________________

    There you go. Isn't that a much saner, much more legible language? :-)

  • I've always felt that the solution to all the language wars would be if people learned different programming languages preferrably from different programming paradigms. A Perl bigot wouldn't go on and on about how truly OO Perl was if he knew about SmallTalk and neither would a C bigot rhapsodize about C's text-handling abilities if given Perl.

    I'm all for people learning different kinds of languages, but not (just) to prevent them from saying silly things. Silly people will say silly things no matter how well-informed they are. (OK, so the subject of their silliness may move around a bit.) And it's certainly not to educate them about why language X, which they used productively for some time, is inferior to language Y in some regard (although that sounds a bit more like your argument). People should try different things because new experiences teach them about new problems and new ways to solve problems old and new. Even if they continue to use their favorite tools rather than the ones that a first principles analysis might suggest.

    So, along the lines of this particular thread, it's a bit amusing to note that one of the best books on object-oriented programming I have ever seen is Damian Conway's Object-oriented Perl [monash.edu.au] book. And the reason for this is not because it's a perl book or even a book on OO, but because it's a book that shows you a mind-bogglingly large number of ways to look at problems in ways that can be usefully construed as being "object-oriented". And, from that, you get a much better idea about what objects really are. And it's fun. It turns out that the author, a CS professor who does research and teaching on OO things, found perl to be useful for this book due to its chameleonality. Yes, a person who knows more about Smalltalk and C++ and Self and Python and the rest of it than do most of us found that a good language to talk about all of these things was Perl, although it may well have been not the "best" language to use for any of them.

  • The trouble isn't language advocacy so much as with people who don't understand that not using one language for everything is okay. I like Perl a bunch for certain types of text processing. For other types of text processing, I find languages with more of a Lispy feel to be more suitable. I also recommend Python to people who want to learn programming, because I think it is less fiddly than Perl. This doesn't mean I want to have Guido's baby.

    Periodically I've mentioned a shortcoming of a language, and I've been railed by people who are personally insulted. Why is it so hard to say language X is good here and language Y is good there?

    This is similar to the OS "wars." If I say something good about Windows, I'm branded as a clueless Microsoftie. If I say something bad about Linux, I get flamed. Why I can't I use both?

    I think the root of the problem is narrowness of experience. People advocate what they know and put down what they don't. That's stupid. Linux advocacy is being hurt by people who don't know anything about operating systems other than Linux and Windows. I would hardly listen to someone with such shallow knowledge. Similarly, people who get bent out of shape over programming language choice are not worth talking to.
  • In colleges, you are right. In the private sector engineers tend to fit the first description though. Software engineers are probably the least professional of all the engineering sciences. The "what if Microsoft made cars?" type stories are funny but somewhat true of the field as a whole. Look at what is happening with FireStone and Ford. If I put software that bad...nothing would happen to me at all. In fact, I probably wouldn't even have to hide the issues. I could even charge more money for a better working product. "Working" is now a feature and one that is charged more for. MS advertises that NT is 40 times more stable than 98. If they know that 98 is this bad, how can they legally sell it at all? This type of attitude permeates through the CS world. Language zealots are just another example.
  • I understand how the writer feels about advocacy. It does cause tensions between the users/developers of different programming languages. But I have an interesting point to make:

    Sometimes people put down a language or consider it to be not good enough for use when they don't know what they're talking about. They will say things such as "JavaBeans can do this, and perl can't..." or something very similar but equally as silly. For example, I had a technician at a top-rated e-commerce applications software company send me an email with the following line just a week ago:

    "You might have enough RAM. It's the Perl Module. Perl is used for text modification only. However, -APPLICATION- uses Perl for file transfer in the -WIZARD- and your files might be too large for Perl Module to handle. Thus, you'll have to manually copy those files; increasing RAM is not the solution."

    If the author of this message had known anything about which they were speaking, they wouldn't have 1) said that perl was for "text modification only" (although it does it well), and 2) they would have realized that there are many ways to handle large file transfers with perl, without reading the entire file into RAM and then sending it over the network.

    So my point is that while advocacy may be a negative issue, sometimes people have to stand up for a certain language because ill-minded, uneducated fools are circulating false information about the language that would prove hurtful to the userbase. And these views become popular especially in light of marketing a proprietary language such as VB and ASP in order to sell more of a product (VB and IIS). These marketing schemes sometimes hurt developers that are already established in a career because the language they program in becomes unpopular in the eyes of management (who are the worst people to chose a language), and they may lose their job if they cannot quickly expand their skill sets.

    Bottom line is: advocacy is an evil, but it just may be a necessary evil.

  • I had to read it twice, and then i was still trying to figure out what you ment. Lord of the Flies? Some SF refrence? Tribe... tribe... Oh fuck that survivor show that I never watched but couldn't avoid. The point I guess being that for some people it's happening now.
  • I must offer a wholehearted agreement to this sentiment.

    One of the things that annoys me more than anything in online communities is that invariably, they devolve into a group of people who can't handle any dissent amongst themselves. Everything must be happy and fun , and any discussion that might actually cause conflict is met with derision and fear.

    To these people, I say this: what is wrong with arguing? People are human. People have disagreements. And quite frankly, how else can you test your own beliefs other than defending them?

    I'd rather have my beliefs challenged so that I am forced to actually examine them, instead of just blindly believing whatever the group wants me to. Unfortunately, it seems that most people don't agree with me. They see arguments as evil.

    Of course, these are the same people that vote for the same party every year, because after all, "my parents were [X], and therefore so am I". To them, actually having a unique thought or examining the ideals of their political party is crazy talk. So really, I guess I can't expect much of them.

    Still, it would be nice to see a forum where people can actually discuss things in a civilized manner. K5 does a decent job of this at times, but even there it can be difficult to do so. But hey, who knows, it may work out eventually. One thing is for sure though: it sure as hell won't happen on /. .
  • by Carnage4Life ( 106069 ) on Thursday December 14, 2000 @08:02AM (#559341) Homepage Journal
    I've always felt that the solution to all the language wars would be if people learned different programming languages preferrably from different programming paradigms. A Perl bigot wouldn't go on and on about how truly OO Perl was if he knew about SmallTalk and neither would a C bigot rhapsodize about C's text-handling abilities if given Perl.

    The problem is narrow-minded programmers who learn 1 langauge or 1 paradigm (functional, Object Oriented, procedural, etc) and refuse to open their minds to any alternatives no matter how well suited they would be to solving the task at hand.

    Remember people, programming languages are merely tools and like most tools they are good at performing specific tasks and not-so-good at performing other. A hammer is great at removing nails stuck in a wall but would be useless at unscrewing the back of your VCR. Use the right tool for the job and keep in mind that your favorite tool is not always the right one.

    Grabel's Law
  • by deacent ( 32502 ) on Thursday December 14, 2000 @08:02AM (#559342)

    You know, the same can be said for operating systems. Replace the bit about strong typing, etc. with scheduling, etc. and it should sound familiar. I guess the point is that everybody's going to have a certain way about solving a task and they're going to have prefered tools for doing it. Suggesting alternatives or comparing the way one tool works to another often leads to feelings of criticism, even where none was intended.

    Funny that scientists are supposed to be logical and objective when engaged in their work but I guess programming always has been a mixture of science and art.

    -Jennifer

  • by mclearn ( 86140 ) on Thursday December 14, 2000 @08:04AM (#559344) Homepage

    However, here is a problem. If you do not know what language fits the problem, then you are destined to work with a language that is less efficient at solving the problem (in terms of time, space, complexity, all of the above). Compare writing a parser in C vs. writing one in Perl, or writing set operations (from scratch, not the STL) vs. using the built-in language support of Pascal, or writing a thread-driven program using C vs. using the language-centric thread features of Java. There is give and take, and there is general programming languages vs. specialty programming languages. However, the only way to really know what a language offers is through advocacy. Now I'm not talking fanatical advocacy, but rather discussions about the merits of one language over another. Its all about give and take. Find the language with the features you need to solve the problem at hand.

  • I'd say maturity takes practice. If someone never argues, I'd expect them to defend their ideas poorly, and have a rather disappointing experience.

    To be a really good debater, you've got to absolutely demolish your opponents argument, while remembering that you also want to go get a beer with them after you are done.

  • the fact that we are all part of a tribe called "the human race."

    We will never recognize our unity as "humans" until we have a non-human enemy to face, and we can all agree that it is an enemy.

    Whether that enemy comes from earth or outside is meaningless. Our differences will continue to divide until we _NEED_ our similarities and unity to help us...

    And in the sci-fi & cynic world, even then some "humans" will take advantage of that unity behind the scenes to advance themselves...

  • by joeytsai ( 49613 ) on Thursday December 14, 2000 @12:57PM (#559359) Homepage
    ...from the C++ faq.

    In 99% of the cases, programming language selection is dominated by business considerations, not by technical considerations. Things that really end up mattering are things like availability of programming environment for the development machine, availability of runtime environment(s) for the deployment machine(s), licensing/legal issues of the runtime and/or development environments, availability of trained developers, availability of consulting services, and corporate culture/politics. These business considerations generally play a much greater role than compile time performance, runtime performance, static vs. dynamic typing, static vs. dynamic binding, etc.

    Anyone who argues in favor of one language over another in a purely technical manner (i.e., who ignores the dominant business issues) exposes themself as a techie weenie, and deserves not to be heard.
  • by shaper ( 88544 ) on Thursday December 14, 2000 @09:40AM (#559362) Homepage

    ... is the problem. When I hear a criticism of my favorite tool/platform/OS/political party/religion/thing, I immediately become defensive. Why? Because I chose the thing, so any criticism of the thing becomes a criticism of my own intelligence, judgement, values or beliefs. And the more I invest in the thing, the more likely I am to identify and take offense with criticisms directed toward it.

    To paraphrase and extend the article's last point, this identification is not necessarily a bad thing. The problem is that many (most?) people don't handle criticism very well, no matter how constructive. So we get defensive reactions which beget counter-offensive criticism and we devolve into useless shouting matches.

  • It was "Ma" Ferguson IIRC, towards the beginning of the 20th (like before 1920). She was texas's first woman gov, again IIRC. Sorry, even though I live in Texas, Texas History doesn't interest me that much. :-)


    --

  • I program in Java a lot, and I'd just like to say (not to slight any other languages, or plug Java too much), that Java's strong point, currently, really is its back-end enterprise-ish stuff: CORBA, EJB, RMI, Servlets/JSP, messaging, etc. etc. Actually one of the deficits of Java so far, is that it is pretty weak on the client end (although I think Swing is a pretty good GUI toolkit)...it's just not there performance-wise yet. I also realize that there are some subtle and not-so-subtle limitations (some intentional) in the language, and I would hardly suggest it for everything...although with the number of technologies it supports mushrooming as it is, it may just do (yeah, you can use Java for tons of things, although there are better solutions around for many, e.g. device drivers).

    I tend to think of it as "C++ Light" + binary portability.

    Well that's my 2 cents.

    (BTW, I used to do a lot of Pascal and Object Pascal (a language that I still like a lot) programming, and I used to do a tiny bit of C/C++ programming, but I'm badly out of practice now that I'm in cushy Java-land; I have two Peter Norton x86 assembly books sitting on my desk which I have been trying to learn something from, but so far it's been like squeezing water from a stone ;)
  • I agree, but you could make that argument about *anything*. Politics, Religion, slashdot... It's great, until it becomes petty, irrational, vindictive, you name it.

    But that would be something bad about the Language Advocates, and not necessarily the concept of Language Advocacy itself.

    I agree with you, BTW; back in the day, I was involved in Pascal vs. C Syntax Flamewars over in 'comp.lang.pascal.misc'. What annoyed me the most was that it was all about syntax. I mean, there's a Pascal-to-C converter, for crissake! I even found one that tried to do it the other way around, although that's tougher. Arguing over 'begin end' versus '{ }' gets old really fast.

    So basically, if I'm going to argue about a language, I try not to do it based purely on syntax, which is something the present "Perl vs. Python" flamewars seem to not grasp. Believe me, both languages are ugly in their own special way, but I'd still rather hear about actual language features, as in, after the code is tokenized, what can it do...
    ---
    pb Reply or e-mail; don't vaguely moderate [ncsu.edu].
  • What's more interesting, though, is to consider human languages from the same perspective: does the language you speak constrain the concepts you can think about? If you're fluent in several languages, is your mental universe larger? Can you describe a concept that's easy in one language to users of another?

    This is a famous question in natural language linguistics, known as the Sapir-Wharf hypothesis. It posits that what humans can think about is limited by the set of terms in their language. So far, all of the experimental evidence disproves it, even though the idea sounds very intuitive. It appears that all human languages meet a certain level of expressivity that allows us to think and talk about anything, no matter the language used.

    In computer languages, which are all artificial and of much smaller scope than any natural language, the question is still open. Anecdotally, programmers know that some programming languages make solving certain categories of problems easier than others, sometimes by orders of magnitude. It's been suggested on Slashdot before that a variant of the Sapir-Wharf hypothesis may hold true for computer languages, even if it doesn't for human ones.

    Who'd'a thunk Philosophy and Computer Science would have anything in common?

    I've always felt that computer science is in many ways a field of applied philosophy. There are many crossovers between the two fields. Consider, for example, that the Boolean logic used as the basis of all digital computing was invented by a theologian as a way of answering questions in metaphysics and theology.

  • How would you know to go to the ML users group to find out about ML? How would you know you might be interested in ML?

    You could come across some reference on the web, or there could be a presentation in a more general users' group. The point is a Perl users' group isn't appropriate to talk about strong typing and or ML. I like Linux but if I presented a talk about Linux to a Windows users' group, I wouldn't expect a positive reception even if I was polite and never slammed Windows in my talk. It just would be inappropriate.

    Nowithstanding that the article describes using ML to illustrate a point, and precisely not to say ML is so great.

    Yes, but in all his complaints about "tribalism" he doesn't seem to realize why his presentation may have been inappropriate to its venue.

    I haven't actually got the first clue about ML specifically

    It's a LISP variant -- not too bad as such things go, although I've never been much of a functional language fan myself. We used it briefly in a programming languages class.

    but I've been through my share of languages over the years - substitute your favourite language you don't know about - Lua, Snobol, Forth

    Me too. I've been into Forth and I played around with Lua briefly. Languages are fun.
  • See, now you just proved the original posters point. :(
  • I run into these same problems all the time at work. When I talk about programming languages, or operating systems, or cars, or whatever, more often than not I am just interested in discussing the individual merits/drawbacks of that particular language/product. I am NOT implicitly comparing one thing to another. Unfortunately, that leads to a number of problems, since lots of people cannot comprehend anything but comparison. At work we are a big Perl shop, and we also use Java here and there. When I say something good about Java it's always met with "Well, I can do that in Perl too you know! Java isn't so fancy!" And so on.

    Its very frustrating not to be able to carry on productive conversations with other people simply because they are set on making their language look good or your language look bad, simply for the personal gratification and the stability it brings. Tribalism is one unfortunate bug in humanity; it's too bad we can't exterminate it.
  • From the article:

    Conclusion

    I don't really hate advocacy. I just hate the way we do it most
    of the time. We do it in a dumb way. And I think the discoursive
    habits we pick up as a result are going to impede the progress of
    programming languages for a long time.

  • Don't you get it?!?!!

    Advocacy is either good or evil!

    You must choose one viewpoint or the other!
  • This article would be dead on the point if you replaced the word 'Pascal' with the word 'Linux'. Far too often I find myself on Google searching for a technical article about Linux, and what receive back is a list of links to site which proclaim that Linux is the best and everything else sucks. There is a big image problem with the Linux community right now for this very reason.

    One of the websites I run has a bunch of documents linked off of it primarily in Word format _because that's what 100% of our customer base uses_; we set the standards. About three months ago I received an e-mail from a Linux user on the west coast stating that we should make the documents available in alternate formats to make it easier for non-Windows users to read them. Fine, good suggestion. But then he goes on for about half of a page ranting about how 'Windows People' always do this and why Windows sucks. Now this person probably also wonders why we don't use Linux. I wish he could have seen the look on my bosses face and heard the laughter as he pitched the printed copy in the trashcan.

    Like the article says, when are people going to realize that there may be two right ways to do something?

    ALG
  • by pb ( 1020 ) on Thursday December 14, 2000 @08:26AM (#559395)
    That's right, I was comparing them. I've written equivalent programs in Scheme and Perl to try this out. Of course, when we're just talking about syntax, it's purely opinion-based anyhow, and Scheme basically just hides the references and does the work for you, here. I believe that the reason for this is because this functionality was bolted onto Perl later, in the spirit of adopting useful features from other languages.

    In Scheme, you have to check what type something is. It isn't untyped, exactly, but you don't necessarily know what type a certain variable has until you check. If you don't check, bad things can happen. That's the disadvantage that this flexibility provides.

    In Perl, you do the same thing for references, while other variable types are more explicit. I just wish those types had similar methods, but people have written this in too. (Since floats, ints and strings are all automatically converted in Perl, you have to basically write something to test if a string could also be a float or an int to see if it's a number originally. Unless there's another way to do it, of course. ;)

    I have nothing against either Perl or Scheme; I like them both. In fact, I was thinking about writing a Scheme interpreter in Perl, since Perl natively supports the features that Scheme requires. I just have to figure out a clean way to parse it all. The other advantages would of course be the extra libraries; Perl has a lot of awesome pre-written tools that Scheme generally lacks. :)

    So, yeah, this sort of advocacy is fine until someone takes it the wrong way, and instead of listening to the arguments, has their feelings hurt. And I think that's all the article proves in the first place.
    ---
    pb Reply or e-mail; don't vaguely moderate [ncsu.edu].
  • I think there's a very fine line between advocacy and close mindedness.

    Having your personal favourite tools for a job is one thing, and can actually be beneficial. It's something you're familiar with and proficient in. Even if it's not quite the best tool for the job, the fact that you're fluent in it will make up for small advantages that a different tool may have.

    However, once you cross the line of "having a favourite" to "having only one" tool for everything, you've hurt yourself. Keeping an open mind towards new tools is essential. You may not always like them, and even if they are slightly better for a job, your familiarity with the old standby could still make up the difference. But refusing to try something different at all is going to extremely limit you. Even being aware of other tools and looking at their merits honestly, will teach you new things and new ways of thinking about a problem. You may even learn new ways of using your favourite tool by seeing the strengths of a different one.

  • I think one of the biggest reasons for language advocacy (/OS advocacy/DB advocacy/etc.) is that we have a vested interest in "our" language succeeding. Each of us has worked hard to learn the subtleties and intricacies of [language X], and if something else comes along that's better, we're suddenly newbies again. That hard-won expertise doesn't carry much weight if [language Y] makes it easy for "any idiot" to accomplish and/or understand what took you a week to figure out.

    We start trying to come up with reasons why it's not really better: It doesn't give you enough control; it's not as efficient; it has fewer options...

    PC vs. Mac. BSD vs. Mac. Mainframe vs. client-server. Command line vs. GUI. How many people were a little saddened to see MS-DOS fading into the mist, not because it was a great tool, but because they knew how to use it?

    A language advocate needs [language X] to succeed, to be dominant, to be the best, because he has more status and more useful knowledge that way.

    Bottom line, it's an ego thing.

  • The article is complaining about blind advocacy, in which people don't want to hear about advantages of other programming languages and don't want to know how their own might be improved. The article also complains about vague, uninformative, emotional advocacy.

    Another useless form of advocacy is trying for a generalized comparison of two languages. There are so many different areas of programming in which the respective languages might have strengths/weaknesses that a meaningful discussion would take ages.

    Useful advocacy takes one specific application and debates what language(s) would be best for it. In such a discussion, some amount of emotional attachment to a particular language can be helpful, provided it is translated into specific, informative words.

    1. Emotional attachment to a language motivates people to contribute to such discussions when they might otherwise not care to help out.
    2. A good advocate for a particular language will specifically describe its advantages and not just say "RTFM if you want to know how it works."
    3. Someone deciding on the language(s) for a particular app will get a thorough discussion of the options.
    4. Language implementors will get useful comparisions

    A better-suited language for a particular application won't be used if the app programmer doesn't know about it. In this context, advocacy is useful.

  • But then, we would have to be rational. We would have to be able to see the other guys point of view without going into spasms of mental constipation. No more knee jerk reactions.

    even those guys over there, who we call the spawn of Satan, they might have a point. Yes, THOSE guys.

    eeeeewwwwwwwwwwwhhhhhhh ......

  • I liked this part:
    Drink the Kool-Aid

    I think the root of the problem is that we tend to organize ourselves into tribes. Then people in the tribe are our friends, and people outside are our enemies. I think it happens like this: Someone uses Perl, and likes it, and then they use it some more. But then something strange happens. They start to identify themselves with Perl, as if Perl were part of their body, or vice versa. They're part of the Big Perl Tribe. They want other people to join the Tribe. If they meet someone who doesn't like Perl, it's an insult to the Tribe and a personal affront to them.

    I think that explains the reaction of the folks who wrote to me to complain about my unfairness to Pascal. I think maybe they took it personally, and felt that I was being unfair to them.

    Getting yourself confused with a programming language isn't a sane thing to do, but a lot of people do it, including people from our community.

    I'm not the only person who suspects this. This section's title, ``Drink the Kool-Aid,'' comes from a great talk by Nat Torkington from last year's YAPC. The title of Nat's talk was ``Be an advocate, not an asshole.'' Nat's talk has a slide on why people do advocacy. People he asked gave a few different answers, which he mentions. But then he says: ``My secret suspicion is that a lot of third-party advocacy is just: Perl is the way and the light, man, so drink the Kool-Aid and ascend to programmer heaven.'' I wouldn't have put it that way, but I have the same suspicion.

    Now there is much more to it, but this gets to the nut of the problem very well.
  • The Philadelphia Perl Mongers invited me to give a talk about strong typing. If they had not want wanted to hear a talk about that, they would not have invited me to give one

    Or at least the person(s) in charge invited you to talk about strong typing. Fair enough. I rather assumed that they invited you for your well known Perl skills and you simply chose the topic yourself.

    On the other hand, some of the complaints you dismiss as "tribalism" are quite relevant. "What's wrong with the way Perl does it?" is a perfectly valid question. You *should* have examples prepared that show how weak typing can lead to problems in certain cases. Otherwise why bother?
  • Just out of curiousity, because I know a lot of people taking college CS classes in Scheme, and I know a lot of academic-type people who like Scheme, does anyone actually use Scheme outside of academia? I can see Perl used to drive webpages, C used for applications and OSs, C++ and Java for applications (and Java for web applets), but I've never heard of Scheme actually ever being used outside of a college setting. Do people write production code in Scheme? If not, why not? Doesn't that make it rather useless except as a teaching tool?
  • "Language Advocacy" = Fine

    "Language Bigotry" = Destructive

    I think Mark Dominus' article was an attempt to illustrate the dangers of the former drifting into the latter. Many of us tend to hang in the grey area between the two.
  • Erm... would that 'small mistake' be the way that all of your dots are copyright symbols and you bracketed another statement with then Yen and international currency symbols? Or are you just a very clever troll who deliberately mutilated a post to make Microsoft look bad? (Why anyone would feel the need to do that -here-, I dunno, but either your settings are -massively- screwed up, or you did it on purpose.)

    --Parity
  • I think you missed one of the main points of the article. If everyone who knows language A only ever use that language, and even worse, only ever talk about that language, how will they ever learn about other good ideas that could improve their favorite language and OS?

    That alone is an excellent reason to talk about strong typing and ML to Perl users. It's an excellent reason for Linux fans to learn about the strong points of alternate operating systems. Even Windows 2000 has some good ideas that might be worth investigating for Linux.

    But if you were to get up in front of your average bunch of Linux programmers and talk about some of these good ideas in Windows 2000, everyone would get all defensive and immediately fall into the tribal warfare style of thinking which does no one any good.

    Comments about "being the wrong venue" kind of miss the point.

    Torrey Hoffman (Azog)
  • Ah, but he wasn't discussing what he described. He made that argument about those idiots, and still claimed that "Language Advocacy Is Bad", but I think that all he managed to prove was that "Idiots Are Bad".

    ...and I think that you're trying to make the same point that I was: use the right tool for the job.

    Part of advocacy has to do with presenting the facts. If you ask me if it's easy to do sytem programming tasks in C, I'll say "Hell yeah!"; if you ask me if it's easy to do threaded networked database access in C with a GUI, I'll say "Um... no, that's pretty tough, actually". And I might even recommend looking into Java, against my better judgement... :)

    So, yes. Idiots are bad. Educate them. Ignore them. Flame them. But don't encourage them. And if someone asks you for your opinion, don't be an idiot either...
    ---
    pb Reply or e-mail; don't vaguely moderate [ncsu.edu].
  • if you study "real" computer science you don't talk about "languages": you talk about "semantics". Semantics are the different parts of computer languages that do the interesting things. For example, the semantics of Perl's strings are (the capabilities, the limitations, the expressiveness) are very good. That's why people like Perl. There is no real reason that the C language could not be modified to add Perl's string semantics. Another cool semantic is tail-recursion, a la Scheme. Why don't more languages add tail-recursion?

    and too bad more language advocates and language designers and language users don't understand that language semantics are the interesting thing.

  • The guy goes to a Perl group and talks to them about the wonders of ML, and is amazed that people get defensive about Perl. What was he *thinking* would happen? Why not discuss ML at the ML users' group and Perl at the Perl users' group? That way the audience will actually be interested in the discussion. Yes, it is possible that a particular programmer uses both ML and Perl, but then they are likely to attend both users' groups, no?
  • ... it's that simple. vi vs. emacs. GUI vs. CLI. Mac vs. PC. Perl vs. Python. Microsoft vs. OS/2. Microsoft vs. Linux. Oh, hell, Microsoft vs. *. :-)

    Unfortunately, it's human nature to lower a discussion to mudslinging. Done frequently enough, one starts casting aspersions on those who hold the opposite viewpoint. Compound that problem with the relative anonymity of [BBS, newsgroups, Slashdot], and it's easy for decorum to be neglected. As a result, people type things they would never say to someone's face. Earlier this week, I got into a donnybrook with an Eiffel programmer who, as far as I can tell, probably never considered the fact that some Slashdot readers use Visual Basic.

    I have a page from a Dilbert calendar that sums things up quite nicely.

    Dumb Guy on Bench: I teach my kids that these things are right and these things are wrong. Period. End of story.
    Dogbert: Wouldn't that teach them to believe anything they're told without applying any critical thinking?
    DGoB: I don't think about that.
    Dogbert: Duh.

    We're not scare-mongering/This is really happening - Radiohead

  • I work in programming language research, and it stuns me daily how we are still stuck using ideas and languages from the 60s.

    Listen, computing underground: You use linux or FreeBSD MacOS X or whatever because you think it's better, not because it's cooler or because The Man told you to or because you read an advertisement. So now, it is equally your responsibility to seek out programming languages and programming language concepts which are different. You are the people who turn great ideas in research into great ideas in practice.

    By underground language, I do not mean more interpreted C clones with large toolboxes or domain-specific features (ie Perl, Python, Visual Basic, PHP, etc.) I mean genuinely different ideas; check out logic programming, functional programming, etc. Learn a language like Prolog, even if you never use it. Program something in ML or Haskell. Use an experimental research language like Cyclone or Tick-C. You'll probably find that they're lower on buzzwords and higher on actual useful features (or maybe you won't like their philosophy and can try a different one). There are plenty of places to read advocacy about languages like these, and without them, how can we hope to ever move to something new?
  • > "Passion doesn't convince. Passion makes you look like an idiot or an asshole." I've been trying to make the same point for years

    I've been passionately trying to make the same point for years, but instead of taking the point, people tend to just conclude that I'm some kind of idiot or asshole or something. Go figure.

    --
  • All languages suck. Some suck more than others, some suck in different places or at different times, but they still all suck.

    Unless I'm imagining things from the caffeinne wearing off, this would imply that committing to one language as the "One True Way" means committing to sucking.


    T. M. Pederson
    "...and so the moral of the story is: Always Make Backups."
  • The humor is well taken, but I thought that I'd include the point that at the end of the article, he says something like "I don't really hate advocacy, I just hate how we do it most of the time."
  • I have to say there doesn't seem to be too much here of
    substance, but the discussion of tribalism is somewhat
    interesting.



    Triabalism can be a problem all right. But I'd argue that
    you want to keep the different tribes talking to each other,
    even if it's only to engage in arguments.



    The general trend in real discussion groups like
    mailing lists or usenet is to engage in long, drawn out
    wars that can either converge on enlightened compromise,
    or harden into separate camps, but either way, the
    people following the discussion will learn something
    about the advantages or disadvantages of the two
    approaches under discussion.



    (Note: slashdot sucks for this purpose: discussions
    die too quickly.)



    My person feeling is that people who like to adopt a calm,
    "professional" air tend to be kind of tedious and wishy-washy.
    They're often so afraid to take a stand that they can barely
    say anything useful.



    But on the other hand, it might be worth considering the
    possibility that both approaches toward discussion
    ("advocacy" and "objective consideration") may have their
    uses, in the same way that different computer languages have
    different uses.



    It's gets your mind working in different ways...

  • If English was good enough for Jesus, it should be good enough for everyone!

    (I think it was some governor from about 30 years ago... can't remember his name - at any rate, it is funny.)
  • Well, it sounds easier than writing in Lisp, at least at first. Array access in Lisp is pretty ugly, and of course figuring out how to construct a loop in either Lisp or Scheme is pretty baffling until you begin to understand... :)

    And yes, once you start passing back references to anonymous functions in lists from other functions, it starts getting pretty ugly; and that's just the beginning. Then, when you try to see if that reference goes to a function, a number (or a string), another list, or something else, the fun continues...

    Here was my original simple example; it gets uglier when you use more references for sublists, and then parse them. If you like native perl syntax, though, Data::Dumper works wonders...

    Scheme:

    (define descending
    (lambda (n)
    (cond
    ((zero? n) `())
    (else (cons n (descending (sub1 n)))))))
    (descending 10)


    Perl:

    #!/usr/bin/perl
    $descending = sub {my $n = $_[0];
    if (!$n){()}
    else {($n, &$descending($n - 1))}
    };

    print "(", join " ", &$descending(10), ")\n";


    Also, does this say something about Perl, or what?

    Lameness filter encountered. Post aborted.

    Reason: Junk character post.

    Taco, you're on crack again! You couldn't post Slash to Slashdot even if you wanted to!!


    ...now pardon me while I insert extra text in my post to bypass the lameness filter. La de da de da...

    ---
    pb Reply or e-mail; don't vaguely moderate [ncsu.edu].
  • by MaxQuordlepleen ( 236397 ) <el_duggio@hotmail.com> on Thursday December 14, 2000 @10:47AM (#559450) Homepage
    It seems to me that advocacy happens when people feel that they must protect an investment, whether of time, money, or emotion.

    Example 1. It's 1986 You just spent $900.00 kitting yourself out with a Commodore 64, 1541 Disc Drive, RGB Monitor, etc. etc. You are bragging about your new purchase around the watercooler, when some smartass begins to enumerate a thousand reasons that the Apple ][ outclasses the C-64. In order to "protect your investment" (i.e. continue to feel good about the $900.00 you just blew), you become a Commodore advocate.

    Example 2. You have spent 5 years of your professional career working with Microsoft products exclusively. As a Microsoft professional, you now have a substantial investment of time into the operating systems and software Microsoft produces. Whenever you can, you will be pimping M$ to the max because it helps keep your investment's value high.

    I think this also becomes apparent on a bigger scale, for example in the election fiasco you yankees just went through. Did anyone at any time who had any influence at all break party lines and say that they other side had a more convincing or righteous argument? Of course not, every step of the way, be it lawyers, judges, members of congress, election supervisors, whatever - every person's behaviour was dictated 100% by party politics. This is similar to the type of "advocacy" that the article's author was talking about, I think.

    My solution (at least in terms of operating systems and programming) is to try to cover as many bases as possible and keep an open mind.

  • > Screw advocating against advocacy
    I wasn't advocating against advocacy. I was pointing out specific problems with the way we do it: primarily that it leads to patterns of discourse which inhibit real communication, and also that it's ineffective.

    > advocate for an antidote to ignorance
    Nice words from the guy who misrepresented my point without even reading the entire article.

  • Because we all have a natural tendency to take parties. It's in our blood. And besides life gives a lot of weight to you advocay opinions. So you can't get out with it...

    For example M$. Let me give a try...
    Well Microsoft is a company like any other. It does OSes programs and other stuff. And has done this with relative quality.

    Well almost... I remembered that first PC with that d... d.... Well with an experimental BASIC...

    And windows 1.0. Yeah it was just buggy. First start anyway...

    Yeah and there was that one with DOS 4.0. Yeah, a new step for Mankind, a good crash for the computer... Well, it happens...

    Oooooh. Windows 3.0, 3.1, 3.11. How many work went into the... Well, how many things I lost...

    And that surprise... "DOS will not be supported anymore". Yeah that one was great!..

    And Windows95? Yeah good surprise. Couldn't have done it less buggy?

    And that whoppla on NT? OOOOOOHHHHH MYYYYY!!! I remember when I administered a whole network. DAMN!

    And the support... THAT DAMN user's support!!!! DAAAAAMNN!!!

    And how many lost partitions, lost data, hours in the installation/revival/maintenance...

    AND HOW MANY PROGRAMS GO TO LIMBO AFTER THE NEXT M$ UPDATE!!!!! THAT ONE WAS DAMN GREAT!

    And how it wiped clean my OS/2 and Linux disks... YEAH GOOODDD!!!

    And always eating, eating, eating, eating memory, disk space...

    And the TAX!!!!! YEAH THE TAX. I ASKED FOR NT4 ONLY!!!!! WHY THE HELL I HAVE TO PAY FOR WIN95 ALSO?????

    Oh? Ah? Microsoft advocacy? BASH IT! CRUNCH IT! FRAG IT! TERMINATE MAZDIEEEEEEEE!!!!!!!
  • by King Babar ( 19862 ) on Thursday December 14, 2000 @08:18AM (#559454) Homepage
    When it comes to type systems, I like Scheme; it has a nice, clean type system. Perl can accomplish all the same nifty tricks as Scheme can, (it has closures, yay!) but you have to at least use a lot of references, and the syntax can get pretty grotty.

    OK, this is not a flame. But I think your post basically proves why Mark Jason Dominus really has a point in his article, and then some.

    You start with a compliment about Scheme and it's type system, then the very next statement is in the spirit of why something else sucks. Now, granted, you were waaaay gentler than many people are, but the kid gloves get dropped by the third iteration on most of these threads.

    Your post also points out a second real problem with most advocacy debates: both sides define the terms however they please, often indiosyncratically. And then they proceed to talk past each other until somebody points out that this is what is happening, then they argue about whose definitions of terms are more appropriate...you get the picture. In this particular case, I would point out that somebody who was interested in type systems might be pretty confused by your description of scheme and its type system, since scheme is often considered to be basically untyped (certainly compared to ML, which comes up in the target article).

    I think the only useful kind of advocacy probably takes the form of seeing what the language can actually do. I have learned things when, for example, I saw that two languages differ in their solutions to one kind of problem, and that one or the other might make better sense in the context of other problems you had to solve. Dominus goes on to point out that perl, notably but not uniquely among currently developed languages, owes many or most of its features to some kind of agglutinizing proccess like this.

  • Reading Edward de Bono's Parallel Thinking book gives a little insite into why people are like this.

    He blames it all on our approach to looking for ultimate truths - there must be one language that is better than all others. We take this approach because it's how we've been taught to "think", derived form the teachings of old Greek philosophers. Very interesting books and if you're at all interested in this, go read it.

    He also proposes a new approach to thinking about a problem - 6 Thinking Hats - which takes you through 6 stages about thinking about something. It's quite useful in a group for discussing technical subjects - but it's hard to get everyone to buy into this as an idea - of course they are right and you are wrong.
  • Whatever you say, "Oracle GOD".
  • by hey! ( 33014 ) on Thursday December 14, 2000 @08:53AM (#559467) Homepage Journal
    I agree, but you could make that argument about *anything*. Politics, Religion, slashdot... It's great, until it becomes petty, irrational, vindictive, you name it.

    Precisely so. I think your post supports what I read as the point of the article -- that language advocates can lose their objectivity and sense of proportion in the heat of battle. Language flame wars (even over brace vs. keyword) are interesting up to a point -- then those of us who haven't put too many chips on the table can go on to something else.

    &ltofftopic&gt Speaking of politics, was I the only one struck in the now finished election by how reliably a person's preference in presidential candidate could be mapped to his or her attitude towards a manual recount? I'll admit I was one of those people -- I preferred Gore and thought there should be a hand recount.

    Perhaps one or the other side was right, but the the infrequency with which people split their positions on this shows what a rare commodity fair mindedness is.

    &lt/offtopic&gt
  • He wasn't talking about ML, he was talking about strong typing.
  • Well... sort of. I'm going to be pretty straight forward here, because this is a forum where I suspect quite a lot of people are against the two things I will bring up here. And mostly because of their own advocacy for their own operating systems.

    The type of advocacy the author is talking about usually takes the standpoint of denying all the other tools available to fulfill a particular job, even at the expense of the weilders time, energy, and sometimes money. But what of when the user is reacting with his advocacy to his own tools and languages to a person sharing what they use. Maybe not to convert the other person. For whatever reason. Is it just straight out flaming that results when the person forces their own advocratic responses at the newcomer, or is it something more serious which needs to be addressed? I think this is much more of a problem than advocacy as presented by the article in question.

    Case study 1: (shudder) Visual Basic. I dont shudder because of the language. I shudder because of all the advocacy going through the minds of a lot of the people reading (or not reading) this post. Visual basic is supposedly bloatware at its finest (or worst), it runs on and only compiles for Microsoft Windows, which is unacceptable to some people. But Visual Basic is, believe it or not, quite useful. Quite comparative to java, in a lot of aspects, because of speed, RAD and other useful features. For someone developing for windows, wanting the application quickly and easily without regard to speed, its invaluable. Yet time and time again, I see it shot down, flame, and torn to pieces. And its especially common among linux crowds.

    Case Study 2: OS
    I use windows. Sometimes. I find it a useful, fun, and enjoyable experience. Yes. I LIKE windows, and am not lying. Yet merely voicing any of its strong points is liable to bring me under a barrage of fire, filled with other peoples advocacy for other operating systems. And its not just Linux people, its NT people too, to exactly the same extent, they scream "Windows 2000 is solid", while hurling insults to my intelligence for choosing linux as my preferred operating system. Yes. My preferred operating system is Linux, even though I LIKE windows.

    So what can we do about this? There has to be some way that we as a community can respond responsibly to this sort of thing as a whole. Or maybe its better off responded to individually.

    ---
  • by pb ( 1020 ) on Thursday December 14, 2000 @07:50AM (#559479)
    If it weren't for language advocacy, I wouldn't find out nearly as many cool things about programming languages.

    Everyone has their pet peeves, and their favorite features, and usually they have reasons for it. For instance, I don't like Java; I think it's unnecessarily bloated, contrived, and non-intuitive. So when someone showed me how simple it was to make a little GUI app, (far simpler than the text version, I might add) I was suitably impressed. I still hate Java, but I have a better idea of where it should be used, and what it can do, thanks to that advocacy.

    When it comes to type systems, I like Scheme; it has a nice, clean type system. Perl can accomplish all the same nifty tricks as Scheme can, (it has closures, yay!) but you have to at least use a lot of references, and the syntax can get pretty grotty.

    I used Pascal for a long time, and a decent programmer often spends a lot of time getting around the Strong Typing--it interferes with what they actually want to do a *lot*, like when they want to create a dynamic arry, for example. C at least doesn't bug you about it, but they can both pretty much accomplish the same things. I can't stand the Java type system; they definitely broke the notion of what should be an Object or not.

    But that's just my opinion, and it doesn't stand in my way when I'm looking for a tool. Lately, I've been writing in C, because I've been doing Operating Systems programming for class, on Unix, in C, and it works quite well. But when I was doing web development and system administration this summer, I learned Perl and PHP, and it was far less work for what I was doing at the time. I also got to see how much work it is to implement a complex CGI in C, and although I think it'd be a neat experiment, I'd start out writing it in Perl, thankyouverymuch. I haven't had to use Java because I haven't done any real GUI programming, but I might try it out just because the API looks a little cleaner than some other GUI APIs I've seen. (I'm not about to write in straight XLib yet; even "Hello World" is huge!)

    So yes, do your advocacy. Tell people which tools you like, and tell them why. Pick the right tool for the job. I don't think these things have to be incompatible. Just try to stay rational about it; that's why Linux has an Advocacy-HOWTO. When done right, it really isn't bad at all, it's quite informative, actually. :)
    ---
    pb Reply or e-mail; don't vaguely moderate [ncsu.edu].
  • by SEWilco ( 27983 ) on Thursday December 14, 2000 @07:51AM (#559480) Journal
    The Slashdot Tribe is voting you out.

    (I wonder in how many years will "vote out of tribe" not be recognizable in the same way that "drink the Kool-Aid" is not recognizable by people who don't know the news story behind it)

  • by ackthpt ( 218170 ) on Thursday December 14, 2000 @07:52AM (#559481) Homepage Journal

    1. Thou shalt not GOTO

    2. GO TO 1

    --

  • Isn t this an example of intellectual chauvinism? Smart people who have adopted a position tend to be blind about the merits of other sides, i.e, Americans vs. Non-Americans, Israeli v. Palestinian, Christians v. Non-christians, and so on.
  • I'm seeing a common misconception of the article in a lot of posts here: that all advocacy is bad.

    The author says, at the end of the article:

    I don't really hate advocacy. I just hate the way we do it most of the time.

    The article is not against advocating things. The article is about people's bad "discursive habits" -- the way we tend to discuss things. The author, for example, is not against discussing the advantages of the typing system in Standard ML. What the article *is* about is the curious fact that most people can't seem to do advocacy right.

    We do it in a dumb way. And I think the discoursive habits we pick up as a result are going to impede the progress of programming languages for a long time.

    And the progress of a lot of things. I wish more people understood this.


  • by Anonymous Coward on Thursday December 14, 2000 @09:04AM (#559490)
    I am a user of many languages and I've been in the field for a couple of decades. In my current company just about any combination of OS's and development tools that you can think of is in use somewhere.

    Currently, I am digging into the beta release of Visual Studio.Net. All in all, I find the package very compelling. In particular, I find the concept of shared framework across many languages unified by common debugers and a single runtime to be a fascinating concept.

    I've tried to enter into a dialog with both Java developers and a group that does C++ on Unix. I'd love to have an intelligent conversation on the merits of the dotnet approach vs. the direction of other areas of software development.

    Unfortunately, the conversations have to get past "MS Sucks". They seldom do.
  • Really? Is Java 2 even available for FreeBSD yet?

    Zooko goes to check.

    Looks to me like it is still in beta. I strongly doubt that we would have more platforms if we had used Java.

    This is not even counting the fact that we developed faster in Python than we would have in Java (I say this based on spending one year working full-time on a Java app and getting basically nothing shippable, and then spending one year working in Python and getting, well, Mojo Nation.) (Not, obviously, that I wrote Mojo Nation all by myself, but the point remains that I've seen Python apps come together way faster than Java apps.)

    And this isn't counting the fact that the standard libraries that we used are in C/C++ and are very mature and widely supported than their Java equivalents. Don't get me wrong, I love Cryptix [cryptix.com], not only because it was founded by some friends of mine, but because it enables cool tricks like hushmail [hushmail.com], but it would've been dog slow to do our crypto in pure Java. The crypto library we use, Wei Dai's Crypto++ [cryptopp.com] is about as fast as can possibly be (including hand-optimized assembly inner loops, if you are on x86). I know you can marry Java app code to native code (and I have done so, way back in the dark ages of Java 1), but the culture of Java frowns on this, whereas the culture of Python has fully embraced native-code integration from day one. Perhaps as a consequence of this, it seems easier to do in Python.

    As to your comments about UI, I have to defer to your authority as a user. Personally, I like the HTML UI, and I would much rather have an HTML UI than an actual widget UI, but apparently most users in this world disagree, so you are right -- we should provide the latter.

    To bring this conversation back to the topic at hand, has this argument been productive or destructive? I think that it has been useful to talk about the actual features offered by different languages / tools. It is good for programmers to learn from the experience of others. I do not think that Python is Good and Java is Bad. Java has several good features, such as integration with current browsers (allowing cool tricks like hushmail) and possibly good cross-platform UI (although I don't personally know how Swing compares to wxPython [wxpython.org]), and it has a security model that allows untrusted code, but cross-platform availability and rapid development are not among Java's strengths.

    Regards,

    Zooko

  • I thought aramic was poisonous.

    -Chris
    ...More Powerful than Otto Preminger...
  • by Fjord ( 99230 ) on Thursday December 14, 2000 @09:06AM (#559494) Homepage Journal

    There's an recent article on Kuro5hin [kuro5hin.org] about fear of XHTML. The most relevent thing in it is how people will violently stick to what they know. They learned to use font tags instead of CSS, and so they like it that way. They fear that their pages will not work in the future, and they fear that they can't do the same things in XHTML as in HTML.

    This is an example of how advocacy (in this case HTML over XHTML/CSS) is very bad for everyone involved. People do not want to leave HTML, so parsers will have to continue to be complex. Browser incomatibilities will widen even more.

    I often see this kind of thing. A new standard comes out, and it solves more problems than before, but there is this inertia on the existing standard. It's almost as if people decide that they have learned enough for them to retire on.

  • Language advocacy is an instance of a class of problems. Viewed in the aggregate, the various kinds of technology advocacy simply make it harder for us as an industry to use technology toward the solution of the problems of normal people.

    This is Slashdot. We are self-professed "Nerds". One of my definitions of a nerd is someone who thinks that technology is interesting. Normal people aren't like that. They desperately want technology to be boring.

    I wrote this article [sourcegear.com] a few months ago, but it might be of interest to the readers of this thread. Enjoy!


    -- Eric W. Sink

  • by DeadVulcan ( 182139 ) <dead,vulcan&pobox,com> on Thursday December 14, 2000 @09:06AM (#559496)

    I think Mr. Dominus hit the nail on the head when he said, "the root of the problem is that we tend to organize ourselves into tribes."

    I suspect this is a deeply rooted social instinct to become part of a group, support the group and have the group support you. Possibly, from the time when humans associated themselves with a family unit and vied for resources among other such units. And attacking other groups meant a greater portion of the pie for your own group, more support for yourself, and more acceptance from within your own group.

    Slashdot is one such group. Why do the Microsoft-related stories routinely attract postings that number in the five or six hundred range? It all has to do with how we define our tribe.

    Is it a bad thing? I think it is, when it starts to obscure the fact that we are all part of a tribe called "the human race."

    --

  • by CritterNYC ( 190163 ) on Thursday December 14, 2000 @07:54AM (#559501) Homepage
    This article touches on a number of good points. A read all the way will do all of us good. I like to think of the problem as a toolbox. You can get a screw in with a hammer, but a screw driver will do a much better job. Just as you can get a nail in with a screw driver (by bashing it in with the handle... which I've done when there IS no hammer around), but a hammer will do a much better job.

    I like to think of programming languages in much the same way. The best programmers have many tools they can draw from and understand the strengths and weaknesses of each for a given task... making it alot easier to use the best tool for a particular job.

    The best programmers don't think of themselves as VB programmers or Perl programmers or the like... they just think of themselves as programmers.

We are each entitled to our own opinion, but no one is entitled to his own facts. -- Patrick Moynihan

Working...