I couldn't pick between C or Python as I use them both in different circumstances and adore both of them. Tis a shame I can't use either in my job - I'm a PHP developer by day and not a big fan of the language at all :-(
In 1982, when I was 10, I was in a personal computer club, run by a guy called Alan Pearman, who had his own company, APL. He ran the club from the back of his office, games, programming, ZX Spectrum, Commodore 64, Dragon 32, BBC Micro, Oric. He had his own machines that he programmed using APL. It just looked like line noise. I was in awe.
Haters gonna hate, but I enjoy PHP. For those who say PHP is sloppy and lacks substance, that's because you write it that way. A lot of the complaints that people have are long gone: - lack of namespace: they exist
-goto lines: no one forces you use them!
-inconsistent function naming conventions: you choose the names...
-magic quotes: no longer exist
My point is there are a lot of people who hate on PHP, but the majority of complaints are issues that you bring to the table. Regardless, I enjoy other languages too. I've been picking up on python recently and it's very enjoyable.
Most of the people who hate on PHP are likely not programming the sort of application that PHP is used for. I generally ignore a .NET/Java/C++ developer crapping all over PHP.
Ruby/Python dev's I pay attention to on the other hand, if only because those two languages interest me. That said, where I am, PHP/Javascript is where the money is, so clearly they are my favorites!
Quite the contrary. I hate on PHP pretty hard... Because writing a PHP web application is my day job. My own complaints of the language (which others have already voiced) are problems that I run into frequently enough to have flown into a wild rage at the office on more than one occasion.
PHP was incompetently designed by an incompetent bunch of programmers. And it shows. And it attracts even more incompetent programmers who don't know better.
What do you mean by "you choose the names" with regard to PHP's inconsistent naming conventions? I think most of the upset is due to the standard array functions which can be either array_action($array, $arg) or array_action($arg, $array).
Sorry, but my primary complaints of PHP are in no way related to anything that I've "brought to it." These are all default behavior out of the box:
- Error messages that are often nowhere near where the problem is, and sometimes contain no stacktrace
- PHP-provided function names are inconsistent and follow no set convention, mostly because the language was built without Objects or Namespaces
- The arguments to PHP-provided functions are arbitrarily ordered (such as array manipulations, and string searching). I have to look them up every... single... time.
- Core features of basically every other popular dynamic language took years to arrive in PHP. Hell, it didn't even get a real shorthand array syntax until a few months ago.
- Backwards design decisions, such as having sort-related functions modify data structures in-place.
- Completely insecure on a default install. No directory traversal protection, combined with having urls map directly to on-system files, is a recipe for disaster.
- No isolation or easy support for simultaneous PHP working copies. If I want to work locally on 2 separate PHP projects, each requiring different PHP versions and different (often conflicting) libraries, I have to pollute my entire global workspace.
I could go on, but it's making my blood boil recalling the times I had to deal with this foul stain of a language. There is no reason for a self-respecting developer to ever choose it, especially when alternatives like Python or Ruby exist. Period.
There's still the problem of tutorials: There are tons of bad tutorials out there that teach people to write insecure, sloppy, and un-substantive code. The result is a plethora of bad PHP programmers who don't seem to understand seemingly simple concepts like global variables. And much of the practices that result from it are considered idiomatic.
Some of the error messages that PHP spits out are incomprehensible at best, and misleading at worst. Broken code quickly becomes a nightmare.
And frankly, the fact that Rasmus Lerdorf doesn't like programming shows pretty well in the language. His incompetence is all over its "design."
Why is it that php, despise of being the most used server side language, (almost) never receives any love (i have noticed it too many times to ignore) whereas python and ruby, despite of getting alot of love, doesn't show usage numbers. i have seen alot of big sites using php, Facebook is the biggest i can think of right now, but python (.py extension) or ruby (i don't know file extension) is not that common (or at least i don't see it). i don't know either ruby or python so there might be some bias in what i see, but i strong feel there isn't.
File extension is just a part of my observation. It also includes tutorials, how-tos, questions/answers on stack overflow-like sites, etc. all of these are more for php than any other language.
Sure, I was just explaining that particular observation.
I'd say the difference is that PHP, due to being easier to get into - you don't need a framework, understand OOP, etc - is used both by amateurs and professionals, while Ruby and Python tend to be mostly used by the latter.
Hence, you get vocal opposition in communities composed of such professionals, while others don't really care enough about the languages and the craft to participate in them.
(Note: nowhere did I criticize PHP or all PHP developers)
> due to being easier to get into - you don't need a framework, understand OOP
what kind of framework? i was seeing khan academy videos that teach python and they did not use any framework and the basic things were same as in php (conditionals, loops, function, etc), no OOP. OOP might be used for some advanced stuff but that stands true for php too.
Also a note from me too, i am not against python or ruby. They are great. I am just trying to make sense of what i observe daily.
You need a framework and OOP if you want to use Python for the web. Without them you can't really move beyond simple terminal programs.
The thing is that many people don't really want to learn to program: they do it as a way to accomplish other goal (in this case, create a website for some purpose). So they aren't likely to have the patience to learn in a structured way - often start by copy-pasting snippets and examples and learning as they need.
PHP fits right into that mindset; in fact, it was originally designed for that: as a set of tools for people who just wanted to add some small feature to their mostly static personal site. And even if it has added a lot of advanced stuff, that quick-and-dirty approach is still easy.
Because Python and Ruby sites are built properly, and don't expose their filenames as extensions in the url (.py or .rb). In fact, their urls don't even map to actual files to begin with, which immediately avoids several large security holes in PHP-built sites. With PHP you have to do some clever url rewriting and redirecting all your traffic through one central "index.php"-like script.
PHP is the training wheels of the server-side language world. You can pick it up and almost immediately see results on any number of popular hosting providers that provide support out of the box for it. That's why you see it so much.
>Because Python and Ruby sites are built properly.
Are you implying that there's not a single bad Python or Ruby programmer?You can dislike PHP all you want, but don't pretend that a website can't be written poorly using Python or Ruby. The programmer is the one who makes it after all, not the language.
>In fact, their urls don't even map to actual files to begin with.
No, I'm not implying that. Of course it's possible for a poorly written site to be built with Python or Ruby. But I've never seen a single one expose its implementation details through filename extensions, or map urls directly to files on disk: both things that PHP does by default.
Yes, I've used Cakephp. It's a slight improvement.
> PHP is the training wheels of the server-side language world. You can pick it up and almost immediately see results on any number of popular hosting providers that provide support out of the box for it.
yes that makes sense. But i wonder, does that imply python or ruby are more difficult to understand than php? I believe they must be on the same level of sophistication and understandability.
And if python, (or ruby) for example, was "better" (as in gets more developer love) then shouldn't it's availability on hosting services increase? Its not like either of php or python is new and needs time to settle down. If availability on hosting providers were to increase, it would have increased long ago.
and as for file extensions, as i noted in another comment in this thread, file extension is just a part of my observation. It also includes tutorials, how-tos, questions/answers on stack overflow-like sites, etc. all of these are more for php than any other language.
can you elaborate a little on how does it have low barrier of entry? as my current understanding stands, python has all the basic things like loops, conditional, functions, variables etc just like php. What makes python difficult to start learning? (or if put another way: what makes php easier to start learning?)
The languages themselves are pretty equivalent. But with PHP it's easier for newbies to grok things when you can just point a web server at a directory that has a "blog.php" file in it, and visit "myserver.com/blog.php" to execute that script and see results. With python you have to understand the basics of what WSGI is and how it works, which is pretty poorly documented for people just starting web development. The "visit a file from my browser's address bar" motif is easier to grasp than "my url gets interpreted as a string that I then parse and route to a function imported from some other file".
That makes sense. thanks for clearing it up. I didn't know it was necessary to have url formatting to write python. but then its not a language problem. its a framework problem. And php can have its framework too. But I guess it doesn't matter if its a language problem or a framework problem when we choose our favourite language :)
That's because python and ruby sites do the right thing: a page is not a script, the url should not point to a "file" ("index.php" and such). When using python or ruby, most of the time you use frameworks that let you define your urls, and not just put a script and let the url point to it. Urls should be readable and easy to remember, they are directions for the user. Wich script is running on the server is an implementation detail that shouldn't be part of the user interaction, he doesn't need to tell you wich script to run.
"mysite.com/add_user" is waaaaay better than "mysite.com/add_user.php"
This is one of many bad things php encourages you to do... and that's why most good programmers don't like php, because it makes easy to do bad things.
Some big sites using python: youtube.com, addons.mozilla.org, dropbox.com, disqus.com, ...
Yes that's a valid point. But that alone is not enough for php to be disregarded. Because one who wants to not have urls point to files on disk will change this behaviour. .htaccess makes it possible.
This is a security problem, i agree. But not a major security problem. Because if it were, sites like Facebook would have been exploited long ago. It's certainly possible to do things right way. Which brings us back to "its developer's fault and not language's".
to which what you said suits.
> most good programmers don't like php, because it makes easy to do bad things
The question is "what is your favorite language", not the language that is used the most, or the most easy to learn.
Of course there are good PHP developers and good PHP code, but the language itself it's weak, full of flaws and promotes bad design (PHP encourages the coupling of processing with presentation).
If PHP is your favorite language this is just a sign that you don't know other languages, not at a good level at least.
I think one of the biggest problems when you get into these debates about PHP vs Ruby/Python is that they are always comparing stock PHP with RoR or Django. When you compare Rails to Cake or one of the other highly popular frameworks out there for PHP then that language closes the gap.
Yes, PHP still has issues, especially with function naming conventions, but it still fascinates me to no end to see PHP bashed mindlessly when if you compared it to the language without the framework you might see a different picture.
Come on guys, wake up and smell the coffee. Every language has its own set of issue, and it has its own set of strengths. If it was about the best, we never would have moved passed languages like Perl and C, both of which I like. I know and use several languages, including PHP, and usually enjoy using each of them when I do.
Oh, and there are several really good (and cheap) hosting providers out there who support PHP, Ruby and Python all on the same setup with no additional charge.
PHP is easier to get into because you don't need a framework to do anything. Ruby and Python both require these, but to take PHP up to the same level as Ruby and Python when they are used with these frameworks, then you have to use a framework as well. At that point, 90% of peoples issues with the language are rendered moot.
As a self-taught programmer I used to hail PHP as God's gift to mankind until I recruited a team and attempted rapid deployments. The language is just poorly designed compared to Ruby and Python. In face it can encourage some really bad habits for soon-to-be engineers.
On a side note, Coffeescript is one of my fav for it's ease of fixing common bugs concerning global variables, semicolons and equality comparisons. But I am a little turned of by its overblown hype on simplied syntax by its fanboys. They need to realize that, sometimes typing function in JS is just as easy as typing -> in most IDEs.
56 comments
[ 0.17 ms ] story [ 160 ms ] threadI really like CoffeeScript as well. (Javascript is a real pain to handle sometimes!)
My point is there are a lot of people who hate on PHP, but the majority of complaints are issues that you bring to the table. Regardless, I enjoy other languages too. I've been picking up on python recently and it's very enjoyable.
Ruby/Python dev's I pay attention to on the other hand, if only because those two languages interest me. That said, where I am, PHP/Javascript is where the money is, so clearly they are my favorites!
PHP was incompetently designed by an incompetent bunch of programmers. And it shows. And it attracts even more incompetent programmers who don't know better.
- Error messages that are often nowhere near where the problem is, and sometimes contain no stacktrace
- PHP-provided function names are inconsistent and follow no set convention, mostly because the language was built without Objects or Namespaces
- The arguments to PHP-provided functions are arbitrarily ordered (such as array manipulations, and string searching). I have to look them up every... single... time.
- Core features of basically every other popular dynamic language took years to arrive in PHP. Hell, it didn't even get a real shorthand array syntax until a few months ago.
- Backwards design decisions, such as having sort-related functions modify data structures in-place.
- Completely insecure on a default install. No directory traversal protection, combined with having urls map directly to on-system files, is a recipe for disaster.
- No isolation or easy support for simultaneous PHP working copies. If I want to work locally on 2 separate PHP projects, each requiring different PHP versions and different (often conflicting) libraries, I have to pollute my entire global workspace.
I could go on, but it's making my blood boil recalling the times I had to deal with this foul stain of a language. There is no reason for a self-respecting developer to ever choose it, especially when alternatives like Python or Ruby exist. Period.
Some of the error messages that PHP spits out are incomprehensible at best, and misleading at worst. Broken code quickly becomes a nightmare.
And frankly, the fact that Rasmus Lerdorf doesn't like programming shows pretty well in the language. His incompetence is all over its "design."
What languages (as a replacement for PHP) have better error messages?
PHP has routing frameworks too (Kohana, CakePHP, etc), but plenty of (most?) sites don't use them.
example http://stackoverflow.com/questions/tagged/php
http://stackoverflow.com/questions/tagged/python
http://stackoverflow.com/questions/tagged/ruby-on-rails
the difference is huge.
I'd say the difference is that PHP, due to being easier to get into - you don't need a framework, understand OOP, etc - is used both by amateurs and professionals, while Ruby and Python tend to be mostly used by the latter. Hence, you get vocal opposition in communities composed of such professionals, while others don't really care enough about the languages and the craft to participate in them.
(Note: nowhere did I criticize PHP or all PHP developers)
what kind of framework? i was seeing khan academy videos that teach python and they did not use any framework and the basic things were same as in php (conditionals, loops, function, etc), no OOP. OOP might be used for some advanced stuff but that stands true for php too.
Also a note from me too, i am not against python or ruby. They are great. I am just trying to make sense of what i observe daily.
The thing is that many people don't really want to learn to program: they do it as a way to accomplish other goal (in this case, create a website for some purpose). So they aren't likely to have the patience to learn in a structured way - often start by copy-pasting snippets and examples and learning as they need.
PHP fits right into that mindset; in fact, it was originally designed for that: as a set of tools for people who just wanted to add some small feature to their mostly static personal site. And even if it has added a lot of advanced stuff, that quick-and-dirty approach is still easy.
PHP is the training wheels of the server-side language world. You can pick it up and almost immediately see results on any number of popular hosting providers that provide support out of the box for it. That's why you see it so much.
Are you implying that there's not a single bad Python or Ruby programmer?You can dislike PHP all you want, but don't pretend that a website can't be written poorly using Python or Ruby. The programmer is the one who makes it after all, not the language.
>In fact, their urls don't even map to actual files to begin with.
I take it you've never looked into Cakephp.
Yes, I've used Cakephp. It's a slight improvement.
yes that makes sense. But i wonder, does that imply python or ruby are more difficult to understand than php? I believe they must be on the same level of sophistication and understandability.
And if python, (or ruby) for example, was "better" (as in gets more developer love) then shouldn't it's availability on hosting services increase? Its not like either of php or python is new and needs time to settle down. If availability on hosting providers were to increase, it would have increased long ago.
and as for file extensions, as i noted in another comment in this thread, file extension is just a part of my observation. It also includes tutorials, how-tos, questions/answers on stack overflow-like sites, etc. all of these are more for php than any other language.
yes, that's what i am wondering, why isn't php Favorited more often.
> Because not everyone is writing code for the web.
php can also be used for native stuff (IIRC). And both ruby and python are as suited for native development as php is.
"mysite.com/add_user" is waaaaay better than "mysite.com/add_user.php"
This is one of many bad things php encourages you to do... and that's why most good programmers don't like php, because it makes easy to do bad things.
Some big sites using python: youtube.com, addons.mozilla.org, dropbox.com, disqus.com, ...
Big sites using ruby: twitter.com, jango.com, ...
This is a security problem, i agree. But not a major security problem. Because if it were, sites like Facebook would have been exploited long ago. It's certainly possible to do things right way. Which brings us back to "its developer's fault and not language's".
to which what you said suits.
> most good programmers don't like php, because it makes easy to do bad things
Of course there are good PHP developers and good PHP code, but the language itself it's weak, full of flaws and promotes bad design (PHP encourages the coupling of processing with presentation).
If PHP is your favorite language this is just a sign that you don't know other languages, not at a good level at least.
Wondering how the points are assigned to each language.
Didn't realize SQL was an option too.
Oh, and there are several really good (and cheap) hosting providers out there who support PHP, Ruby and Python all on the same setup with no additional charge.
PHP is easier to get into because you don't need a framework to do anything. Ruby and Python both require these, but to take PHP up to the same level as Ruby and Python when they are used with these frameworks, then you have to use a framework as well. At that point, 90% of peoples issues with the language are rendered moot.
On a side note, Coffeescript is one of my fav for it's ease of fixing common bugs concerning global variables, semicolons and equality comparisons. But I am a little turned of by its overblown hype on simplied syntax by its fanboys. They need to realize that, sometimes typing function in JS is just as easy as typing -> in most IDEs.