Scripting languages vs. "Real" languages

Back in the day when someone asked which programming languages someone knew, he would never list any of the scripting languages- those were thought of on a completely separate plane of existence from real (compiled) languages.

It's interesting and perhaps a bit sad that so many people today don't understand the tools that they're using and can't distinguish between an interpreted (scripting) language, a bytecode-compiled scripting language, and a traditional (compiled) programming language. I guess that on the PC, C/C++ are just about the only compiled languages in common use! It used to be that there were many more conventional programming languages than there were scripting languages, but it seems that the rage todays is all in the scripting languages. I would hazard a guess that there are people today who've written quite a bit of code who've never used a compiled language!

But then some of the new entries such as Python and Ruby are quite nice, aren't they? I wonder what life would have been like had Python been round instead of BASIC

Back in the day when someone asked which programming languages someone knew, he would never list any of the scripting languages- those were thought of on a completely separate plane of existence from real (compiled) languages.

It's interesting and perhaps a bit sad that so many people today don't understand the tools that they're using and can't distinguish between an interpreted (scripting) language, a bytecode-compiled scripting language, and a traditional (compiled) programming language. I guess that on the PC, C/C++ are just about the only compiled languages in common use! It used to be that there were many more conventional programming languages than there were scripting languages, but it seems that the rage todays is all in the scripting languages. I would hazard a guess that there are people today who've written quite a bit of code who've never used a compiled language!

But then some of the new entries such as Python and Ruby are quite nice, aren't they? I wonder what life would have been like had Python been round instead of BASIC

Scripting languages are full programming languages in their own right. Whether you get binary, bytecode or just a normal script out of it, you're still programming and you're still producing a usable program out at the end of it, regardless of how it is run.

Back in the day when someone asked which programming languages someone knew, he would never list any of the scripting languages- those were thought of on a completely separate plane of existence from real (compiled) languages.

Not by those who had thought about what a programming language is. True enough, the dynamic nature of scripting means people put together snippets that 'just work' in an informal way whereas the professionals are building big software and busy with the black art of linking and loading, but really this is a software users view of the world. Your compiler is a piece of software, your REPL is a piece of software, and you are a user. I compile lisp and I run lisp in the REPL...It's a mistake to think that they are fundamentally different activities. But there is still a snootiness among some people about 'scripting languages' (I would always prefer that a person define that term before using it) that clearly isn't shared by the brightest language designers and programmers.

I vote that the term ďscripting languageĒ be abolished. I don't know where it came from but surely we'd be better off without it, not only is it incredibly difficult to give a universally accepted meaning itís also mute.

Many will agree that a scripting language is generally dynamic; interpreted and good for getting things done quickly.

This sounds plausible but it falls apart when you consider one older language. Lisp is I have to say my favorite programming language and happens to be the second oldest still in widespread use (only by a couple of months). Lisp would certainly fit the above but can be compiled to machine code and or interpreted.

Depending on whom you ask youíll likely hear that Lisp is the most dynamic language you're ever going to use and itís an amazing tool for solving complex problems quickly and elegantly.

That said Lisp isnít a scripting language, itís never been called a scripting language and I doubt it ever will be.

Another bunch of people think that a scripting language is any language that has a large number of utilities and which is useful for a large verity of applications.

Java, x.NET, C/C++ anyone?

There is yet another group of people who say that a scripting language must have a well defined interface to the OSÖ thatís most languages lets be fair.

Then there are people who say that a scripting language is one which is good for writing throwaway code; and some not much else.

No two groups entirely agree with each other and generally use the title as an insult that can be applied to languages they donít understand or feel are beneath them for some reason.

Iím certainly guilty of putting down languages I donít like; Perl, Java, C++ etc. being the main ones.

Why make yourself manually compile and link files in a lower level language when you can incrementally compile as you evolve the code-base; I donít know but loads of people do it every day.

If you can do in one language in 5 minutes what might take a day in another and this speed of development means that the language is a scripting language then hell, letís all use scripting languages and be done with it .

I vote that the term ďscripting languageĒ be abolished. I don't know where it came from but surely we'd be better off without it, not only is it incredibly difficult to give a universally accepted meaning itís also mute.

It's very clear what a scripting language is, even if you don't know where it came from. There are operational tasks that administrators do, and these interpreted "scripting languages" are designed to make quick work of repetitive tasks. There's nothing pejorative about the term "scripting language" but someone who only knows how to code in scripting languages is certainly not a programmer in the full sense of the word, because coding in these languages means that there are certain types of tasks that are impossible to accomplish, and that you don't have to deal with fundamental aspects of software design.

If you want to say that a granny who drives to church on Sunday in her VW is on the same scale as Dale Earnhardt then I'll say you're wrong.

Originally Posted by netytan

Many will agree that a scripting language is generally dynamic; interpreted and good for getting things done quickly. This sounds plausible but it falls apart when you consider one older language. Lisp is I have to say my favorite programming language and happens to be the second oldest still in widespread use (only by a couple of months). Lisp would certainly fit the above but can be compiled to machine code and or interpreted.

I have no idea what you're talking about. LISP was not ever, and is not now, a scripting language.

Originally Posted by netytan

That said Lisp isnít a scripting language, itís never been called a scripting language and I doubt it ever will be.

Right, so what was your point?

Originally Posted by netytan

There is yet another group of people who say that a scripting language must have a well defined interface to the OSÖ thatís most languages lets be fair.

I agree with the first part of your statement- historically one of the strengths of scripting languages has been high level interface to shell services. But that's not true of most languages. Instead, those things are accomplished through library and native service calls. It is precisely the fact that these things are built-ins to scripting languages which is the difference.

Originally Posted by netytan

Why make yourself manually compile and link files in a lower level language when you can incrementally compile as you evolve the code-base; I donít know but loads of people do it every day.

If you care about doing things properly, then it's not enough that when you press the button you get your coffee. Some people like to have control over what code gets executed because they understand what's going on. I thought we already had this discussion in another thread. Wasn't it you who pointed out that when you know more (like a mechanic) it makes you a better driver? Why the sudden about-face? The fact is that this is exactly the issue- scripting languages are special purpose tools- but now they're being misapplied generally. The average guy (let's say 99.9999% of all users) coding an app in a scripting language has no idea what happens after he presses enter.

Originally Posted by netytan

If you can do in one language in 5 minutes what might take a day in another and this speed of development means that the language is a scripting language then hell, letís all use scripting languages and be done with it .

You have to choose the right tool for the job. If all you have is a hammer, then everything begins to look like a nail.

For my job (you're read some of my posts on assembler and object code so I thought you would have realized it by now) it isn't possible to use scripting languages. I write performance-sensitive code that has to be reliable (processing several million transactions per day) and so I have to understand my platform and know exactly what's going on.

It's interesting to hear all the lectures I get from univeristy students and people who are hobbyist programmers or academics who've never done a days work in their lives. You guys have a lot to learn!

So if it has to run lightning fast, you're not going to count stuff like java then? Much as I hate it, I'd never say it wasn't a programming language.

And you're wrong. You can do anything in most scripting languages by virtue of loading shared objects written in other languages that can do what you want.

Scripting languages is a term that needs to disappear, because it's interpreted doesn't make it any less a programming language. I refuse to concede that. Now I have some great skills in C, but I don't use it much. Do I call myself a non-programmer because I write good ruby? No. I'm a programmer through and through and what you're trying to argue is a ridiculous position.

So if it has to run lightning fast, you're not going to count stuff like java then? Much as I hate it, I'd never say it wasn't a programming language.

Absolutely not. Java is a pig and it's certainly not a language. It's an application development/deployment platform, it's a scripting platform and nobody uses it for performance-sensitive code or systems programming.

Originally Posted by LinuxPenguin

And you're wrong. You can do anything in most scripting languages by virtue of loading shared objects written in other languages that can do what you want.

LOL that's like saying you can code inline assembler in C. So what?

Originally Posted by LinuxPenguin

Now I have some great skills in C, but I don't use it much. Do I call myself a non-programmer because I write good ruby? No. I'm a programmer through and through and what you're trying to argue is a ridiculous position.

I don't know anything about you, so why take everything so personally? This is a general discussion but people can't discuss anything objectively?

The point is that writing apps is not the same as writing software. You can't write software in scripting languages. And a person who hasn't written and lived with significant amounts of code that deal with multitasking, serialization, interprocess communication, OS interface, resource management, recovery, etc., is just kidding himself if he thinks he's a good programmer. Programming is about more than just making a cool web page, boys and girls.

Comments on this post

crownjewel82 disagrees
: The ****. Have you even used Java or are you just spouting off nonsense someone told you.

I refute that allegation. Anything that's written in a scripting language is software by definition, as understood by me at least.

Take for example Perl, a scripting language, with the Tk libraries you can develop modal windows applications, or using CGI::Application makes it easy to develop Web applications. Both backed by perhaps the most famous of scripting languages, but applications nonetheless.

Perhaps you're being a bit too facetious

The point is that writing apps is not the same as writing software.

, or maybe you can give us a definition that suits your line of argument, pick from one of these

Or maybe it's because programmers only work on operating systems , what a boring world that would be

The great thing about Object Oriented code is that it can make small, simple problems look like large, complex ones

09 F9 11 02
9D 74 E3 5B
D8 41 56 C5
63 56 88 C0
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems. -- Jamie ZawinskiDetavil - the devil is in the detail, allegedly, and I use the term advisedly, allegedly ... oh, no, wait I did ...BIT COINS ANYONE

Well I can see i'm not going to change your mind so i'm going to cease even trying.

However, just a reminder of the number of people here who do program in interpreted languages, Ax is one, I'm one. I suppose most web-based software aren't applications because they aren't written in a compiled language and run through a slow CGI Gateway... I suppose you can only have a real program if you slaved for hours over it. Or what about the perl compiler. Since perl is a scripting language, surely it would be mightily annoying that a guy wrote a genuine compiler for it (not just an interpreter bootstrap).

What you're arguing is bollocks. A perl/php/ruby/python/java/etc. application is just that, an application. You can even write an application in bash.

It's a pity you like to slave away, because the world of interpreted languages would spoil you.

Well I can see i'm not going to change your mind so i'm going to cease even trying.

You haven't addressed any of the issues directly- and you don't seem to have listened. It seems more like someone hit a panic button and you want to disagree for the sake of disagreeing. I didn't mean to say anything inflammatory, I was just remembering how much things have changed. If I had known the hue and cry this would create, I wouldn't have made the post. It says a lot that people react this way, and I guess, better than anything I could say, this proves my point.

I learned a lot from listening to people. It seems like nowadays, people think they know it all and prefer to argue. It's amazing what you can learn by listening, but I suppose, if you know it all, you've nothing further to learn.

Originally Posted by LinuxPenguin

I suppose most web-based software aren't applications because they aren't written in a compiled language and run through a slow CGI Gateway...

I wrote that there is a distinction between apps and software. Did you understand what I meant, or did you not read anything that I wrote, preferring to argue endlessly?

Originally Posted by LinuxPenguin

I suppose you can only have a real program if you slaved for hours over it. Or what about the perl compiler. Since perl is a scripting language, surely it would be mightily annoying that a guy wrote a genuine compiler for it (not just an interpreter bootstrap).

It's an interesting comment. I read that Perl is 17 years old this year. It's an example of a scripting language that's become a hybrid, as you point out.

Originally Posted by LinuxPenguin

A perl/php/ruby/python/java/etc. application is just that, an application. You can even write an application in bash.

Agreed. I do write bash scripts, and I've used other scripting languages, probably while (or well before) you were still ****ting your diapers I was just trying to clarify the distinction between applications and software and never suggested that you can't do useful things with scripting languages. I've written large administrative systems entirely using scripting languages. But that was an application. Based on that project I certainly could not claim to be a programmer.

Originally Posted by LinuxPenguin

It's a pity you like to slave away, because the world of interpreted languages would spoil you.

Ahh, now we've come back round to my point. You have to choose the right tool for the job. But if you have only one tool (scripting languages) then you can't choose anything, because you don't understand the distinction between the choices and what each one truly offers.

Maybe a little more reading and a little less jumping to conclusions would be helpful.

I refute that allegation. Anything that's written in a scripting language is software by definition, as understood by me at least.

It's certainly hardware as opposed to software. I'm not trying to play semantic games, I was trying to draw a useful distinction between applications and systems software (software, for short). In applications, you're solving different problems and much of the work is related to user interface and things of that nature.

In software, you're either designing base services or interfacing with low-level operating system features. In this world, you need to understand software engineering principles because of the performance and reliability exposure. You cannot use scripting languages for this sort of work.

This is really the main point I was trying to express.

Originally Posted by Axweildr

Take for example Perl, a scripting language, with the Tk libraries you can develop modal windows applications, or using CGI::Application makes it easy to develop Web applications. Both backed by perhaps the most famous of scripting languages, but applications nonetheless.

Yes, but you seem to be arguing with someone other than me. I said (repeatedly!) that you can write apps, but not software (read: "systems software") with scripting languages.

Since I am not interested in applications programming, and since my job is to write systems software, I make a very clear distinction between the tools and jobs those tools are suited for, that's all.

Originally Posted by Axweildr

Or maybe it's because programmers only work on operating systems , what a boring world that would be

Actually, it's quite fascinating! If you like a challenge and like to do things properly, give it a go sometime. You might really enjoy it!

You haven't addressed any of the issues directly- and you don't seem to have listened. It seems more like someone hit a panic button and you want to disagree for the sake of disagreeing. I didn't mean to say anything inflammatory, I was just remembering how much things have changed. If I had known the hue and cry this would create, I wouldn't have made the post. It says a lot that people react this way, and I guess, better than anything I could say, this proves my point.

I'd be wary saying that, since you've just done the exact same thing...

>>I learned a lot from listening to people. It seems like nowadays, people think they know it all and prefer to argue. It's amazing what you can learn by listening, but I suppose, if you know it all, you've nothing further to learn.

>>I wrote that there is a distinction between apps and software. Did you understand what I meant, or did you not read anything that I wrote, preferring to argue endlessly?

Yes, but I used the wrong word. Jesus... I don't argue endlessly, i'm arguing a point that most of the forum would back me up on (i'd be willing to wager that most of the C forum would too)

>>It's an interesting comment. I read that Perl is 17 years old this year. It's an example of a scripting language that's become a hybrid, as you point out.

Yes, and it's still a programmin language that creates software, as does python, ruby etc.

>>Agreed. I do write bash scripts, and I've used other scripting languages, probably while (or well before) you were still ****ting your diapers I was just trying to clarify the distinction between applications and software and never suggested that you can't do useful things with scripting languages. I've written large administrative systems entirely using scripting languages. But that was an application. Based on that project I certainly could not claim to be a programmer.

You're drawing a false distinction, this is what i'm telling you. You can call it software because that's what it is. your own definition is extremely restrictive. Whatever it's written in doesn't matter, interpreted or compiled ,it is software.

>>Ahh, now we've come back round to my point. You have to choose the right tool for the job. But if you have only one tool (scripting languages) then you can't choose anything, because you don't understand the distinction between the choices and what each one truly offers.

That was certainly not your point, you've just been trying to **** on scripting languages for the last few minutes. However, since you raised it, yes, that's MY point. Scripting languages are often the right tool for the job. I did point out that I personally have C experience. So why don't I use C more often? Because I have exactly what I need to do the job in scripting languages.

>>Maybe a little more reading and a little less jumping to conclusions would be helpful.