www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - From where come from the term "lowering"?

reply "Asman01" <jckj33 gmail.com> writes:
I was reading Walter's article where he use this term and explain 
what is it. He did a clear explanation abount what what it does. 
But where come from actually this term? I can't find anything 
related with a lot of keyword combinations on google/bing. And 
isn't only me want to know about origin of this term 
(http://stackoverflow.com/questions/20252876/wanted-good-definition-of-the-term-lowering-in-the-context-of-compilers)
Mar 16 2014
next sibling parent "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
On Mon, Mar 17, 2014 at 12:42:26AM +0000, Asman01 wrote:
 I was reading Walter's article where he use this term and explain
 what is it. He did a clear explanation abount what what it does. But
 where come from actually this term? I can't find anything related
 with a lot of keyword combinations on google/bing. And isn't only me
 want to know about origin of this term
(http://stackoverflow.com/questions/20252876/wanted-good-definition-of-the-term-lowering-in-the-context-of-compilers)

I don't know about the exact etymology of this term, but my understanding of it is that it's referring to the translation of a higher-level concept to a lower-level implementation, such as the translation of a C construct into assembly language, or the translation of a C++ construct into C (which the first C++ compilers did). In the context of D, it can also be used to describe a particular syntax that translates to "simpler" or lower-level primitives, such as: foreach (i; 0 .. 10) { ... } translating into: for (i=0; i < 10; i++) { ... } Hence the term "lowering" (take a high-level abstraction and translate it into a lower-level implementation). T -- Only boring people get bored. -- JM
Mar 17 2014
prev sibling next sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 3/16/14, 5:42 PM, Asman01 wrote:
 I was reading Walter's article where he use this term and explain what
 is it. He did a clear explanation abount what what it does. But where
 come from actually this term? I can't find anything related with a lot
 of keyword combinations on google/bing. And isn't only me want to know
 about origin of this term
 (http://stackoverflow.com/questions/20252876/wanted-good-definition-of-the-term-lowering-in-the-context-of-compilers)

I introduced the term "lowering" to our community as the word was commonly used in the programming languages group at University of Washington (led at the time by Craig Chambers and Dan Grossman). It's commonly used in compiler backend circles, see e.g. http://goo.gl/FEVypJ. It generally means the process of translating a higher-level language with many capabilities into a simpler, lower-level language. The latter could be an intermediate language, machine code, or even a reduced dialect of the higher-level language (as is the case for the way it's often used in D). Andrei
Mar 17 2014
prev sibling next sibling parent "Asman01" <jckj33 gmail.com> writes:
On Monday, 17 March 2014 at 16:49:38 UTC, H. S. Teoh wrote:
 On Mon, Mar 17, 2014 at 12:42:26AM +0000, Asman01 wrote:
 I was reading Walter's article where he use this term and 
 explain
 what is it. He did a clear explanation abount what what it 
 does. But
 where come from actually this term? I can't find anything 
 related
 with a lot of keyword combinations on google/bing. And isn't 
 only me
 want to know about origin of this term 
 (http://stackoverflow.com/questions/20252876/wanted-good-definition-of-the-term-lowering-in-the-context-of-compilers)

I don't know about the exact etymology of this term, but my understanding of it is that it's referring to the translation of a higher-level concept to a lower-level implementation, such as the translation of a C construct into assembly language, or the translation of a C++ construct into C (which the first C++ compilers did). In the context of D, it can also be used to describe a particular syntax that translates to "simpler" or lower-level primitives, such as: foreach (i; 0 .. 10) { ... } translating into: for (i=0; i < 10; i++) { ... } Hence the term "lowering" (take a high-level abstraction and translate it into a lower-level implementation). T

from the term because I hadn't saw nobody also Walter/Andrei using this.
Mar 17 2014
prev sibling parent "Asman01" <jckj33 gmail.com> writes:
On Monday, 17 March 2014 at 16:57:46 UTC, Andrei Alexandrescu 
wrote:
 On 3/16/14, 5:42 PM, Asman01 wrote:
 I was reading Walter's article where he use this term and 
 explain what
 is it. He did a clear explanation abount what what it does. 
 But where
 come from actually this term? I can't find anything related 
 with a lot
 of keyword combinations on google/bing. And isn't only me want 
 to know
 about origin of this term
 (http://stackoverflow.com/questions/20252876/wanted-good-definition-of-the-term-lowering-in-the-context-of-compilers)

I introduced the term "lowering" to our community as the word was commonly used in the programming languages group at University of Washington (led at the time by Craig Chambers and Dan Grossman). It's commonly used in compiler backend circles, see e.g. http://goo.gl/FEVypJ. It generally means the process of translating a higher-level language with many capabilities into a simpler, lower-level language. The latter could be an intermediate language, machine code, or even a reduced dialect of the higher-level language (as is the case for the way it's often used in D). Andrei

Thanks very much for the information.
Mar 17 2014