<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Languages Are Not Technology</title>
	<atom:link href="http://bugsareeasy.wordpress.com/2009/03/27/languages-are-not-technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://bugsareeasy.wordpress.com/2009/03/27/languages-are-not-technology/</link>
	<description>essays on designing complex systems</description>
	<lastBuildDate>Wed, 04 Nov 2009 07:01:19 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Michael Katelman</title>
		<link>http://bugsareeasy.wordpress.com/2009/03/27/languages-are-not-technology/#comment-69</link>
		<dc:creator>Michael Katelman</dc:creator>
		<pubDate>Wed, 04 Nov 2009 07:01:19 +0000</pubDate>
		<guid isPermaLink="false">http://bugsareeasy.wordpress.com/?p=314#comment-69</guid>
		<description>ok, so a very belated response :). 
First, I don&#039;t think that it&#039;s productive to focus on the semantics of``technology&#039;&#039;.  What I guess I object to is the dismissive attitude toward
languages that I get from your post. 

You say that:

``I don’t believe any type of language is technology in the sense that the 
language itself has any special properties that make it better than other
languages.&#039;&#039;

But then go on to write:

``Languages that use higher levels of abstraction are more productive to use 
precisely because they use a higher level of abstraction.&#039;&#039;

These seem contradictory to me: isn&#039;t ``more productive&#039;&#039; also ``better&#039;&#039;? In any 
case, I think we can agree that some languages are more productive than others,
C vs assembly, e.g. 
I would agree that a language isn&#039;t very useful without associated programs to process it; if it was then the language with a syntactic construct
&quot;do-what-I-want&quot; would be the end of the story.  However, I do think that language design, e.g. coming up with the right abstractions, can be enormously
powerful. Many people find static scoping in languages like Haskell to be
better than dynamic scoping; it&#039;s subjective, but a ``special&#039;&#039; property that
can be debated and isn&#039;t really about a ``higher level of abstraction&#039;&#039;.

If we agree that one language can be more productive than another, then it seems the relevant question to ask is what is the relative benefit I get from a
more productive verification engineer vs a more productive automated algorithm?
I agree that both are important, but I don&#039;t think that one is universally more important than the other. If a new test gen. algorithm covers a few percent more
coverage goals but a new language allows the verification engineer to develop
the original constrained random testbench 25% faster, I&#039;d take the latter.</description>
		<content:encoded><![CDATA[<p>ok, so a very belated response <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
First, I don&#8217;t think that it&#8217;s productive to focus on the semantics of&#8220;technology&#8221;.  What I guess I object to is the dismissive attitude toward<br />
languages that I get from your post. </p>
<p>You say that:</p>
<p>&#8220;I don’t believe any type of language is technology in the sense that the<br />
language itself has any special properties that make it better than other<br />
languages.&#8221;</p>
<p>But then go on to write:</p>
<p>&#8220;Languages that use higher levels of abstraction are more productive to use<br />
precisely because they use a higher level of abstraction.&#8221;</p>
<p>These seem contradictory to me: isn&#8217;t &#8220;more productive&#8221; also &#8220;better&#8221;? In any<br />
case, I think we can agree that some languages are more productive than others,<br />
C vs assembly, e.g.<br />
I would agree that a language isn&#8217;t very useful without associated programs to process it; if it was then the language with a syntactic construct<br />
&#8220;do-what-I-want&#8221; would be the end of the story.  However, I do think that language design, e.g. coming up with the right abstractions, can be enormously<br />
powerful. Many people find static scoping in languages like Haskell to be<br />
better than dynamic scoping; it&#8217;s subjective, but a &#8220;special&#8221; property that<br />
can be debated and isn&#8217;t really about a &#8220;higher level of abstraction&#8221;.</p>
<p>If we agree that one language can be more productive than another, then it seems the relevant question to ask is what is the relative benefit I get from a<br />
more productive verification engineer vs a more productive automated algorithm?<br />
I agree that both are important, but I don&#8217;t think that one is universally more important than the other. If a new test gen. algorithm covers a few percent more<br />
coverage goals but a new language allows the verification engineer to develop<br />
the original constrained random testbench 25% faster, I&#8217;d take the latter.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bugsareeasy</title>
		<link>http://bugsareeasy.wordpress.com/2009/03/27/languages-are-not-technology/#comment-40</link>
		<dc:creator>bugsareeasy</dc:creator>
		<pubDate>Tue, 31 Mar 2009 10:14:45 +0000</pubDate>
		<guid isPermaLink="false">http://bugsareeasy.wordpress.com/?p=314#comment-40</guid>
		<description>Michael,

Yes, I think you are right that I was not being clear in exactly what languages I was talking about. The original article was specifically referring to the HVLs, e and Vera, which is what I was referring to. However, having said that, I don&#039;t believe any type of language is technology in the sense that the language itself has any special properties that make it better than other languages. 

The only thing that matters is the level of abstraction that the language uses. Languages that use higher levels of abstraction are more productive to use precisely because they use a higher level of abstraction. It is more productive to write programs in C than in assembly language because C presents a higher level of abstraction to the user. If you took all languages that used the same level of abstraction as C, the only difference being syntax, they would be equally productive. I think if you examined any set of languages in which one was claimed to be better in some aspect, it is because it is using a higher level of abstraction for that aspect. 

Now, if you want to argue that different levels of abstraction represent different levels of technology, you can do that, but I would disagree. Abstraction is a mathematical concept. I would argue that saying that one level of abstraction represents a higher level technology than another is like saying the number 5 represents a higher level of technology than the number 3.

Where technology is important is in mapping higher levels of abstraction to lower level ones. Mapping (compilation or synthesis) is technology. The higher the level of abstraction in a language, the more difficult it is to map to a lower level (usually for performance reasons). But, languages themselves? Not technology. 

Note:I have written a number of other posts on this topic, which you may want to read.

cheers,

--chris</description>
		<content:encoded><![CDATA[<p>Michael,</p>
<p>Yes, I think you are right that I was not being clear in exactly what languages I was talking about. The original article was specifically referring to the HVLs, e and Vera, which is what I was referring to. However, having said that, I don&#8217;t believe any type of language is technology in the sense that the language itself has any special properties that make it better than other languages. </p>
<p>The only thing that matters is the level of abstraction that the language uses. Languages that use higher levels of abstraction are more productive to use precisely because they use a higher level of abstraction. It is more productive to write programs in C than in assembly language because C presents a higher level of abstraction to the user. If you took all languages that used the same level of abstraction as C, the only difference being syntax, they would be equally productive. I think if you examined any set of languages in which one was claimed to be better in some aspect, it is because it is using a higher level of abstraction for that aspect. </p>
<p>Now, if you want to argue that different levels of abstraction represent different levels of technology, you can do that, but I would disagree. Abstraction is a mathematical concept. I would argue that saying that one level of abstraction represents a higher level technology than another is like saying the number 5 represents a higher level of technology than the number 3.</p>
<p>Where technology is important is in mapping higher levels of abstraction to lower level ones. Mapping (compilation or synthesis) is technology. The higher the level of abstraction in a language, the more difficult it is to map to a lower level (usually for performance reasons). But, languages themselves? Not technology. </p>
<p>Note:I have written a number of other posts on this topic, which you may want to read.</p>
<p>cheers,</p>
<p>&#8211;chris</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Katelman</title>
		<link>http://bugsareeasy.wordpress.com/2009/03/27/languages-are-not-technology/#comment-39</link>
		<dc:creator>Michael Katelman</dc:creator>
		<pubDate>Sat, 28 Mar 2009 00:50:01 +0000</pubDate>
		<guid isPermaLink="false">http://bugsareeasy.wordpress.com/?p=314#comment-39</guid>
		<description>Hi Chris,

&quot;That is, there is something about advanced languages that makes testbenches
written using these languages more likely to find bugs or get higher coverage
or whatever. While advanced languages certainly are useful and enhance
productivity by including features that you probably would have to create
manually, nothing about them is inherently smarter or better with respect to
finding bugs. It&#039;s like saying it&#039;s better to design in English than in
Chinese.&quot;

Although you seem to be talking about HVLs here when you write &quot;language&quot;, you
also bring up design later on. I guess I am wondering if your comments are
meant to apply only the testbench language, or to both the testbench language
and the design language? Actually, I just don&#039;t think that I understand what
you are getting at in this entry. 

In the case of design languages, I would strongly disagree with a statement
that there is nothing inherently smarter or better about one language over
another when it comes to finding bugs. Perhaps, as I said, I&#039;m just misinterpreting
your argument.  Indeed, the very nature of what it means to be a bug is tied to
the semantic model of the language being used for design. Eg you couldn&#039;t have
a null pointer exception in a language without pointers. In hardware land you 
have that the semantic model of Verilog is very different from that of
something like Bluespec. Here, for example, module interface bugs look
completely different and I would argue are significantly mitigated with
Bluespec.

I think that HVLs also can be considered &quot;inherently better&quot; at finding bugs
given a fixed design language. You argument, taken to extreme, seems to me to
be &quot;well Turing-complete is Turing-complete&quot;. I suppose that that&#039;s true, but 
where does that leave &quot;technology&quot;? If you argue that, eg, temporal assertions
are just syntactic sugar, why not also any other program (technology)?</description>
		<content:encoded><![CDATA[<p>Hi Chris,</p>
<p>&#8220;That is, there is something about advanced languages that makes testbenches<br />
written using these languages more likely to find bugs or get higher coverage<br />
or whatever. While advanced languages certainly are useful and enhance<br />
productivity by including features that you probably would have to create<br />
manually, nothing about them is inherently smarter or better with respect to<br />
finding bugs. It&#8217;s like saying it&#8217;s better to design in English than in<br />
Chinese.&#8221;</p>
<p>Although you seem to be talking about HVLs here when you write &#8220;language&#8221;, you<br />
also bring up design later on. I guess I am wondering if your comments are<br />
meant to apply only the testbench language, or to both the testbench language<br />
and the design language? Actually, I just don&#8217;t think that I understand what<br />
you are getting at in this entry. </p>
<p>In the case of design languages, I would strongly disagree with a statement<br />
that there is nothing inherently smarter or better about one language over<br />
another when it comes to finding bugs. Perhaps, as I said, I&#8217;m just misinterpreting<br />
your argument.  Indeed, the very nature of what it means to be a bug is tied to<br />
the semantic model of the language being used for design. Eg you couldn&#8217;t have<br />
a null pointer exception in a language without pointers. In hardware land you<br />
have that the semantic model of Verilog is very different from that of<br />
something like Bluespec. Here, for example, module interface bugs look<br />
completely different and I would argue are significantly mitigated with<br />
Bluespec.</p>
<p>I think that HVLs also can be considered &#8220;inherently better&#8221; at finding bugs<br />
given a fixed design language. You argument, taken to extreme, seems to me to<br />
be &#8220;well Turing-complete is Turing-complete&#8221;. I suppose that that&#8217;s true, but<br />
where does that leave &#8220;technology&#8221;? If you argue that, eg, temporal assertions<br />
are just syntactic sugar, why not also any other program (technology)?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
