The PHP Singularity
An anonymous reader writes "Jeff Atwood at Coding Horror has a post about the awfulness of PHP — or, rather, a post about posts about the awfulness of PHP. He points out that PHP has been the whipping boy for the developer community for years, and while everybody seems happy to complain about it, nobody seems willing to do anything about it. He writes, 'From my perspective, the point of all these "PHP is broken" rants is not just to complain, but to help educate and potentially warn off new coders starting new codebases. Some fine, even historic work has been done in PHP despite the madness, unquestionably. But now we need to work together to fix what is broken. The best way to fix the PHP problem at this point is to make the alternatives so outstanding that the choice of the better hammer becomes obvious.'"
And now, a post about a post about posts about the awfulness of PHP.
Which would make these comments posts about a post about a post about posts about the awfulness of PHP.
---
Recursion: First you curse, then you curse again.
What kind of bullshit logic is that? Something is broken, everyone hates it, so let's put all our efforts in making the alternatives better? How about contributing to PHP and fixing what you're bitching about instead of, well, bitching about it? You know, it's open-source and all.
if php is broken what is javascript?
if one is happy with PHP and has still not encountered peculiar problems?
PHP is a language for getting thing done. Just like any toolbox, you can build great or terrible things with it. It's like perl in that way (and I've done plenty of both). If you code well, there's very little to complain about with PHP. I've hired java guys onto my php projects before, and they were up and running in a week or so because we were coding with some structure instead of slapping together hacks.
And personally, I wouldn't want it any other way. I don't want language designers deciding they know what I want to do better than me. What I want, is the flexibility to build things as I see fit, and to do so quickly. Production is my goal. If you can help me build my projects elegantly/etc, then great, but getting it built quickly is always my priority.
It is not as though there is no other choice. The only two things that need to be done are (a) stop writing new PHP code and (b) start migrating old PHP code to better languages. We can do web development in Python, Haskell, various Lisps, Scala, and several others.
None of these languages use standard C-style syntax. That syntax is one of several reasons why PHP is so ubiquitous: any reasonably competent C/C++/Java programmer can adapt to it quickly.
Any good programmer will be able to make awesome PHP code. Bad PHP written applications are just the result of lack of passion, knowledge, and in some cases don't forget it, pressure from the customer. Combine bad programming skills, no experience with other OOP languages, pressure and "I don't care how it is done, I've done it and it works that's enough"... and you get the result. I'm tired to read and hear that PHP is shit. -- ParaBug
Just replace standards with languages.
"A person is smart. People are dumb, panicky dangerous animals and you know it." - K
Years ago I was involved with PHP, and the core developers have no real interest in making anything better, or, more specifically, accepting any criticism. I'm not the only developer to be pissed off when decisions are made "off line" and passed down. There was no sense of community. In conversations with other would be contributors, the general consensus was the PHP was headed up by a bunch of pissy children.
Don't get me wrong, I think PHP is a powerful environment and a lot of things have been done with it, but it suffers from a lack of rigour. If they could decide *what* the hell the language wanted to be, that would be helpful. If they could clean up the extensions API that would be helpful too. PHP's extensions are so powerful but there is no abstraction, your extension is essentially a PHP internal module.
All in all, PHP has had power and potential for years, but the reason why ruby even had a shot was that the PHP project can't get its act together to address, or even acknowledge, its short comings.
The one big redeeming feature of PHP is you set up a single DB server (or even multimaster) plus multiple webservers, and bam! You're sharing objects/sessions among the webservers. Doesn't matter what webserver the next request hits, the session's there.
By contrast, that simple thing is something that other environments struggle with. I remember ads for "Share Java POJOs" as if that was a huge deal, and the CEO of some firm that did that said people told him that was a godsend. I'd imagine it's the same for Python and Ruby.
1. Java. Huge memory footprint. Admins hate it because it doesn't conform to certain Unix conventions.
Try this: Download any one of a number of open-source Java CMSs or ERM systems. Then watch the Java exceptions flow down your console screen. Good luck figuring them out. Static analysis rules, except when it doesn't.
Java's great if you're writing an desktop app for geologists trying to find oil or a backend bank system. For your average, ho-hum, billion-dollar website: not so much.
2. Ruby: You go to war with the webserver they give you, not the one you want.
3. Python: Great language and library. A shame it was hobbled by the whitespace issue, which meant that some programmers didn't check it out who should have. Anyway, it's hard for Beta to get traction against VHS.
Anotherwords, PHP is good enough. "Worse is better."
Since the three environments above are monolithic, if there's a problem, it's a problem for every client logged in. PHP, by contrast, follows a Unix minimalist philosophy: if a PHP FCGI instance (or even an Apache mod_php instance) crashes, it's just that one instance. No problem, user hits F5, reloads, PHP's stateless, you get the session back, keep calm and carry on.
When Marc Zuckerberg or a number of other entrepreneurs started hacking out Facebook, they started out with PHP, just because it's light and fast, and easy to get something up on the wall. Nobody cares about the elegance of Python or Ruby, it's all about time to market.
Finally, nothing about "you can't debug PHP", in today's discussion, please. You can very well step through PHP code. Use Netbeans and something like xdebug. Or Eclipse.
PHP: Paraphrasing Churchill, it's bad, but the alternatives are worse.
I'm not a lawyer, but I play one on the Internet. Blog
In what way does it "live in the browser"?
systemd is Roko's Basilisk.
Going to Perl where I can get a simple concise syntax that is always the same among different programmers and does not have any idiosyncracies and enforced consitancy everywhere.
http://saveie6.com/
If PHP were as awful as the author claims, "Some fine, even historic work has been done in PHP" would not be possible.
Coders without the most basic grasp of object oriented designed, initial variable initialization, white-space use, code flow, etc are the problem. Languages that try to force coders to not be retarded are not the answer. It's very easy to spot coders you should never hire if they use a language that lets them reveal their ignorance and lack of organization skills.
It's far easier to modernize code while maintaining the same core language than it is to completely start from scratch with a new language.
While PHP's OO functionality is pretty lousy up until 5.3 when it finally got late static binding, it is perfectly sufficient and no excuse for crappy spaghetti code.
Work Safe Porn
I would be less quick to blame PHP than blame the fact that many PHP programmers come from "Web" developers. People who started with MS Paint and some HTML, then some CSS and then jammed in some PHP. After a while they got pretty good at small PHP 50 line programs. But when faced with huge projects people like this just aren't prepared. A great programmer could use PHP just as well as any other language.
But the second half is that PHP should be bad at times. Often a simple unstructured script is the best. It needs to do a simple thing quickly and well. There is no need for templating, language abstraction, unit testing, separation of data, logic, and view. So if you are a bank deploying a mission critical system then it should be rigorous and perfect. But if your blog about car tires needs a widget that reads from your odometer then hack away.
I would say that all arguments that condemn PHP should whither under the light that Facebook was developed primarily in PHP with MySQL. Even now they have their Hip Hop that converts PHP to C++. Arguing against PHP is like saying that Carbon Fiber is a better material than steel for car frames. Absolutely true but most cars are still successfully made from steel for a wide variety of reasons. Next time I need to win an F1 challenge and it had better be Carbon Fiber. But for the next ride to the grocery store and I just don't care.
So to circle around one could argue that the best cars are made from this or that but the reality is that what made the truly terrible cars terrible was that the designer would have made a terrible car out of anything. So teach a "better" language to the people making messes with PHP and you will just have a different kind of mess.
I've programmed in every major language and several minor ones from the 1970's to the present day, never mind design methodologies. They all have their relative strengths and weaknesses, but at the end of the day, the only thing that really recommends one over the other is a) what's available, and b) what you're most familiar with. No widely used language is "broken" any more than any natural spoken language is broken. No one ever says, hey, this novel would be much easier to write if we were taking advantage of the greater expressive power of Indonesian instead of kludgy old Lithuanian.
Aside from juvenile cliquishness and fashion obsession, every language flamefest starts with people obsessing on some awkward feature of the dominant language du jour, and then concluding that all of their problems would be solved if we all switched to some other language without that awkward feature. Of course, tomorrow's language (or methodology, editor, coding standard, platform) has its own awkward qualities that will only become apparent once it collides with the real world on a large scale, setting the stage for the day after tomorrow's language. Rarely does anyone pull their head out of their compiler/interpreter long enough to recognize that it's the real world that's awkward, and no amount of switching between fundamentally equivalent machine-parseable languages is going to change that.
Instead, we keep implementing the same stuff over and over in one language after another until the pace of real progress slows so much that we can actually get excited that the document viewer we're trying to port everything over to is receiving a "major" new features in HTML5 that will allow it to get a little closer to matching the desktop GUI functionality of twenty years ago, only not as well and with the added requirement of several orders of magnitude more hardware power required to keep it going.
But by all means, let's get rid of PHP if that makes it easier to imagine that we're doing something besides reinventing the same old wheel and doing it badly.
Proud member of the Weirdo-American community.
The C-like syntax and wrappers for all sorts of handy stuff like POSIX threading, sockets, SSL, etc is why I like PHP. My biggest issue with PHP is that these functions are poorly documented (especially the SSL wrappers). I am not a language purist, I want something easy to use, gives me access to all the nifty stuff Unix can provide, and doesn't make me learn an entirely new syntax. If I was a professional programmer I might feel differently, but for MY needs at my job and for personal projects PHP is a good tool.
I really shouldn't have used someone else's email address for this account.
The assumption in TFA seems to be that PHP does something that couldn't be done otherwise now, or does it more easily, or something. But I don't think that's true. There are alternative languages and alternative ecosystems now. IMO, most PHP coders don't use PHP because they have looked at the alternatives and decided PHP is the best choice, or the least bad choice, or any other choice. People use PHP because either
1: It was forced upon them for some reason or
2: It was the first thing they found and it was good enough
If that's the case, it's irrelevant how fantastic the alternatives are.
Also, while PHP code can be truly terrible, people who are determined to write terrible code will do so whatever the tool. You can use almost anything as a hammer if you try hard enough. The myth that The One Right Language somehow makes bad programmers good is still alive, especially within the Python community, but it's stll a myth.
When good programmers have no choice but to use PHP, they'll find a way to build something that is workmanlike even if it isn't beautiful. When bad programmers program, the result is going to be bad regardless of the language.
Virtually serving coffee
Python has *always* been obviously better than PHP (or perl, etc.) But if you have no skills, you look for the easiest path: the goal is to get the project going.
If your expertise is Perl, climbing the Python learning curve, gentle as it may be, isn't attractive, and becomes less so as your available time to engage in such things narrows. And so your project $sucks @terribly $$ and looks like APL But it works fine because you know how all that perl weirdness operates:
$_ = shift;
tr/+/
s/%(..)/pack('c', hex($1))/eg;
return($_);
For a new user with no skills (which really seems to be the primary group that ends up using it), the availability of PHP examples and the ease of putting a canned site up seem to be the primary enticements. Slap a canned site up, and bam, there you are. *Now* you can learn how it works (which accounts of a lot of strange things on the web, but I digress.)
So better isn't really the issue. Easier is the bottom line, it seems to me. Where are the canned sites in Python? For that matter where are the canned sites in Perl or Ruby or whatever?
If "better" were all it took, no one would be running Windows, for instance, but that's not the case.
Mind you... *I'm* not running windows, and I long ago abandoned Perl for Python (and I'm so glad I did), but I'm someone who actually has the time to explore and make choices without someone else hovering over my shoulder or otherwise being compromised. I don't think that's very common.
PHP may feel bad compared to currently-popular languages like Ruby and Python, but consider what it was an alternative to when it first came out: ASP and ColdFusion. Can anyone who worked in either of those honestly say that PHP is as bad, let alone worse? I certainly found it less awful than CF for web dev (and that's speaking as someone who'd been getting paid to program since before there was a web).
Village idiot in some extremely smart villages.
mod_php the Apache module.
Seems to me that the problem is that people outgrow what PHP can do for them, partly lured by PHP's own efforts to offer more than what it should do for them... but, even though they've outgrown it, they stick with it.
.NET, take your pick of oodles of alternatives. Instead, people just kept asking that PHP be extended to do a bunch of kooky crap that it never was meant to do.
When it came out, it was really handy for throwing in some server-side functionality into your HTML. Unlike Perl, where you'd have to have print statements all over the place, or load templates and replace keywords, PHP let you just in-line your functions with your HTML. (Sure, there were earlier solutions like this, like ASP but... ew!). So, it's a great first web-development language... like BASIC was for PC programming. Like BASIC, the problem came when you never realized that it was time to "leave the nest" and move on to something more rugged, J2EE, AJAX,
So, to address the original post, there's kinda no hope in trying to fix what's messed up with it, because there's *way* too big of an installed base... and most of what's messed up about it is that people are using it for larger projects than they should be.
It is a stateless scripted language. Everything in the execution path can cause a denial-of-service. A typical example is the piss-poor search implementations in many many PHP sites - they fetch the limit-less dataset (regardless of size) and then they page it. Throw in a couple hundred searches like that, and you'll see the database server and the webserver crawling.
Other examples include "heavy" functions (such as regular expressions, file operations, etc), or even framework initialization - try accessing a non-existing page with a SEO-friendly url, and they will try to match it with all the router's rules.
Or, you know, just do some plain ol' HTTP requests to dynamic-generated pages from a fast pipe, and you'll have the same effect.
As much as I like python, Groovy seems like the logical next step.
It's dynamically typed, it has a similar syntax, it can be procedural and oop, it has access to 99% of the java ecosystem. The learning curve from PHP to Groovy is much smaller than python I'd imagine.
Just replace Zend Framework/Symphony with Swing, Apache HTTPD with Apache Tomcat, remove $ from variable names, and while "this" may not be required, it certainly makes code easier to read and is more in line with php, and replace -> with a period.
Voila... the post-php world has arrived. With a language that has more similarities syntax-wise with Javascript, the flexibility of PHP with the option to be as strict as Java, and access to a wealth of superb libraries.
I'm god, but it's a bit of a drag really...
Ever since programming languages existed, they have been classified in 2 categories:
- Those every one bitches about,
- and those nobody uses...
This.
PHP feels natural for me, as a C guy. The library functions lack consistency, but then neither do 3rd party C libraries. You just learn how to work them and get on with your billable day. I can look at just about any PHP code and figure it out pretty quickly. A lot of it is written by mental midgets, but it is familiar enough that I can jump in and fix whatever needs to be done.
Meanwhile, all those other, functional languages venture so far off the beaten path as to make them look like gibberish. They often strike me as the product of overexcited college grads. It's like a little kid who just learned a new swear word and starts using it ten times in every sentence. Closures this, aspects that, ooh look ma I'm using list operators... academic functionality makes for cute sample code, but those of us with actual jobs have more pressing things to do than learn a new language and syntax. At the very least, PHP offers a good online manual with some very handy user-contributed snippets. Sure, some of them are ass and could benefit from some karma/moderation system, but I've often found a little 10-line function in those comments that saved me an hour of poking around, or that I could patch up and post my improved version. That right there beats all those "Look how easy RoR is" screencasts that ignore all the actual things programmers need to know to write secure, production-ready code.
-Billco, Fnarg.com
people don't complain about things they don't care about.
If you don't understand why Classic ASP (or rather VBScript) is awful, you're simply not qualified to judge PHP. Nonetheless, please read the article linked from my sig; it explains in details why PHP - the language itself, and its standard library - is awful on its own merits, regardless of who writes code in it and how they do that.
Ever since programming languages existed, they have been classified in 2 categories: - Those every one bitches about, - and those nobody uses...
Sounds clever, but it's plainly false.
C, Java, C# are among the most used languages today. Very few serious programmers will say that they are stupid or awful. And, many criticisms aside, most programmers respect them - even love them. I program in all these languages, I like them all, and I hate PHP with passion. It's not an issue of popularity; PHP, its community, its history, all of it, is a tale of terror.
Or at least it does in PHP 5.2, but in 5.3, not so much. There have been many of these little idiosyncrasies over the years, enough that my company moved our core product to Java long ago. Stupid stuff like that makes it impossible to upgrade the PHP version without major QA and developer time to address all the new "fixes" the PHP folks decided to introduce in the latest minor release. Meanwhile, my C and Java code from 2001 still runs just fine. That said, when I am coding something for fun, not for profit, I usually end up with PHP on the server side. PHP is coded by amateurs for amateurs. Keep it far and away from any critical systems and it can actually be kinda fun.
apt-get install redhat please god - Me (take it easy, I love Debian)
I am one of those "stupid" PHP users. It's not the first language I learned, nor is it the last. I'm well aware of Python as an alternative for developing web apps, and I've tried it, but I really do prefer PHP.
One reason is flexibility in flow control. PHP has do ... while loops. Also, I can do "continue 2" or "break 2" if there is a loop within a loop, to continue or break at the outer loop. I'm honestly puzzled that Python still hasn't added these obvious and useful things.
I've asked Python types about this, and gotten reasons like "you shouldn't be doing that in the first place," which pisses me off and makes me want to stick with PHP even more.
I'm going to tell you what you don't want to hear, and I'm going to tell you because it's true: you shouldn't be doing that. The reasons why you shouldn't be doing that have nothing to do with any one programming language, they are general to all programming languages. They are the same as the reasons why you shouldn't have GOTO statements, and these things were learned near the very beginnings of the study of programming as a discipline.
There are far too many people who equate the invention of new programming language with "progress". It ain't so. That being said, it's probably possible for a good programmer to write good code in any language. (I say "probably" because I don't know all the languages, including PHP.) However, not all programmers are equally good, so it might be wise to stick to languages that won't let you commit atrocities.
Great men are almost always bad men--Lord Acton's Corollary
Yup.
.net infrastructure (Sure my code is cross-platform it works on Window XP, Windows 7, and Window 8 server!). PHP guys don't know why you should have to install .Net just to get a basic app running (You mean you have to run this code on a Windows box?).
I've been programming in PHP for 11 years - after coming from a C/C++ for 6. What I've found is that there are three types of people who despise PHP.
1. Those who love Perl (Python, Ruby)
PHP is too verbose and doesn't allows the same shortcuts that Perl, Python, and Ruby allow. This is viewed as a weakness of the language. Ruby is essentially a rebirth of Perl, and was a god-send for those Perl developer who found themselves "stuck" with PHP. I personally don't like implicit references or compacting code for the sake of compacting code. I much prefer to write and read code that verbose and easy to understand. And while you CAN write Perl code that is easy to read, the bulk of tends to read more like a RegEx or Awk expression.
2. Those who love Java (C/C++)
PHP's typelessness drives Java developers crazy. To a Java Developer OO is all about creating new data types, and locking down how those types can be passed. In PHP OO is all about begin blind to the data and not caring how the data is structured. A PHP developer would suffer under the size and restrictions of Java. Java developers hate the openness and ease of begin burned.
3. Those who love VB / C#
MS doesn't support PHP so there is no desire to learn it. VB/C# guys don't get why you wouldn't want to keep your OS up-to-date with the latest
-CF
Very few serious programmers will say that they are stupid or awful.
Huh? Have you just fallen off the turnip truck?
C: Unsafe at any speed. Un-bound-checked array, null pointers, etc, etc. Many people HATE C because it's unsafe, though they grudgingly admit that it's sometimes a necessary evil for system programming.
C++: Overly complex, insane learning curve, no garbage collection. There are no shortage of people who hate C++.
And Java is possibly your most absurd point. Overly verbose to the extreme, slow, insane memory requirements, slow, crazy libraries, and slow (please don't bother to claim that isn't slow).
Sometimes it's best to just let stupid people be stupid.
Then allow me to rephrase it in a non-spam way: People use PHP because hosting with PHP is cheaper than hosting with languages other than PHP.
I've been using PHP for years, and not two days ago I decided it's probably worth learning python and switching to that for server-side scripts. I got a python cgi script working in about 10 minutes. Then, I just wanted to be able to run python scripts from arbitrary locations on my site. Looking into that, I could not find a single explanation or tutorial website to help me out. Is that just not how python works? Can anyone point me to some resources that will help an amateur familiar with PHP, learn to completely replace PHP with python, on a commercially hosted webserver?
I hate pointers in C, the lack of regular expressions in C, and string handling in C. I think of PHP as "like C without all the stuff I hate about C". I'm sure language purists will be astonished by that statement. I realize PHP isn't fast, but it seems to be fast enough for the stuff we use it for.
I really shouldn't have used someone else's email address for this account.
PHP is a garden of paradise compared to Java, which has three or four thread models (Android has another couple), at least four layers of I/O (original streams, better streams, and two NIOs), multiple GUIs (AWT, Swing, and all the third pary stuff which fixes Swing's glaring deficiencies that make it useless), and so on. Not to mention the steaming pile of web overengineering which includes JSP, JSTL, EL, and so on as part of J2EE, plus all the third party stuff like Struts and Hibernate. Struts has two incompatible versions (one works with Java Faces, which is like an overengineered JSP) and Hibernate changes all the time. If you like MVC, I have lost count of the MVCs available. If you just want to overengineer for the heck of it, you can use Spring AND Hibernate at the same time. It's like wearing a belt AND suspenders.
Compared to this, PHP is a sane and rational alternative for web developers.
There's a subset of self- absorbed, arrogant twits that believe that if a programming language is "too simple," it's just wrong and You. Just. Don't. Understand. REAL. Programming! I tend to filter them out as noise and recommend you do the same.
Yeah, you're right. I hate PHP because exceptions like "Unexpected T_PAAMAYIM_NEKUDOTAYIM" are just too simple. Or how about this line of code: if(new stdClass() instanceof get_class(new stdClass()).... Just try it. Or how about this error message: "Fatal error: Exception thrown without a stack frame in Unknown on line 0". Why not just stick to the classic message: "lol error".
PHP is full of these weird errors, odd behaviours and inconsistency and you have the nerve to say that programmers are complaining about it being too simple.
C is so awful that nowbody would dare use it for any serious stuff, like kernels or drivers!!!
I'm going to tell you what you don't want to hear, and I'm going to tell you because it's true: you shouldn't be doing that.
..and I'm going to ignore you and do what I wanted to do anyway. If my current tool doesn't allow it, I'll switch to one that does.
But insults aside, I think the way in which you said "you shouldn't be doing that" without even bothering to explain why, is part of the problem. You're basically saying that you know better than me, so much so that you shouldn't even have to persuade me, that I should just accept your superior knowledge. That approach never works, and it's pretty insulting to be on the receiving end of it.
If you want to advocate a better way or explain why "continue 2" is bad, you can certainly do that, but just trying to force your position upon everyone isn't the answer. If you try, someone else (in this case, php) will come along and give the people what they want.
I made a PHP/MySQL library that prevents SQL injection & makes coding easier!
Ruby is used by a wider group of people and in a wider area than it ever has been. Also, there's a lot of other really great languages out there you should consider before you idolize one language as perfect. Erlang and Haskell are amazing and certainly worth checking out. Not to mention node and the javascript revolutionaries. A lot of people get stuck on their first language I encourage you to branch out and try Ruby at least. You'll find a much different language than you seem to think. I personally had the following progression in my love affairs with languages:
I have a theory that the truth is never told during the nine-to-five hours. - Hunter S. Thompson
You've basically decided that you'll be stuck with software engineering as it was in the 70s and to hell with progress, because that's what you're used to. If you truly believe that you can be a good professional without continuously learning, I've got news for you: in no other engineering discipline I know of would that be true. Doctors and even nurses won't be renewed their licenses without proof of continuing education. Civil, mechanical and electrical engineers need to keep up with new technologies both in the design and the end product sides of the process. Even educators often need to do continuing education or their licenses will be taken away. This "academic functionality" you speak of has been, for the most part, engineered as a solution to oft faced problems. Problems you're apparently unaware of. Problems that make you less productive, make your code harder to maintain, and lose money for your employer.
A successful API design takes a mixture of software design and pedagogy.
The big problem with PHP is that you can get yourself into situations where trying to handle error conditions can actually make things worse than just letting it crash, burn, and try to clean up its own mess for you. Let's start with the fact that try/catch DOESN'T actually work with php_mysqli and pile things onto the "things that suck about PHP" list from there.
I borked an entire database table once thanks to PHP's willingness to recast just about anything, even when recasting contradicts the prepared statement declaration command in php_mysqli itself. The ONLY thing stopping me from porting the whole app to Java is the fact that I can't figure out how to get Tomcat to not accept incoming http connections or respond AT ALL until it's 100% ready to deal with requests, instead of crapping out and returning semi-random 500 errors for that period of 20-90 seconds when it's in an "indeterminate" and "undefined" state while starting up.
What's the new trend? Flames for PHP. Let's everyone join and destroy this shameful thing which is clearly aimed for noobs, not for us! .so libraries I care about, has great DB interoperability, has a syntax I can work with, works good with apache. Why complain so much? Just point out what you don't like and request for changes. All this "I hate php with passion" seems very strange to me.
But after 15 years and tens of thousands of lines of code in POSIX C, C++, Delphi, Perl, etc I found I like PHP the most! Why?
Personal preference here:
-Great syntax. Yes, great syntax.Which for me means:
C-like blocks, not the delphi's funny stuff, not python's space-based block detection!. Who didn't try to remove semicolons or blocks for fun when they first wrote their first compiler? Well this isn't for fun. I want {.} not tabs and spaces. Why change something that works so good? Even friends who like python have nothing to say about this 'feature'.
-sane array syntax. Not Perl's @,$,etc maddness.
-lots of supported interoperability with OS shared libraries. And this code runs fast.
-reliability. I don't recall seeing a segfault from a PHP process. Where I frequently see our python (2.6) processes segfaulting.
-mod_php. Reliable. Works.
-PDO database abstraction layer. I mean Oracle's OCI support was working fine even for external LOBs from 1999 in PHP3, but PDO was a step in the right direction.
-Modern features added lately (closures, etc).
-Great, and I mean great, documentation. That alone is a big plus.
-Several good and easy enough Frameworks (I don't mean Zend)
So we have a language which is reliable, supported, has modern features, can call most
-S