Official Support For PHP 4 Ends
Da Massive writes with this excerpt from ComputerWorld:
"For a technology that has been in stable release since May 22, 2000, PHP 4 has finally reached the end of its official life. With the release of PHP 4.4.9, official support has ended and the final security patch for the platform issued. ...With eight years of legacy code out there, it is likely that there are going to be a fairly large number of systems that will not migrate to PHP 5 in the near future, and a reasonable proportion of those that will not make the migration at all. For those who are not able to migrate their systems to the new version of PHP, noted PHP security expert Stefan Esser will continue to provide third party security patching for the PHP 4 line through his Suhosin product."
I am glad to see that the PHP devs can allow an old version to die....unlike Microsoft, which seems determined to drag all of its products down with legacy support.
This is the way progress is made.
PHP 4 End of Life Announcement (July 14, 2007)
PHP 4 was released in 2000 and is finally getting an EOL date but is still going to receive patches. Microsoft XP was released in 2001 and its EOL date is 2009, with security patches until 2014. So you have two products with the same span of product life, and still going to have patches for security. Very poor trolling indeed.
The Revolution Will Not Be Televised
FRIST PSOT!!!!!'); DELETE FROM replies WHERE reply != 'FRIST PSOT!!!!!'; --
Tell me you just didn't compare a scripting web language to a operating system.
I felt a great disturbance in the CVS, as if millions of lines of code suddenly cried out in terror and were suddenly silenced.
I feel like this is only even a story at all because valid PHP 4 code isn't necessarily valid PHP 5 code.
Curious choices by the PHP folks to me, but I'm not really deeply invested enough in PHP to fairly call them good or bad.
The bad news: Lots of unsupported legacy code in the wild.
The good news: Any conversion that needs to happen means more work for developers all around! Yay for a paycheck!
Seriously though, PHP4 was fine for what it was, but it definitely had its drawbacks. Poor object support, poor error handling (No try..catch blocks? Seriously?), no type-hinting, no foreach statement, etc. PHP5 is so much easier to work with, and honestly most sites should've made the switch a few years back if they haven't already.
God, schmod. I want my monkey man!
PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil, perpetrated by skilled but perverted professionals. -- Jon Ribbens Amen.
.. let me say hooray! PHP5 is worlds ahead.
Let me also say they're wrong about legacy systems being slow to migrate: PHP5 runs PHP4 code just fine (notwithstanding a few copy-on-write and unassigned reference issues, which are very easy to fix).
PHP5, in this context, would be better called "Zend Engine 2", since that's what the real update is. PHP4 the language is essentially just a subset of PHP5.
Incidentally (perhaps) the phpMyAdmin 3.0.0 beta just came out yesterday which sacrifices Zend Engine 1 (PHP4) support. It also drops MySQL 4 support, and I think lots of projects will follow suit; PHP4 is going to drag MySQL 4 with it, which is also great.
// MD_Update(&m,buf,j);
I question the validity of these assumptions. My first salaried job was programming PHP/FI 2 (1998). I cannot find a single product I have been involved with or even used in the past (which contains PHP code), that hasn't upgraded. Systems written in PHP could only benefit from the improvements in 5 and there's almost nothing written in PHP that's so critical* that it wouldn't be upgraded by the current developers or new developers trained in 5.
*This is both a side effect of the language design and the people who write it.
Can someone give some examples of products stuck in 4.0?
Often wrong but never in doubt.
I am Jack9.
Everyone knows me.
Looking for a (-1, Troll), aren't we? True or not.
For a technology that has been in stable release since May 22, 2000, PHP 4 has finally reached the end of its official life.
I'd like to propose that Slashdot "editors" be stripped of that title, and from now on be referred to simply as "approvers" - there's obviously no editing involved in the job at all.
#DeleteChrome
Python 3 is still in beta. And python on the web? No thanks.
...when will that happen to PHP5? :P
And python on the web? No thanks.
FYI - Google uses Python extensively on the web.
kernel: lp0 on fire
http://docs.php.net/manual/en/migration5.php
You know what? I'm sick and tired of the fact that every PHP related post to Slashdot ends up sludgefest of old jokes, one-line jabs at PHP, and misinformation.
Official ending of PHP4 support is a big thing in the PHP community. If you're a reader of Planet-PHP, you'll know this; for almost all of 08/08/08 there was nothing but end-of-life celebrations from the bloggers. The community has done an exceptional job at getting developers, open-source projects and hosters alike to migrate to PHP5 for such a heavily used language. And we will have to surmount even bigger difficulties for PHP6 and Unicode, which unlike PHP5, breaks backwards compatibility with any project that treats strings as binary data. Migrating PHP4 to PHP5 is not difficult; often it's as simple as an edit to the server migration. PHP6 will definitely demand code changes.
For those of us who use and "have to deal with" (yes, we have our annoyances too) with PHP on a daily basis, this is good news. For the rest of you, please contribute something meaningful, or forever hold your peace.
Let me second that. I started PHP with version 4, and I rejoiced when I moved to PHP 5 and the new object model. Version 4 dies just in time for version 5.3 and version 6 to come along. Those two bring a lot of nice things, but nothing as revolutionary as that new object model of Zend 2.
It's high time to say goodbye to version 4!
So you're not personally familiar with python-based web development. There are a great many people out there that are though: Django, Pythons, Turbogears, Zope are all great places to start.
Entrepreneur : (noun), French for "unemployed"
I'll take a look at the sites and mess around with it some. Python always look interesting to me, but I never thought of it as being useful on the web.
I went to PHP5 quite a while back. I started with 4 and had already been programing nice (long tags in html, program with globals off, etc.) so there was no issue for me, everything just worked on 5. I do have one script I found on sourceforge (dead project) that doesn't work on 5, probably used something deprecated from 3 slated for removal after 4. I don't expect conversion of that to be too serious either.
I think a lot of the FUD is being placed on ISPs who run PHP4 servers and may have outdated cpanels or other pre-set PHP apps. I would think maybe a weeks worth of work for most mom and pops to get the upgrade complete (a lot it setting up automating on any data upgrade conversions) but it's surely not the end of the world.
"Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
For those wondering how many projects will be left out in the cold, here's your answer:
http://gophp5.org/
Over 100 PHP projects and products and over 200 web hosts that have been committed to PHP 5.2 and no earlier for over a year. GoPHP5 launched before the PHP development team announced an EOL for PHP 4. While I don't believe for a second that it was the only reason they made that decision, I also don't believe for a second that it didn't have a big influence on it.
The push to drop PHP 4 support came from people using PHP in production in the first place. Those of us who get paid to write PHP code are cheering at the top of our lungs, because now we can actually get real work done.
Go PHP 5!
--GrouchoMarx
Card-carrying member of the EFF, FSF, and ACLU. Are you?
I could quibble with your definitions of "blog" and "guest", but it doesn't really matter. Misinformation is misinformation, whether it's from a blog or a newspaper. People have a right, even a duty, to complain about somebody who sloppily shares "facts" that are really nonsense. It's not "whining", any more than it's "whining" to complain about a rock thrown through your window.
Huh?
NO SIG
...aka Pythons on a Plane.
I second the "HUH?", care to elaborate?
Yeah. Even without the frameworks, I like mod_python a whole lot more than PHP. PHP seems like a bunch of nasty hacks to me.
Now I feel slightly better about having forced my colleagues to upgrade PHP to version 5.
In my defense, I was using array_walk_recursive, but I'm sure they were quite frustrated by the problems I created.
If you can read this, I forgot to post anonymously.
The object support [in 4] was nasty, but still better then the pseudo-object crap that perl has.
Be careful. Some of us feel that OOP is overhyped. While I can see use for it in operating systems and systems software, eCommerce and biz apps have had a difficult time making use of OOP well. I've yet to see a decent example of OOP helping these. (Of course, "decent" is often in the eyes of the beholder.) But, I might change my mind if shown a decent example.
Table-ized A.I.
Please don't let anyone get away with calling the internet the cloud!
Traditionally, when network engineers and administrators draw diagrams of networks, they represent the connection to the Internet as a big bumpy object not unlike a child's drawing of a cloud. I have heard old hackers who used to work in the telecommunications industry during the 80's and 70's describe this object as 'the cloud', meaning the Internet.
This term predates the current usage by several decades, and is in fact the source of the current usage
This is a gentle but pedantic reminder that, if you're going to make an absolute assertion, make sure it is the correct assertion.
I see a lot of people saying that they're surprised anyone's still using PHP 4, when PHP 5 has been out for so long. Well, I can guarantee you there's a lot of legacy PHP 4 codebases out there; converting to 5 is not always as easy as going over what's in the migration page on php.net. Just to give you an idea of the magnitude, we have tends of thousands of code files spread across numerous systems; our live web pool is around 100 machines, and we cannot take the website down in order to update it. (I can't tell you why.) So updates have to be made live. We don't have a proper staging environment, either, but we have come up with a number of (horrible) mechanisms for dealing with this situation.
In our particular (unfortunate) case, we had about half a dozen custom PHP extensions that were all written by our former CTO, who left the company about a year and a half ago. He wasn't really big into documentation, and our technical management was very poor; we had a guy go through our 65,000-file codebase and make all the little tweaks necessary for a vanilla 4-to-5 migration, but it took us six months of wrangling with all these extensions to get them to work well under 5.1 (we're still having trouble with 5.2).
Plus, it's not just a matter of dealing with the technology; like a lot of companies, management here doesn't like to put resources into things that don't have visible benefits -- and cleaning up the codebase/rebuilding the dev environment just isn't something they see a lot of value in. (We've finally convinced them it's important and needs to be done; we're operating without source control for about 99% of our code. YES, I KNOW.) We didn't even seriously start pushing to get things up to PHP 5 until January, and it took until July to actually make it happen.
The point is, mismanagement and bad development environment/codebase design early on (several years ago) have meant that we're upgrading to PHP 5 years later than we should have. It's not that we didn't know how to do it once we decided to.
Does anybody know how to permanently enable the single-line textbox firefox spellchecker? -Thanks
Table-ized A.I.
Please don't let anyone get away with calling the internet the cloud!
Traditionally, when network engineers and administrators draw diagrams of networks, they represent the connection to the Internet as a big bumpy object not unlike a child's drawing of a cloud. I have heard old hackers who used to work in the telecommunications industry during the 80's and 70's describe this object as 'the cloud', meaning the Internet.
This term predates the current usage by several decades, and is in fact the source of the current usage
This is a gentle but pedantic reminder that, if you're going to make an absolute assertion, make sure it is the correct assertion.
I know where the term came from, that's one of the reasons I find it so annoying. :-(
We don't call resistors "jagged lines" and inductors "curly loops", so why call the internet "the cloud"?
It isn't actually a cloud, and saying "cloud" isn't any shorter or clearer than "internet" (in fact less clear).
It's just a new IT business fad which lets IT staff make something familiar sound new, I think.
// MD_Update(&m,buf,j);
What specifically does OO make better about it? What's an example?
That would make you well suited to describe and illustrate what changed your mind. Dijkstra was mostly pre-relational, so he may hold a RAM-centric view of data structures. OO is missing a foundation in set theory, and this is what relational adds. OO is anti-set IMO, and this is largely why it bothers me. It's also anti declarative for the most part. Declarative and set theory is a good thing, at least it better fits the way I think (model the app world). OOP is also too pointer-centric, creating a big messy RAM graph.
Table-ized A.I.
Going a little OT, I'd like to point out that Flash 9 made leaps and bounds in Actionscript performance. The latest version of Actionscript (Actionscript 3) is very similar to Java (no, not Javascript), and even uses the Java compiler and runs on the JVM.
Compared to previous versions of Actionscript it finally feels like a real programming language, not a ripoff of Javascript intended for hobbyists and graphic designers.
Whether or not you see OOP as overhyped, if a language features OOP it should do it well or not at all.
Nobody is asking you to like OOP in this case, but if you are going to support it, support it well - not half-assed.
It isn't actually a cloud, and saying "cloud" isn't any shorter or clearer than "internet" (in fact less clear).
Dude, there's like a hundred million things in the technical world that are called things that they're not based on nothing more then decades of habit. I mean, is a "bug" really just an insect? Does "bootstrap" really mean a piece of leather attached to a boot? To single out this one example is just splitting hairs.
Okay, so you don't like the term "The Cloud". That's cool, nothing wrong with that, but you have no grounds on which to object it. It is as valid a term as "bug" or "bootstrap" or countless others of which I'm sure the Slashdot community will happy to remind you.
You're assertion that no-one has any business calling the Internet "the cloud" is fundamentally flawed. End of story.
There are many 1000+ page books on the subject. I think this question is beyond the scope of a slashdot comment. But, as a taste: More literate and intuitive api's. Type safety. MVC.
Specifically about Magento: It uses a framework that has been systematically tested (another advantage of oop) and is based on the MVC + Front Controller paradigm for web apps. It went from whiteboard to working in 3 months. It's simple to extend.
Regarding what changed my mind about OOP: I learned to use OOP techniques. I never had any negative feelings towards OOP, I was just in love with single-in/single-out purity of the old ways.
OOP is great for my shop. Of course you can accomplish the same result, theoretically, with any two complete languages/paradigms. The question is whether you want anyone else to read your code (or whether you want to be able to read it in 6 months), how long you want to take writing/researching it, what your requirements are for code quality, and what kind of environment you want to work in if you're on a team. Obviously, if it's just you and you have eternity to write and debug your application, then oop doesn't offer any advantages.
My advice is just to try it out. You can use your Dijkstra-fu inside of methods and in novel data structures, while at the same time experiencing the convenience and consistency of magic axiomatic things like "programming to an interface." It took me a few months of mind-destroying pain to change the way I built a program, but it is very much worth it. Apologies if you've heard this advice before.
Btw, you sound like you probably know a lot more about Djikstra than I do. :) There are so many ways... OOP is now just a another tool for me. The paradigm that has taken its place as my ocd target is functional languages like Haskell.
Depends on where you are. If you're in the Internet could, then it's a fog, not a cloud ;-).
Anyway, to me "cloud" is not same as the Internet, it's roughly the same as "rest of the Internet". This is an important distinction! Local site is not in the cloud. Remote site (for example another office of the same company) usually is not be in the cloud either, or it could be considered a separate cloud, even though connection to it goes through the big Internet cloud.
The totality of Internet is not dependant on the observer. But the cloud is different for every observer, since at least the computer of the observer is not part of the cloud in their own frame of reference.
What?
There are many 1000+ page books on the subject.
I've read a few and they left a bad taste in my mouth. They are usually anti-RDBMS in my opinion. There is a strong anti-relational streak in pro-OO literature.
More literate and intuitive api's
Those are often a matter of opinion. Different people think differently. What you find intuitive may not apply to others. Without specific metrics or clear-cut examples, I cannot do much with such statements, to be frank. I'd have to know what you are thinking and what you are mentally comparing to what.
Type safety.
OOP is not necessarily about type safety. An OO language like SmallTalk is very weak-typed. (Much OO lingo comes from the inventor of Smalltalk.) And heavy-typing versus light-typing is a long and bitter argument that is never settled, even excluding the OO issue. (If I was forced to use OO, I'd rather use Smalltalk than say Java or Eiffel.)
As far as MVC, I find it outdated and unnecessarily complex. OOP and MVC clingage is main reason we don't have a decent cross-language GUI kit yet. Non-trivial OO API's are very difficult to make cross-language. Nobody has solved this problem. But you are right in that such a debate is not something we can settle via mere slashdot messages.
But thanks for your feedback anyhow.
Table-ized A.I.
"Bug" is more concise than "a software flaw which causes behavior the developers didn't intend", "bootstrap" is more concise than "software which loads the boot-loader". "Cloud" is just "internet".
There are better examples though which make your point (like "firewall", which I think would be better as just "packet filter"), but these phrases are old and cast in stone, so there's no point trying to fight them anyway. It'd now, unfortunately, be more confusing to try and change them than to just stick with the status quo.
However "cloud" seems to be the latest thing, and so I'm still prepared to put up whatever little token resistance I can.
(I know it has older origins, but its use is only gaining momentum very recently. I checked Google Trends to make sure I'm not going crazy.)
I dislike "Cloud" for much the same reason you probably dislike "the information super-highway". Words are words, I can call the internet whatever I want, but others don't have to accept my definition. If you're fine with "the information super-highway" and "web/pod/screencast" etc then you're not the kind of person my sig will resonate with.
// MD_Update(&m,buf,j);
FWIW, I love RDBMs, and all my software uses a certain well-known package. In fact, glancing at my whiteboard, I see an ERD.
For the most part, my 3NF schemas work fine with the abstraction layer of the framework I'm using at moment. It can be tricky to model correlation tables properly, but there are many applications where an ActiveRecord-type model works fine out-of-the-box.
Just saying that OOP and RDBMs don't have to be mutually exclusive (and that I love set theory and relational databases).
On the rest we'll just have to disagree :).
Pfft, I can't stand the whole mod_$language thing. It ties you to Apache, it ties you to a substandard Apache MPM, it adds another interdependency between your webserver and your actual application and makes seperating them harder.
I far prefer application servers, with the webserver left to serve/proxy HTTP and related protocols rather than running your entire application. I'd like to see better support for this with PHP; i.e. a HTTP SAPI that runs a simple webserver, rather like its daemonized FastCGI support. Then all you need to interface with a webserver is mod_proxy, which most provide by default.
This, incidently, tends to be the preferred means of interfacing with webservers for most other languages; Ruby has FastCGI, Mongrel, Thin, Ebb, etc, Python has Paster, CherryPy, Aspen, WSGI, etc, Java has Glassfish and friends, Erlang has Yaws. This lets your applications run effeciently under other credentials, even seperate (virtual or physical) machines, and in a process environment which suits them.
as a LAMP developer (where in my case P stands for PHP mostly) reading slashdot, I'm used to see a lot of PHP bashing whenever a story remotely related to PHP pops up. On this one there's hardly any PHP bashing at all. On a more on topic matter, dropping PHP4 support is great news, hopefully this will give the PHP team enough time to concentrate on what's missing in newest versions of PHP. This is my list:
- speed (there's a Google SoC project on this, but more could be done for example calling a function has a lot of overhead)
- >32bit machine independent integer support
- large file support >2Gb
- exceptions thrown by all internal functions
what's your list?
Superb Hosting
I prefer this quote:
Bogtha Bogtha Bogtha
For Zope and web development you should really look at Grok instead. Otherwise things are going to be painful with Zope.
I wonder when we will see PHP 6 (which will have unicode support).
PHP 6 has been in development forever, but there doesn't seem to be any roadmap online that I can find.
Whoosh
"Bug" is just "flaw", "Cloud" is more concise than "an enormous, globally interconnected network".
Netcraft says SQL is dying, movie at eleven
Apocalypse Cancelled, Sorry, No Ticket Refunds
"Bug" is more concise than "a software flaw which causes behavior the developers didn't intend"
It's also due to the fact that early in the history of computing, a fault was found to be due to a moth being trapped between the contacts of a relay.
For what it's worth, I don't like people calling the Internet "the Cloud" either.
It's official. Most of you are morons.
Traditionally, when network engineers and administrators draw diagrams of networks, they represent the connection to the Internet as a big bumpy object not unlike a child's drawing of a cloud.
That's true, and I've done it often enough myself. I also draw databases in the traditional manner, and yet I never feel the need to refer to them as cylinders.
It's official. Most of you are morons.
Why not? Snakes are ideally suited to travelling along tubes.
Only three things are certain; death, taxes, and apocryphal quotations - Ben Franklin.
I mean, if they were interested in security patches they wouldn't be using pHP in the first place.
I don't care about being tied to Apache -- I believe it is the only web server I'll ever need.
Not sure what you mean about tying it to a "substandard MPM" -- AFAIK mod_python can run under prefork and worker (the only two that really matter at this point) and maybe others.
Agree with some of your other points though.
let's debunk the other myth while we're at it!
"Bug" is just "flaw", "Cloud" is more concise than "an enormous, globally interconnected network".
"Bug" implies more than "flaw". It's specifically not a design flaw, and it's not a problem where the user thinks something should be done a differently. "Cloud" doesn't imply anything more than "internet" though
// MD_Update(&m,buf,j);
To me "cloud" in network diagrams has nothing to do with Internet. I use clouds to remove irrelevant clutter from the diagrams. It can be any network (or part of one) which internal layout isn't relevant for that diagram. It could be corporate backbone, Internet, PSTN, whatever.
Then again, that's just how to visualize something on a diagram and I'd not part of the network or internet "cloud".
-- Reality checks don't bounce.
Better than Pythons on a Plone
We have QT4.3 that is a "decent cross-language GUI kit"
(Ok, I really think it's a really good OO toolkit, showing how to do MVC right :}. (But they also had qt3 as a training ground :}
What specifically does OO make better about it? What's an example?
OK. You already got a bunch of silly responses sending you to read think books.
But as developer who got first experience with OO about 15 years ago, I'd opine that OO is all about improved code organization.
There is literally ZERO of OO code which can't be written in plain functional language.
To me, biggest advantage of OO, is that it allows (at least partially) implement interfaces between code parts. Also some OO languages allow you make sure the interfaces are followed to some degree. OO is also easier to document, because it introduces extra layer of code organization - classes - something what in functional languages have no distinct identity and require extra (documentation and communication) effort when defining.
OO is mere utility. If you wrote many large programs in C, chances are good that you would see many good uses for C++. Not always. Not for every project. Yet, on many occasions, C++ can save some time. Equally, there are projects where C can save some time and choosing C++ is would only make things more complicated.
All hope abandon ye who enter here.
OK, maybe the stuff we had wasn't too involved.
But when PHP5 came out, I downloaded it and spent about a week going through all of our PHP4 specific code and changed it to PHP5.
Just like I did years before that when PHP3 became PHP4.
Granted it was only a couple thousand line of code, but you gotta bite the bullet once in a while and it hurts a lot less to do it early instead of late.
- I live the greatest adventure anyone could possibly desire. - Tosk the Hunted
Hi, I am not into that Web thing in fashion lately. Is there any toolkit for Enterprise Gopher application development in Python?
Thanks.
In working for Cisco I noted that the Internet was always represented as a cloud. Ever since I have referred to it as the "CFNC" or "Cisco Fluffy Network Cloud" and have labeled it thus on my networking diagrams ever since. (Cisco deserves a little credit for making the internet work as the company that invented and marketed the router...)
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Despite the changes in copy semantics from PHP4 to PHP5, most code written for PHP4 runs fine as PHP5. If changes are necessary, they are very minor since PHP5 mostly adds new capabilities (apart from the pass-by-reference stuff). If the coder was using "&" before in his PHP4 code, then it will work fine without changes in PHP5. The bigger question for me is whether the excellent www.cakePHP.org framework will continue to support PHP4 now it's deprecated.
Zen tips: Pay attention. Don't take it personally. Believe nothing.
(Cisco deserves a little credit for making the internet work as the company that invented and marketed the router...)
That is not technically accurate:
http://en.wikipedia.org/wiki/Cisco
While Cisco was not the first company to develop and sell a router (a device that forwards computer traffic between two or more networks),[1] it was one of the first to sell commercially successful routers supporting multiple network protocols.
http://en.wikipedia.org/wiki/Router#History
The earliest Xerox routers came into operation sometime after early 1974. The first true IP router was developed by Virginia Strazisar at BBN, as part of that DARPA-initiated effort, during 1975-1976. By the end of 1976, three PDP-11-based routers were in service in the experimental prototype Internet. The first multiprotocol routers were independently created by staff researchers at MIT and Stanford in 1981; the Stanford router was done by William Yeager, and the MIT one by Noel Chiappa; both were also based on PDP-11s.
Cisco did not come into existence until 1984.
Ugh, Zope.
Sorry, but I worked in a data center with several Zope clients, and it was non-stop problems. I've been turned off to Python ever since.
For what it's worth, I don't like people calling the Internet "the Cloud" either.
I say the new terminology could also be more detrimental, because a layperson might subconsciously associate more safety with fluffy clouds than 'the Internet' {cue menacing music}...
In that respect the GGP's two examples were poorly chosen, as their usage is (in my opinion) colorful, concise, and doesn't add any extraneous positive/negative connotation. For instance, 'bootstrap' allows for easy visualization since the program is (figuratively) hauling itself up by its own bootstraps. As 'bugs' have been adequately explained by the parent post I'll leave them alone.
This of course doesn't imply that there isn't poorly-chosen jargon in IT, just that the above examples aren't the droids you are looking for.
I'm currently teaching myself PHP5, is it worth my while to make any kind of in-depth analysis of the differences or learning PHP4, Just in case at some point I have to change someone's old code? I would think that the differences aren't that major, but like I said, I'm still just learning it.
That's true, and I've done it often enough myself. I also draw databases in the traditional manner, and yet I never feel the need to refer to them as cylinders.
By which, of course, you mean drums.
I've seen Active-Record-like API's that use just associative arrays and functions. Some strong-typing advocates probably wouldn't like them, considering them "too naked" (poor encapsulation), but the strong-typing-versus-scriptish/dynamic debate is generally a different issue. The lack of encapsulation makes them easier to modify for a given project when their out-of-the box condition is insufficient. Trying to make a generic one-size-fits-all AR kit for every project is asking for API bloat.
But the bigger issue is with "domain modeling", that is modeling the domain "things" such as customers and invoices. There does seem to be a conflict between OOP and RDBMS for those. Mirroring the domain model between them is unnecessary redundancy and conversion busy-work.
Table-ized A.I.
Isn't QT for C++? That would generally disqualify it as "cross-language". Sure, language-specific libraries could be added by tacking on the QT libraries to each language, but the API's could be vastly different for each language, taking us back to square one for the most part. Or, at least square 1.2.
Table-ized A.I.
But without a clear-cut way to measure/describe/illustrate "improved code organization", such claims are merely claims.
"Some OO languages" is the key. It is not about OO per se, but using OOP to assist the "strong typing" model. I generally agree OO seems to be pretty good at that, but I also enjoy type-free (or at least dynamic) style. It is not objectively worse. Paul Graham has suggested that OO keeps large-team drooling zoombies "in line" by outright forcing them through a pre-set interface. Perhaps that is needed for larger projects that are so large that it becomes a dragging whip-and-row slog. That may be the case, but the claims of OO proponents are generally not limited to just large teams.
Example?
For once we agree on something. But this is because C is crippled. It is designed for machine speed, not developer productivity. It is modern-day assembler and by far not the pinnacle of procedural languages.
Table-ized A.I.
Gee... I guess they will have to actually release a PHP5 for OpenVMS some time soon.
Gamingmuseum.com: Give your 3D accelerator a rest.
In the meantime 1969 K&R C is still fully supported.
Don't blame me, I didn't vote for either of them!
Horrible Simplification Follows
Hewitt and Smith generalized Alan Kay's work (around 1972), and generalized message passing. Kay suggests procedural embedding could allow the building of functional data structures. Scheme (Sussman and Steele) oiginally implements Hewitt's actors, but observed that actors and functions were the same, dropping actor and keeping lambda.
Sort of this progression:
Lisp->Smalltalk->Actor->Scheme(->Lisp)
In other words, either could be used. The last part is still a work in progress. (Haskell/Caml not included in this picture yet -- this illustrates things late '80s, early '90s - twenty years ago).
Haskell is nice (very nice), although I prefer loose typing, and generally use Scheme.
Just another "Cubible(sic) Joe" 2 17 3061
I think it is the DB pear class, anyone ever have this problem when upgrading from php 4 to 5? it just dies.
You're right, of course (I mentioned that I had heard it before ;) ). Tables aren't objects. This was the inspiration for all of those poor fools trying to build OOP DBs. Oddly, it was also part of the rationale for questionable design decisions for a popular open source cms ("Tables are kind of like objects, so we don't have to worry about updating our api 'cause we're already oop..." hahaha).
However, the need for a layer between the database and your application logic doesn't mean that OOP is worthless. I like my relational storage, and I like my OOP application logic. It's not conversion per se, but a gateway. I can have my safe, fast, normalized database connected to an OOP domain model that is actually pretty close to the reality of the problem I'm solving (definitely much closer than the relational schema with a dozen correlation tables).
I'm wondering... You say you lean towards the smalltalk side of the family tree. Have you played with Objective C? Api's built with it are pretty (I'm working through an O'Reilly Cocoa book at the moment). You mentioned that you blamed oop for the non-existence of a cross-platform desktop environment; I kind of wish more people would check out obj c and/or contribute to gnustep/etoile.
Please clarify.
Table-ized A.I.
My domain model in OOP is closer to reality than the relational schema. That was OOP's reason for existing, originally.
And another thing about that... There are necessary kludges in both. Have you ever felt saddened by the way a beautiful diagram actually gets implemented in an RDBMS?
Without some agreed-upon way to measure "fitting reality", its kind of hard to evaluate this. Further, fitting reality is not always in our best interest. Modeling an old-fashioned library card catalog may "model reality" well, but we can now transcend such a limited physical layout and use multi-indexing without duplicate physical cards for each book.
Further, even the popular OO author Bertrand Meyer rejects the claim that OO's main goal is to closely mirror reality.
The front-end tools to display or edit something may not reflect what is inside the machine. We create code and UI abstractions that better fit how we or the customer want to view it. Diagrams typically represent ID key links as lines between "things" on paper, while our software tools use either ID key values or RAM addresses. But to me the "problem" is solved by providing more graph (lines and node) oriented viewers/editors when needed. And its easier to standardize such tools for RDBMS than different OO languages because RDBMS are more standardized at this point in time.
Table-ized A.I.
Sorry, man... I likes my OOP. And I cannot imagine a worse fate than having to code anything in sql, which seems to be what you're suggesting with your talk of "declarative" paradigms.
Indeed.
PHP5 supports type hinting
Ooh, that looks pretty useful... *writes out a function to only accept strings*
Argument 1 passed to test() must be an instance of string, string given
Umm.. wtf? *googles*
Oh, type hinting only supports certain types of types.
Conclusion: PHP still sucks, and the new features are as half-assed as ever :-(
I mod down anyone who says "I will be modded down for this", regardless of the rest of their comment
SQL is a high-level language which can be very powerful, reducing the need to hand-code collection-oriented idioms over and over. Perhaps relational-heads think differently than OOP-heads. (I do agree it can use some upgrading though. It's grown long in the tooth, but that's true of any language.)
The difference between me and most alleged zealots is that I don't claim my favorite techniques are objectively better. I believe software development is largely a psychological process once speed/performance issues are not the overriding concern. And everybody's psychology is different. I'm just requesting healthy skepticism regarding OOP. Too many have accepted it without a critical eye. You have a right to "like" it, but not a right to extrapolate personal preferences to everybody else.
Table-ized A.I.
One of my favorite current abuses of PHP is running a game server written in PHP. The game is written in C# and communicates with the PHP server using sockets. The reason is pure laziness on my part. Maps are created through a PHP/AJAX web-app and stored in MySQL. The PHP server handles all the DB stuff and passes it down to the game client via binary strings. I didn't care to have to rewrite PHP code as C# code just for a simple server.
It would probably be more efficient to have a binary data type (a simple byte array) and a string data type.
Work Safe Porn
Thanks! Did the job.
Table-ized A.I.
Speaking as a _parent at a Public_function, couldn't we, instead of using "Ripened_ovary", refer to a less controversial class such as "Liberace"?
SQL is a high-level language which can be very powerful, reducing the need to hand-code collection-oriented idioms over and over. Perhaps relational-heads think differently than OOP-heads.
I think the separation goes more like "most programmers" vs. "Relational-heads". Most programmers seem to regard such a thing as "not really programming", just like the Big Telcom engineers blustered about TCP/IP as being "not really networking" back in the 60s and 70s. I am convinced that most programmers dislike relational logic because it involves a changed mindset, and because it actually removes the need for some of the things they like to have their hands on.
I can't tell you the number of times I have come across some elaborate construct in an application that could be reduced to a simple combination of a couple tables and a some constraints or rules to govern what goes in them. But that's not really programming...
I'm not sure if these count, but Mac OS X has php bundled with it.
So, I'm wondering if there will be an update soon that will remove php4, install php5, and find all the configuration files in /etc, at least, and search them for the right place to put in the line that tells them to keep running php4 compatible.
Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
Umm... So because I know how to use object-oriented languages, I don't understand relational logic? I'm rather surprised to hear that.
Nowhere in my comments did I say that I "dislike relational logic". I do, however, think that building large applications in sql is a terrible idea.
About your analogy, well, that's just fucked. I don't think that using a declarative language to build applications is "not programming". I think that it is not productive (as does the rest of world). It wasn't even possible until vendors bolted on flow control constructs (some of them OOP!).
I know I know, the balls I must have to suggest that you use your query language for queries. I've apparently drunk the "not writing everything in an incomplete language" kool-aid.
You made the assumption that because I defended object-oriented programming (controversial, I admit), I don't understand how to design a db schema. That's insane (and illogical).
Umm... So because I know how to use object-oriented languages, I don't understand relational logic? I'm rather surprised to hear that.
Nowhere in my comments did I say that I "dislike relational logic". I do, however, think that building large applications in sql is a terrible idea.
A little touchy, are we? Notice I never said anything negative about OOP (although I share some of Tablizer's doubts). Nor did I even imply you were one of "most programmers".
About your analogy, well, that's just fucked. I don't think that using a declarative language to build applications is "not programming". I think that it is not productive (as does the rest of world).
The analogy is very apt, when you think about the power of abstraction. What TCP/IP did was to create a declarative abstraction that was layered over the old world of networking (the old idea of networking was that a connection == a phone call), and this abstraction made it possible to no longer worry about the intimate details of just how your connection established a path through the telco machinery. Take a look at Van Jacobsen's excellent talk for more background on this, including the social aspects I mentioned.
In the same way, relational logic made it possible to make logical assertions over your data without worrying about just how the underlying programming handled the details. Yes, it uses programming, and uses it brilliantly. Separation of concerns. Write a data management framework once, formalize it and generalize it (ergo the DBMS), rather than write it for every application.
I know I know, the balls I must have to suggest that you use your query language for queries. I've apparently drunk the "not writing everything in an incomplete language" kool-aid.
You made the assumption that because I defended object-oriented programming (controversial, I admit), I don't understand how to design a db schema. That's insane (and illogical).
I wasn't assuming anything about you at all. I was responding to Tablizer. But anyway, of course you can't completely develop an application with SQL, nor was that the intent (and SQL is a fairly poor implementation of the relational model anyway). But you CAN manage the data completely within a relational system, and leave the programming to handle all the other aspects. This provides a benefit of separating concerns, so you can manage your data without poking the innards of your application, and vice-versa.
And yes, it is "most programmers", not all. Most programmers have never been taught what the relational model really is, or what it is good for. Most of them don't even know what a "relation" is. It's one of the most disinformation-heavy subjects on the internet. Unless you have read at least one of C.J. Date's books, as well as perhaps Hugh Darwen, David MgGoveran, maybe Fabian Pascal, etc... you don't really know the relational model. In fact, learning SQL itself is somewhat counterproductive to understanding the relational model. It takes a little work to unlearn the bad concepts.
Fair enough.
...Though I still think your analogy is flawed. And your opinions are much more moderate than tablizer's, which you appeared to support with your anecdotes (~"I can't count the number of times"). That is probably what set me off... I was slighly annoyed by someone feigning interest in what I had to say to try to evangelize me.
FWIW, I don't really disagree with anything in your last comment.
YOu got modded down but I found it funny at least :)
PHP isn't really usable under worker, unless you're happy to limit to a very small number of extensions; most aren't thread safe, and good luck finding documentation on which ones are. It's not even that simple to test. Similarly, mod_python might work threaded, but libraries you might want to use with it might not be (they would normally be protected by the GIL, but if you've got multiple serperate interpreter instances in a process, that won't save them).
Just have some kind of folder indicator file or the like that tells the system which interpreter to use. If you want to keep using 4, then put a "_usePhp4_" indicator file in a given folder. Forcing one to make a system-wide choice is so Microsoft.
Table-ized A.I.
I since prefer use PHP4 on my hosting account. Somtimes it works better and less errors on it occurs.
Hidden Object Games Download