Why Language Advocacy is Bad
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.
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, Searle's Chinese Room, and so on, are intensely philosophical.
Any sufficiently advanced technology is indistinguishable from a rigged demo
--Andy Finkel (J. Klass?)
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.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
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.
---
Play Six Pack Man. I
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.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
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.
pb Reply or e-mail; don't vaguely moderate.
.
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."
Someone you trust is one of us.
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!
Waltz, nymph, for quick jigs vex Bud.
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.
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.
-----
Natural != (nontoxic || beneficial)
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.
"Homo sum: humani nil a me alienum puto"
(I am a man: nothing human is alien to me)
My only political goal is to see to it that no political party achieves its goals.
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.
- I don't need to go outside, my CRT tan'll do me just fine.
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 does extend Scheme semantics, but the way it extends Scheme syntax is arguably the more useful aspect, especially in web/database app development.
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!
"People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
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.
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 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 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.
Wow. I had wondered where that 'e' was. Cheers for that. I showed my mum (ex-COBOL hax0r for Burroughs) the COBOL.NET stuff from MS. She didn't believe me. (this is also funny). I wonder how long it'll be before "technology archaeologist" becomes a major university discipline?
nal 11
If you would only drink the koolaid and start using Ruby, none of these language wars would affect you. :)
Have you played around with CLX or Garnet at all? Both are for Common Lisp, and both run (I think) on CMUCL. Some folks in comp.lang.lisp have said that they like CLX better than Xlib, so you might want to take a look at it whenever you get around to hacking on Xlib. It is my understanding that CLX talks the X protocol directly to the X server, so it isn't an FFI for Xlib. I think CLX will run on other Lisps as well, probably also Clisp and Allegro CL at the very least.
Can anyone recommend a good book on Xlib/Xt programming? It's something I've always wanted to take a closer look at, but I've never really had the time.
Rev. Dr. Xenophon Fenderson, the Carbon(d)ated, KSC, DEATH, SubGenius, mhm21x16
I'm proud of my Northern Tibetian Heritage
Care to explain how you're going to handle call-with-current-continuation?
;-)
Easy, automatic testing for Perl.
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.
__________________
To be more specific, starting from a C-like knowledge of loops, the apparent Scheme equivalent (do) seems baffling. But once you look at an example of named let you see that Scheme is actually simpler.
As to array access: If you don't like it, change it. Scheme is so incredibly easy to extend. If you don't like (vector-ref vec i), do something like this:
(define (pretty-array vec)
(lambda (i) (vector-ref vec i)))
(define a (pretty-array vec))
Then use (a i) wherever you would otherwise have used (vector-ref vec i). Pretty enough yet?
Now back to the advocacy discussion: If I weren't an ardent Scheme advocate, would I have been motivated to share that tidbit?
I enjoy a good arguement, where opposing sides can attempt to show that their choice is the best. Those who just want to denigrate all other choices are just wasting my time.
Case in point, those in this thread who say "PERL sux!" without giving examples of a better choice, that is, examples which show WHY another language is better.
Further case: I have found many things about Linux that I like better than their equivalent in MS Windows. (Why is there no sort command in NotePad or WordPad?) That makes me like Linux more than Windows, but it doesn't make me hate Windows. (Their licensing schemes do that :^P)
You 'win' an arguement by changing the minds of the other folks arguing with you, not by calling them names ("Only an idiot would think/use/code that!")
Hmmm. Your ideas are intriguing to me and I wish to subscribe to your newsletter.
---
Video meliora proboque deteriora sequor - Ovidius
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.
Awesome!
________________________________
cis.SCRIPTOR
Damian Conway (damian@conway.org)
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)
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
_____________________
There you go. Isn't that a much saner, much more legible language? :-)
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 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.
Babar
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.
I am not a cultural relativist. Nor am I a linguistic relativist. In case you hadn't noticed. :-)
Probably Larry Wall...
A musician without the RIAA, is like a fish without a bicycle.
Although it's a nice simple analogy, I don't think it fits programming languages very well.
Languages are more like toolboxes themselves. Each with it's own hammer, screwdriver, etc.
And some have really good hammers, whilst others have better screwdrivers.
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.
-- soldack
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.
Depends on what you mean by "language semantics"...one man's semantics are another man's syntactic sugar.
Practice random senselessness and act kind of beautiful.
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.
Yeah Gore did this. Yeah GW did that. (gw? gw-basic? oh my)
10 ON ERROR GOTO 100020 INPUT "WHO DO YOU WANT TO ELECT TODAY" ELECT$
30 IF ELECT$="Bush" THEN BUSHCOUNT=BUSHCOUNT+1 ELSE BUSHCOUNT=BUSHCOUNT\0
1000 RESUME NEXT
People replying to my sig annoy me. That's why I change it all the time.
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
-[Blaine]- "'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a puff of logic."
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
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
I like rhetoric and arguements but that doesn't make them useful or meaningless. In the end it's just a game.
I like them because actually, with a bit of dialectic science you can always turn a discussion to any side. There's no right, no wrong. The end result is null. useless.
The point of the author is that all this doesn't work for advocacy, especially when it comes down to a (hidden or not) ad hominem attack, and that's about time people realize it.
. . . . . . .
may u!sh 2 sm!le at dz!z bad nn.!m!tat!ion
Thanks for both the posters above me for showing this. It has widened my view of what programming languages are all about, although I didn't really consider myself close-minded before (I never ruthlessly advocated one language for no apparent reason). It has also shown me language options that I had not even considered before, and that quite possibly are more important than the language I'd actually use if for no other reason than to understand the other paradigms of computer language.
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.
If tits were wings it'd be flying around.
Whoever moderated this down is way uptight. Far be it from anyone on Slashdot to praise someone for what they might have said if they themselves do not have any moderator points at that moment! Think before you moderate, really.
Russian Russian Russian RussianDollSig DollSig DollSig DollSig
Yea, but algore invented English to begin with.
A Government Is a Body of People, Usually Notably Ungoverned
That is exactly the big problem with the way we discuss programming languages.
You don't have to get defensive when someone shows a new way to solve a problem, just because it is different from the way that you know.
Why not indeed? I guess you should take that up with the Philadelphia Perl Mongers, who invited me to speak to them about strong typing. What their reasons are, I cannot say.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.
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...
"But remember, most lynch mobs aren't this nice." (H.Simpson)
-- Joe
He attempted to credit the source, but did not succeed. This is not really felony plagiarism, it's more like misdemeanor negligent plagiarism.
I do not have a signature
i like using a hammer to put in screws. they may not get stuck in the wall as tightly as if i'd used a screwdriver, but its a lot faster and easier. sometimes the wrong tool is the best tool too.
---
call/cc? Good question. I never did use that much in my class; I don't remember if we implemented that or not. (we were writing Scheme on top of Scheme...)
I imagine it would involve calling the function with a copy of that environment. At least Perl supports continuations, but I could try to implement the lambda function anyhow...
---
pb Reply or e-mail; don't vaguely moderate.
pb Reply or e-mail; don't vaguely moderate.
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?
He would probably expect a little thinking to happen. Perhaps some of the audience would reflect and possibly reconsider some of the ideas to which they've grown attached.
That's the source of real growth in many areas, not just programming. Using a metaphor, rubbing up against new ideas (even if the ideas themselves old) doesn't wear you down, it polishes you even if you reject the ideas. You have been exposed to them and had the opportunity to evaluate them.
Sounds useful to me.
- technik
The author's right... How many times on /. have I seen posts to the effect "Java sucks, C++ is what real programmers use!" or "Microsoft sucks for everything! The only hope is Unix!!" or "Perl is great, only godlike people can use Perl! Python is for losers!!"
Those people bother me, like they bother the author of the article. They refuse to acknowledge that there can be anything good about a language/OS/whatever that is "perceived" to be in opposition to their favorite little thing.
-----------------------------------------------
I bent my wookie
-------------------------------------------------
I bent my wookie
The reason they don't is because the dot-net approach is only valid if you want to kiss microsofts ass to get the information you need to do well. Objective discussions of language or software development methodologies are really useful only when they're reasonably open and available on several different platforms. SAS is a decent tool, despite being proprietary, and it is available on several platforms. Not likely it will be instantly morphed into something else when their marketing department has a bad hair day. Can't say I'm confident I can see the same for dot-NET. Conversations can't get past MS sucks because MS controls .NET, and therefore you can't play unless you're willing to play their way.
...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.
http://www.talknerdy.org
Like being an asshole? Being obnoxious about being right? Hell, I get paid for all that! :)
/bin/sh and AWK. Why? Because I can find /bin/sh on every machine I can get my grubby little hands on, even that old VAX that still runs OSF/1. AWK looks and smells of C, which I grew up on and feel most comfortable with.
/. to ridicule me mercilessly for supporting an old OSF/1 machine because some 95-year-old professor doesn't want to lose his old medium-energy particle simulation.
But, back on-topic.
Passion doesn't convince. Passion makes you look like an idiot or an asshole.
Passion *does* convince if you can justify it to yourself and to the person you want to palm it off on.
Por ejemplo, I use
Granted, I'm never gonna be able to palm off Bourne Shell & AWK, but I think I've justified my point.
BUT!
You're also not going to deny me of the right to criticize your decision mercilessly. And I expect everyone on
But that's geek life. You ridicule me, I ridicule you, and if I'm not embarrassed by what I use, then I'm happy.
Thus sprach DrQu+xum, SID=218745.
DrQu+xum: Proof that the lameness filter doesn't work.
Case Study 2: OS
I use windows
YOU %*&...., oh guess I use windows too. I just don't like paying for it. Come on M$, give us 98 for free. It's outdated, my install is hosed and I don't want to buy the cd. You know linux has spoiled me, I don't want to pay for any software.
... 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. :-)
--
News for Geeks in Austin, TX
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
It's 10 PM. Do you know if you're un-American?
With that sort of mindset, you will never profit if Microsoft comes with a good idea, say maybe .NET.
No, "Microsoft cannot come with good ideas" is not a very convincing reply in this thread.
__
__
Men with no respect for life must never be allowed to control the ultimate instruments of death.
GW Bu
As in the grease-and-oil mechanics: you can come an astonishing way with a minimal multi-purpose toolset. But specialized tools are simply much better to solve the job - or to solve it at all. The art is to know when to choose which tool.
Similar thing applies to programming languages: there is a reason why one usually chooses Fortran/C for number crunching, Assembler/C for system programming, Perl/PHP/CF for dynamic websites, etc.
So I recommend to learn as much *different* programming paradigms and languages as possible to know the better tools for each new job.
Okay, I confess I will be always carrying my trusty swiss army knife - for you maybe leatherman, SOG tool, or whatever multi-util-thingy you refer. But I know other tools and where they give me their specific advantage...
I think one of the problems is that there is not yet enough synergy required for the next paradigm shift.
Let's face it: any language can be tortured into solving any problem; the question is, what's the most efficient way to think about the problem, and what language is most amenable to using in that way?
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?
Who'd'a thunk Philosophy and Computer Science would have anything in common?
I may sound like the devil's advocate for a while, so bear with me.
Very often objective and legitimate criticism (or even comparison) turns into a flame-war because other people jump to conclusions.
I blame the people who read a supposed flame for actually starting the flame war. If what the original poster said is BS, why reply in the first place?
There's a "don't feed the troll" sign, right? If you think the poster is so inflamed with passion to the point of becoming illogical, perhaps paste this paragraph as a reply.
On the other hand, what if the poster really made an objective, non-passionate declaration? In most cases this is what happen and flame wars start.
So I blame the readers, who are uninformed and don't accept new points of view other than their own.
Flavio
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.
pb Reply or e-mail; don't vaguely moderate.
But what you just described isn't what he's discussing.
He's talking about the idiot you always run into who believes there is but one true way, be it editor, language or *gasp* OS.
Just about every day I run into someone who is trying to make their square peg fit a round hole, and when I suggest that perhaps they try a different peg they get indignant and try to drive into me that their * is just so much better than what I suggested even though I can show them how much easier it is to use somthing else. These are the people that will write 500 lines of C when 30-40 lines of perl will do.
Someone who tells me we should use Linux,C or whatever because the other option sucks isn't being an advocate, they're being an idiot. If everyone was an advocate by giving actual points this article wouldn't be needed, unfortunately people like that seem to be few and far between.
The whole point is that people should be more open to the idea that there is more than one way to do things, sometimes the way you're used to isn't the best, and that accepting this fact doesn't make your prefered tool inferior.
OK, not to rehash what has been said already...but....
I see a programmer as being somewhat like an artist. He has an idea in mind, and goes about realizing that idea in a more material way.
The artist may use a oil paints, water color, charcoal, found objects, or even a computer-based photo editor or paint program, yet in the end, we'll still call it art, no matter how it got there. Sure--the end result looks different, but it is still art.
In the same way, a programmer has a particular purpose in mind, and uses whatever tool or medium best fits that purpose. Like the artist, he may have an affinity for one tool or another, but in the end, (hopefully) a useful new tool will result.
The quote at the end, "I have a book on my bookshelf that I've never read, but that has a great title..." is from Larry Wall's keynote address to the Perl Conference in 1997. The full text of the address may be found here.
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.
From the FAQ
A "Hello World" program looks something like this: Sather links:kel's theorum: with infinite solutions, any given new solution has a 50% chance of being a better solution than the current one.
---
"that Java's strong point, currently, really is its back-end enterprise-ish stuff: CORBA, EJB, RMI, Servlets/JSP, messaging"
If I like Java, it's in spite of all these continuously changing, say, exploding JDK and JDK extensions.
Especially CORBA, EJB, and RMI attempt to standardize approaches that existed long before. I don't mind standardization, but I do mind standardizing on something constituted haphazardly, without thinking it through. EJB was not even useable in its first version. It may become useable in its second; but quite a lot of damage has been done already. The way I did it before, at least worked; and I don't mind switching over; but it should work too, if you see what I mean. Suddenly, in version 2, EJB discovers the concept of foreign keys in relational databases. I guess they should have tried to figure that out, before mandating standards that fail to grasp common concepts.
Sun has a strong propensity to impose ideas, even in areas in which they sorely lack expertise. They'd better stop doing that.
Heaven forbid that you'd expose an ML programmer to Perl ideas, or a Perl programmer to ML ideas. If we allowed people to broaden their mind, who knows what they'll come up with :;
no taxation without representation!
Yes they always do seem to do that© I was posting something to a debian list and I made a small mistake at one point© I don't even remember what that was, but I blamed Outlook and Exchange for the one discrepancy, and people emerged from the woodwork to talk about how bad Exchange is, how it isn't appreciated there, and how I shouldn't use it©©© just rip it out of our infrastructure©©© no thoughts given to the cost involved in supporting another solution with the same data intact and shareable ¥it has to be Groupware© Use Linux lalalalala©©© and forgetting that standard sendmail is not user-friendly groupware that 90% of our non-technical staff would appreciate©©©sure Lotus Domino is available, but we already own good enough licenses of E 5©5 and will get rid of it when we have the money and time to grow not sooner© This stuff hurts Linux advocacy© Andrew
I also like Ada very much. It looks not entirely unlike Pascal, but honestly, does anybody still use Pascal? I mean really use, to write real code? I have just fired up my newsreader to get some posting statistics:
comp.lang.ada 1794
comp.lang.python 6918
comp.lang.java.programmer 12619
comp.lang.pascal.misc 84
comp.lang.pascal.ansi-iso 13
de.comp.lang.pascal 50
So, Pascal seems really dead until now. I don't speak of Borland Delphi, which is quite another beast. This would be the same as comparing the newsgoup postings of comp.lang.basic with microsoft.vb.whatever. It just means that one language dialect has become much more important as the standard language.
Any Pascal programmers out there? Hands up!
Gerhard
reduce(lambda x,y:x+y,map(lambda x:chr(ord(x)^42),tuple('zS^BED\nX_FOY\x0b')))
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.
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.
The most disturbing thing about margin of error is that FAR too many people on /. kept (incorrectly) insisting that there was no margin of error. No amount of direction to texts concerning error calculations for counting statistics would make them STFU.
/.er is well above the intelligence level of the average person. If these supposedly intelligent people a) don't know about or understand the statistics, and b) adamantly refuse to consult those who DO understand, then the media probably was correct to keep quiet about the margin of error. Last thing we needed was hoards of Bush and Gore supporters screaming at each oth... oh, nevermind.
I like to think that the average
Wake me up in time for the rematch in 2004.
Eric
Don't you get it?!?!!
Advocacy is either good or evil!
You must choose one viewpoint or the other!
I'll see your senator, and I'll raise you two judges.
The world would be a better place if everyone spoke (insert language here, even if its a new,crap, made up one)
I don't think of myself as a Perl Programmer. I program in maybe half a dozen languages regularly, whatever's convenient. I've been a programmer since about 1978. When folks call me a Perl Programmer, it never seems to occur to them that ten years ago they would have thought I was ``C Programmer'' and twenty years ago I would have been a ``Fortran Programmer''.
I wish employers would pay attention to that quote from the article... After graduating from college I took a job programming in Informix 4GL, and now it's nearly impossible to get anyone to look at my resume and think I can do anything else. Hell, I've only been doing that for under two years, and prior to that I used mostly C and PERL.
-
Addlepated - punk & metal
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
What about benefits/pitfalls of advocacy in your department. My department has been recently meeting over this very thing. We have two schools of programmers all working on related projects, however half of us use Perl for our end, the other half are ASP/VBscript junkies.
.NET change everything for the ASP 3.0 coders?.. will it change things for Perl coders?" Its been an increasingly pressing issue with no answer in sight. Our only solution is to wait another 6 months and re-evaluate the state of affairs. Anyone else dealing with this kind of thing?
The big question is.. how would things change if we all chose one language as our department standard. On one hand, product integration would be simplified. Instead of being able to ask 2 other guys for help on a problem, I could ask 5 other guys.. code reviews would be easier. But then again, half of us would have to conform to a language we are not comfortable with.
And who should make the decision as to which language should be the future language of the department? We try to ask ourselves thing like, "Is perl slowly on its way out? Will
-gerbik
[php rulz]
Too often we reject a language or extension technology simply because of its source. This is unfortunate.
[asp sucks]
It's time to lower the rhetoric- and even the rhetoric rhetoric. Besides, can any gainfully employed programmer actually have time for that crap?
[javascript 0wnz j00!]
did the Daily Show swipe our sttuff? We're not sure.
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.
pb Reply or e-mail; don't vaguely moderate.
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.
Unix is user friendly, it's just selective about who its friends are.
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.
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.
That's a really nice article, there, not that I read all of it. I get the jist, though.
There is nothing wrong with advocacy. No one ever said advocacy entailed tunnel-vision. That stems not from the advocator, but from the listener. Instead of trying to abolish advocacy, let's try and abolish the ignorance of those who listen to advocators.
Using the example in the article about the discussion on Perl and ML, whoever asked "What's wrong with the way Perl does it?" (or however it was worded) was a bit ignorant, and reads into things too much. Simply comparing two different approaches does not mean the speaker is saying the latter approach is better than the former (unless s/he specifically says that).
Screw advocating against advocacy, advocate for an antidote to ignorance.
even those guys over there, who we call the spawn of Satan, they might have a point. Yes, THOSE guys.
eeeeewwwwwwwwwwwhhhhhhh ......
"It is a greater offense to steal men's labor, than their clothes"
<shudder> You just reminded me of a job I once had where they had a lot of FORTRAN programmers who were working on a large C system. What they had done was created a header file like so:
#define BEGIN {
#define END }
#define IF if (
#define THEN ) {
#define ELSIF } else if (
#define ELSE } else {
#define ENDIF }
Every C file used this syntax instead of C's. I agree that syntax wars are the lowest form of language advocacy, but that was aweful. My feeling is if you are going to use C, use C. I also don't believe in abusing the preprocessor.
Not nearly as bad as one guy there who did the following though:
#define TRUE 0
#define FALSE -1
Throughout his code, he used these values consistently. In IF (not if, IF, see above), statements he would always compare the boolean return to TRUE. After I inherited his code, I was adding some stuff and did a WHILE TRUE DO (yes, I had to use the macros, because they wanted their source to remain consistent) with a break condition. It took me quite a while to figure out why it wouldn't execute. At first I thought it was a bug in the compiler optimization.
Sigh.
-no broken link
Some people gather around languages because its the language they learned. But other people choose languages that support their philosophy of computing or the world in general.
Perl encourages syntactic creativity (some would say idiosyncracy). Python encourages cleanliness and simplicity (some would say conformity). Functional languages encourage a mathematical view of programming.
You could argue that just as in the real world, it is your *responsibility* to promote the philosophy that you believe in. That doesn't mean you should be blind to the virtues of languages that conform to other philosophies, but it also means that you should not be ashamed to promote yours. Our industry will only advance by embracing the philosophies that work better. Remember "goto considered harmful?"
Paul Prescod
woohoo! Perl's "TIMTOWTDI"! (affectionately known as Tim Toady).
heh. anyways.
---
Video meliora proboque deteriora sequor - Ovidius
"It is a greater offense to steal men's labor, than their clothes"
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?
Well, just compile the program into continuation-passing style (CPS) code, so that the current continuation is always available. Paul Graham demonstrates this in _On Lisp_, by implementing call/cc in Common Lisp macros. It has some restrictions, but only because he embedded it in CL not implement an entire language interpreter.
It's a few dozen lines of Common Lisp. Oh, yeah, I forgot, the original poster was going to use Perl. Good luck.
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?
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
"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.
Hi -
I spent c. 15 years in the Xbase world (dBASE, Clipper, FoxPro, etc), where this kind of endless "my language is better than yours" debate went on all the time. (Odd note - the more similar two languages are, such as Pascal and C, the more vociferous such debates seem to be!)
As much as I agree with most of this article, one notion that I think is left out is that in the real work-a-day world people are tied very closely to their technical skill sets. That is, most companies do not say "We wish to hire an intelligent, productive person" but rather "We need someone with at least two year's experience in Perl" or whatever.
So whereas an academic can perhaps sit back and calmly survey the language or OS landscape, those in the trenches have a great vested economic interest in promoting the products or tools that they are most experienced in.
I am not saying this is the way it should be, but clearly I think it is the way it is for many people.
TWR
From the article: the title...
...so which is it?
---
pb Reply or e-mail; don't vaguely moderate.
pb Reply or e-mail; don't vaguely moderate.
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
--Parity
'Card carrying' member of the EFF.
'Best Programmers' are few and far between. Fewer, and farther between, than most people like to admit I think.
Raven
And my soul from out that shadow that lies floating on the floor
"I will trust Google to 'do no evil' until the founders no longer run it." Hello Alphabet.
I just have to figure out a clean way to parse it all
Dude, Scheme (or LISP) are the easiest to parse languages on the planet. Just write a function to read in a list and your done with parsing. Eval/Apply are pretty straightforward also - take a look at Structure & Interpretation of Computer Programs (by Sussman et al) if you haven't already.
Although I have more experience with Perl, Python is another fun interpreted language with some functional elements. Exercise for the student - write a Scheme interpreter in Perl, then write a Python interpreter in Scheme. Then write a Perl interpreter in Python.
Scuttlemonkey is a troll
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)
Torrey Hoffman (Azog)
"HTML needs a rant tag" - Alan Cox
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.
pb Reply or e-mail; don't vaguely moderate.
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?
You're right. Choosing which programming language to use is the *last* thing you do before starting to code. Designs tend to work better when you think generically and are not constrained by the features of a particular environment.
:(
Of course, sometimes you're forced to use a particular language. I did a fantastic design for a datawarehouse load, but found that you couldn't implement it cleanly in PL/SQL
Of course, this is just a guess, but if I had been writing the FAQ, I would have been afraid to say ``You don't need linked lists in Perl'' and leave it at that, because I would have imagined someone reading that answer and concluding that it was an evasion and that linked lists couldn't be done at all in Perl.
This part of the article reminded me of a similar problem with Java. When Java first came out, it was billed as "safe" and "has no pointers". This often lead people to ask in comp.lang.java "How do you make a linked list in Java"? Similar to perl, the right answer was to use a java.util.Vector (now the right answer is java.util.ArrayList), since it will provide most of what you need from a linked list.
But people took this to mean that you couldn't make a linked list in Java and instead had to use special built-in classes. In actuality, making a linked list in Java is easy:
class LinkedList {
Object value;
LinkedList next;
}
But people were willing to believe that this was a failure in Java, even though it A) wasn't a failure since you could do it anyways and B) had a standard and often better (O(1) lookup) way of doing things.
-no broken link
You're right, advocacy can be good for introducing people to new things (prejudice and bias being what they are). I don't think this is incompatible with the article.
BdosError
Complexity is Easy. Simplicity is Hard.
... 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
This sig intentionally left blank.
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?
Ugh. He defined TRUE as 0 and FALSE as -1?
Did he know that he was completely breaking all C semantics?
In general, I could care less, because it's easy enough to replace the #defines in the source, and go back to reading C code. But that's just evil!
I've had to do this sort of thing too, in old crappy so-called "C++ compilers" (*cough*centerline*cough*) that didn't actually have a bool type.
It should be something like this:
typedef char bool
#define true 1
#define false 0
---
pb Reply or e-mail; don't vaguely moderate.
pb Reply or e-mail; don't vaguely moderate.
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."
T. M. Pederson
"Lies, Damn Lies, and Documentation"
I mean, there's a Pascal-to-C converter, for crissake!
I've always understood the point of p2c was to be able to run pascal code in an environment with no Pascal but with a C compiler - namely most unix-like ones. I think the original AT&T Unix used to have a portable pascal compiler, but it was encumbered in some way by licensing issues. Same thing with f2c - I only ever used that once, to get an old bit of VAX Fortran running on SunOS.
I never looked at the C code at all - if it's anything like the quality of the a2p awk converter that perl has, then it's hardly a great example of how to use the host language.
"don't fall into the fallacy of believing that Perl can solve social problems. Maybe Perl 6 can, but that's a ways off"
Ah. So he was really just ranting about the other side of it, then.
:)
Well, I think it's at least incompatible with the article's title.
---
pb Reply or e-mail; don't vaguely moderate.
pb Reply or e-mail; don't vaguely moderate.
That's so wrong.
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."
Tweet, tweet.
So what's the Perl feature that comes from ADA?
nal 11
GERMAN...oh, wait, wrong kind of language :P
How Jaded Are You?
Sort of. Jesus spoke both Hebrew and Aramaic. All serious jewish scriptural study at the time was done in Hebrew, with a tiny amount of Aramaic.
:-)
It would be like, speaking Spanish with your family at home, or when you go out drinking with your buddies, but speaking, reading, and writing in English at work.
When I try to explain to Americans that there is really no right or left, but a complex composition of the basic political philosophies of Libertarianism, Socialism, Green ("clean up after your own messes, whether labor, environmental, medical, etc."), and Tyranny, they won't acknowledge the culturally-pushed polarization. Both the Democratic and Republican parties are Libertarian ("the free market will clean up our messes") parties, which is why they almost always agree on issues that don't determine elections. The "leftism" or "rightism" is merely their degree of belief in Socialism (standing military, welfare, Social Security, subsidies) and there is far more to politics than that. For example, supporting a line item veto or the presidential right to declare war prior to a Senate vote is a practice of Tyranny. The American Green Party is, in fact, about two-thirds Green and one-third Socialist, but strongly anti-Libertarianism and Nader splits further towards Socialism (health care, especially).
How many supposedly busy Americans will sit still through even abstract metaphysics of that sort when they're supposed to be out making money for "the machine" and lobbying their beliefs on advertised products? There is nothing wrong with the words Socialism and Tyranny describing mainstream political beliefs on specific issues. We're just all taught Civics like the Bushes: Capitalism good, Communism bad.
...I will buy you a beer.
Lot's of people feel this way, but it's not popular, so it will just stay repressed. oh well, slapdash is by the sheep, for the sheep, anyway.
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.)
--
A feeling of having made the same mistake before: Deja Foobar
I really have to disagree because I know that there are good languages out there - languages that don't have any major flaws. Languages that support closures, and OO and functional programming and do so with a simple syntax. Languages that CAN be a jack of all trades and solve 98% of the programming tasks are out there. Why complicate things with this "choose a language for a task" when there are languages that ARE good at all tasks. Perl is not it. Neither is C or C++. Java is closer but not it either. TCL is obviously not it.
Something like a combination of Scheme with Common Lisp object system IS one such a language. It's a good choice for everything from text processing, web pages, GUI, artificial intelligence, math, interactive, anything. Is Scheme the one true language? Not exactly, there may be better ones out there - ML or Haskell perhaps I'm not familiar with them. But why mess around with an abortion like Perl? Seriously folks, there's not a damned thing to be learned from this monster. I don't believe in all this relativism. Computer language research is mature enough that we can make some absolute stamements here!
Your post is a perfect example of the problems with programming language discussions. Most people are uneducated with regards to computer science, prog lang theory, and constructive math theory. You should know that arrays and lists are NOT the same thing. Lists are purely sequential data structures, while arrays are random access linear data structures. The primitive accessing of a list is different than the primitive accessing of an array. Please, do not compare apples and oranges. While lists and arrays have linear features, one is an apple and the other is an orange.
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?
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.
pb Reply or e-mail; don't vaguely moderate.
After several months of "What do you mean you don't like [fill in candidate's name]? [Fill in insulting comment]." I finally have a decent explanation of why this happens. Most things in this world have their flaws as well as their features. It is possible to like something while admitting it's not perfect. Look at my friends.
We could be standin' at the top of the world Instead of sinkin' further down in the mud -- Meatloaf
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.
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!!!!!!!
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.
Babar
Damn right they don't!
-
I agree, I was originally going to suggest that the problem with this article is that the title isn't exactly right because he's really discussing people with tunnel vision but for some reason didn't leave it in my original reply.
The authors linked article on type systems is actually a good example of this, and is well worth the read. Day to day I program in java. I remember the attitude of many C programmers to array bounds checking ("we don't need array bounds checking, because we just get things right"), and moaning about the annoying type errors that Java keeps bringing up. Silly. The compiler is trying to tell you that there is a problem, it is checking your code, so that you don't have to.
Of course Java's type system is relatively poor, and does not check much, but its still a little better than none. But I only know that its poor, because I am not blinkered against other languages, even if the chances of me ever getting a job coding with some of them (like ML for instance) are relatively small.
I guess in a nutshell what the article is advocating is education comment, rather than tribalism. Fine by me.
Phil
Actually, I always thought the point of it was to get decent, optimized code... I know that gcc's optimizer does a lot better than, say, FreePascal. Of course, FreePascal produces small, static binaries, but what do you want, right? Also, p2c handles Turbo Pascal code a lot better than gpc ever did...
:)
The code it produces is ok; there's a lot of macro, type-faking stuff in there, but I've used it to successfully port a few of my old DOS/TP/BGI Graphics Demos to Linux/C/SVGALib; I just had to write some BGI->Svgalib interface code in C.
---
pb Reply or e-mail; don't vaguely moderate.
pb Reply or e-mail; don't vaguely moderate.
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.
Most Slashdot readers are little more than morons who follow whatever the current fashion is. I find little evidence that Slashdot readers are particularly bright. Compare Slashdot before the moderation system and you will find a more interesting vibrant community. It was also devoid of Goatsex, Natalie Portman, etc. Don't get me wrong. Under the present circumstances at Slashdot I heartily welcome the Goatsex, Natalie Portman stuff. It is the proper reaction to the heavy handed censorship imposed by the "moderation" system. I personally try to contribute plenty of trolls and flamebaits as possible these days. It is not something I'd normally do. However, given the unfairness of the moderations system I feel that it is a way to fight back and show my utter contempt for it.
Whatever you say, "Oracle GOD".
"There is more worth loving than we have strength to love." - Brian Jay Stanley
What am abysmaly poor choice of language! The meta-syntax inherent in the inferred non-diadectic methodologies used in contextual recognition protocols are far inferior to, say, Pascal.. begin talking_shit end
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.
<offtopic> 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.
</offtopic>
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
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.
---
Video meliora proboque deteriora sequor - Ovidius
C'mmon people, tell us what is so great about you and your language and how it works and what you believe in. But don't argue against everything else as if it was a disease from the gates of hell. I personally dislike python, but oyu know what? It might be great for OOP for others. I'll let you be to create whatever wonders you can come up with. Point being, you are comfortable, and when you do somethign great, I can port it over. Tell me the truth. How many of you actually looked at the perl cookbook and used solutions in it by porting it to PHP, Java,etc..
Put down your gloves, pick up your keyboards and stop. DO as the conclusion, which is quite terse for the piont he really is making..
I don't really hate advocacy. We do it in a dumb way
---
-
ping -f 255.255.255.255 # if only
who can't appreciate a good argument. Whether it's Aunt Sally at Thanksgiving who insists on all conversation being abolutely sterile because she has high blood pressure, or Uncle Bob who gets out the shotgun because somebody mentioned the word "politics", somebody has to shut down a good fight.
Some people LIKE to argue, and some people can actually do it heatedly and stay friends after the argument.
There is NOTHING WRONG with a Republican and a Democrat arguing about who's right at the family reunion. If you are one of those who doesn't like a good fight, don't spoil the fun of others.
Now that I've said that, let me wrap up by saying Perl SUCKS!
If tits were wings it'd be flying around.
It seems to be /.ed already.
Heh, reading in a whole list is supposed to be easy? try forth...then you only need to read in a word at a time.
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.
pb Reply or e-mail; don't vaguely moderate.
(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)
Certainly, if you require JDK1.2/JDK1.3 features, you'll be limited somewhat. Although, IBM lists AIX, OS/2, OS/390, and AS/400 as JDK1.3 capable. (http://www.ibm.com/java/jdk/index.html). Of course, Solaris runs 1.3. HP/UX is 1.3 capable, as well. If you can get by with JDK1.1 features, that opens up far more platforms (IRIX 5, IRIX 6, NetBSD, OpenBSD, VM, MVS, etc)--and I'd venture to say that's pretty close to the edge of "runs everywhere"
Sadly, yes, there is no FreeBSD port for Java 1.3 yet. It's a bummer, I agree.
Please, no offense meant, but I think the important thing is that you've implemented something faster in Python, where that 'something' has the qualities: runs on 4 platforms, has a Web UI, and a relatively difficult setup/install. Time will tell if those given qualities will yield the Next Killer App (I, of course, hope it is).
I'd be interested to know how much time Mojonation spends doing crypto vrs how much time is spent in I/O. (I really am wondering--not trying to be offensive here) My mojonation python processes (on my ppro200) never seem to spike badly. Is there some point where the native code/interpreted code tradeoff wouldn't be so bad?
I think MojoNation should be as simple to use as Napster: Click here to share Porn & MP3s. People will love it, and I think that's what drives user acceptance.
In any event, I think that this has been constructive. I've learned some more about Python, at the very least. This definately highlights the need for keeping abreast of other technologies, as to see what features they can bring your application. (I for one, didn't know about the extent of Python's dynamic loading capabilities)
What they needed:
#define LAZYBASTARD....
In Soviet Russia, Chuck Norris will still kick your ass.
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.
Isn't he advocating a way to advocate in which he says "I'm right and you're wrong"?!
That's what I got out of it anyway.
--Dave
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.
Tweet, tweet.
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.
Please, not all Pascal programmers are closed-minded. I happen to like Pascal, I happen to like strong typing. I rarely have to "get around it" (well, once in a great while), and a strongly-typed language is (IMHO) easier to debug because the compiler finds most of your bugs for you. I just find it much easier than C, which with its somewhat weaker typing, and its "an array is a pointer and by the way just about everything else is a pointer too", makes it very easy to shoot yourself in the foot.
I program in C when the occasion demands, and I have programmed in Fortran and PL/I and APL and Basic and even a little Lisp and Prolog, and I am starting to learn Perl. But I strongly believe that for general programming, Pascal is best - especially a highly enhanced Pascal like Delphi. I find it to be the tool that fits best in my hand.
And one other thing - I very much believe that Pascal, precisely because of its strong typing, is by far the best language to use for teaching beginners (and I do have some teaching experience). Enforces discipline and careful thinking about the data. And once you get the data properly designed, the code will just about write itself.
Teen Angel - a Ghost Story
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, not only because it was founded by some friends of mine, but because it enables cool tricks like hushmail , but it would've been dog slow to do our crypto in pure Java. The crypto library we use, Wei Dai's Crypto++ 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), 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...
There's an recent article on Kuro5hin 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.
-no broken link
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 a few months ago, but it might be of interest to the readers of this thread. Enjoy!
-- Eric W. Sink
Eric Sink
Software Craftsman
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."
--
Accountability on the heads of the powerful.
Power in the hands of the accountable.
So this guy is advocating against advocacy, huh? :)
Praying for the end of your wide-awake nightmare.
Exactly; that's cheating! ;)
---
pb Reply or e-mail; don't vaguely moderate.
pb Reply or e-mail; don't vaguely moderate.
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.
Portable versions of Firefox, GIMP, LibreOffice, etc
Well said. I also don't think moderation is a problem in and of itself. I'd suggest a couple of modifications to the current system, though. First, remove the ability to post as an AC. Anyone can read. You want to post, log in. Second, either remove or at the very least hide karma. Remove the incentive to karma whore.
"The legitimate powers of government extend only to such acts as are injurious to others." Thomas Jefferson.