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.
I 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.
Didn't realize SQL was an option too.
Wondering how the points are assigned to each language.