Tell HN: I think you're downplaying the PHP community
Whether it's taking classes, working on side projects, or reading the latest blogs, everyone seems genuinely interested in learning.
Based solely on vote counts alone on the frontpage for the last few days, there appears to be a very large portion of the HN community that both readily follows PHP and/or actively uses it.
What I find most interesting, however, is the comments section.
There's a large camp of developers on HN that are very outspoken regarding their abhorrence of PHP. The language has been ridiculed for well over a decade, so this is to be expected.
What's most intriguing is what you don't see in the comments: the huge number of proponents of PHP.
So where does this discrepancy between vote counts and comments stem from?
I would venture to guess the vote counts themselves stem from silent proponents. They likely don't provide counter arguments because it's simply not necessary. Nothing is gained.
Everyone here has a unified goal of working on cool problems, building amazing applications, and hoping to strike paydirt for all of our hard work.
Maybe it's time we all think about why it is we complain about language X vs. language Y and just get back to trying to make our lives and those around us better, through code.
112 comments
[ 4.2 ms ] story [ 174 ms ] threadIs this really the case? I've seen estimates of around 70-80% of websites using PHP as part of their backend. Granted, many of these would be simple Wordpress sites or other blogging/shopping/content management platforms where almost no actual coding by the user is involved.
Indeed, this becomes quite apparent when it comes time to hire. The vast majority of candidates that claim competency in PHP generally fall into two camps: 1) "W3C school grads" 2) Wordpress developers. Both sets drastically increase the signal/noise ratio.
You can even use WYSIWYG tools to create a website, and then proceed to insert small, poorly written PHP scripts in it. Try creating a PHP gig and start looking for developers on many freelance sites - you'll get tons of people who don't even know what the hell a function is, and yet their profile claims they're experienced in PHP.
>Wordpress developers
No offense to actual Wordpress developers, but many self proclaimed Wordpress "PHP devs" I've seen are only capable of installing Wordpress with a few plugins and select skins. Maybe they know how to edit a file or two in a plugin, but that's about it. And when you ask them what language do they use, they'll obviously pick PHP, even though they couldn't code their way out of a cardboard box. This drives the average wage down, but hell, even mom & pop shops need a dynamic website these days, and Wordpress giveth.
In fact, the market really wants Wordpress developers these days. I checked out many freelance sites like freelancer.com and upwork, and there are tons of gigs available for Wordpress, Drupal, Joomla, and shopping cart setups. Hell, I'm currently looking to help out a friend by finding a dev to create a small website in PHP (or any suitable language, don't care), but the local shops only offer Wordpress and Drupal! Won't touch anything else!
Try finding a Python, Ruby, Node or Go shop who will only install scripts/CMSes and customize them. Nope, not yet! But given enough time and popularity, they'll have their fair share or developers who have no clue what the hell they're doing and will drive the average wage down. Just wait.
C/C++ and Java was like that. Since it was a part of most people's college education, everyone and their mom claimed they knew C++ or Java. It was on their resume, even though their knowledge was superficial at best. In my experience, Indian and Pakistani applicants were the worst offenders in this.
People are probably concerned about not being viewed as a good or knowledgeable developer if they admit to using PHP here, so it's probably not a fight that's worth having for most posters. People don't always give their genuine opinions when they think that their personal reputations or livelihoods are on the line.
This isn't just the case in technical or career matters, but especially when it comes to personal reputation. Just ask people how many sex partners they've had: the results will probably be skewed up or down in fairly predictable ways if people think there's a chance that they'll be judged somehow based on the answer.
Personally I think PHP is a useful (and extremely imperfect) tool that is very appropriate to solve a fairly wide range of problems. For certain problems, it's arguably the best tool. That's why it's going to be around for quite a while.
You're quite critical of PHP, and often claim it's bad and flawed. And yet you're a core contributor, are you not?
Well... what are your suggestions? What would you do? What's the future of the language? Should people bail or not?
A contributor to the core, certainly. I can't say if I'm a “core” contributor.
> Well... what are your suggestions? What would you do?
I can't say with certainty what I will do, but I can point to what I've done. I've tried to fix some things which have bugged me.
> What's the future of the language?
I have no idea. There's not really a roadmap.
> Should people bail or not?
If they want to. If they'd rather use something other than PHP, and they have the choice to, then they're free to do so.
Still... if you were building a web application today, would you consider using PHP, a "flawed language"?
There are plenty of resources around that demonstrate just why it's so horrible. It's inconsistent, easy to shoot yourself in the foot (mainly because of the backwards compatible stuff), some stuff is just plain broken (ISO_8601 for example), yeesh.
But for many web projects - APIs, server-driven web applications, it can be a pretty solid choice.
It's main downsides are the ugliness of the language, shaky history for core commit code quality, and poor usability for long-lived processes. In 2016, these three issues can be worked around reasonably easily (though some danger does exist especially handing a codebase to inexperienced developers).
It's upsides are quite numerous. It's gradually typed, which means it can be used dynamically, but also supports more type-driven DDD-esque work, and codebases can mature over time by progressively adding more static analysis.
The execution environments now available are fast and reasonably efficient. In practice, PHP will beat out CPython and Ruby for most request-response type applications quite handily.
The wider PHP ecosystem is pretty OK. Composer and Packagist are on par with NPM/NuGet/RubyGems, and are easily better than what's available in the Python or Go ecosystems. The quality of packages varies, but in my experience it's on par with the rest - there are some shockers, but there's a lot of solid stuff too.
Unlike Python, it doesn't suffer from massive division - older PHP code can suck, sure, but much of it has been composerified and can be used easily with a bit of Facade or Mediator in newer projects.
PHP has deployment pretty well down, too. Mod_apache is super easy for basic uses. FPM works pretty well for more advanced stuff. It's easier to manage than the likes of the JVM, or even 12-factor type "bundle into an executable and reverse proxy" apps. But you can also do that with PHP as well, if you want to.
Is it my first choice in development environment? Absolutely not. Is it a very effective tool for many applications in 2016? Absolutely. Do I pick it up over Python and Ruby if I'm looking to build a web application? Yes I do.
Moreover, it is designed around bad practices in the name of simplicity. Games cannot be framerate-independent, for example.
It may be a useful prototyping tool, but I feel sorry for the people stuck using it when those prototypes turn into full-size games and they can't easily port to something better. It's better to teach people something more flexible and similar to what's used in the real world.
PHP doesn't have these problems, it's just painful.
On the one hand, yes. But on the other hand, I doubt the people who made Undertale are complaining.
Fox still has all the assets for Undertale. All he has to do is port the battle system to Unity or something and then drop in the old assets. Someone already did it for the Sans battle: https://jcw87.github.io/c2-sans-fight/
The problem is, Fox is an unexperienced developer and doesn't know how to do that. He likely wants a one-click "convert my gamemaker game to nintendo" solution not an actual porting effort which would require rewriting parts of the game in a new language/engine.
Porting the whole thing over is a lot of work, speaking as someone who has actually worked on trying to port a game away from Game Maker.
> The problem is, Fox is an unexperienced developer and doesn't know how to do that. He likely wants a one-click "convert my gamemaker game to nintendo" solution not an actual porting effort which would require rewriting parts of the game in a new language/engine.
No, he just doesn't want to waste his time on reimplementing the entire game just to run on one more platform.
GameMaker is a great tool for entry level developers. It's a stepping stone. I made dozens of games with it before "graduating" to more powerful frameworks.
GameMaker does not deserve the criticism it gets. It's way more powerful than your average gamedev assumes, and creative GameMaker devs can trounce mediocre Unity devs every day of the week.
Many many yes voters (including myself) were very surprised by this result - the internet was on fire with grass roots activism of all kinds. Glasgow had weekly rallies with thousands (sometimes tens of thousands) attending. And yet we lost.
I can't help but wonder if we're witnessing the same phenomena - a silent majority of people who feel no need to contribute to the discourse but have different opinions and values on the subjects us in the comments section are discussing.
Interesting stuff.
And yet after every election the map of the country is blue - - color that represents PP :))
http://www.levante-emv.com/elementosWeb/gestionCajas/MMP/Ima...
If the thing "just works", what am I going to say? "PHP is nice, it does what I need it to do". That's not interesting in any way.
If the thing doesn't work, then I usually have quite a few specific annoyances I've most likely spent considerable time trying to get around or solve completely, and I have developed strong opinions based on those experiences.
I challenge you to come up with a better car analogy.
But there is also nothing particularly wrong with it. It may not be better, but it has no worse maintenance record, crash record, or accident survival rate then average car. (In software world, that would be perhaps java).
To come with better analogy - PHP is like a 15+ yo car imported from neighbour country because that's the only thing you can afford. Its popular and you'll see it all around in you area, so you may be unaware that better cars even exist. It can be used, but something breaks every 50km, the rust has eaten so much that any minor collision will get you killed, and you'll see people frantically repairing it with duck tape on every street to ever get home. But yeah, you can drive one. And have you heard that next year the tax will be lowered, so you may be able to afford 14 yo cars, life is getting so much better here.
Also PHP could easily add sane new stdlib if it wanted to, and keep supporting the old one as long as people want to. I just don't think anyone is really interested in doing so. Most PHP users don't care much, and few large companies that fund the work are mainly focused on keeping the ship from sinking.
They care. They are interested.
But backwards compatibility is a huge issue. PHP7 is much better, it's faster, it uses less resources, and yet you still have hosts running PHP 5.3, some even running 5.2! How do you combat a crowd like that? I don't want PHP to get stuck in IE6 mode, and I sure hope the community voices their valid criticism and takes action.
Have they really been, PHP issues would be fixed long time ago. It had 7 major releases, and people complain about exactly the same things. All the people I know who complain about it and switch to something else say the exact same things, no matter what PHP version they've left behind. Those who do care simply go somewhere else, only those who do not or have massive codebase to support stay.
> PHP7 is much better
Lets agree to disagree on that. Its not better enough to draw any of PHP opponents to it.
> you still have hosts running PHP 5.3, some even running 5.2! How do you combat a crowd like that?
You don't. Let them be. There are people using PHP 1,2,3 and 4 somewhere out there. They may never switch. Why should it hold back the rest of the world?
> I don't want PHP to get stuck in IE6 mode
The whole PHP is its own IE6.
Come on, if a handful inconsistent function names is all the problem with PHP to you, let me suggest you to get yourself a good IDE with a code completion feature. You'll forget that "broken stdlib" forever... of course if your aim is to get the job jone, not to slander a language you aren't working with.
set_error_handler("myErrorHandler"); function myErrorHandler($errno, $errstr, $errfile, $errline) { throw new Exception($errstr, $errno); }
Is all you need.
They are functions - yes. If your first language was fully OOP, then probably PHP is not your language of choice. It doesn't make it bad, though.
So you think boxing all kinds of errors into one generic exception type is a solution to this shortcoming of the language?
That sure feels like a 'php' solution. I will give you that. But that ain't pretty (even as a work around), and no, it does not do the job. May be if you don't know how to work with exceptions in the first place, then it might work for you. But you might end up with a code base like this [1]
[1] http://stackoverflow.com/questions/3425835/converting-errors...
Instead you started nitpicking on the solution. That's dishonest. And it makes the discussion endless.
> Third, nobody does it.
This statement of yours clearly states that you have no idea of the actual PHP ecosystem. Every single major PHP framework is routinely doing it.
So the choice is between insane behaviour, or breaking the code.
> Instead you started nitpicking on the solution. That's dishonest. And it makes the discussion endless.
Because the problem is unsolvable. You cannot get PHP to behave sanely unless you redo everything it does. If you fix one thing, dozens of other will fall apart.
>Every single major PHP framework is routinely doing it.
Right, I wasn't aware of this. How do you write libraries for PHP than, you choose between using what's in stdlib as it is and being used within a framework where exceptions are thrown? Support both? Ignore the problem? Or every library makes its own choice how stdlib should behave? Do the frameworks convert strerr and errno into something usable?
Welcome to PHP 7
I don't know about OP. But it is not just that. Php is a flawed language to its roots. Just think of the community that has tolerated a feature like register_globals for, I don't know, 15 years?
What good can you expect from it?
Also, that was not the question, at all.
but hey, I'm a php hater, don't mind me, retard
What about Python ?
def foo(x:int) -> int: return x+1
to get hints in your IDE (though its not enforced yet by interpreter).
I think many of the loudest anti-PHP voices are ex-PHP developers. They/We naturally assume our own experience is normative, and since we didn't know X, Y, or Z back when we were coding in PHP, obviously neither does anybody else still coding in PHP.
Or, more graciously, back then PHP was the best language we had learned up to that point (better than BASIC or Perl, say), but now we use Ruby or Python or something else, so now we recognize the deficiencies in PHP. Clearly those other people, just a few steps behind us on the path, need to also learn about the deficiencies in PHP and how much better X is.
There are any number of nuanced ways for that to be expressed, but ultimately I think it's mostly tribalism, and obviously unhelpful. Sure, I used to write PHP. Built my first startup with it, sold it, and stuck with it for a few years more even after that. And sure, I don't write in PHP any more. These days it's Python or Java or Clojure for me. Because PHP sucks? No, because it doesn't suit what I'm doing these days as well. And not necessarily for reasons related to the quality of the language.
Consistent languages are easier to learn.
Got a simple Hello World PHP site? Open your SFTP client, drag and drop, done.
Got a Hello World Python app? You have to know about WSGI adapters, process monitors, usually some sort of reverse proxying, how you're going to handle your static files, and so on.
Oh, and let's not forget that to even get to that point, you needed to use a framework of some kind, which meant wrestling with Pip and virtualenvs; you can't just 'echo "Hello World"'.
I'm picking on Python here because web dev in Python is my day job, but the story is similar for many other languages.
Though that might be mitigated somewhat by things like Heroku and App Engine. My first Python code was with the latter, and I didn't even realise I was using it.
Of course it introduces a few of its own but on the whole I'd say Node is definitely easier to work with for a newcomer.
Of course it introduces a few of its own but on the whole I'd say Node is definitely easier to work with for a newcomer.
Besides, real world evidence is against your theoritical musings.
That said, PHP is my go-to language when I what to get up something fast and with not much server side logic.
Consistent error handling is a matter of one set_error_handler() call.
Ok, undeed PHP can be called inconsistent, if one would have a fancy to. And this opinion could be even defended with numerous examples... which examples, for some reason, do not work neither for learners who prefer PHP over "more consistent languages", nor professional developers, who just get their job done.
To boil it down, I think this "inconsistency" argument works more for the internet discussion than for the real life consideration.
They prefer Php because they don't know any better, because they are, well, learners.
>nor professional developers, who just get their job done...
Because they were the "learners" in the earlier statement. Now they are "professionals", but still don't know any better, because they were happy from the beginning, and there is a whole community of Php apologists who will provide validation, so they didn't bothered to look elsewhere.
And someone who looked elsewhere saw a lot of unfamiliar stuff, and were turned off by it. So remained tied to php for ever...It is quite sad.
Honestly, you are claiming that all these people are dumb and lazy. I respect some snobbery but apparently not up to that point.
It's hardly the only thing wrong with PHP, it's just one particular example.
> Nevertheless, for me it never was a problem - neither at a time when I used to stick with FAR commander's internal editor, nor - especially - with PHPStorm nowadays
How can it be especially not a problem? That would imply it was a problem and is now less of one.
In any case, yes, you can maybe learn to deal with it, but it saves time to simply work with a language which doesn't have these problems.
> Ok, undeed PHP can be called inconsistent, if one would have a fancy to. And this opinion could be even defended with numerous examples... which examples, for some reason, do not work neither for learners who prefer PHP over "more consistent languages", nor professional developers, who just get their job done.
Can you actually defend why these examples “don't work”? Learners and professionals alike have to deal with PHP's quirks.
So it is easy, but have you tried building a web app in Python? You don't even need a web server. Only in recent versions Php got it's own web server. The point is, that Php is easy is mostly a myth. Other languages have as easy path to building a web applications. But they just stop short of giving up any sanity or security...
I am not sure if we should encourage people to make that tradeoff..
Php is a language that traded off every bit of sanity and security for "ease of use".
There's nothing sane about unusably difficult languages.
I saw in another comment you accuse others of using 'dirty internet tricks'. I am afraid you are either using them to the limit by yourself, or your logic is all messed up.
I will try to explain anyway. A langauge can be made difficult just for the sake of it. For example, Brainfuck. But a language can also be a bit more difficult as a result of process/methodologies that make it more secure/sane. For example the borrow checker in rust and purity in Haskell. Both of these make these languages a bit harder to use than usual.
What Php does it the opposite. Examples are things like "10"=="0x0a" being true and Php arrays being a mashup of a number of different data structures, and include/require functions that provide zero namespacing, register globals, magic_quotes etc etc....Now some of these are removed, I know, so please don't come back with that. I am mostly pointing towards one of the founding principle of the language..
Mostly I file it under "hipsters gonna hipster" and then go back to doing something useful.
I've been writing php professionally since 2000, and I like it well enough. I know it so much better than any other language that, 20 years into my career, I can't see how I'll ever learn another one well enough to compare them.
HHVM is backwards compatible (so runs your PHP, lets you include it from Hack, etc) but it's hardly a vote of confidence in PHP, the language.
It does highlight an important issue with Hack though. Once you start to migrate to Hack, moving back to "pure PHP" is a pig.
You see, that's a hater's logic.
Every PHP's advantage or eviddence you've given, you are trying to dismiss or even twist, calling it a disadvantage - usual tricks for the internet discussion when you aren't interested to find the truth but just to keep pressing with your opinion.
Honestly, this kind of discussion is the only problem with PHP.
I enjoy the speed boosts of HHVM or PHP7 as much as anyone else, because I benefit from it, but yeah, I still hate the language.
May be your hate is entirely from the fact that you are forced to work with the tool you don't like.
You don't need to pity me. I don't have much to do with PHP any more. All new development is either by a static generator or Django, or whatever's required... I just also maintain a PHP server for a client with a load of Wordpress installs.
That's was my point about liking stories about PHP getting better. A performance boost means a free upgrade for no extra work. I like that. Doesn't mean I like PHP.
There's only one other popular language, guile, which could bootstrap itself successfully recently. I don't count python 3.5 as success. Compare the numbers. Kudos to php7.
In fact, I've been hearing for 10 years things like "what, OCaml? where do we hire someone to work on this?", "Haskell? nobody uses that", and more recently "we cannot use Rust as we don't have anyone that can possibly understand this". Saying "PHP is just another language/tool" is just throwing the towel without trying to understand anything.
What would you think if someone said "coal is just another fuel, stop trying to push electric, let me use coal and go on with life"? Well, a lot of people believe this, but let's pretent there's a consensus on this, shall we?
So, the question is: you CAN use PHP for doing web development. You can also use coal as a fuel. Not only that, but all libraries are written with this in mind, all code bases and fragments of code are focused on web development, etc. Coal is also combustible, a lot of manufactures dominate the technology, it's cheap, so.. hey, energy!
Even if the language is pure crap - as coal is as a fuel - people will only hit the crappy parts when their system is already implemented and being used by more people. "Hey, this language has a lot of issues" - "hey, this coal thing really polutes". Too late. You already have a full system implemented, you have experience with the language - or energy production technology... so you just change your workflow to accommodate this. Or you just never realize it - "whatever, no big deal" - and keep using it, as you see the advantages as more important.
There's tons of factors that contribute to the PHP popularity - the same thing with C, Perl, etc. Doesn't mean the language is good, and also doesn't mean everyone has to agree with you that "it's just another tool, let's go back to business".
So yeah, no.. I won't let you go on with PHP, sorry. I want better tools, better systems, and I want to spread knowledge. I guess we are going to agree to disagree on that.