Wordpress Port

Has there any been an effort to make a ruby Wordpress port? I am a
rails and ruby guy, and now have to do a blog in Wordpress. PHP is an
ugly langauge and I wish I could use ruby for extending and looking at
the architecture. Since Wordpress is open source we could just
straight port a lot of the code from wordpress as it is. Someone could
even make a parser which makes php extensions or themes compatible.

I guess in general, this is a question about the lack of CMS’s in
ruby. THe general comments usually are, why have a cms when we can
make it in rails so much fast? I agree with the point that Rails is
quite mature and robust to handle making any type of site very
quickly. There is one problem, this is contingent on knowing Ruby on
Rails. To help further Ruby’s cause perhaps people should come to
together to port a few proper CMS’s or at least add some sort of
compatibly.

On Mon, Dec 7, 2009 at 12:00 PM, hjast [email protected] wrote:

quite mature and robust to handle making any type of site very
quickly. There is one problem, this is contingent on knowing Ruby on
Rails. To help further Ruby’s cause perhaps people should come to
together to port a few proper CMS’s or at least add some sort of
compatibly.

Well there are some well-known Ruby CMSeseses.

Have you looked at Radiant CMS? http://radiantcms.org/

Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale

On Mon, Dec 7, 2009 at 12:22 PM, Rick DeNatale
[email protected]wrote:

make it in rails so much fast? I agree with the point that Rails is
Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale

And if you’re looking for a Rails-based blog platform, there’s Mephisto:
http://mephistoblog.com/

Wordpress is enormous. Porting would be non-trivial.

Jason

On Monday 07 December 2009 11:00:08 am hjast wrote:

Has there any been an effort to make a ruby Wordpress port? I am a
rails and ruby guy, and now have to do a blog in Wordpress. PHP is an
ugly langauge and I wish I could use ruby for extending and looking at
the architecture.

If you’re wanting a way to work with Wordpress, the PHP app – for
example,
writing a Wordpress plugin in Ruby – I don’t think there really is one,
though that’s not entirely a bad idea. Just mostly a bad idea.

If you’re looking for an actual port of Wordpress, and I think this is
what
you want…

Since Wordpress is open source we could just
straight port a lot of the code from wordpress as it is.

Well, code written in one language doesn’t always translate directly
into
another language. I’m guessing the word press architecture isn’t a good
fit –
you could probably do something better starting from scratch in Ruby,
which is
why someone pointed you to Mephisto.

Someone could
even make a parser which makes php extensions or themes compatible.

Well, probably not. You might be able to build a bridge (as the Phuby
guy was
jokingly suggesting), but short of that, no you couldn’t. Keep in mind
that a
PHP extension or theme is still PHP code, not Ruby code. Translating one
language directly into another, even when it works, usually leads to
fairly
ugly code.

I guess in general, this is a question about the lack of CMS’s in
ruby. THe general comments usually are, why have a cms when we can
make it in rails so much fast?

I don’t agree with that, and I think a lot of the Merb people were
thinking
about ways to improve that situation, especially by stealing ideas from
Django.

And I definitely think Wordpress is not a good choice for a CMS.
Drupal would be a much better choice.

On Dec 7, 2009, at 12:31 PM, Jason R. wrote:

straight port a lot of the code from wordpress as it is. Someone
compatibly.
LinkedIn: http://www.linkedin.com/in/rickdenatale

And if you’re looking for a Rails-based blog platform, there’s
Mephisto:
http://mephistoblog.com/

Wordpress is enormous. Porting would be non-trivial.

Jason

No, It sounds like hjast wants to check out phuby on phails. The video
from RubyConf2009 should be up soon – the session you need to see is:

21-Nov-09 15:05
“Worst. Ideas. Ever.”
Aaron P. and Ryan D.

Really, if I tries to tell you much more about it, the effect would be
ruined.

For now, you’d have to settle for this:

-Rob

Rob B. http://agileconsultingllc.com
[email protected]

David M. wrote:

On Monday 07 December 2009 11:00:08 am hjast wrote:

Has there any been an effort to make a ruby Wordpress port? I am a
rails and ruby guy, and now have to do a blog in Wordpress. PHP is an
ugly langauge and I wish I could use ruby for extending and looking at
the architecture.

If you’re wanting a way to work with Wordpress, the PHP app – for
example,
writing a Wordpress plugin in Ruby – I don’t think there really is one,
though that’s not entirely a bad idea. Just mostly a bad idea.
[…]

JRuby and Quercus, maybe? :slight_smile:

Seriously, I’m not even sure it’s that bad of an idea. Writing Java in
Ruby certainly works well; why shouldn’t writing PHP in Ruby?

Of course, that’s only if you’re stuck with Wordpress to begin with. I
agree that something like Mephisto is probably a better choice.

Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]

On Monday 07 December 2009 05:05:19 pm pharrington wrote:

On Dec 7, 4:41 pm, Marnen Laibow-Koser [email protected] wrote:

Seriously, I’m not even sure it’s that bad of an idea. Writing Java in
Ruby certainly works well; why shouldn’t writing PHP in Ruby?

Well, JRuby is Ruby running under the JVM, which I wouldn’t quite call
“writing Java in Ruby.”

In particular, there isn’t any sort of PHP VM that we could meaningfully
target. We’d be compiling Ruby to PHP, at best. JRuby doesn’t compile
Ruby to
Java, it compiles Ruby to JVM bytecode.

The rest of this is true, also:

The JVM has alot going for it: fantastic
performance, rich set of libraries, everything runs it, threads that
run in parallel, etc. I don’t see any of those benefits for trying to
get Ruby interoperability with PHP.

The “rich set of libraries” is the only benefit I can see for PHP, and
I’m
very skeptical – not just of quantity, but of quality.

On Dec 7, 4:41 pm, Marnen Laibow-Koser [email protected] wrote:

though that’s not entirely a bad idea. Just mostly a bad idea.

Best,

Marnen Laibow-Koserhttp://www.marnen.org
[email protected]

Posted viahttp://www.ruby-forum.com/.

Well, JRuby is Ruby running under the JVM, which I wouldn’t quite call
“writing Java in Ruby.” The JVM has alot going for it: fantastic
performance, rich set of libraries, everything runs it, threads that
run in parallel, etc. I don’t see any of those benefits for trying to
get Ruby interoperability with PHP.

hjast wrote:

Have you looked at the typo blog[1], I am not really familiar with
wordpress so can’t comment on how typo compares, but it does support
themes, plugins and internationalization. Customizing or extending typo
would probably be easier then trying to port wordpress to ruby.

Edward

  1. http://wiki.github.com/fdv/typo/

On Dec 7, 2009, at 18:08 , Edward Middleton wrote:

Have you looked at the typo blog[1], I am not really familiar with
wordpress so can’t comment on how typo compares, but it does support
themes, plugins and internationalization. Customizing or extending typo
would probably be easier then trying to port wordpress to ruby.

as long as you take care not to enter its event horizon, you’ll be fine.

pharrington wrote:

On Dec 7, 4:41�pm, Marnen Laibow-Koser [email protected] wrote:

though that’s not entirely a bad idea. Just mostly a bad idea.

Best,
–�
Marnen�Laibow-Koserhttp://www.marnen.org
[email protected]

Posted viahttp://www.ruby-forum.com/.

Well, JRuby is Ruby running under the JVM, which I wouldn’t quite call
“writing Java in Ruby.”

If you’re running a Rails app or something in JRuby, I’d agree with you.
However, I was thinking of something along the lines of the app I’m
currently developing with Swing and Monkeybars, where almost every Ruby
class has at least one call to a Java class, and often more. That
really does start to feel like writing Java in Ruby.

I do understand the conceptual difference between Java and JVM bytecode,
though.

The JVM has alot going for it: fantastic
performance, rich set of libraries, everything runs it, threads that
run in parallel, etc. I don’t see any of those benefits for trying to
get Ruby interoperability with PHP.

Everything runs it, every host has it…

…but seriously, it was more of a devil’s advocate question.

Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]

But to

David M. wrote:

On Monday 07 December 2009 05:05:19 pm pharrington wrote:

On Dec 7, 4:41 pm, Marnen Laibow-Koser [email protected] wrote:

Seriously, I’m not even sure it’s that bad of an idea. Writing Java in
Ruby certainly works well; why shouldn’t writing PHP in Ruby?

Well, JRuby is Ruby running under the JVM, which I wouldn’t quite call
“writing Java in Ruby.”

In particular, there isn’t any sort of PHP VM that we could meaningfully
target. We’d be compiling Ruby to PHP, at best.

Well, there are a couple of PHP compilers, as well as Quercus…

JRuby doesn’t compile
Ruby to
Java, it compiles Ruby to JVM bytecode.

Yes, I know.

The rest of this is true, also:

The JVM has alot going for it: fantastic
performance, rich set of libraries, everything runs it, threads that
run in parallel, etc. I don’t see any of those benefits for trying to
get Ruby interoperability with PHP.

The “rich set of libraries” is the only benefit I can see for PHP, and
I’m
very skeptical – not just of quantity, but of quality.

Is this skepticism based on anything other than being a Smug Ruby Weenie
[TM]? I spent about 4 happy, productive years as a PHP developer, and
enjoyed working both with the language and the many good libraries.

Of course, everything’s done to higher standards in the Ruby community.
But that’s because Ruby’s so good, not because PHP’s so bad.

Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Ryan D. wrote:

Edward Middleton wrote:

Have you looked at the typo blog[1], I am not really familiar with
wordpress so can’t comment on how typo compares, but it does support
themes, plugins and internationalization. Customizing or extending typo would probably be easier then trying to port wordpress to ruby.

as long as you take care not to enter its event horizon, you’ll be fine.

The current master branch is getting better. It runs on rails 2.3.x and
I am working on a ruby 1.9 support.

Edward

  1. Or wasn’t when I deployed it :wink: http://blog.vortorus.net/

On Monday 07 December 2009 10:11:18 pm Marnen Laibow-Koser wrote:

David M. wrote:

In particular, there isn’t any sort of PHP VM that we could meaningfully
target. We’d be compiling Ruby to PHP, at best.

Well, there are a couple of PHP compilers, as well as Quercus…

Ah, point taken. So we could use the JVM after all.

The “rich set of libraries” is the only benefit I can see for PHP, and
I’m
very skeptical – not just of quantity, but of quality.

Is this skepticism based on anything other than being a Smug Ruby Weenie
[TM]?

No, not really…

Well, ok, there are a few complaints.

First of all, PHP had object-orientedness tacked on after the fact. Now,
this
can be done well, and it can be done poorly. In PHP’s case, it was done
poorly
– I’d almost rather not use them at all.

By contrast, Perl implemented OO rather well, and it did so after
modules
were implemented. Indeed, Perl libraries were already well-namespaced
and easy
to transform into something object-oriented – and I found CPAN to be of
consistently high quality, especially the documentation.

Second, just look at the number of global functions in PHP. I’m not
talking
about the ones you’ll write yourself, but the ones that are built into
the
language. Even Perl is better about this, and Javascript certainly is.

And there’s the inconsistency, and layers of cruft from Really Bad
decisions.
Stuff like mysql_escape_quotes. Or is it escape_quotes_mysql? Or maybe
mysql_really_escape_quotes? I always forget, and using the wrong one
will
either corrupt my data or leave me open to SQL injection –
nevertheless, I
must use it on every single database operation.

Even Rails supports the idea of placeholder values (when you need to
touch SQL
at all), and this is commonplace at the database API in Perl – the idea
of
prepared statements comes to mind. This is a much easier habit to
maintain –
and more efficient, too.

So the language itself doesn’t lend itself to particularly high quality
in the
first place.

I mean, think of the design of it, too. The syntax alone, the fact that
every
file is essentially already a template – this was never intended to be
a
general-purpose language. It was intended to be a template language. It
doesn’t even make a very good template language – Haml is better, even
if you
don’t consider the fact that it’s tied to Ruby.

Add to that, one of the problems PHP shares with Ruby is its low barrier
of
entry, being perceived as an “easy” language – only PHP seems to have
this to
a greater degree. People who learn Ruby and Rails are at least trying to
learn
to program. People who learn PHP usually start as designers, who learn a
bit
of HTML and CSS, and need a tiny bit of server-side logic in their HTML
page,
so they learn a bit of PHP or paste a bit of code in…

For that matter, I’d guess the better developers would see that there
are
better languages, and would migrate away from PHP, in the long run.

Now, this is all circumstantial evidence. It’s possible there’s a large,
well-
organized community of quality PHP software. Maybe things have changed
since I
last used it.

But I’ve also been on two language rants in the past two days, and I
should
stop.

I spent about 4 happy, productive years as a PHP developer, and
enjoyed working both with the language and the many good libraries.

Good for you. Hey, I’ve seen Drupal. I was amazed – there are things I
strongly dislike about it, but here was object-orientation, modules,
mixins,
all kinds of good stuff. Sure, it was completely hacked together, and
not at
all supported by the standard, but it was decent.

This would be the main argument for creating some sort of Ruby bindings

because then we could write Drupal plugins in Ruby.

But it would end in tears. As I said, Drupal (at least, last I checked)
hacks
these things together. I’m fairly sure it doesn’t even use PHP’s own
object-
orientedness, as it predates that, and certainly predates its widespread
adoption – thus, while PHP and Ruby both support objects, you’d have to
write
Drupal-specific bindings to get any meaningful objects relating to
Drupal
stuff.

Of course, everything’s done to higher standards in the Ruby community.
But that’s because Ruby’s so good, not because PHP’s so bad.

Ruby, and Perl, and Python, are so good? …and Erlang, and io?

In fact, the only language I can think of in this niche that I dislike
more
than PHP is Visual Basic.

Rick DeNatale wrote:

Well there are some well-known Ruby CMSeseses.

Have you looked at Radiant CMS? http://radiantcms.org/

I’ve been building up a fairly complex site using Radiant, and it’s
really sweet.

Better to write and/or improve extensions for Radiant than porting
something from PHP with dubious architecture.


James B.

www.jamesbritt.com - Playing with Better Toys
www.ruby-doc.org - Ruby Help & Documentation
www.rubystuff.com - The Ruby Store for Ruby Stuff
www.neurogami.com - Smart application development

[Warning: no Ruby content whatsoever.]

David M. wrote:

On Monday 07 December 2009 10:11:18 pm Marnen Laibow-Koser wrote:

David M. wrote:

In particular, there isn’t any sort of PHP VM that we could meaningfully
target. We’d be compiling Ruby to PHP, at best.

Well, there are a couple of PHP compilers, as well as Quercus…

Ah, point taken. So we could use the JVM after all.

Perhaps.

The “rich set of libraries” is the only benefit I can see for PHP, and
I’m
very skeptical – not just of quantity, but of quality.

Is this skepticism based on anything other than being a Smug Ruby Weenie
[TM]?

No, not really…

Well, ok, there are a few complaints.

First of all, PHP had object-orientedness tacked on after the fact. Now,
this
can be done well, and it can be done poorly. In PHP’s case, it was done
poorly
– I’d almost rather not use them at all

True. I’ve used very little of PHP’s OO. I was really an OO skeptic
until about the same time I started using Rails.

By contrast, Perl implemented OO rather well, and it did so after
modules
were implemented. Indeed, Perl libraries were already well-namespaced
and easy
to transform into something object-oriented – and I found CPAN to be of
consistently high quality, especially the documentation.

Generally so. But Perl is awful for writing Web applications.

Second, just look at the number of global functions in PHP. I’m not
talking
about the ones you’ll write yourself, but the ones that are built into
the
language. Even Perl is better about this, and Javascript certainly is.

I’m not sure I understand your point. PHP was obviously designed
primarily as a procedural language, so it’s sort of appropriate for
there to be lots of global functions.

And there’s the inconsistency, and layers of cruft from Really Bad
decisions.
Stuff like mysql_escape_quotes. Or is it escape_quotes_mysql? Or maybe
mysql_really_escape_quotes? I always forget, and using the wrong one
will
either corrupt my data or leave me open to SQL injection –
nevertheless, I
must use it on every single database operation.

No. There are far better DB libraries than the built-in ones.

Even Rails supports the idea of placeholder values (when you need to
touch SQL
at all), and this is commonplace at the database API in Perl – the idea
of
prepared statements comes to mind. This is a much easier habit to
maintain –
and more efficient, too.

And possible in PHP. Everything I ever did in PHP used the Pear DB or
MDB2 library, both of which support prepared statements. I learned that
trick back in my ColdFusion days, and wouldn’t have given it up in PHP.

So the language itself doesn’t lend itself to particularly high quality
in the
first place.

WTF? Just because the standard DB library has problems, you make this
sweeping conclusion? Isn’t that kind of like concluding that Ruby sucks
because TMail and REXML are awkward?

I mean, think of the design of it, too. The syntax alone, the fact that
every
file is essentially already a template – this was never intended to be
a
general-purpose language. It was intended to be a template language. It
doesn’t even make a very good template language – Haml is better, even
if you
don’t consider the fact that it’s tied to Ruby.

Yeah, PHP started as a template language, and it shows. But you don’t
have to use it that way. It’s possible – and recommended – to write
entire PHP files without any HTML in them. It looks more or less like
Perl. It’s not going against the spirit of the language at all.

Add to that, one of the problems PHP shares with Ruby is its low barrier
of
entry, being perceived as an “easy” language – only PHP seems to have
this to
a greater degree. People who learn Ruby and Rails are at least trying to
learn
to program. People who learn PHP usually start as designers, who learn a
bit
of HTML and CSS, and need a tiny bit of server-side logic in their HTML
page,
so they learn a bit of PHP or paste a bit of code in…

You could say the same about JavaScript – people learn to write a line
or two at a time, so they never really learn to use the language. Both
JavaScript and PHP are pretty good languages if you allow them to be
rather than considering them extensions of HTML.

For that matter, I’d guess the better developers would see that there
are
better languages, and would migrate away from PHP, in the long run.

That’s what happened to me – but it wasn’t PHP’s language features that
did it. It was the fact that TDD was more feasible in Rails than in any
PHP framework I could find.

Now, this is all circumstantial evidence. It’s possible there’s a large,
well-
organized community of quality PHP software.

There is. Maybe not enough, but there is. (MediaWiki, for example, as
well as any PEAR library I’ve ever used…)

Maybe things have changed
since I
last used it.

Maybe you never really learned what you could do with it – as witness
your ignorance of DB library options.

But I’ve also been on two language rants in the past two days, and I
should
stop.

:slight_smile:

I spent about 4 happy, productive years as a PHP developer, and
enjoyed working both with the language and the many good libraries.

Good for you. Hey, I’ve seen Drupal. I was amazed – there are things I
strongly dislike about it, but here was object-orientation, modules,
mixins,
all kinds of good stuff. Sure, it was completely hacked together, and
not at
all supported by the standard, but it was decent.

That must have been Drupal 6. Drupal 5 was horrible – basically
reinventing OO in a fragile procedural way.

This would be the main argument for creating some sort of Ruby bindings

because then we could write Drupal plugins in Ruby.

But it would end in tears. As I said, Drupal (at least, last I checked)
hacks
these things together. I’m fairly sure it doesn’t even use PHP’s own
object-
orientedness,

Drupal 6 was a complete rewrite, and I believe it does use PHP OO.

as it predates that, and certainly predates its widespread
adoption – thus, while PHP and Ruby both support objects, you’d have to
write
Drupal-specific bindings to get any meaningful objects relating to
Drupal
stuff.

Of course, everything’s done to higher standards in the Ruby community.
But that’s because Ruby’s so good, not because PHP’s so bad.

Ruby, and Perl, and Python, are so good? …and Erlang, and io?

In fact, the only language I can think of in this niche that I dislike
more
than PHP is Visual Basic.

VB is brain-dead. PHP is not, at least if you don’t try to use its OO
features to any great extent.

I’m sorry, but it’s obvious that you don’t know what you’re talking
about with respect to PHP.

Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]

On Tuesday 08 December 2009 12:36:01 am Marnen Laibow-Koser wrote:

[Warning: no Ruby content whatsoever.]

Nice disclaimer!

Generally so. But Perl is awful for writing Web applications.

How so?

Because I’d definitely disagree here. I think Perl is generally useful
– and
I think Ruby is also generally useful. I just think Ruby is prettier and
much
easier to work with than Perl.

Second, just look at the number of global functions in PHP. I’m not
talking
about the ones you’ll write yourself, but the ones that are built into
the
language. Even Perl is better about this, and Javascript certainly is.

I’m not sure I understand your point. PHP was obviously designed
primarily as a procedural language, so it’s sort of appropriate for
there to be lots of global functions.

Even supposing it was… Erlang is designed as a pseudo-functional
language,
and it still has the concept of namespaces. I realize PHP has
namespaces, but
I wasn’t seeing them actually used, and there’s still a bunch of cruft
that
seems to be from before PHP realized namespaces were a good idea.

Everything I ever did in PHP used the Pear DB or
MDB2 library, both of which support prepared statements. I learned that
trick back in my ColdFusion days, and wouldn’t have given it up in PHP.

I’ll grant this point – I guess it had to be solved at some point.

So the language itself doesn’t lend itself to particularly high quality
in the
first place.

WTF? Just because the standard DB library has problems, you make this
sweeping conclusion? Isn’t that kind of like concluding that Ruby sucks
because TMail and REXML are awkward?

I actually kind of like TMail, though REXML has been improved on.

No, the point is that in a default PHP setup, there’s tons of this
stuff.
Again, from the global function count alone… It wouldn’t be so bad if
there
was some kind of convention to them, but there isn’t.

There was a much better thought out rant against PHP, by a Perl guy, who
made
this point very well:

http://www.tnx.nl/php.html

To summarize it:

  • Arguments and return values are extremely inconsistent. That’s with
    standard PHP libraries.
  • PHP has separate functions for case insensitive operations – and
    these are
    inconsistently named. (Contrast to Ruby, where I can add /i to a regex,
    or I
    can just downcase the string.)
  • Continuing on that theme, functions are inconsistently named.
  • Scoping. Seriously.
  • Too many functions.

Wow, I’d forgotten most of the reasons I hate PHP!

For what it’s worth, though, the “modularity” section may not apply –
PEAR
may have solved that.

He updates it for php5 here:

http://www.tnx.nl/php5.html

This didn’t really fix anything in the above list, but added classes, so
he
criticizes the PHP object model. But then, you agreed that the object
model
wasn’t that good, so I won’t care.

It did, however, add exceptions. But since they were added after the
fact,
they’re probably about as useful as they are in Perl. In Ruby, nothing
(except
ActiveRecord, apparently) ever just returns an error, it raises an
exception
if something’s wrong. This means no silent errors. Noisy errors are a
Good
Thing.

In Perl, while there is a strange way to deal with exceptions, nothing
uses
them. Perl objects tend to return a false value when something goes
wrong.

have to use it that way. It’s possible – and recommended – to write
entire PHP files without any HTML in them.

I realize this. My point is that many of the design decisions of a
template
language – very simple syntax, just sprinkle some global functions, the
assumption that no one will ever write anything huge in this – all of
this
leaves a lot to be desired when you want to use it for something else.

Perl started out as a report language, but it’s at least extracted the
“format” concept into a separate module.

To make it even more perverse, even PHP people tend to use other
template
languages (like Liquid) instead of PHP, to do their templating in PHP.
This is
profoundly ironic to me. I suppose next thing you know, Liquid will
become
Turing-complete, people will be writing Liquid apps, and we’ll need a
safe/better template language for Liquid?

People who learn PHP usually start as designers, who learn a
bit
of HTML and CSS, and need a tiny bit of server-side logic in their HTML
page,
so they learn a bit of PHP or paste a bit of code in…

You could say the same about JavaScript – people learn to write a line
or two at a time, so they never really learn to use the language. Both
JavaScript and PHP are pretty good languages if you allow them to be
rather than considering them extensions of HTML.

Oh, I agree. And just because some people learn Rails because it’s easy,
and
never bother to learn Ruby the language, isn’t really a point against
Ruby or
Rails. But then…

Javascript is a FAR better language than PHP.

Javascript has first-class functions (which are also closures), a decent
object system including prototypal inheritance, and the unification of
objects
and hashes (combined with that prototypal inheritance) means you can
build
your own inheritance system, or use classical inheritance…

It could almost be called multi-paradigm.

Frankly, the only reason I use Ruby instead of Javascript (where I do)
is I
like Ruby syntax better, and Ruby actually has bindings to native stuff
I can
use (there’s no Javascript filesystem API that I know of). I mean, with
v8,
Javascript is even faster than Ruby.

So, scratch the surface of Javascript, and it becomes a truly elegant
language. A lisp in disguise.

Scratch the surface of PHP, and it’s… more PHP. The next step in the
evolution of a PHP coder is probably to learn another language.

For that matter, I’d guess the better developers would see that there
are
better languages, and would migrate away from PHP, in the long run.

That’s what happened to me – but it wasn’t PHP’s language features that
did it. It was the fact that TDD was more feasible in Rails than in any
PHP framework I could find.

Now look at BDD, and at rspec. Or maybe rake.

Can you imagine building anything like that in PHP?

Maybe things have changed
since I
last used it.

Maybe you never really learned what you could do with it – as witness
your ignorance of DB library options.

Probably – I was mostly working with Wordpress and Drupal.

Good for you. Hey, I’ve seen Drupal. I was amazed – there are things I
strongly dislike about it, but here was object-orientation, modules,
mixins,
all kinds of good stuff. Sure, it was completely hacked together, and
not at
all supported by the standard, but it was decent.

That must have been Drupal 6. Drupal 5 was horrible – basically
reinventing OO in a fragile procedural way.

It actually might have been Drupal 5.

Drupal 6 was a complete rewrite, and I believe it does use PHP OO.

Yeah, so it would’ve been Drupal 5 that I was using.

VB is brain-dead. PHP is not, at least if you don’t try to use its OO
features to any great extent.

Or its reflection. Or the features it doesn’t have…

I’m sorry, but it’s obvious that you don’t know what you’re talking
about with respect to PHP.

I have a feeling I should be glad of that.

But just a quick test to see if it’s worth learning more again:

Does PHP have closures yet? Or even anonymous functions?

I’ll give you this: Languages evolve. It’s possible I don’t know what
I’m
talking about. It’s possible the tnx.nl guy no longer knows what he’s
talking
about. It’s possible that PHP will one day evolve into a beautiful
language,
or at least a decent one, leaving me only able to grumble about syntax
and
snipe at the <? at the top of each file.

On the other hand, from what I do know of PHP, I can still name four
or five
better languages off the top of my head. Why would we want to evolve PHP
into
a good language when we have so many good languages already?

On Tuesday 08 December 2009 03:33:42 am Rimantas L. wrote:

First of all, PHP had object-orientedness tacked on after the fact. Now,
this can be done well, and it can be done poorly. In PHP’s case, it was
done poorly – I’d almost rather not use them at all.

Are you talking about PHP4 or PHP5 there?

It was PHP5, when I was doing this, but it was also a long time ago.

By contrast, Perl implemented OO rather well,

Now that’s funny.

How so?

So the language itself doesn’t lend itself to particularly high quality
in the first place.

You can write Fortran in any language.

The question isn’t whether you can or can’t – you can write Lisp or
Ruby in
any language, too. It’s Turing-complete, and you can always write a
preprocessor.

The question is, what does the language encourage? Is it easy to write
good
code, and hard to write bad code, or vice versa? Is there syntactic
sugar for
good habits, and syntactic vinegar for bad ones?

Compare any of these to C. You probably could write a web app in C. You
probably could be about as efficient with it. You could be disciplined
enough
to never do pointer arithmetic, to never make assumptions about pointer
size
(and thus be 64-bit clean), to always use exactly the appropriate
methods to
operate on a data structure, and to maintain a consistent naming
convention.
You could commit to always using a proper string structure, rather than
using
null-terminated arrays of bytes.

After all, Ruby itself is written in C, and I’m guessing PHP is, also.
If you did it in C++, you could even fake some decent-looking syntax.

The question is, first, do you really want to spend the months of
development
needed to make this easy in C? And second, wouldn’t you rather have a
language
that makes this stuff easy, and makes it hard for you to accidentally
use an
uninitialized pointer, or make a buffer overflow?

Think about that for a moment. In languages like Ruby and PHP, a buffer
overflow is actually not possible. You might get it in a third-party
library
written in another language (like C), but you can’t do it yourself. But
in C,
it’s not only possible, it’s a very easy mistake to make, and a hard one
to
avoid.

Add to that, one of the problems PHP shares with Ruby is its low barrier
of entry, being perceived as an “easy” language – only PHP seems to have
this to a greater degree. People who learn Ruby and Rails are at least
trying to learn to program. People who learn PHP usually start as
designers, who learn a bit of HTML and CSS, and need a tiny bit of
server-side logic in their HTML page, so they learn a bit of PHP or paste
a bit of code in…

That’s BS. I can argue there are plenty designers starting with RoR as the
first server side code that cannot tell Ruby from Rails.

I’d agree with you. The question is, how much of each is happening?

And, in particular, I see this happening in PHP with designers. I
don’t see
nearly as much of that happening in Ruby – they at least acknowledge
that
they’re going to be developers, even if it’s their first language.

First of all, PHP had object-orientedness tacked on after the fact. Now, this
can be done well, and it can be done poorly. In PHP’s case, it was done poorly
– I’d almost rather not use them at all.

Are you talking about PHP4 or PHP5 there?

By contrast, Perl implemented OO rather well,

Now that’s funny.

And there’s the inconsistency, and layers of cruft from Really Bad decisions.
Stuff like mysql_escape_quotes. Or is it escape_quotes_mysql? Or maybe
mysql_really_escape_quotes? I always forget, and using the wrong one will
either corrupt my data or leave me open to SQL injection – nevertheless, I
must use it on every single database operation.

No, you must not.

Even Rails supports the idea of placeholder values (when you need to touch SQL
at all), and this is commonplace at the database API in Perl – the idea of
prepared statements comes to mind. This is a much easier habit to maintain –
and more efficient, too.

PHP has that support too, what’s the problem?

So the language itself doesn’t lend itself to particularly high quality in the
first place.

You can write Fortran in any language.

Add to that, one of the problems PHP shares with Ruby is its low barrier of
entry, being perceived as an “easy” language – only PHP seems to have this to
a greater degree. People who learn Ruby and Rails are at least trying to learn
to program. People who learn PHP usually start as designers, who learn a bit
of HTML and CSS, and need a tiny bit of server-side logic in their HTML page,
so they learn a bit of PHP or paste a bit of code in…

That’s BS. I can argue there are plenty designers starting with RoR as
the
first server side code that cannot tell Ruby from Rails.

Now, this is all circumstantial evidence. It’s possible there’s a large, well-
organized community of quality PHP software. Maybe things have changed since I
last used it.

They sure did.

But I’ve also been on two language rants in the past two days, and I should
stop.

Definitely.

Regards,
Rimantas

On 2009-12-08, David M. [email protected] wrote:

Compare any of these to C. You probably could write a web app in C. You
probably could be about as efficient with it. You could be disciplined enough
to never do pointer arithmetic,

This is hardly necessary. Pointer arithmetic can certainly be done
safely.

Think about that for a moment. In languages like Ruby and PHP, a buffer
overflow is actually not possible. You might get it in a third-party library
written in another language (like C), but you can’t do it yourself. But in C,
it’s not only possible, it’s a very easy mistake to make, and a hard one to
avoid.

I’m not sold on this. I don’t think I’ve had any buffer overflows in my
code in years. It’s pretty easy – if I’m about to use a buffer, I make
sure I know what I’m using it for and that I cap any copies and/or
report
failure if there’s not enough space.

I agree that it requires actual effort, as opposed to being implicit.

FWIW, I hate PHP. I had to learn it once, and I still have to think
about
bleach any time I have to think about it. The killer for me was
discovering
that there was a thing like a function pointer which could be used only
for user-defined functions, not built-in functions.

-s