ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

Other Software > Developer's Corner

It's A "Must Read" - Static Versus Dynamic Typing (A great overview)

(1/3) > >>

tinjaw:
I'm in the process of reading this, and even though I haven't finished yet, it has already proven itself as a "must read" as a great overview of the issue of static versus dynamic typing. (clarification: I finished the actual article, but I am following each link in turn and reading those as well. That is what is taking me so long. I think the article itself, along with following and reading the links, is what makes this a "must read".)

Angle Brackets and Curly Braces
Programming with "Duh" Typing
by Bill Venners
July 6, 2007

    Summary
    To what extent does the productivity of dynamic languages come from the lack of typed variables versus the reduction in "finger typing" required when you don't have to declare the types? The technique of type inferencing in static languages may shed new light on this old debate.

Over the years here at Artima we've had a number of debates and discussions about static versus dynamic typing. Here are a few:

    * Are Dynamic Languages Going to Replace Static Languages?, discussion of a weblog post by Robert C. Martin.
    * Typing: Strong vs. Weak, Static vs. Dynamic, discussion of a weblog post by Aahz.
    * Strong versus Weak Typing, discussion of an interview with Python's creator Guido van Rossum.
    * Implicit versus Explicit Dynamic Typing, discussion of a weblog post by Christopher Diggins.
    * To type or not to type, discussion of a weblog post by Jim Waldo,
    * Use the Best Tool for the Job, discussion of a short article by a younger me.

--- End quote ---

mouser:
Nice reading --
Personally i think strong static typing is a very good thing, and dynamic typing is asking for trouble.

tinjaw:
Having spent the weekend playing with C++, I have been thinking today about why I have chosen the technologies/languages I have. The more I use different ones, the more I am developing a theory (I won't call it my own, because others have probably already discussed it) that the best answer is a combination of "the best tool for the job" and mastery of a particular development environment (tools plus language(s)). For example, in a heterogeneous enterprise environment Java might be the primary choice, but if I (and my team) are extremely proficient with C++ in Visual Studio, a .NET/Mono solution might be the best way for my team to go. (I should come up with a better example, but I can't think of one ATM.)

What I am leaning towards is dropping Java and making a stab at becoming proficient with two stacks: C++ on Windows using Visual Studio and Python on Linux using Eclipse with the pyDev extensions. Of course I don't plan on "forgetting" Java. I am sure that I will continue to be able to read and write it to the extent that I can understand examples using it and still get benefit from books on various subjects that happen to use Java as the language for demonstrating those subjects.

What do you folks think?

CWuestefeld:
What I am leaning towards is dropping Java and making a stab at becoming proficient with two stacks: C++ on Windows using Visual Studio and Python on Linux using Eclipse with the pyDev extensions. Of course I don't plan on "forgetting" Java. -tinjaw (July 09, 2007, 02:58 PM)
--- End quote ---
Assuming that you've got some reason for bailing on Java as the "go-to" technology for classical OO development (something I'd agree with but is certainly not clear cut), I wonder why you'd want to switch to C++. If you're already expert in that technology, then the learning curve does carry a fair amount of weight, but (having worked with it for years) C++ is hard, and if you're on the .Net/Mono platform you're probably not getting some of its key advantages (like kick-butt performance).

If you've got C++ and Java skills, and you're eying the .Net platform, I think you'd have to make a pretty strong case not to make C# the language to use in this context. The basic structure of all three languages is quite similar. And C# is unquestionably simpler than C++, and it's designed to integrate with the .Net platform (e.g., the "using" keyword for the IDisposable/finally pattern).

tinjaw:
Assuming that you've got some reason for bailing on Java as the "go-to" technology for classical OO development (something I'd agree with but is certainly not clear cut), I wonder why you'd want to switch to C++.
-CWuestefeld (July 09, 2007, 04:51 PM)
--- End quote ---
I have a one word answer for you, "Games".

At this time I am at an intermediate stage with C++, Java, and Python. I have never been a full time programmer, but over the past 15 years I have been on a roller coaster ride with languages, tools, and proficiency levels. At my peak I was a senior developer support engineer for Delphi at Borland, at my lowest, I wasn't even in the software business. So I have learned and forgotten much over the years.

Currently my focus is on two areas. The first is general hobby programming. The kind of stuff that would be a coding snack.  I'll do that stuff in Python. As well as Python for general utility programming.

The second is on commercial games and military simulations. For that C++ is where 90%, or more, of the existing code base is.

But, yeah, if I was in the business/enterprise world I would go Java or C# .NET for compiled coding and Javascript or Python for the other stuff.

Navigation

[0] Message Index

[#] Next page

Go to full version