7 ms·
PHP with these guidelines looks like JAVA to me, but without the relatively sane foundations. It is fun how much a very old moralist sentence by Confucius appl
by gbog 14y ago
PHP with these guidelines looks like JAVA to me, but without the relatively sane foundations.
It is fun how much a very old moralist sentence by Confucius applies well to PHP. He said 其本亂而末治者否矣 which can be translated, in software language development context, as "Build a nice, reliable language on shitty definition? Bullshit!".
(The word-by-word translation is "your - root - messy - and/but - leaves/result - governed/orderly - have ? not - hey!")
This sentence also resonates with the odd Turkish encoding PHPbug recently reported here: if you have so many wrong architecture decisions in the core of your product, no amount of patching and "under the rub" filling will save you.
Edit: added word-by-word translation + typo fixes.
- billpatrianakos 14y agoWe get it, man. PHP sucks, you're cool/smarter/better because you use something else, and you need to remind us all about it by jumping in every time the letters P-H-P are seen in sequence to let us all know how it sucks by retreading the same old lines used by the last fifty guys who said the same thing but to your credit you really tried to be clever about it. A good portion of why people like to mock PHP is due to the way people end up using the language rather than the language's ugly parts. This guide is a great step toward pointing people in the right direction with the language. PHP has come a very long way and continues to improve. A big chunk of the battle is having decent guides to replace all the crap that's out there showing new PHP devs the wrong way. So why not talk about the merits of the guide rather than taking an easy opportunity to shit on PHP. It's really gotten old. Hey, remember when JavaScript was like the worst language ever and everyone felt the need to remind everyone about that constantly? I do. And now all of them are writing blogs about how awesome node.js is.
- mikeash 14y agoYes, how dare he talk about the problems with PHP in the comments on a site dedicated to talking about how to avoid problems with PHP. Seriously, WTF? Are people actually offended that discussion of PHP's defects take place in a conversation about PHP best practices?
- Getahobby 14y agoI think it is because we (as a community) should be past the piling-on stage and on to the constructive discussion stage. Snark doesn't add to the discussion.
- aggronn 14y agoI don't intend to jump into the ring, but as an observer, I don't think we're at that point yet. Here's the progression of the current anti-PHP flare up: Jeff Atwood says PHP sucks |- Says we should make other languages fill in on what PHP does best |- Post goes on HN |- PHP apologists say "No! PHP is fine, I've made a career out of it!" |- 'Atwoodians' continue to reject PHP, ruby/python need to be more accessible |- PHP apologists make reasonable arguments for why PHP isn't as bad as everyone says, while admitting its probably worse than python/ruby There remains a conspicuous lack of response from the 'Atwoodian' camp regarding what could be done to add PHP's quick-start strengths to other languages so that PHP developers can develop similarly to how they currently do, just with a less wonky and problematic base language. By no means, as an outsider, do I perceive the PHP apologists as having redeemed PHP to the point that the discussion should be about 'how to fix PHP' rather than 'how to discourage its propagation' as was originally put fourth in a fairly reasonable way by Atwood. I realize why saying 'PHP apologists' is problematic, but I'm mostly seeing responses that are in themselves critical of PHP, while espousing its widespread use, quick-start capabilities, and developer intertia--and not espousing why the fundamentals of the language are better of the equals of ruby/python.
- chipotle_coyote 14y agoWhile I can't speak for others in the "Atwoodian camp," I for one think Atwood's article was that response, to a large degree: it pretty much said that his next big project is trying to bring those strengths to a platform built on another language. Having said that, it seems to me that there's certainly a fair amount of work being done to make deploying apps in other languages pretty simple. With mod_passenger, for instance, setting up a Rails app under Apache isn't notably more difficult than setting up any other Apache virtual host. Deploying Python web applications isn't quite as simple yet (at least in my experience), but it's nothing that should be beyond the ken of someone who's figured out how to write a Python web application in the first place. And that, in turn, isn't really beyond the ken of anyone who's learned how to write reasonably good PHP MVC code.
- gbog 14y agoI used PHP for five years professionally, I consider myself as well positioned as many to have an informed opinion about PHP weaknesses and strengths. My diagnostic is that PHP weaknesses are structural, and no amount of guidance can fix that. If facing the choice, one should not choose PHP over other solutions. (It happens also that I am working in Chinese tech sphere, where many startup choose PHP just because it is used by Facebook and Wikipedia, which is really sad.) However, I appreciate very well the need for such a guide when you have no other choice. I did not read all of it, but it is certainly necessary to have strong coding conventions and a defined set of "must do/musn't do". I remember we had even built a code checker that was forbiding the use of many php functions and syntax, and had a set of wrappers around basic functionalities like string functions or date functions.
- andyfleming 14y agoHe doesn't defend PHP as a language. He is sharing some useful guidelines to approach it more properly and help people that are still using it. I, for one, am a fan.
- jasonlotito 14y ago> I used PHP for five years professionally, I consider myself as well positioned as many to have an informed opinion about PHP weaknesses and strengths. Yeah, that doesn't mean anything. In fact, to be frank, when I read that, I fill in the underlying context: "I used PHP for fives years professionally, and the code was horrible. Granted, it was code I wrote because PHP let me write code that way..." or "I used PHP for fives years professionally, almost a decade ago..." > I remember we had even built a code checker that was forbiding the use of many php functions and syntax, and had a set of wrappers around basic functionalities like string functions or date functions. Yeah, that didn't do much to change my mind.
- adeelk 14y agoAny reason for the personal attack (based on unfounded assumptions)?...
- phillmv 14y agoWell… Javascript does suck. No one in their right mind defends the language.
- simonbrown 14y agoThey do. http://www.joelonsoftware.com/items/2006/08/01.html http://www.joelonsoftware.com/items/2006/08/01.html http://skilldrick.co.uk/2010/09/why-javascript-is-awesome/ http://skilldrick.co.uk/2010/09/why-javascript-is-awesome/
- dlitz 14y agoJavascript is just Scheme with a C-like syntax and a limited number of bad design decisions (like automatic semicolon insertion and the == operator). PHP is a never-ending fountain of bad design decisions, because its core devs continue to make new ones.
- dlitz 14y ago> A good portion of why people like to mock PHP is due to the way people end up using the language rather than the language's ugly parts. Are you really going to trot out that old lie? Why not read this, instead? http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/ http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-de...
- billpatrianakos 14y agoAre you really going to trot out that old link? I read that and have seen it linked a thousand times here. Go love or hate whatever you want but i've had enough with this php snobbery around here. The submission had absolutely positively nothing to do with php's merit or lack thereof but all the fuckin cool kids always seem to want to come troll any time they see php anywhere and remind us how dumb others are for using it, how bad it is, or how awesome they're hipster language choice is. E-fuckin-nough! It's beyond irrelevant. It's trolling. No one has anything more to add on the discussion of php as a language. I know this because in the past 3 weeks there have been literally thousands of comments about it and at this point its all a bunch of repeats. You have to be living under a rock if you haven't seen this same "php suck. No it doesn't, it's awesome" discussion a billion times before. Get off it already. Phptherightway.com is the topic at hand. It's awesome. I wish I had something like it when I learned php. Oh, and I use php. All the time. I'm not ashamed because I don't feel like I need to get into a dick measuring contest over my l337 skillz or whatever it is that gets people acting so snobby about php.
- corford 14y agoBecause huge swathes of that blog post have already been debunked ad infinitum (here on HN, no less).
- abecedarius 14y agoThat quip would also be an argument against error-correcting codes. Whatever I think of PHP I'm not gonna look to Confucius for engineering advice. (Now Laozi on the other hand... :)
- gwern 14y agoAs far as arguments about ECC, I always enjoyed the parody of a saying attributed to JWZ: 'Someone has a problem and they think, I know, I'll use error-correcting codes! Now they either have 0 or 2 problems.'
- abecedarius 14y agoHeh, I hadn't heard that one.
- smsm42 14y agoThis illustrates very common problem with people trying to criticize PHP. First you demand some "foundations". But if you look on virtually all existing popular languages, none of them were designed exactly in the form they are now. Java had tons of changes and additions, Python had object model change and now has new version that changed so much that it's not even backwards compatible, etc. etc. Does it mean they lacked "sane foundations"? No, it means requirements changed, so did they. PHP changes too. You want formal definition of PHP? But what would be the benefit of it? Who would benefit from it existence? Without answering these questions it is hard to expect anybody would create it. Then you proceed to focus on some obscure bug that 99.9999% people couldn't care less about, with implication that since this bug is not fixed whole language is crap. I don't even know how to address this - do you seriously expect this be taken as an argument?
- soc88 14y agoThis old and tired “but but but ... other languages aren't perfect too” is adding nothing to the debate. The problem is that PHP is light-years behind any sanely -not necessarily perfect - designed and implemented language. There is a large difference between “not perfect” and “PHP-style broken” which PHP denialists prefer to ignore.
- mikeash 14y agoThat bug is not a big deal by itself, but the circumstances surrounding it are a symptom of severe problems with how PHP is developed.
- smsm42 14y agoI don't see any "severe problems with how PHP is developed" that have any relation to this obscure issue, only importance of which is in its use for bashing PHP.
- mikeash 14y agoThe ones I see: 1. Ad hoc language design process (if you can call it that at all) resulted in a serious lack of forethought in the language's case sensitivity rules. Somehow they ended up with about half of the language being case sensitive and half being case insensitive. Somehow they ended up not considering the implications of "case insensitive" with regards to internationalization, and thus ended up with utterly bizarre rules where code works or doesn't work depending on the locale it's run in. 2. Extreme emphasis on backwards compatibility means an unwillingness to fix the bug by e.g. making the language fully case sensitive, or regularizing the rules for case-insensitive comparisons among language identifiers to be locale-independent. This could be phased in over a long period of time with progressive deprecation to ensure that anyone relying on the old behavior has years of notice to fix it. 3. Somehow, the broken case insensitivity of these identifiers also breaks case identical lookups for certain names. Despite the bug existing and being discussed for ten years, this still doesn't work. No matter how bizarre your case-insensitive comparison rules are, there is absolutely no reason whatsoever that looking up a class using the exact same byte-for-byte name should fail. That this hasn't been fixed means that either the PHP team doesn't care, has no idea how to fix this, or the code base is too broken and crufty to make a fix practical. None of these alternatives says anything good. The issue itself is not that important (unless you're Turkish, or running on Turkish servers, or somehow end up running in a Turkish locale), but the fact that it exists and has not been fixed in a decade means something is seriously wrong.