<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: A taxonomy of typing systems</title>
	<atom:link href="http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/feed/" rel="self" type="application/rss+xml" />
	<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/</link>
	<description>Eli Bendersky's personal website</description>
	<pubDate>Thu, 04 Dec 2008 02:40:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
		<item>
		<title>By: Ricky Clarkson</title>
		<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-112066</link>
		<dc:creator>Ricky Clarkson</dc:creator>
		<pubDate>Sun, 24 Feb 2008 11:36:54 +0000</pubDate>
		<guid isPermaLink="false">http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-112066</guid>
		<description>A far more rigorous discussion of typesystems is available at http://cdsmith.twu.net/types.html , by Chris Smith.</description>
		<content:encoded><![CDATA[<p>A far more rigorous discussion of typesystems is available at <a href="http://cdsmith.twu.net/types.html" rel="nofollow">http://cdsmith.twu.net/types.html</a> , by Chris Smith.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: zdenek</title>
		<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-56320</link>
		<dc:creator>zdenek</dc:creator>
		<pubDate>Wed, 20 Jun 2007 09:54:31 +0000</pubDate>
		<guid isPermaLink="false">http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-56320</guid>
		<description>I would argue that C++ is NOT a strongly typed language.  The strongness of it's typing system is essentially the same as in C.  It's completely irrelevant if unsafe casts are explicit or implicit.</description>
		<content:encoded><![CDATA[<p>I would argue that C++ is NOT a strongly typed language.  The strongness of it&#8217;s typing system is essentially the same as in C.  It&#8217;s completely irrelevant if unsafe casts are explicit or implicit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nikolas</title>
		<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-37249</link>
		<dc:creator>Nikolas</dc:creator>
		<pubDate>Thu, 08 Mar 2007 19:42:01 +0000</pubDate>
		<guid isPermaLink="false">http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-37249</guid>
		<description>I think what emerges from this discussion is that most of the languages don't fit neatly in this taxonomy.  Though it's important to understand the different typing concepts I don't think we should ponder too much over classifying these languages.</description>
		<content:encoded><![CDATA[<p>I think what emerges from this discussion is that most of the languages don&#8217;t fit neatly in this taxonomy.  Though it&#8217;s important to understand the different typing concepts I don&#8217;t think we should ponder too much over classifying these languages.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: TomP</title>
		<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-10918</link>
		<dc:creator>TomP</dc:creator>
		<pubDate>Fri, 01 Dec 2006 16:21:24 +0000</pubDate>
		<guid isPermaLink="false">http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-10918</guid>
		<description>Many languages also perform automatic coercion of numeric types (like Fortran INTEGER, DOUBLE, COMPLEX, INTEGER*2, etc.) in arithmetic expressions.  Perl's automatic coercion of strings to numbers differs from this only in degree, not in kind.</description>
		<content:encoded><![CDATA[<p>Many languages also perform automatic coercion of numeric types (like Fortran INTEGER, DOUBLE, COMPLEX, INTEGER*2, etc.) in arithmetic expressions.  Perl&#8217;s automatic coercion of strings to numbers differs from this only in degree, not in kind.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Prescod</title>
		<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9958</link>
		<dc:creator>Paul Prescod</dc:creator>
		<pubDate>Sun, 26 Nov 2006 13:01:26 +0000</pubDate>
		<guid isPermaLink="false">http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9958</guid>
		<description>You say that Perl is weakly typed because it does implicit conversions. But Java will also do implicit conversions. Where perl converts strings to integers when you add a string and an integer, Java converts the integer to a string.  In addition, many languages implicitly coerece to boolean.</description>
		<content:encoded><![CDATA[<p>You say that Perl is weakly typed because it does implicit conversions. But Java will also do implicit conversions. Where perl converts strings to integers when you add a string and an integer, Java converts the integer to a string.  In addition, many languages implicitly coerece to boolean.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: com</title>
		<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9946</link>
		<dc:creator>com</dc:creator>
		<pubDate>Sun, 26 Nov 2006 09:11:43 +0000</pubDate>
		<guid isPermaLink="false">http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9946</guid>
		<description>Jonathan,

These are just different things. Dynamic types, as in Ruby, naturally make it quite impossible for the language compiler to be statically typed - it must be dynamically typed. If the types don't even exist at compile time, the compiler has no chance of enforcing typing.</description>
		<content:encoded><![CDATA[<p>Jonathan,</p>
<p>These are just different things. Dynamic types, as in Ruby, naturally make it quite impossible for the language compiler to be statically typed - it must be dynamically typed. If the types don&#8217;t even exist at compile time, the compiler has no chance of enforcing typing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Allen</title>
		<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9908</link>
		<dc:creator>Jonathan Allen</dc:creator>
		<pubDate>Sun, 26 Nov 2006 03:07:38 +0000</pubDate>
		<guid isPermaLink="false">http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9908</guid>
		<description>One thing missing is the difference between languages that can generate types at runtime and those that cannot.

For example, VBScript is dynamically typed. There is no way to associate a specific type with a variable when it is declared. But all the possible types are known ahead of time.

JavaScript, on the other hand, allows you to build up a type at runtime, essentially adding your own properties to it. As I understand it, Ruby and Python are that way too.

So, do we have good terminology to distingush between dynamic typing and dynamic types?</description>
		<content:encoded><![CDATA[<p>One thing missing is the difference between languages that can generate types at runtime and those that cannot.</p>
<p>For example, VBScript is dynamically typed. There is no way to associate a specific type with a variable when it is declared. But all the possible types are known ahead of time.</p>
<p>JavaScript, on the other hand, allows you to build up a type at runtime, essentially adding your own properties to it. As I understand it, Ruby and Python are that way too.</p>
<p>So, do we have good terminology to distingush between dynamic typing and dynamic types?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Allen</title>
		<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9907</link>
		<dc:creator>Jonathan Allen</dc:creator>
		<pubDate>Sun, 26 Nov 2006 03:01:53 +0000</pubDate>
		<guid isPermaLink="false">http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9907</guid>
		<description>Johan,

The thing about dynamic typing is that it waits until runtime to see if such a conversion exists.

A = 5
B = new BankAccount()
C = A + B

Obviously there is no way to add a bank account to the number 5. With a statically typed language, that would usually be caught at compile time. With a dynamically typed langauge, you wouldn't find out the mistake until the program was running.

Note that static typing isn't perfect. Consider this code...

Number A = 5
Object B = new BankAccount()
Number C = A + (Integer)B

By making the cast on the third line, the programmer is saying "Yes, I know this might fail. But trust me, it will work.". Of course if you give the compiler more info, errors are less likely...

Number A = 5
BankAccount B = new BankAccount()
Number C = A + (Integer)B

Here the compiler can tell the programmer, "No, you don't know what you are doing. That will always fail."

And lastly, the correct code...


Number A = 5
BankAccount B = new BankAccount()
Number C = A + B.Balance</description>
		<content:encoded><![CDATA[<p>Johan,</p>
<p>The thing about dynamic typing is that it waits until runtime to see if such a conversion exists.</p>
<p>A = 5<br />
B = new BankAccount()<br />
C = A + B</p>
<p>Obviously there is no way to add a bank account to the number 5. With a statically typed language, that would usually be caught at compile time. With a dynamically typed langauge, you wouldn&#8217;t find out the mistake until the program was running.</p>
<p>Note that static typing isn&#8217;t perfect. Consider this code&#8230;</p>
<p>Number A = 5<br />
Object B = new BankAccount()<br />
Number C = A + (Integer)B</p>
<p>By making the cast on the third line, the programmer is saying &#8220;Yes, I know this might fail. But trust me, it will work.&#8221;. Of course if you give the compiler more info, errors are less likely&#8230;</p>
<p>Number A = 5<br />
BankAccount B = new BankAccount()<br />
Number C = A + (Integer)B</p>
<p>Here the compiler can tell the programmer, &#8220;No, you don&#8217;t know what you are doing. That will always fail.&#8221;</p>
<p>And lastly, the correct code&#8230;</p>
<p>Number A = 5<br />
BankAccount B = new BankAccount()<br />
Number C = A + B.Balance</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Allen</title>
		<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9904</link>
		<dc:creator>Jonathan Allen</dc:creator>
		<pubDate>Sun, 26 Nov 2006 02:51:59 +0000</pubDate>
		<guid isPermaLink="false">http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9904</guid>
		<description>One correction, most variants of Basic are dynamically typed. I'll focus on Visual Basic as it is the most popular. 

By default, VB doesn't require variable declaration, let alone types.

With Option Explicit, variables are required but you still don't have to give them types. If you don't, then they are dynamically bound. 

With Option Strict (VB 7+), then VB requires types for all variables, essentially making them all statically typed.

On a side note, VB programmers tend to use the terms "Early Binding" and "Late Binding" rather than static and dynamic.</description>
		<content:encoded><![CDATA[<p>One correction, most variants of Basic are dynamically typed. I&#8217;ll focus on Visual Basic as it is the most popular. </p>
<p>By default, VB doesn&#8217;t require variable declaration, let alone types.</p>
<p>With Option Explicit, variables are required but you still don&#8217;t have to give them types. If you don&#8217;t, then they are dynamically bound. </p>
<p>With Option Strict (VB 7+), then VB requires types for all variables, essentially making them all statically typed.</p>
<p>On a side note, VB programmers tend to use the terms &#8220;Early Binding&#8221; and &#8220;Late Binding&#8221; rather than static and dynamic.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Johan Tibell</title>
		<link>http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9879</link>
		<dc:creator>Johan Tibell</dc:creator>
		<pubDate>Sat, 25 Nov 2006 20:06:30 +0000</pubDate>
		<guid isPermaLink="false">http://eli.thegreenplace.net/2006/11/25/a-taxonomy-of-typing-systems/#comment-9879</guid>
		<description>I find the distinction between strong and weak typing interesting. Take your example:

print "2" + 4;

If this succeeds the types where in fact compatible and the language is strongly typed as per the definition you gave. If it fails they were incompatible. Looked at this way I can't see a reason for a language to be weakly typed as that would simply be another way of stating that it is unsafe. Does strongly vs weakly typed simply mean that there exists some morphism between types which makes conversions possible?</description>
		<content:encoded><![CDATA[<p>I find the distinction between strong and weak typing interesting. Take your example:</p>
<p>print &#8220;2&#8243; + 4;</p>
<p>If this succeeds the types where in fact compatible and the language is strongly typed as per the definition you gave. If it fails they were incompatible. Looked at this way I can&#8217;t see a reason for a language to be weakly typed as that would simply be another way of stating that it is unsafe. Does strongly vs weakly typed simply mean that there exists some morphism between types which makes conversions possible?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
