Strict Programming Language - Explanation

Explanation

In most non-strict languages the non-strictness extends to data constructors. This allows conceptually infinite data structures (such as the list of all prime numbers) to be manipulated in the same way as ordinary finite data structures. It also allows for the use of very large but finite data structures such as the complete game tree of chess.

Non-strictness has several disadvantages which have prevented widespread adoption:

  • Because of the uncertainty regarding if and when expressions will be evaluated, non-strict languages generally must be purely functional to be useful.
  • All hardware architectures in common use are optimized for strict languages, so the best compilers for non-strict languages produce slower code than the best compilers for strict languages, with the notable exception of the Glasgow Haskell Compiler which outperforms many strict language compilers.
  • Space complexity of non-strict programs is difficult to understand and predict.

Strict programming languages are often associated with eager evaluation, and non-strict languages with lazy evaluation, but other evaluation strategies are possible in each case. The terms "eager programming language" and "lazy programming language" are often used as synonyms for "strict programming language" and "non-strict programming language" respectively.

In many strict languages, some advantages of non-strict functions can be obtained through the use of macros or thunks.

Read more about this topic:  Strict Programming Language

Famous quotes containing the word explanation:

    “To develop an empiricist account of science is to depict it as involving a search for truth only about the empirical world, about what is actual and observable.... It must involve throughout a resolute rejection of the demand for an explanation of the regularities in the observable course of nature, by means of truths concerning a reality beyond what is actual and observable, as a demand which plays no role in the scientific enterprise.”
    —Bas Van Fraassen (b. 1941)

    “Young children constantly invent new explanations to account for complex processes. And since their inventions change from week to week, furnishing the “correct” explanation is not quite so important as conveying a willingness to discuss the subject. Become an “askable parent.””
    —Ruth Formanek (20th century)

    “What causes adolescents to rebel is not the assertion of authority but the arbitrary use of power, with little explanation of the rules and no involvement in decision-making. . . . Involving the adolescent in decisions doesn’t mean that you are giving up your authority. It means acknowledging that the teenager is growing up and has the right to participate in decisions that affect his or her life.”
    —Laurence Steinberg (20th century)