Re: questions from a lost sheep

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • johannes raggam

    Re: questions from a lost sheep

    On Thu, 2008-10-02 at 15:18 -0500, skip@pobox.com wrote:
    JoeI've started to think fondly of the rock-solid stability of Python,
    Joeand have been wondering if perhaps aggressive unit testing could
    Joemitigate most of the problems of weak typing.
    >
    Note: Python is not weakly typed. It is dynamically typed. But, yes,
    there is no substitute for unit tests in a language like Python.
    just to make it maybe clearer - here an excerpt from the excellent book
    dive into python, which is also free available:

    """
    statically typed language: A language in which types are fixed at
    compile time. Most statically typed languages enforce this by requiring
    you to declare all variables with their datatypes before using them.
    Java and C are statically typed languages.

    dynamically typed language: A language in which types are discovered at
    execution time; the opposite of statically typed. VBScript and Python
    are dynamically typed, because they figure out what type a variable is
    when you first assign it a value.

    strongly typed language: A language in which types are always enforced.
    Java and Python are strongly typed. If you have an integer, you can't
    treat it like a string without explicitly converting it.

    weakly typed language: A language in which types may be ignored; the
    opposite of strongly typed. VBScript is weakly typed. In VBScript, you
    can concatenate the string '12' and the integer 3 to get the string
    '123', then treat that as the integer 123, all without any explicit
    conversion.

    So Python is both dynamically typed (because it doesn't use explicit
    datatype declarations) and strongly typed (because
    once a variable has a datatype, it actually matters).
    """
    Learn how to write functions in Python with examples of basic and higher-order functions, lambda expressions, function typing, and more.



    cheers, hannes

  • Larry Bates

    #2
    Re: questions from a lost sheep

    johannes raggam wrote:
    On Thu, 2008-10-02 at 15:18 -0500, skip@pobox.com wrote:
    >JoeI've started to think fondly of the rock-solid stability of Python,
    > Joeand have been wondering if perhaps aggressive unit testing could
    > Joemitigate most of the problems of weak typing.
    >>
    >Note: Python is not weakly typed. It is dynamically typed. But, yes,
    >there is no substitute for unit tests in a language like Python.
    >
    just to make it maybe clearer - here an excerpt from the excellent book
    dive into python, which is also free available:
    >
    """
    statically typed language: A language in which types are fixed at
    compile time. Most statically typed languages enforce this by requiring
    you to declare all variables with their datatypes before using them.
    Java and C are statically typed languages.
    >
    dynamically typed language: A language in which types are discovered at
    execution time; the opposite of statically typed. VBScript and Python
    are dynamically typed, because they figure out what type a variable is
    when you first assign it a value.
    >
    strongly typed language: A language in which types are always enforced.
    Java and Python are strongly typed. If you have an integer, you can't
    treat it like a string without explicitly converting it.
    >
    weakly typed language: A language in which types may be ignored; the
    opposite of strongly typed. VBScript is weakly typed. In VBScript, you
    can concatenate the string '12' and the integer 3 to get the string
    '123', then treat that as the integer 123, all without any explicit
    conversion.
    >
    So Python is both dynamically typed (because it doesn't use explicit
    datatype declarations) and strongly typed (because
    once a variable has a datatype, it actually matters).
    """
    Learn how to write functions in Python with examples of basic and higher-order functions, lambda expressions, function typing, and more.

    >
    >
    cheers, hannes
    >
    That is a GREAT explanation of statically, dynamically, strongly and weakly
    typed languages. So many programmers are confused about these differences. Many
    believe that statically typed is the only way to have strongly typed and they
    are incorrect. Thanks for this.

    -Larry

    Comment

    • Michele Simionato

      #3
      Re: questions from a lost sheep

      On Oct 2, 11:08 pm, johannes raggam <raggam...@adm. atwrote:
      statically typed language: A language in which types are fixed at
      compile time. Most statically typed languages enforce this by requiring
      you to declare all variables with their datatypes before using them.
      Java and C are statically typed languages.
      >
      dynamically typed language: A language in which types are discovered at
      execution time; the opposite of statically typed. VBScript and Python
      are dynamically typed, because they figure out what type a variable is
      when you first assign it a value.
      >
      strongly typed language: A language in which types are always enforced.
      Java and Python are strongly typed. If you have an integer, you can't
      treat it like a string without explicitly converting it.
      >
      weakly typed language: A language in which types may be ignored; the
      opposite of strongly typed. VBScript is weakly typed. In VBScript, you
      can concatenate the string '12' and the integer 3 to get the string
      '123', then treat that as the integer 123, all without any explicit
      conversion.
      I have always considered this argument rather weak.
      It is true, we Pythonista we are in a better position
      that Perl and VBScript users, but still how strong is
      "strong" typing really? When I can never know the types
      accepted by a function at compile time?
      When I can change the class of
      an object at runtime?
      Dynamic typing has its advantages, but calling it "strong" is
      ridicolous for people coming from a background in ML or Haskell. The
      definitions change
      according to the circles you frequent, so there will be always
      confusions on the terminology, unfortunately.

      Comment

      Working...