I'm a PHP developer. I like PHP! It is a really good language if you know how to use it, but I know it allows very bad design sometimes.

It reminds me of JavaScript which has good parts and bad parts. One particular project, CoffeeScript, tries to focus only on the good parts, forcing you to write good code.

I was thinking if something similar could be done with PHP... A new syntax that would be compiled only to good PHP code taking advatage of all the new and exciting stuff we can get with PHP 5.3.

So, getting ahead of some people, I'll ask: Why create a new language on top of PHP if you can just use Ruby or Python or something else?

  • PHP is easy to deploy anywhere
  • The language itself has a lot of good features and ideas
  • There are lots of good libraries written in PHP
  • ...

So, my real questions here are...

  • Is this a stupid idea? Why would it be? Do you think CoffeeScript is stupid?
  • How do someone starts to create a new language on top of another? I know nothing about this, but I would like to learn. Where to start?

Solution 1:

The idea is definitely not stupid, especially if executed well.

I like coffeescript a lot, but it has it's approach has downsides as well. Debugging a coffeescript script still requires you read the generated Javascript code, which can be tedious, since you haven't written it actually yourself.

I've understood that Jeremy Ashkenas, the creator of coffeescript has started to work on coffeescript after reading "Create your own freaking awesome programming language" by Marc-André Cournoyer.

Good luck!

Solution 2:

The reason CoffeScript is a good idea is that if developers want to run code in a client browser they have to use javascript; so the only way to program in a different language is to allow that language to be convertible to javascript.

I'm not sure the same really applies to server side programming. If you've got issues with PHP and want to use a new language there is no real advantage to having that language generate PHP.

On the other hand, a language that was very similar to PHP, but fixed some of the flaws would be a great idea.

Solution 3:

Heh, great idea. My thoughts, some contradictory...

There are precedents for civilizing bad languages by putting syntax preprocessors in front of them.

  • In the early days of Unix, Fortran was popular and about the only portable language because most machines had no C compiler. But the vanilla Fortran of the day didn't even have block structured if-then-else, just a goofy single-statement if or an if-goto. So, the Ratfor language was implemented as a preprocessor for Fortran-66.
  • I believe there were (are?) Cobol preprocessors that presumably dealt with the verbosity and limitations of early Cobol dialects.
  • To this day Unix-derived systems ship with a macro processor called m4.
  • Several CSS preprocessors are available today, most notably Sass and LESS.

But...

  • Just let it die, and the sooner the better
  • The problem isn't really in the syntax.
  • I don't see much of a JavaScript-PHP parallel. JavaScript is a great language. It's kind of the opposite of PHP.
  • I'm not sure why you say that PHP is a great language. It's one of the worst. Every decent feature is a patch or repatch in a recent version.
  • As you noted, there is a fixed-up version of PHP already: it's called Ruby and, as a language, it's near-perfect. There is another fixed-up version called Python. The world would be better off in the long run if we support the better systems.

Solution 4:

It is here now. A new language which is to PHP what CoffeeScript is to Javascript. (I.e., awesome.)

SNOWSCRIPT

Snowscript code looks like this:


fn how_big_is_it(number)
    if number < 100
        <- "small"
    else
        <- "big"

PHP output looks like this:


function how_big_is_it($number) {
    if ($number < 100) {
        return "small";
    } else {
        return "big";
    }
}

All it needs now, is you.