[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Strong Typing, Dynamic Languages, What to do?

I find myself in an uncomfortable state of language equivocation.  I seem to be forever vascillating between the strongly-typed and "dynamic/untyped" programming languages.

The proponents of so-called "strongly-typed" languages in the Hindley-Milner school make the seemingly compelling argument that such type-checks provide superior program quality and reliability by catching syntax and logic errors before execution time.

On the other hand, such strong typing would seem to prevent the construction of polymorphic routines that allow a wide variety of types to be accepted as arguments.  It also seems to prevent you from arbitrarily expanding the types of data that a particular program might be exposed to without rebuilding the entire world.  You do not always have the luxury of revising an object (or type) heirarchy, especially if you don't have the source code for all the different units, etc.

However, my experience with some "typeless" languages (notably Visual Basic and Python) lead me to believe that this dynamicism often shifts bugs forward in time, so that you do not encounter them until users are exercising a program in ways not previously anticipated by the SQA team -- or when the program runs in an environment that differs in some fashion from the original test bed.

I'm hoping the readers on this list can offer soothing words that will help me end this internal struggle and allow me to make rational language selection choices.