There's a reason why it can be argued that tabs are a bad idea. Tabs overlap the functionality of your choice of window manager and panel, and don't behave as your choice of window manager and panel. It can be argued that they're reinventing your desktop environment and have a long way to evolve into something as good as the existing desktop environments, for no minimally relevant advantage at all.
I've wanted to get rid of tabs long ago; it took me a lot of time to switch over to Chrome/Chromium and it was because of them. I ended up falling for these tabs, but not because they convinced me that they were any good; it's just that Firefox is so horrendously, abhorrently slow (especially at rendering text) in GNU/Linux that it drove me sick.
We're living though times for UNIX. Every good thing UNIX ever had and abstracted is getting killed. The command line (we need a big GUI project for every retarded thing you'd do in a line of shell), the window manager (tabs, and the GNOME guys want to kill it too for some aberrantly retarded reason), the X window system (they want to turn it into a Terminal Server type hack), and even the freaking filesystem (they seem to think people won't understand directories and will be settled with just "My Music", "My Porn" and whatever cheesy stupid thing they come up with).
The biggest bug: OpenGL for GNU/Linux is still under work.
If only Mozilla dedicated to the GNU/Linux version a tenth of the effort it dedicates to the Windows version, it wouldn't be easily the slowest browser in the platform and lack such essential 4.0 features. As it stands, it has nothing to do with Google Chrome.
If all Mozilla cares for is fighting MSIE, they should drop the Linux port rather than posting an unfinished, unoptimized product.
People don't know about it, but I've been secretly fixing this issue by making all my passwords a series of asterisks. This way I'm password-obscuring-agnostic. The actual password is the number of asterisks it has.
True. Those failing for the social status/glamour/fashion/style/trend scheme are certainly retarded. The kind of people that make the gross of our society.
Windows Vista is Defective by Design. It includes Digital Restrictions Malware designed to turn your computer into a mafiaa corporations' surveillance unit, taking control of your files, prohibiting you from performing certain operations on your own files, and prohibiting you from accessing and modifying your own kernel, even in memory.
Therefore, all machines running Vista area ffected with malware.
Indeed, what those business idiots call "high-end" is just "high-price-end". And we all know Apple's products are grossly, obscenely overpriced. That doesn't mean you're getting a better system though. And it includes the license for their Defective by Design operating system, which you wouldn't pay for if you were using a free OS that is free. Another very expensive thing included in Apple products is "style" (the popular intangible feature that serves no use other than making you feel better than others). Apple's metrosexual-appeal is as expensive as gold coating.
I suppose Mac people will never want to buy cheap, even if Apple decided to sell something at fair prices for once. They need to feel superior, stylish and trendy, and for that, they need to be paying for something more expensive than their neighbour's, regardless of the actual performance or quality.
We weren't (or at least I wasn't) talking about performance scaling, but about coding scaling. How does it get when the project keeps growing up. PHP has a problem, because all functions and all classes and all globals share unique, global namespaces, so clashing gets far more likely, you need ugly prefixing, you don't have hierarchical namespaces for variables, classes and functions, can't define a class as a property of a class (which would have provided a workaround), and so on.
I agree that PHP has strengths in string manipulation, but have you seen Python's? It has Perl-compatible regular expressions as well, but much better built-in string handling, and better Unicode support. For example, slicing (which you currently can't do in PHP if you want Unicode support): you can do things such as 'hello Slashdot'[2:-4:2], which illustrates several things PHP cannot do: slice an expression (lame), slice a chunk (not just a single item), step slide. Strings are sequences, so operations such as filter(lambda x: x in 'aeiou', 'vowels only, please') are possible (it returns 'oeoeae', the vowels fom that string). As you can see, Python's string manipulation is terrific.
IMO, date and time functions from the standard library suck in both PHP and Python; PHP's and Python's time are based on the C library (insta-fail), and Python's newer one looks incomplete and complicated to me.
Session support in PHP is great, though many Python frameworks do the same for you.
Database support in PHP, prior to PDO, was wide but sucky, requiring a DB abstraction layer because they language didn't provide one. Python provides one, albeit a flawed one because the variable mark in SQL is allowed to differ (astonishingly stupid decision coming from the Python community, quite unusual).
You can work in Python without any of the design pattern wankery either; in fact, Python is able to generalize and abstract patterns of code better than PHP does (and immensely better than Java). The idea is that the "ABC" design pattern shouldn't be about copypasting chunks code and changing variable names as they do in Java; it should be about calling a function or macro ABC that will do what's needed (generate the required classes or functions, modify existing ones, whatever). Python's support for metaprogramming is far beyond that of PHP (and Java's is null, and before Java people reply: no, their ugly hack for better typing which they call something like generic programming is not metaprogramming, not what I'm talking about).
PHP is a good tool for small to medium web applications, and an excellent tool for quick web hacks. Python is a much worse tool for quick web hacks, but, in my opinion, an even better tool for small to medium web applications. (And Java is an excellent tool for selling crap for buckets of money to idios, for ensuring you'll have work for years, and for ENTERPRISE SCALABLE PROFESSIONAL BUSINESS SOLUTIONS, but a sub-par tool for getting anything done, small or large.)
Python has proper lexical scoping, only you don't understand it. In Python, = is used to rebind variables. It's not Scheme's set!. If you use it, you obviously create local variables. And it works that way because = is also used to define a new variable. There's no Scheme's define, or JavaScript's var.
However, lexical scoping works as expected and defined in holy book SICP section 3.2, "The Environment Model of Evaluation". You can access variables defined in any lexically enclosing scopes anytime, and they can be shadowed. As in Scheme, these variables are bound to objects which can be modified, so you could, for example, mutate a list from an enclosing scope.
Whenever I need to reassign values to outer scopes, I box them with a list, creating them with box = [value] and setting them with box[0] = new_value, exactly like box and set-box! in Scheme. And if I need multiple values, a class to contain your arbitrary properties is an elegant solution.
Python 3000 will introduce the nonlocal declaration so that = works as a rebinder in the corresponding outer scope, much like Scheme's set!, and it'll come in handy, but you don't really need it to work.
Oh, my less-than signs were screwed up. Let me redo the last part of the post:
sorted(((i, j) for i in xrange(1, 21) for j in xrange(1, 21) if i % j and j < i), key=lambda x: -x[1])
That single Python one-line expression going to be some 30-40 lines of Java, and perhaps some 10-20 lines of PHP.
It obtains (lazily evaluating if possible) a sequence of couples of numbers i and j, for all i so that 1 <= i < 21, for all j so that 1 <= j < 21, if j is not a divisor of i and it's strictly lesser than i, then sorts it given a key function, passed by a named parameter, which is a lambda-expression (anonymous closure) defined inline for a one-time use.
It exhibits an amusing number of features Java and even PHP lack. Look, no stupid new classes, no stupid interfaces to inherit, no stupid factory classes, no "design pattern" wankery, no error-prone imperative programming, no error-prone effects, and takes no effort to write. It only requires knowledge, which you obviously lack.
Please, don't make public your ignorance, even if you're an Anonymous Coward.
For starters, replying with a buzzword instead of a point, even if a satiric one, is often quite stupid.
Second, no. Starting with the interface is a terribly stupid thing to do. The people you claim to be doing this, i.e. those who come from languages such as Python, are exactly the ones who are polar opposites with this tendency, being much more prone to formal design and analysis as well as correctness before all in the best style from MIT.
Third, PHP is one of these newer languages. In fact, both Python and Ruby are older than PHP. And they are far more mature as languages, especially Python, but it's not just because of their age.
Fourth, Python will scale much better than PHP and Java will. PHP is grossly limited due to its lack of lexical scoping or namespaces, and Java has some issues which turn the whole thing into an ugly mess much sooner than it would on Python.
Fifth, "real companies" who follow "enterprise scalable professional multi-tier best-practices for mission-critical enterprise-grade XML-based turnkey business applications that optimize cash flows and provide for lower TCO" are the ones failing it every time, producing butt ugly lumps of unmaintainable, horrendous code for as much as 20 times the cost of smarter development with much fewer, smarter developers using a smarter, better featured language. Productivity of dynamic, functional and truly object-oriented languages such as Smalltalk, Ruby or Python ranges from 5 to 30 times higher than Java (counting each environment's standard libraries as well), also increasing maintainability, and reusability is much higher because they have proper type systems.
You seem to be utterly ignorant about the features of these languages, and think the only thing you know is the only good way to do things, just because most companies are ran by retards who are as ignorant as you.
We'll talk about PHP and Java the day you can do this with them:
sorted(((i, j) for i in xrange(1, 21) for j in xrange(1, 21) if i % j and j i), key=lambda x: -x[1])
That single Python one-line expression going to be some 30-40 lines of Java, and perhaps some 10-20 lines of PHP.
It obtains (lazily evaluating if possible) a sequence of couples of numbers i and j, for all i so that 1 = i 21, for all j so that 1 = j 21, if j is not a divisor of i and it's strictly lesser than i, then sorts it given a key function, passed by a named parameter, which is a lambda-expression (anonymous closure) defined inline for a one-time use.
It exhibits an amusing number of features Java and even PHP lack. Look, no stupid new classes, no stupid interfaces to inherit, no stupid factory classes, no "design pattern" wankery, no error-prone imperative programming, no error-prone effects, and takes no effort to write. It only requires knowledge, which you obviously lack.
Or Lua, or Ruby, or perhaps Smalltalk. And most definitely Scheme, which is a LISP born in the freaking 70s, over 30 years ago, from which most of these new languages are borrowing their most impressive features. (Some of these came from even older LISPs, of course.)
Of course, again, not my point. My point (albeit poorly expressed) is that it shouldn't have been necessary to wrap your regexes in characters which then you can't use without backslashing, because it bites when you try to use dynamically generated regexes. It's an example of unbright design, since it only exists "cuz Perl had it" and to specify options which you could easily and far more cleanly provide in a separate parameter (also easier to introspect), and also had a way to set from within the regex. It's unwise to develop, maintain, document, teach and have to learn many different ways to do the same thing, especially if some of these ways only cause trouble.
As for what to do if a function needs an array of regex? Well, the natural answer would be to use the language's means for pairing or grouping elements, be it a LISP cons cell, a Python tuple, or a PHP array(). Failing that, there's the ability to change options from within regexes, too.
Well, of course. But they're useless. There's no need to indicate that if they can just start at the beginning of the string and end at the end of the string, since options can be specified inside the regex, or in a separate parameter. That's what I meant when I said I wonder why they're required - more like that I wonder why they made it so.
If they change . to + without fixing the shitty way values are automatically converted from one type to another in PHP, we'll end up in the same error-prone, insane crap that JavaScript has.
Of course, if he had added that weak typing needed to go (note: NOT DYNAMIC TYPING), then I'll agree. Then agree to get rid of ->.
But huge productivity increases, because of that? Using three neurons to decide whether you want numeric addition or string concatenation, and typing + instead of.? Give me a break.
Real productivity (and readability) increases come from features such as first-class functions, lexical scoping or list comprehensions.
If you think PHP is like C for the web, you haven't understood it correctly, and you're not using it to its potential, or even close. (And don't even get me started on porting real C/C++ code to PHP.)
Perl's native syntax for regex is the least of my concern with Perl's insane syntax. Reindentation is something you do in every language, regardless of if it's Perl or PHP, and you never reindent lines one by one, but use a decent editor that will allow you to select multiple lines and indent. PHP is not a real OOP language, and it has a poor class system modelled after Java's.
Better Unicode support, which is a major, desirable feature, as others pointed out, and as far as I know, magic_quotes won't be deprecated in 5.3. Just deprecating magic_quotes, the last piece of shit to get rid of (the other two were register_globals and safe_mode) justifies a new major version giving PHP a refreshed image. They finally got rid of three of the worst features ever thought in a programming language other than COBOL, FORTRAN, BASIC, RPG and similar crap.
Now they need to get rid of the fatal error on function redefinition or function not found stupidity (that was REALLY retarded, probably the single worst feature after the three I mentioned), lexical scoping, syntax for lambda-expressions, first-class functions, better garbage collection, true object-orientation, a decent class system (i.e. one that's not modelled after Java's), operator overloading, associative arrays with support for non-string keys, decent iterators which don't require you to define 235789051 methods - just one (next) as a minimum, generators, coroutines, threads, a decent eval without the return insanity, and functional programming tools. Oh, wait, they need Python!
On top of that, I'd get rid of statements (make all of them expressions), add guaranteed tail-call elimination and get rid of the dollar sign.
Lol, somebody actually got trolled at my purposeful exaggeration of facts and modded it down again, as well as some of its nested replies. Kids these days...
There's a reason why it can be argued that tabs are a bad idea. Tabs overlap the functionality of your choice of window manager and panel, and don't behave as your choice of window manager and panel. It can be argued that they're reinventing your desktop environment and have a long way to evolve into something as good as the existing desktop environments, for no minimally relevant advantage at all.
I've wanted to get rid of tabs long ago; it took me a lot of time to switch over to Chrome/Chromium and it was because of them. I ended up falling for these tabs, but not because they convinced me that they were any good; it's just that Firefox is so horrendously, abhorrently slow (especially at rendering text) in GNU/Linux that it drove me sick.
We're living though times for UNIX. Every good thing UNIX ever had and abstracted is getting killed. The command line (we need a big GUI project for every retarded thing you'd do in a line of shell), the window manager (tabs, and the GNOME guys want to kill it too for some aberrantly retarded reason), the X window system (they want to turn it into a Terminal Server type hack), and even the freaking filesystem (they seem to think people won't understand directories and will be settled with just "My Music", "My Porn" and whatever cheesy stupid thing they come up with).
I'd equip cars with near-field communication... the only message in the protocol would be "Fuck you!"
The biggest bug: OpenGL for GNU/Linux is still under work.
If only Mozilla dedicated to the GNU/Linux version a tenth of the effort it dedicates to the Windows version, it wouldn't be easily the slowest browser in the platform and lack such essential 4.0 features. As it stands, it has nothing to do with Google Chrome.
If all Mozilla cares for is fighting MSIE, they should drop the Linux port rather than posting an unfinished, unoptimized product.
People don't know about it, but I've been secretly fixing this issue by making all my passwords a series of asterisks. This way I'm password-obscuring-agnostic. The actual password is the number of asterisks it has.
From the current moderation of my post:
50% Insightful
30% Troll
20% Overrated
I can pull certain statistics from the Slashdot user base:
50% Metrosexual Apple fanboys
50% Rest
True. Those failing for the social status/glamour/fashion/style/trend scheme are certainly retarded. The kind of people that make the gross of our society.
Windows Vista is Defective by Design. It includes Digital Restrictions Malware designed to turn your computer into a mafiaa corporations' surveillance unit, taking control of your files, prohibiting you from performing certain operations on your own files, and prohibiting you from accessing and modifying your own kernel, even in memory.
Therefore, all machines running Vista area ffected with malware.
Indeed, what those business idiots call "high-end" is just "high-price-end". And we all know Apple's products are grossly, obscenely overpriced. That doesn't mean you're getting a better system though. And it includes the license for their Defective by Design operating system, which you wouldn't pay for if you were using a free OS that is free. Another very expensive thing included in Apple products is "style" (the popular intangible feature that serves no use other than making you feel better than others). Apple's metrosexual-appeal is as expensive as gold coating.
I suppose Mac people will never want to buy cheap, even if Apple decided to sell something at fair prices for once. They need to feel superior, stylish and trendy, and for that, they need to be paying for something more expensive than their neighbour's, regardless of the actual performance or quality.
This indeed seems to be a new distro, but it's aimed at Gentoo ricers. CFLAGS JUST KICKED IN, YO!
VROOM VROOOM!
What an easy way to get positive karma.
We weren't (or at least I wasn't) talking about performance scaling, but about coding scaling. How does it get when the project keeps growing up. PHP has a problem, because all functions and all classes and all globals share unique, global namespaces, so clashing gets far more likely, you need ugly prefixing, you don't have hierarchical namespaces for variables, classes and functions, can't define a class as a property of a class (which would have provided a workaround), and so on.
I agree that PHP has strengths in string manipulation, but have you seen Python's? It has Perl-compatible regular expressions as well, but much better built-in string handling, and better Unicode support. For example, slicing (which you currently can't do in PHP if you want Unicode support): you can do things such as 'hello Slashdot'[2:-4:2], which illustrates several things PHP cannot do: slice an expression (lame), slice a chunk (not just a single item), step slide. Strings are sequences, so operations such as filter(lambda x: x in 'aeiou', 'vowels only, please') are possible (it returns 'oeoeae', the vowels fom that string). As you can see, Python's string manipulation is terrific.
IMO, date and time functions from the standard library suck in both PHP and Python; PHP's and Python's time are based on the C library (insta-fail), and Python's newer one looks incomplete and complicated to me.
Session support in PHP is great, though many Python frameworks do the same for you.
Database support in PHP, prior to PDO, was wide but sucky, requiring a DB abstraction layer because they language didn't provide one. Python provides one, albeit a flawed one because the variable mark in SQL is allowed to differ (astonishingly stupid decision coming from the Python community, quite unusual).
You can work in Python without any of the design pattern wankery either; in fact, Python is able to generalize and abstract patterns of code better than PHP does (and immensely better than Java). The idea is that the "ABC" design pattern shouldn't be about copypasting chunks code and changing variable names as they do in Java; it should be about calling a function or macro ABC that will do what's needed (generate the required classes or functions, modify existing ones, whatever). Python's support for metaprogramming is far beyond that of PHP (and Java's is null, and before Java people reply: no, their ugly hack for better typing which they call something like generic programming is not metaprogramming, not what I'm talking about).
PHP is a good tool for small to medium web applications, and an excellent tool for quick web hacks. Python is a much worse tool for quick web hacks, but, in my opinion, an even better tool for small to medium web applications. (And Java is an excellent tool for selling crap for buckets of money to idios, for ensuring you'll have work for years, and for ENTERPRISE SCALABLE PROFESSIONAL BUSINESS SOLUTIONS, but a sub-par tool for getting anything done, small or large.)
Python has proper lexical scoping, only you don't understand it. In Python, = is used to rebind variables. It's not Scheme's set!. If you use it, you obviously create local variables. And it works that way because = is also used to define a new variable. There's no Scheme's define, or JavaScript's var.
However, lexical scoping works as expected and defined in holy book SICP section 3.2, "The Environment Model of Evaluation". You can access variables defined in any lexically enclosing scopes anytime, and they can be shadowed. As in Scheme, these variables are bound to objects which can be modified, so you could, for example, mutate a list from an enclosing scope.
Whenever I need to reassign values to outer scopes, I box them with a list, creating them with box = [value] and setting them with box[0] = new_value, exactly like box and set-box! in Scheme. And if I need multiple values, a class to contain your arbitrary properties is an elegant solution.
Python 3000 will introduce the nonlocal declaration so that = works as a rebinder in the corresponding outer scope, much like Scheme's set!, and it'll come in handy, but you don't really need it to work.
Oh, my less-than signs were screwed up. Let me redo the last part of the post:
sorted(((i, j) for i in xrange(1, 21) for j in xrange(1, 21) if i % j and j < i), key=lambda x: -x[1])
That single Python one-line expression going to be some 30-40 lines of Java, and perhaps some 10-20 lines of PHP.
It obtains (lazily evaluating if possible) a sequence of couples of numbers i and j, for all i so that 1 <= i < 21, for all j so that 1 <= j < 21, if j is not a divisor of i and it's strictly lesser than i, then sorts it given a key function, passed by a named parameter, which is a lambda-expression (anonymous closure) defined inline for a one-time use.
It exhibits an amusing number of features Java and even PHP lack. Look, no stupid new classes, no stupid interfaces to inherit, no stupid factory classes, no "design pattern" wankery, no error-prone imperative programming, no error-prone effects, and takes no effort to write. It only requires knowledge, which you obviously lack.
tl;dr version: read/watch SICP and STFU.
Please, don't make public your ignorance, even if you're an Anonymous Coward.
For starters, replying with a buzzword instead of a point, even if a satiric one, is often quite stupid.
Second, no. Starting with the interface is a terribly stupid thing to do. The people you claim to be doing this, i.e. those who come from languages such as Python, are exactly the ones who are polar opposites with this tendency, being much more prone to formal design and analysis as well as correctness before all in the best style from MIT.
Third, PHP is one of these newer languages. In fact, both Python and Ruby are older than PHP. And they are far more mature as languages, especially Python, but it's not just because of their age.
Fourth, Python will scale much better than PHP and Java will. PHP is grossly limited due to its lack of lexical scoping or namespaces, and Java has some issues which turn the whole thing into an ugly mess much sooner than it would on Python.
Fifth, "real companies" who follow "enterprise scalable professional multi-tier best-practices for mission-critical enterprise-grade XML-based turnkey business applications that optimize cash flows and provide for lower TCO" are the ones failing it every time, producing butt ugly lumps of unmaintainable, horrendous code for as much as 20 times the cost of smarter development with much fewer, smarter developers using a smarter, better featured language. Productivity of dynamic, functional and truly object-oriented languages such as Smalltalk, Ruby or Python ranges from 5 to 30 times higher than Java (counting each environment's standard libraries as well), also increasing maintainability, and reusability is much higher because they have proper type systems.
You seem to be utterly ignorant about the features of these languages, and think the only thing you know is the only good way to do things, just because most companies are ran by retards who are as ignorant as you.
We'll talk about PHP and Java the day you can do this with them:
sorted(((i, j) for i in xrange(1, 21) for j in xrange(1, 21) if i % j and j i), key=lambda x: -x[1])
That single Python one-line expression going to be some 30-40 lines of Java, and perhaps some 10-20 lines of PHP.
It obtains (lazily evaluating if possible) a sequence of couples of numbers i and j, for all i so that 1 = i 21, for all j so that 1 = j 21, if j is not a divisor of i and it's strictly lesser than i, then sorts it given a key function, passed by a named parameter, which is a lambda-expression (anonymous closure) defined inline for a one-time use.
It exhibits an amusing number of features Java and even PHP lack. Look, no stupid new classes, no stupid interfaces to inherit, no stupid factory classes, no "design pattern" wankery, no error-prone imperative programming, no error-prone effects, and takes no effort to write. It only requires knowledge, which you obviously lack.
tl;dr version: read/watch SICP and STFU.
Or Lua, or Ruby, or perhaps Smalltalk. And most definitely Scheme, which is a LISP born in the freaking 70s, over 30 years ago, from which most of these new languages are borrowing their most impressive features. (Some of these came from even older LISPs, of course.)
Of course, again, not my point. My point (albeit poorly expressed) is that it shouldn't have been necessary to wrap your regexes in characters which then you can't use without backslashing, because it bites when you try to use dynamically generated regexes. It's an example of unbright design, since it only exists "cuz Perl had it" and to specify options which you could easily and far more cleanly provide in a separate parameter (also easier to introspect), and also had a way to set from within the regex. It's unwise to develop, maintain, document, teach and have to learn many different ways to do the same thing, especially if some of these ways only cause trouble.
As for what to do if a function needs an array of regex? Well, the natural answer would be to use the language's means for pairing or grouping elements, be it a LISP cons cell, a Python tuple, or a PHP array(). Failing that, there's the ability to change options from within regexes, too.
Well, of course. But they're useless. There's no need to indicate that if they can just start at the beginning of the string and end at the end of the string, since options can be specified inside the regex, or in a separate parameter. That's what I meant when I said I wonder why they're required - more like that I wonder why they made it so.
What the heck is parent modded insightful?
.? Give me a break.
If they change . to + without fixing the shitty way values are automatically converted from one type to another in PHP, we'll end up in the same error-prone, insane crap that JavaScript has.
Of course, if he had added that weak typing needed to go (note: NOT DYNAMIC TYPING), then I'll agree. Then agree to get rid of ->.
But huge productivity increases, because of that? Using three neurons to decide whether you want numeric addition or string concatenation, and typing + instead of
Real productivity (and readability) increases come from features such as first-class functions, lexical scoping or list comprehensions.
Do you know Python or Ruby? I cannot take your opinion seriously until you do.
10/10 10/10 10/10, listen to this man, he knows what he's talking about.
You're the kind of person I like to work with.
One would thus wonder why the slashes are required, possibly messing up with variable regex.
2/10
If you think PHP is like C for the web, you haven't understood it correctly, and you're not using it to its potential, or even close. (And don't even get me started on porting real C/C++ code to PHP.)
Perl's native syntax for regex is the least of my concern with Perl's insane syntax. Reindentation is something you do in every language, regardless of if it's Perl or PHP, and you never reindent lines one by one, but use a decent editor that will allow you to select multiple lines and indent. PHP is not a real OOP language, and it has a poor class system modelled after Java's.
Better Unicode support, which is a major, desirable feature, as others pointed out, and as far as I know, magic_quotes won't be deprecated in 5.3. Just deprecating magic_quotes, the last piece of shit to get rid of (the other two were register_globals and safe_mode) justifies a new major version giving PHP a refreshed image. They finally got rid of three of the worst features ever thought in a programming language other than COBOL, FORTRAN, BASIC, RPG and similar crap.
Now they need to get rid of the fatal error on function redefinition or function not found stupidity (that was REALLY retarded, probably the single worst feature after the three I mentioned), lexical scoping, syntax for lambda-expressions, first-class functions, better garbage collection, true object-orientation, a decent class system (i.e. one that's not modelled after Java's), operator overloading, associative arrays with support for non-string keys, decent iterators which don't require you to define 235789051 methods - just one (next) as a minimum, generators, coroutines, threads, a decent eval without the return insanity, and functional programming tools. Oh, wait, they need Python!
On top of that, I'd get rid of statements (make all of them expressions), add guaranteed tail-call elimination and get rid of the dollar sign.
Lol, somebody actually got trolled at my purposeful exaggeration of facts and modded it down again, as well as some of its nested replies. Kids these days...