I've made a complete wiki engine (with also search engine integrated), which is easily skinable etc. (it's still at an early stage) , you can find an instance here http://en.baike.jisuanjiwenti.com/
You can check the line of code and the architecture of it, to have also developed with some PHP framework, I didn't find anything "weird" or to far from my old habit (and I do prefer compile-time check and possibility to run my server in gdb)
That seems really strange. I mean I get why their database is written in that, but I would imagine that their matching algorithms, at least, were written in something more easily adapted to change. It is one of the cases where I would want to write it in Lisp.
You do realize that the most widely used Ruby, PHP, Python, Perl, JavaScript and Java implementations all rely very heavily on C and/or C++ in one way or another, right?
Even when using JRuby, for example, it's still running on a JVM that's very likely implemented using one or both of C and C++.
Don't forget that the major web servers and web browsers are all implemented in C and/or C++, or in one of the many scripting language or other runtime implementations implemented using C and/or C++.
And that's ignoring all of the other infrastructure, like server operating systems, router software, and so forth that's implemented using C, or C++, or both.
Every line of code executing in your non-C or non-C++ web development language of choice likely depends on many thousands of lines of C and C++ code, even as you malign them here.
Yes, of course in the end everything runs on machine code. That does not imply though that it is reasonable to write your web applications in machine code or assembly or C or C++.
I'm not arguing whether or not C++ is actually suitable for web development, I just don't think your line of argumentation makes sense.
The majority of that C and C++ code is hand-written, and not just the output of a compiler or an assembler. They have directly been used to craft some of the most important, and often most difficult to implement, parts of the web application stack.
It's absurd to claim that C and C++ aren't suitable for web development when a huge part of basically every web app today is written in one or both of them. They aren't just suitable for web development; they are critical for it.
You're arguing semantics so let me continue the pattern.
In any non-trivial (jobs/money are on the line), web development != web programming. C/C++ is suitable for web programming, sure, but web DEVELOPMENT is an entirely different matter and is highly dependent on the availability of support, both community and professional, staff, and the competency threshold (or "learning curve") which is the knowledge you need to contribute meaningfully. The latter is one of the most important, especially since the vast majority of C/C++ programmers are not web developers, and doing something wrong in C++ is a lot easier than in memory managed, interpreted languages.
PyPy may someday be a viable replacement for CPython, but that day is not today. The viability becomes much more questionable as more and more of the Python community moves to Python 3, which PyPy basically does not support.
That's not the point. The point is that the argument that modern languages are written in or depend on C/C++ is fallacious: there is no need for C or C++ there, nor is there any technical advantage to their use. CMUCL and SBCL are almost entirely self-hosted, and things like PyPy and JikesRVM stand as strong examples in other languages.
Nobody here has said that C or C++ are absolutely needed. I merely pointed out the reality of the current situation, which is that both C and C++ make up a big part of basically any web app around today, even those written in some other popular languages.
Also note that I referred to "the most widely used" implementations of those languages. Yes, we know that PyPy exists, but CPython is still used far, far more often. Yes, we know about Common Lisp implementations like those you listed, but the reality is that they basically aren't used in practice. PyPy, CMUCL and SBCL are essentially irrelevant when considering the big picture. C and C++ are involved in one way or another in pretty much every other case.
If you refer to the original post in this thread, you will see that it was about the supposed unsuitability of C++ for web development. When we look at the entire picture, however, we do see that such sentiment is quite wrong. C and C++ play an absolutely huge role in modern web development and web applications, regardless of what some people may think.
When you have load/concurrency that needs you to move to C++ there's no doubt C++ is right.
When you reach that level though, you will usually have the resource to build infrastructure specifically designed to your need, dismissing any "general" purpose C++ framework.
All the example mentioned here are using in-house products for the most part.
I am not sure it is ever true that there are no doubts about C++ being "right." It might be "good enough," but it is a generally bad language that would not be my first choice for anything (I would sooner use C, but even that's not my top choice).
It's not about experience, it is about the language. Modern C++ is basically a motorized stone hand-ax. Even experienced C++ programmers are surprised by undefined behavior and unexpected semantics.
A significant amount of undefined (and unexpected) behavior in C++ is inherited from C, for compatibility. You'd sooner use C, and fall into undefined behavior quickly as well.
C++ is large and hard to master, but I don't think UB is the best reason to choose C over it.
I use both C++ and Scala on daily basis and there are just a few things I wish C++ had from Scala. On the other hand it is a huge time saver not having to worry about the JVM GC freeze.
C++11 has a few nice features, but it is really dragged down by low level issues. You talk about garbage collection like it is a problem, but C++ still does not even offer good garbage collection (not even optional garbage collection) for those situations where it makes sense. At least with Java you do not need to manually break cyclic references to prevent memory leaks.
As for closures, why would I want to specify which variables are captured? If I reference a variable from the enclosing environment, I capture it. If I mask the variable, I do not capture it. What point is there in explicitly declaring this? Frankly, the entire C++11 approach to closures is insane. Why add the extra syntax to explicitly declare how variables are captured, when capture by value covers all cases?
Is that the rest of some technical feature or set of features, or just that most college graduates can be expected to have some minimal competency with C++ coupled with the fact that the PHP interpreter was written in C? I am inclined to think this is more a pragmatic decision than a technically motivated one.
"[...] I started my first piece of code transforming PHP into C++. The languages are fairly similar syntactically and C++ drastically outperforms PHP when it comes to both CPU and memory usage."
It sounds to me like they wrote a PHP compiler that leverages GCC's optimizer. I am not seeing the technical motivation to use C++ for that; it would have been just as good to just produce GIMPLE. It looks like C++ was just chosen because it is what the developers knew, which is not all that far off from what I said.
(Edit: it is also worth pointing out that the motivation for this tool is to avoid having to write C++ code)
HipHop was originally just a source code converter. It basically took PHP source code and compiled it to C++ code. It's because they wanted to write in PHP but they needed C++ speed. But I don't think that's how it works anymore.
https://github.com/allan-simon/tatowiki/
I've made a complete wiki engine (with also search engine integrated), which is easily skinable etc. (it's still at an early stage) , you can find an instance here http://en.baike.jisuanjiwenti.com/
You can check the line of code and the architecture of it, to have also developed with some PHP framework, I didn't find anything "weird" or to far from my old habit (and I do prefer compile-time check and possibility to run my server in gdb)
In order to help me create faster application with cppcms, I've started to create a framework upon cppcms here https://github.com/allan-simon/cppcms-skeleton