Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 223883
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T19:15:49+00:00 2026-05-11T19:15:49+00:00

It seems to me that the most invaluable thing about a static/strongly-typed programming language

  • 0

It seems to me that the most invaluable thing about a static/strongly-typed programming language is that it helps refactoring: if/when you change any API, then the compiler will tell you what that change has broken.

I can imagine writing code in a runtime/weakly-typed language … but I can’t imagine refactoring without the compiler’s help, and I can’t imagine writing tens of thousands of lines of code without refactoring.

Is this true?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-11T19:15:49+00:00Added an answer on May 11, 2026 at 7:15 pm

    I think you’re conflating when types are checked with how they’re checked. Runtime typing isn’t necessarily weak.

    The main advantage of static types is exactly what you say: they’re exhaustive. You can be confident all call sites conform to the type just by letting the compiler do it’s thing.

    The main limitation of static types is that they’re limited in the constraints they can express. This varies by language, with most languages having relatively simple type systems (c, java), and others with extremely powerful type systems (haskell, cayenne).

    Because of this limitation types on their own are not sufficient. For example, in java types are more or less restricted to checking type names match. This means the meaning of any constraint you want checked has to be encoded into a naming scheme of some sort, hence the plethora of indirections and boiler plate common to java code. C++ is a little better in that templates allow a bit more expressiveness, but don’t come close to what you can do with dependent types. I’m not sure what the downsides to the more powerful type systems are, though clearly there must be some or more people would be using them in industry.

    Even if you’re using static typing, chances are it’s not expressive enough to check everything you care about, so you’ll need to write tests too. Whether static typing saves you more effort than it requires in boilerplate is a debate that’s raged for ages and that I don’t think has a simple answer for all situations.

    As to your second question:

    How can we re-factor safely in a runtime typed language?

    The answer is tests. Your tests have to cover all the cases that matter. Tools can help you in gauging how exhaustive your tests are. Coverage checking tools let you know wether lines of code are covered by the tests or not. Test mutation tools (jester, heckle) can let you know if your tests are logically incomplete. Acceptance tests let you know what you’ve written matches requirements, and lastly regression and performance tests ensure that each new version of the product maintains the quality of the last.

    One of the great things about having proper testing in place vs relying on elaborate type indirections is that debugging becomes much simpler. When running the tests you get specific failed assertions within tests that clearly express what they’re doing, rather than obtuse compiler error statements (think c++ template errors).

    No matter what tools you use: writing code you’re confident in will require effort. It most likely will require writing a lot of tests. If the penalty for bugs is very high, such as aerospace or medical control software, you may need to use formal mathematical methods to prove the behavior of your software, which makes such development extremely expensive.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Most of Knockout seems very intuitive. One thing that is strange to me though
It seems that most new programming languages that have appeared in the last 20
I've been looking into CEDET, but it seems that most of its features would
It seems that most 32 bit applications will run on 64 bit linux assuming
I read the other password recovery questions on SO and it seems that most
I have been stumped by an issue. It seems that most of the tricks
I take full advantage of GMail's wildcard feature (username+wildcard@gmail.com). Unfortunately it seems that most
This is a classic sort of question, I suppose, but it seems that most
It seems that most major websites will use a secure domain, but there are
It seems to me that most of what can be accomplished with HttpWebRequest/Response can

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.