Programming Language Discrimination
Programming Language Discrimination
Appologies if this is considered 'not productive enough', but I just don't get why there are so many people who have such a problem with PHP. One example is some guy who managed to write a massive blog post about things that are wrong with PHP (http://me.veekun.com/blog/2012/04/09/ph ... ad-design/). Look in the comments, some guy basically says that he wouldn't hire you if you didn't mind using PHP! :O
I've seen this sort of nit-picking, hatrid and unnecessary judgement going on with a lot of languages, not just PHP. I don't get the point in it - it's not productive at all to judge other people's tool of preference for completing certain tasks. For example, I prefer to use Assembly over C for OS dev, but I don't go around writing all of my personal opinions about why I don't use C for OSDev (don't get me wrong, C's my favourite for applications).
I've used PHP and it does what you need any web scripting language to do; it integrates nicely, cleanly and comfortably with HTML pages, it provides efficient methods to construct your website, it has integrated support for MySQL and other database platforms, it gives you all sorts of useful string processing functions. Perl and Python can do the same thing just as well and I'd use them if I didn't prefer PHP that little bit more. But what I all-too-often see people doing is picking on the things that 99% users of a language will never even touch, like the fancy XYZ feature that lets you open and close drawers on your desk with the ASDF controller board, whose API functions' names are inconsistent because of the case that the letters are spelt in.
It just all seems like fanboyism and rejecting those who have their own taste in their tools. Perhaps it's people just being afraid to get out of their comfort zone and try something new. I always 'hated' Java, but I tried it the other day and it's actually okay. It's not my favourite or anything, but I've learned that it's not something to hate.
In the end, it's all about what you prefer to use, so some people like the aforementioned blogger just need to get a life, stop wasting their time with pointless blog posts that only antagonise people and get everyone wound-up. Perhaps they need to swallow their pride and try the language that they complain about. Try actually using it the way other people do. In the end, they'll probably find that the 'hammer with two claws and no head' is actually useful for removing nails quickly - they were using it wrong or expected it to do something it acutally wan't designed for. And they overlooked the swiss-army hammer which does everything that you could ever want.
Or perhaps they won't. But hey, it's all about our own opinions and preferences, but I am against trying to lead some sort of Cult of Hatrid of a certain programming language. It's just pathetic and petty.
I'll leave you with this: Great, you don't like PHP. Why are you complaining about it? You don't have to use it! Use your beloved Python. You'd love it and we couldn't care less, so everyone's happy
I've seen this sort of nit-picking, hatrid and unnecessary judgement going on with a lot of languages, not just PHP. I don't get the point in it - it's not productive at all to judge other people's tool of preference for completing certain tasks. For example, I prefer to use Assembly over C for OS dev, but I don't go around writing all of my personal opinions about why I don't use C for OSDev (don't get me wrong, C's my favourite for applications).
I've used PHP and it does what you need any web scripting language to do; it integrates nicely, cleanly and comfortably with HTML pages, it provides efficient methods to construct your website, it has integrated support for MySQL and other database platforms, it gives you all sorts of useful string processing functions. Perl and Python can do the same thing just as well and I'd use them if I didn't prefer PHP that little bit more. But what I all-too-often see people doing is picking on the things that 99% users of a language will never even touch, like the fancy XYZ feature that lets you open and close drawers on your desk with the ASDF controller board, whose API functions' names are inconsistent because of the case that the letters are spelt in.
It just all seems like fanboyism and rejecting those who have their own taste in their tools. Perhaps it's people just being afraid to get out of their comfort zone and try something new. I always 'hated' Java, but I tried it the other day and it's actually okay. It's not my favourite or anything, but I've learned that it's not something to hate.
In the end, it's all about what you prefer to use, so some people like the aforementioned blogger just need to get a life, stop wasting their time with pointless blog posts that only antagonise people and get everyone wound-up. Perhaps they need to swallow their pride and try the language that they complain about. Try actually using it the way other people do. In the end, they'll probably find that the 'hammer with two claws and no head' is actually useful for removing nails quickly - they were using it wrong or expected it to do something it acutally wan't designed for. And they overlooked the swiss-army hammer which does everything that you could ever want.
Or perhaps they won't. But hey, it's all about our own opinions and preferences, but I am against trying to lead some sort of Cult of Hatrid of a certain programming language. It's just pathetic and petty.
I'll leave you with this: Great, you don't like PHP. Why are you complaining about it? You don't have to use it! Use your beloved Python. You'd love it and we couldn't care less, so everyone's happy
phillid - Newbie-ish operating system developer with a toy OS on the main burner
Re: Programming Language Discrimination
So why the rant about somebody expressing their opinions and preferences?But hey, it's all about our own opinions and preferences
Doesn't that cut both ways? Who's the fanboy - the one who produces a reasoned criticism of a language (which a lot of people seem to agree with from the comments) or the person who objects to that without refuting the points made? I'm not saying that he's right or wrong, but I've seen no evidence to show that he is wrong.It just all seems like fanboyism
My view would be that it is always productive to consider which is the right tool to complete certain tasks.it's not productive at all to judge other people's tool of preference for completing certain tasks
I have no objection to people pointing out what they think is wrong with a particular language. It is by such criticism that progress is made.It's just pathetic and petty
Re: Programming Language Discrimination
I love PHP. I use it every day. I think it's a great language. But it's a great language with a very specific purpose, and a lot of flaws.
That specific purpose? Building simple websites quickly.
Those flaws? I agree with every single point made in that fractal of bad design article. Every day I work around them, every day I put up with them.
People say there are two kinds of languages: those designed by a single person for their own use, and those designed by committee for somebody else's use. PHP proves there is a third category: a language designed by several thousand people without consulting each other at all, hacking pieces on until they get something that suits their own requirements - and you're never going to get a well designed language that way. But a functional language? Yes.
That specific purpose? Building simple websites quickly.
Those flaws? I agree with every single point made in that fractal of bad design article. Every day I work around them, every day I put up with them.
People say there are two kinds of languages: those designed by a single person for their own use, and those designed by committee for somebody else's use. PHP proves there is a third category: a language designed by several thousand people without consulting each other at all, hacking pieces on until they get something that suits their own requirements - and you're never going to get a well designed language that way. But a functional language? Yes.
Re: Programming Language Discrimination
Iansjack, I understand your points. I agree that it's good to criticise and select the right tool for the job, but normally if it's going to be used by a group of people who will collaborate. Normally, unless they say otherwise, individual developers will be stubborn and want to use their language of preference because it's what they feel comfortable with, even if there's another language which can do it betrer. But I guess what I'm trying to point out is when people complain about your language preference on your thread in a forum. It's these people that get up my nose.
Like jackscott, I do realise that my languages of preference aren't perfect (no language is perfect), but I see no need for people to waste their time writing unbalanced, thousand word blog posts to try and convert people to their language of preference.
Like jackscott, I do realise that my languages of preference aren't perfect (no language is perfect), but I see no need for people to waste their time writing unbalanced, thousand word blog posts to try and convert people to their language of preference.
phillid - Newbie-ish operating system developer with a toy OS on the main burner
Re: Programming Language Discrimination
Welcome to the internet.
Re: Programming Language Discrimination
Now there you have a more valid point, but your initial post was about someone's blog. To take another example, I think it's perfectly fair and valid to write a blog pointing out that Apple sell overpriced, underpowered hardware (if you believe that to be true), but a completely different matter to make that an answer when someone posts a question in an Apple forum about a problem with their Mac. I'd say there are very good reasons to write blogs, articles, or whatever, pointing out the deficiencies of particular programming languages. Without that sort of criticism we would probably still be coding Space Invaders in GW-BASIC.phillid wrote:But I guess what I'm trying to point out is when people complain about your language preference on your thread in a forum. It's these people that get up my nose.
You just have to ignore blogs that you don't agree with and/or refute the arguments made in the comments section. Otherwise there's a danger that you appear like the fanatics who rave about Macs just because they are made by Apple.
Re: Programming Language Discrimination
In general, programming languages evolve, one way or another. To get to the next evolutionary stage, there is going to have to be a lot of criticism of what exists now. Then some person/group/committee is going to have to try to address at least some of those issues to make a better language.
You say "whatever language you use is just a matter of personal preference". Combuster will often argue that trying to compare individual languages is an effort at comparing apples and oranges. I disagree. The analogy is buying a car. Yes, all makes and models are different. This makes them harder to compare. Yes, your final decision has something to do with simple personal preference, but that is not the only factor. You can compare prices, you can compare mileage. The gvt tries to establish standardized forms to make the comparisons more objective. In the end, despite the difficulty with comparing dissimilar things, you have to add the objective data and critiques to your personal preferences and make a decision. And nearly the identical process holds for choosing a language for programming some task. The critiques do count, in the end.
You say "whatever language you use is just a matter of personal preference". Combuster will often argue that trying to compare individual languages is an effort at comparing apples and oranges. I disagree. The analogy is buying a car. Yes, all makes and models are different. This makes them harder to compare. Yes, your final decision has something to do with simple personal preference, but that is not the only factor. You can compare prices, you can compare mileage. The gvt tries to establish standardized forms to make the comparisons more objective. In the end, despite the difficulty with comparing dissimilar things, you have to add the objective data and critiques to your personal preferences and make a decision. And nearly the identical process holds for choosing a language for programming some task. The critiques do count, in the end.
- Combuster
- Member
- Posts: 9301
- Joined: Wed Oct 18, 2006 3:45 am
- Libera.chat IRC: [com]buster
- Location: On the balcony, where I can actually keep 1½m distance
- Contact:
Re: Programming Language Discrimination
I don't know where you got that from. Either people made a concious choice, and a proper discussion if any is brief and not really worth it. Or what happens more often, people are religious or otherwise plain stupid, and the resulting discussion is definitely not worth it.bewing wrote:Combuster will often argue that trying to compare individual languages is an effort at comparing apples and oranges.
Re: Programming Language Discrimination
Hi,
Imagine about 7 billion dots (representing world population) drawn on a graph representing programming knowledge vs. number of people. It'd look something like this:
Near the bottom there's most of the people in the world, who don't have any experience programming anything. If you think about it, most of these people are familiar with basic algebra already; and if you spend half an hour explaining how computers work ("memory is like a grid of boxes where each box stores stuff") and another half an hour explaining control flow, most of them could write software.
In the middle are your normal programmers. These are people that want to get work done, who don't really want to waste their time trying to understand overly complex abstract ideas (or attempting to find/fix bugs caused by other programmers who didn't quite understand those overly complex abstract ideas). I'm sure most of us have seen the famous Brian Kernighan quote - "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it". Now imagine a team of programmers - the most clever programmer on the team should try to write code that the least clever person on the team can debug.
At the very top of the triangle is a relatively small number of dots representing the most knowledgeable people on earth. These are language researchers and people that create the specifications for various languages. They assume everyone has the same knowledge that they do. They are wrong.
Not only are the people responsible for the design of languages wrong; they won't listen. If you criticise something for being too complex they assume you're not in that small triangle of the most knowledgeable people on earth and ignore you. These people are making programming harder for everyone.
The end result is that the amount of training/learning someone has to do to go from "potential programmer" to "programmer" is increasing. When I first started programming, languages were simple (an 8-year-old could learn BASIC in about 2 weeks). Now people can spend several years at university learning programming and still not understand half of some programming languages (e.g. Haskell).
Cheers,
Brendan
Sadly, I don't see this happening.bewing wrote:In general, programming languages evolve, one way or another. To get to the next evolutionary stage, there is going to have to be a lot of criticism of what exists now. Then some person/group/committee is going to have to try to address at least some of those issues to make a better language.
Imagine about 7 billion dots (representing world population) drawn on a graph representing programming knowledge vs. number of people. It'd look something like this:
Code: Select all
Knowledge
|
|\ = People that effect language design
|-\
| \ = Programmers
|___\
| \
| \ = Potential programmers (basic maths knowledge, etc)
| \
|_______\__People
In the middle are your normal programmers. These are people that want to get work done, who don't really want to waste their time trying to understand overly complex abstract ideas (or attempting to find/fix bugs caused by other programmers who didn't quite understand those overly complex abstract ideas). I'm sure most of us have seen the famous Brian Kernighan quote - "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it". Now imagine a team of programmers - the most clever programmer on the team should try to write code that the least clever person on the team can debug.
At the very top of the triangle is a relatively small number of dots representing the most knowledgeable people on earth. These are language researchers and people that create the specifications for various languages. They assume everyone has the same knowledge that they do. They are wrong.
Not only are the people responsible for the design of languages wrong; they won't listen. If you criticise something for being too complex they assume you're not in that small triangle of the most knowledgeable people on earth and ignore you. These people are making programming harder for everyone.
The end result is that the amount of training/learning someone has to do to go from "potential programmer" to "programmer" is increasing. When I first started programming, languages were simple (an 8-year-old could learn BASIC in about 2 weeks). Now people can spend several years at university learning programming and still not understand half of some programming languages (e.g. Haskell).
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Re: Programming Language Discrimination
An 8-year old can still learn BASIC; it hasn't gone away. The difference is that with modern languages an eight-year-old can learn to do considerably more sophisticated things than they could with BASIC.When I first started programming, languages were simple (an 8-year-old could learn BASIC in about 2 weeks).
If you find a particular language too complicated then you don't have to use it. But to write, for example, a sophisticated WYSIWYG word processor in GW-BASIC would not be a trivial task; in Visual C# it is relatively simple.
Re: Programming Language Discrimination
Hi,
If you want a world where any programmer can understand all source code written by all other programmers; then ignoring the problem is the worst thing you can do ("All that is necessary for the triumph of over-complicated gibberish is that good men do nothing" ). If you care about the art of programming and the I.T. industry in general; then you have to track down all the assholes using these over-complicated languages and smash their stupid faces in, just to prevent common sense from becoming obsolete.
Cheers,
Brendan
Modern BASIC (e.g. Visual Basic .NET) is very different and has inherited complexity from elsewhere (OOP, generics, lambda expressions, etc).iansjack wrote:An 8-year old can still learn BASIC; it hasn't gone away. The difference is that with modern languages an eight-year-old can learn to do considerably more sophisticated things than they could with BASIC.When I first started programming, languages were simple (an 8-year-old could learn BASIC in about 2 weeks).
If you want to understand the Linux kernel source code but find C too complicated then you're screwed. If you want to understand the Bochs source code but find C++ too complicated then you're screwed. If you want to understand the Eclipse source code but find Java too complicated then you're screwed. If you want to understand anything written in Perl or Haskell or SmallTalk or Lisp or Forth or....iansjack wrote:If you find a particular language too complicated then you don't have to use it.
If you want a world where any programmer can understand all source code written by all other programmers; then ignoring the problem is the worst thing you can do ("All that is necessary for the triumph of over-complicated gibberish is that good men do nothing" ). If you care about the art of programming and the I.T. industry in general; then you have to track down all the assholes using these over-complicated languages and smash their stupid faces in, just to prevent common sense from becoming obsolete.
You're getting languages and libraries confused - writing a sophisticated WYSIWYG word processor in C# (without libraries) would be a massive headache; and writing a sophisticated WYSIWYG word processor in GW-BASIC would be easy if suitable libraries existed and you've already spent months learning how to use those libraries.iansjack wrote:But to write, for example, a sophisticated WYSIWYG word processor in GW-BASIC would not be a trivial task; in Visual C# it is relatively simple.
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Re: Programming Language Discrimination
I'd venture to suggest that if you find C too complicated then you would have difficulty understanding the Linux kernel source code whatever language was it was written in. I'd further venture that if the kernel was written in GW-BASIC it would be an order of magnitude harder to understand.If you want to understand the Linux kernel source code but find C too complicated then you're screwed.
Code: Select all
You're getting languages and libraries confused
The same holds for most of the common programming languages; a standard set of libraries is an integral part of them. The joy of the modern languages, compared to traditional BASIC, is that they make it so easy to produce and use such libraries. Many features of modern languages - namespaces are an obvious example - are there to facilitate such extension.
- Combuster
- Member
- Posts: 9301
- Joined: Wed Oct 18, 2006 3:45 am
- Libera.chat IRC: [com]buster
- Location: On the balcony, where I can actually keep 1½m distance
- Contact:
Re: Programming Language Discrimination
iansjack wrote:I don't think so.Brendan wrote:You're getting languages and libraries confused
See? These threads are so utterly predictable.I wrote:Or what happens more often, people are religious or otherwise plain stupid, and the resulting discussion is definitely not worth it.
Re: Programming Language Discrimination
Hi,
Do you agree/disagree that it's possible to include something in a language, such that the benefits don't justify the increase in complexity? For a simple example, how about if we included a "multiply by the height of Mt. Everest" operator, so that "foo + ^* bar" is the same as "foo + 8848 * bar" - would the added complexity (the hassle of learning the '^*' operator) be justified?
How about the reverse - do you agree/disagree that it's possible to include something in a language that does justify its complexity? For a simple example, how about if we have a "multiply" operator - would the added complexity (the hassle of learning the '*' operator) be justified?
Now imagine if there was an infinitely long list of all possible features that a language could have. Hypothetically; we could have a team of scientists measuring how long it takes an average human to learn how to use each feature, measuring how much a feature improves/reduces an average human's productivity, and measuring how practical that feature is for compiler developers to support (without this you end up with things like an "auto-generate 3D game" feature that is easy to learn and improves productivity, but is almost entirely impossible to support). In theory; scientists would be able to accurately classify all potential features (e.g. give them a good/bad rating); and would be able to find the "scientifically proven best programming language possible".
Now; what do you think this "scientifically proven best programming language possible" would look like? Would it include things that 75% of the world's population will never understand, or would it include things that 95% of the world's population already understands?
Cheers,
Brendan
I'm not sure what your point is...iansjack wrote:I'd venture to suggest that if you find C too complicated then you would have difficulty understanding the Linux kernel source code whatever language was it was written in. I'd further venture that if the kernel was written in GW-BASIC it would be an order of magnitude harder to understand.If you want to understand the Linux kernel source code but find C too complicated then you're screwed.I don't think so. I would say that you are confusing the core syntax of a language with any reasonable implementation of it. C# was designed with the libraries in mind. Indeed, even C is designed with the standard C library an implicit part of it. Sure you can theoretically write programs in C without using the standard library, but in practice few people do. Even writing your own OS, without using the standard library, one of the first things that people do is to implement a version of that library.Code: Select all
You're getting languages and libraries confused
The same holds for most of the common programming languages; a standard set of libraries is an integral part of them. The joy of the modern languages, compared to traditional BASIC, is that they make it so easy to produce and use such libraries. Many features of modern languages - namespaces are an obvious example - are there to facilitate such extension.
Do you agree/disagree that it's possible to include something in a language, such that the benefits don't justify the increase in complexity? For a simple example, how about if we included a "multiply by the height of Mt. Everest" operator, so that "foo + ^* bar" is the same as "foo + 8848 * bar" - would the added complexity (the hassle of learning the '^*' operator) be justified?
How about the reverse - do you agree/disagree that it's possible to include something in a language that does justify its complexity? For a simple example, how about if we have a "multiply" operator - would the added complexity (the hassle of learning the '*' operator) be justified?
Now imagine if there was an infinitely long list of all possible features that a language could have. Hypothetically; we could have a team of scientists measuring how long it takes an average human to learn how to use each feature, measuring how much a feature improves/reduces an average human's productivity, and measuring how practical that feature is for compiler developers to support (without this you end up with things like an "auto-generate 3D game" feature that is easy to learn and improves productivity, but is almost entirely impossible to support). In theory; scientists would be able to accurately classify all potential features (e.g. give them a good/bad rating); and would be able to find the "scientifically proven best programming language possible".
Now; what do you think this "scientifically proven best programming language possible" would look like? Would it include things that 75% of the world's population will never understand, or would it include things that 95% of the world's population already understands?
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Re: Programming Language Discrimination
The reverse would be excluding the * operator, and excluding would create the complication of having to use loops and addition.Brendan wrote:Do you agree/disagree that it's possible to include something in a language, such that the benefits don't justify the increase in complexity? For a simple example, how about if we included a "multiply by the height of Mt. Everest" operator, so that "foo + ^* bar" is the same as "foo + 8848 * bar" - would the added complexity (the hassle of learning the '^*' operator) be justified?
How about the reverse - do you agree/disagree that it's possible to include something in a language that does justify its complexity? For a simple example, how about if we have a "multiply" operator - would the added complexity (the hassle of learning the '*' operator) be justified?
After an infinitely long time span, yes. But at that point, far more productivity would have occurred from imperfect languages. (Is it better to have a car that can drive around but not fly, swim, travel through space, or teleport, or to walk while waiting on all those other features?Now imagine if there was an infinitely long list of all possible features that a language could have. Hypothetically; we could have a team of scientists measuring how long it takes an average human to learn how to use each feature, measuring how much a feature improves/reduces an average human's productivity, and measuring how practical that feature is for compiler developers to support (without this you end up with things like an "auto-generate 3D game" feature that is easy to learn and improves productivity, but is almost entirely impossible to support). In theory; scientists would be able to accurately classify all potential features (e.g. give them a good/bad rating); and would be able to find the "scientifically proven best programming language possible".
EnglishNow; what do you think this "scientifically proven best programming language possible" would look like? Would it include things that 75% of the world's population will never understand, or would it include things that 95% of the world's population already understands?
Programming is 80% Math, 20% Grammar, and 10% Creativity <--- Do not make fun of my joke!
If you're new, check this out.
If you're new, check this out.