Are languages which are very customizable, like Python (see for example goto in Python, lightweight Python type-checking) and Javascript (see jQuery for one example of this) more widely used than languages which cannot be customized very much?
-
3I read the title and thought instantly of C in a monkey suit ;)– TrezoidCommented Mar 18, 2011 at 2:37
-
2This one time I heard the python interpreter was written in C...does that mean python is just C in a snake suit?– PemdasCommented Mar 18, 2011 at 2:56
-
@Pemdas, what's the connection between Python and snakes?– SK-logicCommented Mar 18, 2011 at 11:29
-
2@SK-Logic What type of animal do you consider a python to be?– glenatronCommented Mar 18, 2011 at 12:04
-
@glenatron, why do you call Monty Python group an animal?– SK-logicCommented Mar 18, 2011 at 13:18
4 Answers
These languages are well suited for rapid prototyping and for small projects. So they are popular in web development. But in a large project, the use of such languages only increases the complexity. Because you can never be sure which type you are working with in a given piece of code.
Are customizable languages widely used, may or may not be. But they sure stay around for a long time.
The thing about survival is a term called 'evolution'. You can never solve problems you can possibly face in the future right 'now'. There are many reasons for that. I think its basically because we can't anticipate what problems we may try to solve in the future. We don't even know what kind of problem those will be. We don't know how complex they will be. Hence the only way to ensure survival over long term is to open the door for 'Extensibility'. There are many languages which open doors for 'extensibility'. How they open doors for extensibility differs.
I think speaking from a purely layman's perspective. Most people confuse libraries and existing syntax tricks as extensibility. Which is not true. Lisp family of languages have macros to deal with this problem, you can easily build a DSL bend and extend the language the way you want it. However the cost you pay for it is to write the language in an homoiconic syntax, which often doesn't go down with a lot of people.
In the scripting languages arena, Perl is emerging as a very extensible and customizable language these days. Modules like Devel::Declare, Moose, Moosex::'sugar' , Try::Tiny et al are making language extensibility very simple. This is what true customization and extensibility will look like. Perl 6 is more customizable in the terms that there the grammar itself is changeable!!! The advantage of these sort of things if after some time you come to know something more powerful and better can be done with more power and alternate syntax you can easily do it without messing up with interpreter core and breaking backwards compatibility. Its only a syntax plugin after all, it will be there as long you need it. Then when the new stuff comes along you can shift to with the only code changes being import statements. These sort of languages will hang on for real long time because they combine power, flexibility and fast pace of development in one umbrella at the same time being extensible and evolvable.
On the other hand you can clearly see what happens when such level of extensibility is absent. The syntax becomes very brittle, any thing you try to do to change it breaks backwards compatibility and maintaining the grammar and growing it over time takes a lot of time. C++ and Java are standing testimonies to this things. Many other scripting language will soon follow.
Python is a very good language in the sense its simple, very easily readable and maintainable. But its hardly customizable and extensible in the 'true sense'. Its powers lie elsewhere. Its easy to learn and some very good web frameworks are out there to help out folks who are planning to make it big in that area.
So extensible and customizable languages may not be widely used, but they will sure last long.
I'm not sure that a programming language can be "customizable" in the full sense of that word. What you're talking about has more to do with what features a language offers and if those features are "powerful" enough to let you emulate things from other languages. Then to ask if this vague category is more popular than the alternative.
Well, since C++, Java, and the rest of the C/Simula derived ilk are the most popular, I guess the answer is no. Which isn't to say those languages don't have similar abilities in some regards, but those dynamic languages tend to make it a bit easier to extend with new features. Likewise while Python, Ruby, and other dynamic languages are pretty popular in the web space, the MOST extensible language, Lisp, continues to carry on at roughly same relative popularity it's always had.
To be clear though, I think a lot of misconceptions are floating about in the other answers though. A language does not have to be dynamic or unsafe to be extensible. Haskell is probably the most powerful language I'm aware of besides Lisp, and also the most strongly typed language. Haskell's combination of functional programming with inferred, highly-generic typing means that functions can be very general but also compile time enforced for correct types and safe usage. Being able to rig up a goto in Python is neat, or to use method-chaining to act like a mini-language in JQuery is really clever, but in a powerful enough language you don't even need those constructs.
Lisp is probably the most "customizable"(1) mainstream programming language available--using macros, it's possible to entirely change the syntax and add language features. Just look at Common Lisp--it was standardized in 1984 and has since added an advanced object-oriented system (CLOS) along with countless other major and minor features. Java, on the other hand, is about as un-"customizable" as you can get--you have no choice but to use its particular form of object-oriented programming, and like it (you don't even get operator overloading). If you want a language feature, you have to cross your fingers and wait years for the next version of the language to come out.
Now, look at the TIOBE Index. Java is ranked as the number 1 language, whereas all lisp dialects together rank as number 15. After Java are C, C++, and C#, all of them highly un-customizable.
So no, customizable languages are not more popular.
(1) I'm assuming you mean something along the lines of support for metaprogramming and other ways of extending the language. Python isn't especially customizable in this regard.