NEWSLETTERS
 

CIO.com updates, insights and advice on technology, management and your career.

 
 
 
SUBSCRIBE TO CIO
 
Are you involved in setting the direction for your company's IT budget or strategy?

Apply today for a FREE subscription to CIO Magazine!

 


Fri, Nov 21, 2008 15:45 EST

The Differences Between Dynamic/Scripting Languages and "Regular" Languages No Longer Matter

Topic: Development

Blog: Developer Wisdom

Current Rating: 5 Comments: 7

If your software development experience comes from the old-style world of compiled languages, such as C++ or COBOL, you may be a little mystified by the new generations of scripting or dynamic languages. Now you have "modeling" languages to worry about, too. Do any of these names matter, when it comes down to choosing the best language to solve the programming problem? Probably not.

I'm not saying that there is no technical difference between the various language types. Absolutely, there is. It's just that, when push comes to shove—that is, when you need to answer, "Which is the right tool to solve this problem?"—the distinction is largely academic.

It used to mean a lot more. If you're an old fogey (as I am) you may need to revisit your assumptions. "Regular" programming languages were for "real" applications that would go into production. Scripting languages (starting with EXEC on the mainframe, which later became REXX) were about creating an automation process and running system commands. These evolved into shell scripts and batch languages. You could do a lot more than system commands with scripting languages, of course (Teach Yourself REXX in 21 Days, which I cowrote, included a checkers program), but writing applications wasn't their primary role. These scripting languages were (and are) dynamically typed, but that wasn't a big deal; it just contributed to their usefulness as "quick and dirty" tools.

Another side issue in the acceptance of interpreted languages may have been that they were inherently "open source." Anything you wrote was human readable rather than turned into executable code by a compiler. That openness is part of what inspired the early PC industry; you could download a BASIC program from a BBS or type in the code from a computer magazine and do something useful. But any "enterprise" application needed to be written in a compiled language to protect the company's intellectual property. (Or so the boss believed.)

As software development moved to the Internet generally and the Web specifically, it became more important for software to respond dynamically. The disadvantages of interpreted languages became irrelevant; an application server spends more time waiting for user input than responding to it. And these languages (back when we'd have said they were "emerging"—I've think they've now emerged) were all consciously open-source, with the geekiest developers quietly doing their Web-thing without the attention of anyone in the CXO hallway noticing if the software was written in company-approved .NET or Java.

Meanwhile, somewhere in there, "scripting languages" turned into "dynamic languages;" if anybody makes a technical distinction between "scripting" and "dynamic," I don't know what it is.

And then there's the question of whether a language ought to be classified as dynamic at all; that issue was raised after I wrongly called Scala a dynamic language in 6 Scripting Languages Your Developers Wish You'd Let Them Use (you can see my non-technical explanation in its comments). For Scala user Ricky Clarkson, writing in a discussion list, the distinction isn't necessarily whether the language has a type system, but if it is "an essence or a ceremony language." Apparently that mainly means whether the language requires explicit type annotations throughout; if it does, it's a ceremonious language. (Who comes up with these terms?!)

Clarkson added, "I expect that most people who say scripting language as a positive thing won't be able to define

You do not have flash or javascript support.
Average (3 votes)
5
 
 
Mon, Nov 24, 2008 1:26 EST
Anonymous user
Posted by: Jason
Rating: 90

Well... I believe that there is definate proven truth to the fact that scripting languages are just as useful as compiled - however I'd argue that compiled makes more sense.

With virtualization, risc processor technology, multicore systems, and everyone wanting faster and faster performance (and not usually getting it due to software bloat or whatever) ...

It seems to me - lean and mean processor command sets would make actual "processors" really shine! Think about it: If you want virtualization and have a fairly small command set on a processor, and that processor hosting an operating system that then can run "Virtual Machines" on it in such a way that the binary code in the virtual machine can be made to literally execute natively on the host processor - WOW - that would be some VERY SLICK utilization of current technology if you ask me.

Now... instead, the scripting trends, compile on demand, blah blah... trends turn this same scenario into a text parsing nightmare, waste of CPU time, and don't get me started on the the whole XML "revolution".

Sure... they say with todays fast computers you don't need to have tight code... or compiled code... so our collective advancements are - bloated code, more IP exposure risks, faster machines with 4 CPU's run as fast as a 386 with Windows for Work Groups ....

Sure... Compiled versus Scripted might not matter to you... I think we all suffer one way or another. Like everything these days, more products, faster turn around... less quality.. all to get it out there faster and get paid. Hmm.

--Jason

 
Fri, Dec 5, 2008 6:46 EST
Anonymous user
Posted by: JulesLt
Rating:

Jason - a few points of correction.

Firstly, many of these scripting languages can be compiled, just as you can run a traditional language in an interpreter. Look at the way JavaScript performance has been massively accelerated in Firefox, Safari and Chrome by converting it into byte code on a VM rather than interpreting.

Secondly - the likes of C++, Java, Obj-C, and all other object oriented programs are already taking place in a dynamic object runtime anyway - generally speaking most of us are coding at a high level of abstraction.

Thirdly - there's been some amazing progress in the area of low-level virtual machines, particularly in the area of converting the byte-code into native code by JIT compilation. LLVM has in some cases proven itself to beat C code compiled by gcc, because it's JIT compiler can make better optimizations - because it can make optimizations based on the real current running state of the system, which you simply can't do when compiling on a different machine.

For what it's worth, there is a machine out there with a CPU where the instruction set is basically the Java byte code - i.e. it is a hardware implementation of the JVM. Which is great until the JVM hits it's next version . . .

I think most of the things you identify (bloat, poor performance) actually relate to poor quality, rather than theoretical issues.

 
Mon, Nov 24, 2008 5:09 EST
Anonymous user
Posted by: Paul Sanders
Rating: 90

I would not use a weakly typed or fully interpreted language (e.g. PHP) for a large project. Compilers and type checking find a lot of bugs before the code is even run. Likewise, I would not write a batch file to copy a dozen files in C#, and interpreted langauages are great for quick 'n dirty programs that you write in 10 minutes, use and then forget about. For example, I analyse my web server log files using AWK.

In the end, it's horses for courses. Always has been, always will be.

 
Mon, Nov 24, 2008 5:49 EST
Anonymous user
Posted by: Stefan
Rating: 90

I wouldn't tell anyone to take his favorite pick from any scripting or 'regular' language for any application. Instead I would tell him to consider th 'big picture', i. e. who is going to use this application, in terms of number of users, possibly concurrently, and maybe including other applications! Also it is important to see where the application is going to run, and what the rstrictions on this machine are, what other applications it is competing with for ressources, etc..

When you look at a single-user application that is strongly interactive, then just about anyone would tell you: response time is not an issue, use a dynamic language - because it is fast to write and test. But if that application is linked to some kind of online service, together with thousands of like applications at the same time, suddenly there may be a bottleneck at this other interface: The online server will set up a ommunication with your application and it's own responsiveness will be tied to how fast your own application can react, on top of the load the other applications put on it. And here is where it still might be better to use a compiled language.

So, this is my Checklist:
1. Look at the interfaces. If there's just one interface that might connect to another application, then don't use scripting.
2. Look at concurrency. If you don't have any handle on the uppermost limit of users that might use your application at the same time on the same machine, then don't use scripting.
3. Look at ressources. If your application might run on machines that tend to run lots of other applications as well, and who it needs to compete for ressources with, then don't use scripting.

I might be overcautios. But if you ignore any of the above, you run the risk of clogging down a machine. Maybe not your's, maybe not any of your friends'. But quite possibly someone's.

 
Mon, Nov 24, 2008 9:15 EST
Anonymous user
Posted by: James
Rating:

What about PHP vs JSP? Seems like this is getting decided more and more everyday. What compile and deploy, when you can just deploy.

Isn't facebook run on PHP?

About this Blog

Helping developers use technology to solve business problems every day.

Start a Conversation
Click to post

Got something to say? We want to hear it! Click the Post button to get started. GO»

EXPERT ADVICE
See our roster of experts.

Advice & Opinion from more than 108 of IT's most insightful thinkers.

  PARTNERS       WEBCASTS    
 

Preparing for the Next Cyber Attack

Ensure you are up-to-speed on the latest security technologies available to keep your network safe in this Executive Guide. Get a thorough assessment of the corporate security threat landscape. Protect your network with data leakage protection, NAC and other technologies explained in this report.

Sponsored by Qwest  Read this Executive Guide »

 

Cloud Building: 8 Ingredients for Internal Clouds

Cloud computing: a fundamentally new way to deploy IT services and functions cost-effectively and quickly. Learn how the VMware vCloud initiative dramatically improves how consumers access their information and experience applications as well as the 8 ingredients to get you going.

Sponsored by VMWare  Read this White Paper »

 

Investing in Business Analytics Technology

You're thinking now is the time to take the plunge into business analytics, but you still have some unanswered questions. This research summary addresses the most common questions and concerns surrounding the successful launch of a business analytics initiative. It also includes real-world examples of organizations already getting return on their investment.

Sponsored by SAS  Read this White Paper »

Resource Alerts

Get instant email notifications by topic when white papers, webcasts, and case studies are added to our library.

Resource Alerts

Get instant email notification when white papers, webcasts, and case studies are added to our library. Don't just be up-to-date—be up to the minute with our new Resource Alerts.

Improving Transparency and Accuracy in IT Cross Charging

During this Webcast you'll learn how KBC Group implemented SAP BusinessObjects Profitability and Cost Management and realized many benefits.   View Now »

 

Cost Savings and Risk Reduction with Effective Systems Management

Join us and see how Novell can help you respond to today's economic challenges by increasing productivity, reducing costs and aligning IT initiatives with overall business goals.  View Now »

 

Capitalize on Your SAP Content

Learn ways to improve your content management by viewing these Open Text webinars today.  View Now »

Resource Alerts

Get instant email notification when white papers, webcasts, and case studies are added to our library. Don't just be up-to-date—be up to the minute with our new Resource Alerts.

 
NEWSLETTER

Sign-up for the Blogs & Discussion Newsletter

 
FEATURED SPONSORS
 
 
 
SPONSORED LINKS
 

Introducing the new HP ProLiant G6 server family

Accenture: Outsourcing for Competitive Advantage. More...

Better spam protection with Postini for just $1/user/mo

Introducing the new HP ProLiant G6 server family

infoBOOM! - The Mid-Sized Company CIO's Exclusive Community

Accenture IT Consulting: Logical meets technological. More . . .

The Fraudster Economy Model: Operating a Business in the Underground

Trade in your old laser printer and get up to $1000 back!

Taking the Service Desk to the Next Level

Revolutionizing Enterprise Application Deployment

Why Data Loss is Increasing--and What You Can Do About It

Data Loss Prevention: A Better Way to Approach Security

Learn how to managing client systems in the enterprise.

Build a High-Performance Open Web Platform

Mid-Sized Company CIO Community: infoBOOM!

Enterprise PBX Comparison Guide

Getting Value from Outdated Networking Equipment

Losing Ground: 2009 TMT Global Security Survey

Stop Application Fraud at the Source with Device Reputation

Learn about the VMware vSphere (TM) & Intel (R) Xeon (R) Processor 5500 Series

Learn how a virtualized enterprise can help your company reduce costs

Why Isn't Server Virtualization Saving Us More?

Learn how to save 30% through project & portfolio management.

How Open Source is Changing the Face of Enterprise Software

8 Key Ingredients to Building an Internal Cloud

Accenture IT Consulting: Enabling high performance. More...

Top Five CIO Challenges

Insight makes it easy to spend your Microsoft subsidy check.

Five minute business analytics assessment. Immediate results.

Dangerous Collaboration Practices: 5 Ways IT Can Minimize Risk

Accenture: Outsourcing for uncertain times. Click to learn more.

The Case for Investing in Business Analytics Technology. Read white paper.

Live Webinar: Applying Business Analytics. Click here to learn more

Seven Ways ITIL Can Help You in an Economic Downturn

Developing A Dynamic, Real-Time IT Infrastructure

Maximizing the Business Value of the PC Infrastructure

Communications and Collaboration Needs at Business Organizations

Using Open Source to Deploy Web Applications

Cloud Computing: Read about VMware's compelling vision & set of products

Enterprise PBX Buyer's Guide

Secondary Market Primer: Your Network at Half Price

How Interactive Viewer Reduces the Effort to Meet Visualization Requirements

Top-line Performance that's Bottom-line Efficient

White Paper: 8 Key Ingredients to Building an Internal Cloud

Read about virtualization and consolidation effort best practices

Building the Virtualized Enterprise with VMware Infrastructure

The Global Marketplace Today: Strategies for Tough Times

Top 10 Business and IT Drivers for the Wealth Management Sector

5 Steps to Automating Accounts Payable

Bottom-Line Benefits of Virtualization