<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
  <head>
    <title>cmdln.net_2008-01-23</title>
    <expansionState>0,1,6,10,11,15,24,31,43,57,58,66</expansionState>
  </head>
  <body>
    <outline text="Intro" Offset="00:17">
      <outline text="Latest CopyNight">
        <outline text="The easy issues have been exhausted"/>
        <outline text="I have to admit to a little fatigue"/>
        <outline text="Often, the discussion also runs afoul of not strictly IP related issues"/>
        <outline text="Trying to organize more of a speakers series"/>
      </outline>
    </outline>
    <outline text="Word of the Week: creeping" Offset="04:20">
      <outline text="http://catb.org/jargon/html/C/creeping-elegance.html"/>
      <outline text="http://catb.org/jargon/html/C/creeping-featurism.html"/>
      <outline text="http://catb.org/jargon/html/C/creeping-featuritis.html"/>
    </outline>
    <outline text="Hacking 101: Static vs. Dynamic" Offset="06:47">
      <outline text="Static vs. dynamic">
        <outline text="Currently usually refers to newer scripting languages vs. older languages"/>
        <outline text="Ruby, Python are dynamic"/>
        <outline text="C is static"/>
      </outline>
      <outline text="Definition goes back further">
        <outline text="http://en.wikipedia.org/wiki/Name_binding"/>
        <outline text="Simply refers to when a name is bound to a value"/>
        <outline text="The name usually implies type, as well"/>
        <outline text="In early binding, or static, languages type is part of reference declaration"/>
        <outline text="Type is known at compile time, can be checked, enforced"/>
        <outline text="Analysis tools can better determine what a program will do at runtime"/>
        <outline text="In late binding, or dynamic, type of value not known until runtime"/>
        <outline text="Often cannot be known"/>
      </outline>
      <outline text="Some &quot;static&quot; languages are actually a hybrid">
        <outline text="Polymorphism in OO relies on dynamic references"/>
        <outline text="Reference type is usual more general"/>
        <outline text="Exact, or virtual, type cannot be known until runtime as may be conditional"/>
        <outline text="Still, general types are more static"/>
        <outline text="Can even implement duck typing, see below, in static languages"/>
        <outline text="Objective-C is implemented in C but has duck typing like Smalltalk"/>
      </outline>
      <outline text="Contrast to Ruby, Python">
        <outline text="Python often talks about duck typing"/>
        <outline text="http://en.wikipedia.org/wiki/Duck_typing"/>
        <outline text="Type is interpreted by the properties accessed, methods invoked"/>
        <outline text="In reality, it is about method, messages"/>
        <outline text="Properties or data are incidental"/>
        <outline text="Actually also goes back a ways, to Smalltalk"/>
        <outline text="Any message can be sent to any object in Smalltalk"/>
        <outline text="Categories can be attached to objects at runtime"/>
        <outline text="In Objective-C if an object cannot receive a message, responds with an error"/>
        <outline text="Runtime attachment helps solve these gaps"/>
        <outline text="Takes dynamic typing to its logical conclusion"/>
      </outline>
      <outline text="Controversy">
        <outline text="Dynamic advocates think you'll only provide objects that respond to known messages"/>
        <outline text="Why worry about static type declarations?"/>
        <outline text="Emphasis is on speed, ease of development"/>
        <outline text="Static typing proponents see it as a safety check"/>
        <outline text="Compiler can check, enforce typing earlier"/>
        <outline text="Does require anticipation, prediction of needed types"/>
        <outline text="Detractors think this is superfluous information why waste time?"/>
        <outline text="Also with the rise of unit testing, dynamic fans think this can do what the compilers checking can do"/>
        <outline text="Static fans wonder why do that when the compiler does it for free?"/>
        <outline text="In the case of components, a library author needs to check, enforce type intentions"/>
        <outline text="Why make the caller unit test this contract?"/>
        <outline text="Why not use a hybrid solution, at least in this case, where the static binding express intent, prevents stupid errors?"/>
        <outline text="As in most cases, I believe the answer does lie in between, depends on cases"/>
      </outline>
    </outline>
    <outline text="Outro" Offset="28:30">
      <outline text="Contact me">
        <outline text="Email to feedback@thecommandline.net"/>
        <outline text="Web site at http://thecommandline.net/"/>
        <outline text="IM to command.line@skype"/>
        <outline text="Listener comment line is 240-949-2638"/>
        <outline text="del.icio.us tag is &quot;for:cmdln&quot;"/>
        <outline text="http://twitter.com/cmdln"/>
      </outline>
      <outline text="I'd like to thank libsyn.com for AAC hosting and Wouter de Bie for MP3 hosting"/>
      <outline text="These notes and the show audio and music are covered by a Creative Commons license">
        <outline text="http://creativecommons.org/licenses/by-nc-sa/3.0/us/"/>
        <outline text="Attribution, non-commercial, share alike"/>
      </outline>
    </outline>
  </body>
</opml>
