"Pushing PHP Into The Web 2.0 Generation"

php.internals

James Crane

20 years ago
I've written a short paper on the future of PHP and I'd appreciate it if you folks would take a look at it and exchange your thoughts with me. http://www.maraby.com/papers/pushing_php_into_the_web_20_generation Don't be too skeptical. ;) Cheers! M.T.

Gareth Ardron

20 years ago
James Crane wrote:
> I've written a short paper on the future of PHP and I'd appreciate it > if you folks would take a look at it and exchange your thoughts with > me. > > http://www.maraby.com/papers/pushing_php_into_the_web_20_generation > > Don't be too skeptical. ;) >
Not being funny, but the one thing you seem to suggest is "everything as objects within php" - Quite aside from totally disagreeing with your logic in this, I don't see the point. One of the strengths of php is that it can be used both as a procedural and OO language (or anywhere inbetween) - what you're arguing for can all be accomplished within userspace. I really dont' get what you're trying to achieve with this - maybe I've just totally missed the point, but just saying that PHP is blind to inherent dangers without saying either why they are dangers or in what way php is blind to them doesn't do anything to convince me that this is anything more than your personal preference on how you would like to see the language working. "web2.0" or whatever is afterall, bloody hard to impliment in a real-world situation when dealing with corporate clients. Fine for home users but it's all high-level client side stuff like javascript doing the real interface stuff. Given that loads of corporations outright ban javascript, this causes quite a problem. I don't see why php needs to do anything on this front really, it's a userspace issue.

Mark Evans

20 years ago
> I've written a short paper on the future of PHP and I'd appreciate it > if you folks would take a look at it and exchange your thoughts with > me.
I agree with Gareth, the premise that everything as objects and web 2.0 is the future is a little short sighted IMO and possibly a little blinded by the hype surrounding Web 2.0. Regards Mark

Evan Priestley

20 years ago
I'm not sure if this whole thing is supposed to be tongue-in-cheek or not, but "making the language more human" seems, to me, to be a fairly weak argument for making numeric and string literals like `5' and `"smile"' into objects, adding closures, and altering array syntax. The given examples seem particularly unconvincing -- how does `5->times()' differ from `5'? Does Socket.new "know" that port 80 is HTTP, and implement a full server for the protocol? How do you set blocking or timeouts on the socket, or respond with anything but a static string, or describe whether or not the connection is closed afterward? What about when you need a new protocol? It's easy to transform trivial concepts like this port 80 responder into English (or something near to it), but English is poorly suited for describing the solutions to many programming problems. To give an example, RFC822 is 47 pages[1] long, and a good portion of it deals just with what an e-mail address looks like. In fact, the document opts /not/ to use English to specify its information, but to reference /another/ document which uses English to define BNF[2], a grammar notation. RFC822 then uses a mixture of BNF and English to describe the format of an e-mail address. English is quite poorly suited to many of the problem domains commonly encountered in software development. Languages like PHP (and, particularly, regular expressions) are terse because they need to be -- English will never be able to differentiate between valid and invalid e-mail addresses in much less than 47 pages. And describing, say, the matrix algebra behind a 3D graphics engine in English would be a daunting task. I also disagree that `do { smile() } ( 5->times() );' (or whatever you're suggesting) is more "human" than `for( $ii = 0; $ii < 5; $ii+ + ) { smile(); }'. It may be more immediately understandable to an untrained English speaker, but PHP developers aren't untrained English speakers -- they have invested time in learning a language which is more terse, powerful, and capable than English in a specific set of problem domains (that is, PHP is probably better for serving web pages, while English is probably better for talking about your feelings or writing poetry or ordering a beer). To a PHP developer, a for loop is a familiar idiom, even if its meaning isn't obvious to an English speaker. The onus to "push PHP into the web 2.0 generation" is on the PHP application developer, not the PHP language developer. As an example, take 30boxes.com, an Ajax Calendar written in PHP. You can type "eat pie every thursday until june 22" into the box and it will schedule the event properly. In my mind, this is very user-friendly and "human", but it's at the interface level, not at the implementation level. In my mind, PHP *language* developers should focus on making PHP the best language it can be for /developers/ (who work in PHP), while PHP *application* developers should focus on making /their applications/ the best applications they can be for /users/ (who work in English). The time required to learn PHP is relatively small compared to the time someone may spend developing in it, so changes which lower the barrier to entry (which is already very, very low) but are detrimental to the long-term user need much stronger justification than is present here. There may be good arguments for making strings into objects, but any argument for such a drastic change to the language needs to be circumspect and pragmatic, and consider performance impact (probably excruciating), how it would work with loose typing (`$a = 'pie'; $a-
>times();'), how much work is required (a lot) and who is actually
going to do the work (you), etc., and offer concrete advantages if it endeavors to be convincing. In my mind, metaphors about icebergs fail to do this. Anyway, I laughed, but I wasn't sure if I was supposed to. Evan [1] http://www.ietf.org/rfc/rfc0822.txt?number=822 [2] http://cui.unige.ch/db-research/Enseignement/analyseinfo/ AboutBNF.html On Apr 18, 2006, at 6:25 AM, James Crane wrote: