Seriously?! Someone downvoted this statement? It was completely factually true. People do indeed get confused by the difference between declarations and expressions. That's why some languages don't like to have that distinction.
With things like this I would like to advocate that Perl be treated as politics: something that's just not appropriate for HN. The thing is, when ever perl comes up some of us point out why we don't use it anymore but perl fans get seriously emotional about perl and start downvoting things they disagree with (much more so than ordinarily happens). I really suspect that if it weren't for the downvote limit some perl fan would have gone through and downvoted all my posts by now.
The problem is not whether Perl or C++ is bad. All languages have their own use cases. When their use cases go away, nobody feels the need to use the language. That's the golden rule for any language/tool that exists out there.
Perl, C++ and even lisp even over a half a century are still alive out there because there are use cases that those languages serve very well. And a majority of the people feel compelled to use them. The reason why people troll is they feel they can convince others not to use the language they hate.
C++ has a lot of problems, but compared to the other languages advantages it offers are many and it doesn't quite really have good competitors in those areas. We can go and talk about various other languages that you can compare with C++. But language itself is nothing. The surrounding ecosystem, libraries, books, help, availability of programmers, the total weight of the community with their combined wisdom over the years. In all those parameters, syntactical problems of a language count for very little things in the real world. There are more than sufficient real world scenarios out there where C++ has done the job exceedingly well.
I have myself maintained large C++ applications. And have faced many problem like what others have mentioned before. But given our efficiency requirements, Java wouldn't last for an hour in our production environments. And given all the conditions I mentioned, there isn't really a clear alternative apart from C++. And I'm sure vast majority of the C++ project have the same reasons to use C++.
Perl has its own niche. I don't really have time to write 100 line of Java/Python code with piles of exceptions of handling code just to read a file. I don't have time or the patience to deal with alien integration of Regular expression that Python offers. Python has other problems, It never evolved as a rapid scripting language, I still can't consider using python as a prototyping language. It has a little posh gloss to it. Python has nothing even remotely closer to CPAN. Compared to Perl, Python is no where in syntactical flexibility. Perl's documentation is just awesome, support for newbies is too good. And they seem to fixing all the problems in the new language Perl 6. I use scripting for rapid tasks which need urgent attentions. Some of that gets converted to production work. If that rapid aspect is missing I don't really consider that language a scripting language. And serious scripting language will have to provide means of easily modifying data of all kinds text especially. And also provide seamless integration with the Operating system.
Python never provided me all this. Its never could become my primary scripting language.
But I appreciate Python's other use cases. It has some awesome frameworks. And it has a very easy verbose syntax. And I'm sure it has plenty of use cases for people around.
Now just because you like Python, don't go on endlessly trolling Perl. This has a been going for a decade now and is getting a little boring. Both language have their use cases and are likely to be there for a real long time. Whether you like it or not.
As Bjarne Stroustrup mentions in his "The C++ programming lanaguage" - You must learn C++ not for a new syntax to do old things, but to build better systems.
I don't use Python, Ruby or any other scripting language unless someone pays me to. I was simply responding to inaccurate or tautological statements thrown around in this thread.