This "either or" stance is false. Scripting *is* programming and to be a decent
programmer you need to know both a compiled language and a scripting language.
Programmers who know only one language can not be called professional
programmers in a true sense of the word (BTW in old days one needs to know
assembler and a high level language to be called a professional programmer;
Programmers who can program, say in only Fortran, or PL/1 were often called suckers;-)
Moreover in complex systems it's much better to use both.
The main advantage of a scripting language it that it permits writing five or more times less lines of code. For a
large system this is a tremendously important consideration. Many projects
died just because the codebase size exceed a reasonable limit and thus IQ of the development team and the
resources of the organization to maintain it.
When you have that much less code, it's not only easier and cheaper to maintain the codebase, the
design itself can be more better.
This is the same consideration that eventually killed usage of assembler language for writing compilers.
Moreover the time to create the first version and cost of the development can be considerable less. That's why scripting implementation is often done as a prototyping phaze.
But for most complex projects the development team can benefit from using both scriptnng and a regualar compiled language from the very beginning to the very end of the development cycle and coding different parts of the
system in the most appropriate language
In this case you need a scripting language that links well with your base compiled
implementation language (for example TCL+C ) but that gives a lot of
possibilities to structure the system more flexibly.
One important possibility is to have an internal scripting language for the system
that you are developing. That is an important advantage for a large class of
systems.
All-in-all scripting language is more important on the initial, exploratory part of the
system life cycle. As the system became more mature and design stabilize, it might make sense to rewhite some parts of the system in a high level language. If speed is of primary importance all the system can be rewritten, but this is a
pretty extreme and rare case.
One can consider Java as a language sitting between two chairs: it's too verbose and low level
to compete with scripting languages and it's too slow and inflexible to compete with classic
compiled languages like C and C++.
But still using Java is a compromise that helps to achieve some benefits of
scripting language and some benefits of compiled languages while using a single
language. The main problem is that you often need to write 5-10 times more lines
of codes in Java and that's a huge cost difference.
See http://www.softpanorama.org/Scripting/index.shtml for more inforamtion
A really good programmer should know at least one lower level so-called "real" programming language and one scripting language. It's even better if the two languages are compatible in that modules for the scripting language can easily be written in the low level language and conversely, the scripting language can be embedding in applications written in the low level language.
Not only does this give you the right-tool-for-the-job advantage, but also allows a large system to be divided in parts suitable for either tool.
Good combinations that I know of are: C and Perl C++ and Python Java and Python
Actually the right way is to use both languages (Score:3, Interesting)
This "either or" stance is false. Scripting *is* programming and to be a decent programmer you need to know both a compiled language and a scripting language. Programmers who know only one language can not be called professional programmers in a true sense of the word (BTW in old days one needs to know assembler and a high level language to be called a professional programmer; Programmers who can program, say in only Fortran, or PL/1 were often called suckers ;-)
Moreover in complex systems it's much better to use both.
The main advantage of a scripting language it that it permits writing five or more times less lines of code. For a large system this is a tremendously important consideration. Many projects died just because the codebase size exceed a reasonable limit and thus IQ of the development team and the resources of the organization to maintain it.
When you have that much less code, it's not only easier and cheaper to maintain the codebase, the design itself can be more better. This is the same consideration that eventually killed usage of assembler language for writing compilers. Moreover the time to create the first version and cost of the development can be considerable less. That's why scripting implementation is often done as a prototyping phaze.
But for most complex projects the development team can benefit from using both scriptnng and a regualar compiled language from the very beginning to the very end of the development cycle and coding different parts of the system in the most appropriate language
In this case you need a scripting language that links well with your base compiled implementation language (for example TCL+C ) but that gives a lot of possibilities to structure the system more flexibly.
One important possibility is to have an internal scripting language for the system that you are developing. That is an important advantage for a large class of systems.
All-in-all scripting language is more important on the initial, exploratory part of the system life cycle. As the system became more mature and design stabilize, it might make sense to rewhite some parts of the system in a high level language. If speed is of primary importance all the system can be rewritten, but this is a pretty extreme and rare case.
One can consider Java as a language sitting between two chairs: it's too verbose and low level to compete with scripting languages and it's too slow and inflexible to compete with classic compiled languages like C and C++.
But still using Java is a compromise that helps to achieve some benefits of scripting language and some benefits of compiled languages while using a single language. The main problem is that you often need to write 5-10 times more lines of codes in Java and that's a huge cost difference.
See http://www.softpanorama.org/Scripting/index.shtml for more inforamtion
- Nikolai Bezroukov
Re:Actually the right way is to use both languages (Score:1)
A really good programmer should know at least one lower level so-called "real" programming language and one scripting language. It's even better if the two languages are compatible in that modules for the scripting language can easily be written in the low level language and conversely, the scripting language can be embedding in applications written in the low level language.
Not only does this give you the right-tool-for-the-job advantage, but also allows a large system to be divided in parts suitable for either tool.
Good combinations that I know of are:
C and Perl
C++ and Python
Java and Python
I'm sure there are plenty more.