Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #23874 > unrolled thread

Re: lectures about "programming methodology"

Started byArne Vajhøj <arne@vajhoej.dk>
First post2013-05-06 21:46 -0400
Last post2013-05-18 11:07 +0100
Articles 15 — 6 participants

Back to article view | Back to comp.lang.java.programmer

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: lectures about "programming methodology" Arne Vajhøj <arne@vajhoej.dk> - 2013-05-06 21:46 -0400
    Re: lectures about "programming methodology" Sven Köhler <remove-sven.koehler@gmail.com> - 2013-05-07 13:45 +0300
      Re: lectures about "programming methodology" Sven Köhler <remove-sven.koehler@gmail.com> - 2013-05-07 15:52 +0300
      Re: lectures about "programming methodology" markspace <markspace@nospam.nospam> - 2013-05-07 09:44 -0700
      Re: lectures about "programming methodology" Arne Vajhøj <arne@vajhoej.dk> - 2013-05-07 21:37 -0400
    Re: lectures about "programming methodology" David Lamb <dalamb@cs.queensu.ca> - 2013-05-07 18:10 -0400
      Re: lectures about "programming methodology" Arne Vajhøj <arne@vajhoej.dk> - 2013-05-07 21:38 -0400
        Re: lectures about "programming methodology" Arved Sandstrom <asandstrom2@eastlink.ca> - 2013-05-08 17:48 -0300
          Re: lectures about "programming methodology" Arne Vajhøj <arne@vajhoej.dk> - 2013-05-12 22:17 -0400
            Re: lectures about "programming methodology" Arved Sandstrom <asandstrom2@eastlink.ca> - 2013-05-17 19:35 -0300
              Re: lectures about "programming methodology" Arne Vajhøj <arne@vajhoej.dk> - 2013-05-17 18:53 -0400
                Re: lectures about "programming methodology" Arne Vajhøj <arne@vajhoej.dk> - 2013-05-17 19:02 -0400
                  Re: lectures about "programming methodology" Arved Sandstrom <asandstrom2@eastlink.ca> - 2013-05-17 20:14 -0300
                    Re: lectures about "programming methodology" Arne Vajhøj <arne@vajhoej.dk> - 2013-05-17 19:29 -0400
                    Re: lectures about "programming methodology" lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-05-18 11:07 +0100

#23874 — Re: lectures about "programming methodology"

FromArne Vajhøj <arne@vajhoej.dk>
Date2013-05-06 21:46 -0400
SubjectRe: lectures about "programming methodology"
Message-ID<51885ce2$0$32110$14726298@news.sunsite.dk>
On 5/6/2013 6:28 PM, Stefan Ram wrote:
> ram@zedat.fu-berlin.de (Stefan Ram) writes:
>> ram@zedat.fu-berlin.de (Stefan Ram) writes:
>>> But I have watched only the first lectures so far.
>> I just watched another lecture and noticed the following:
>
>    Well, I hope you are not annoyed yet. But I just spotted the
>    first major software-methodology error! He explained the
>    scope of a variable as the lifetime of the variable. It was
>    even displayed as text: »Scope: lifetime of variable«. This
>    really hurts!
>
>    For those of you, who have not yet learned the distinction
>    (untested code ahead), after:
>
> class Object
> { /* begin of scope of i */
>    final int i; public Object( final int i ){ this.i = i; }
>    /* end of scope of i */ }
>
>    and then in »main«:
>
> { { final Object o = new Object( 4 );
>      java.lang.System.out.println( o ); }
>
>    { final Object o = new Object( 7 );
>      java.lang.System.out.println( o ); }}
>
>    , after execution, there were two instances of »i« (with
>    values 4 and 7) that had the same scope (as identifiers),
>    but different lifetimes (as variables), and two instances of
>    »o« which indeed have different scopes (as identifiers).
>
>    A scope is a region of the source text. Identifiers
>    have a scope.
>
>    A lifetime is a period of time during the execution
>    of a program. Variables and objects have lifetimes.
>
>    This has no special relation with Java, this is
>    software engineering (or »programming methodology«).

I really don't see that as software engineering.

It is a CS exercise in definitions with little practical
benefits.

Arne

[toc] | [next] | [standalone]


#23884

FromSven Köhler <remove-sven.koehler@gmail.com>
Date2013-05-07 13:45 +0300
Message-ID<aus49sFkjieU1@mid.dfncis.de>
In reply to#23874
On 05/07/2013 04:46 AM, Arne Vajhøj wrote:
> I really don't see that as software engineering.

I assume, Stefan is worried that these ideas could stick - regardless of 
whether you consider that software engineering or not.

Let "lifetime of a variable" be an attempt, to describe scope "in 
layman's terms". However, it gives the students the wrong idea - 
especially because there is an actual lifetime of a variable and it is 
not identical with the scope. Later on in the lecture, when students 
will have to understand object orientation, this wrong idea might make 
it difficult for the students to understand important things.

BTW: It is also possible to defend his description of the scope, namely 
if you limit it to local variables only (Stefan's counter example was a 
field). However, I don't know the lecture. It might be the case, that 
fields haven't even been introduced.


Regards,
   Sven

[toc] | [prev] | [next] | [standalone]


#23888

FromSven Köhler <remove-sven.koehler@gmail.com>
Date2013-05-07 15:52 +0300
Message-ID<ausbobFm7j5U1@mid.dfncis.de>
In reply to#23884
On 05/07/2013 03:45 PM, Stefan Ram wrote:
> Sven Köhler <remove-sven.koehler@gmail.com> writes:
>> BTW: It is also possible to defend his description of the scope, namely
>> if you limit it to local variables only (Stefan's counter example was a
>
>    For local variables the two concepts differ too. One example
>    can already be seen in my code, when one reads the local
>    parameter »i« as a local variable. The most famous example
>    is the factorial (untested):
>
> int f( final int i ){ return i == 0 ? 1 : i * f( i - 1 ); }
>
>    . To understand this, it is vital to understand that »i« has
>    only a single scope, but can have many (in this case:
>    nested) lifetimes.

That is correct. But then again, I'm not sure how this professor will 
explain it. To be consistent with his definition of scope, he might 
explain to the students, that there are many "incarnations" of i, each 
"living" from the { to the }, i.e. the scope. In his way of thinking, 
this might be consistent with saying that the scope defines the lifetime 
of i (namely each incarnation of i).


Regards,
   Sven

[toc] | [prev] | [next] | [standalone]


#23899

Frommarkspace <markspace@nospam.nospam>
Date2013-05-07 09:44 -0700
Message-ID<kmbaq7$uta$1@dont-email.me>
In reply to#23884
On 5/7/2013 5:45 AM, Stefan Ram wrote:

> int f( final int i ){ return i == 0 ? 1 : i * f( i - 1 ); }
>
>    . To understand this, it is vital to understand that »i« has
>    only a single scope, but can have many (in this case:
>    nested) lifetimes.

OK, I have to disagree with this.  At minimum, I disagree that 
"lifetimes" is the correct word here.

"Copy" is a better word than "lifetime."  So is "stack frame."  By the 
time one wants to talk about recursion, introducing correct terminology 
is the best way, imo.  We just had a discussion here on c.l.j.p about 
concurrency, and folks who can't keep track of what's on the stack and 
what's on the heap have a hard time of it.  Learning correctly is 
important in school.

But I also agree more with the class instructor.  "Scope" is the correct 
term here.  The scope of i is the body of the method f.  That its value 
may exist elsewhere is completely orthogonal to a discussion of scope.

[toc] | [prev] | [next] | [standalone]


#23915

FromArne Vajhøj <arne@vajhoej.dk>
Date2013-05-07 21:37 -0400
Message-ID<5189ac6f$0$32105$14726298@news.sunsite.dk>
In reply to#23884
On 5/7/2013 6:45 AM, Sven Köhler wrote:
> On 05/07/2013 04:46 AM, Arne Vajhøj wrote:
>> I really don't see that as software engineering.
>
> I assume, Stefan is worried that these ideas could stick - regardless of
> whether you consider that software engineering or not.

Yes, but he very explicit called it software engineering.

Arne

[toc] | [prev] | [next] | [standalone]


#23911

FromDavid Lamb <dalamb@cs.queensu.ca>
Date2013-05-07 18:10 -0400
Message-ID<kmbtur$i8p$1@dont-email.me>
In reply to#23874
On 06/05/2013 9:46 PM, Arne Vajhøj wrote:
> On 5/6/2013 6:28 PM, Stefan Ram wrote:
>>    A scope is a region of the source text. Identifiers
>>    have a scope.
>>
>>    A lifetime is a period of time during the execution
>>    of a program. Variables and objects have lifetimes.
>>
>>    This has no special relation with Java, this is
>>    software engineering (or »programming methodology«).
>
> I really don't see that as software engineering.
>
> It is a CS exercise in definitions with little practical
> benefits.

Whoah, scope versus lifetime is a pretty fundamental distinction. 
Admittedly it was more fundamental in old block-structured languages 
like Algol, but still...

[toc] | [prev] | [next] | [standalone]


#23916

FromArne Vajhøj <arne@vajhoej.dk>
Date2013-05-07 21:38 -0400
Message-ID<5189aca0$0$32105$14726298@news.sunsite.dk>
In reply to#23911
On 5/7/2013 6:10 PM, David Lamb wrote:
> On 06/05/2013 9:46 PM, Arne Vajhøj wrote:
>> On 5/6/2013 6:28 PM, Stefan Ram wrote:
>>>    A scope is a region of the source text. Identifiers
>>>    have a scope.
>>>
>>>    A lifetime is a period of time during the execution
>>>    of a program. Variables and objects have lifetimes.
>>>
>>>    This has no special relation with Java, this is
>>>    software engineering (or »programming methodology«).
>>
>> I really don't see that as software engineering.
>>
>> It is a CS exercise in definitions with little practical
>> benefits.
>
> Whoah, scope versus lifetime is a pretty fundamental distinction.
> Admittedly it was more fundamental in old block-structured languages
> like Algol, but still...

Fundamental for software engineering??

Arne

[toc] | [prev] | [next] | [standalone]


#23947

FromArved Sandstrom <asandstrom2@eastlink.ca>
Date2013-05-08 17:48 -0300
Message-ID<TSyit.3$Nk7.2@newsfe27.iad>
In reply to#23916
On 05/07/2013 10:38 PM, Arne Vajhøj wrote:
> On 5/7/2013 6:10 PM, David Lamb wrote:
>> On 06/05/2013 9:46 PM, Arne Vajhøj wrote:
>>> On 5/6/2013 6:28 PM, Stefan Ram wrote:
>>>>    A scope is a region of the source text. Identifiers
>>>>    have a scope.
>>>>
>>>>    A lifetime is a period of time during the execution
>>>>    of a program. Variables and objects have lifetimes.
>>>>
>>>>    This has no special relation with Java, this is
>>>>    software engineering (or »programming methodology«).
>>>
>>> I really don't see that as software engineering.
>>>
>>> It is a CS exercise in definitions with little practical
>>> benefits.
>>
>> Whoah, scope versus lifetime is a pretty fundamental distinction.
>> Admittedly it was more fundamental in old block-structured languages
>> like Algol, but still...
>
> Fundamental for software engineering??
>
> Arne
>
>
Well, in order to be a software engineer you must know how to program. 
That's essential. So I'd say that programming concepts that are basic 
and fundamental like these two are important at the software engineering 
level.

AHS

[toc] | [prev] | [next] | [standalone]


#24028

FromArne Vajhøj <arne@vajhoej.dk>
Date2013-05-12 22:17 -0400
Message-ID<51904d56$0$32115$14726298@news.sunsite.dk>
In reply to#23947
On 5/8/2013 4:48 PM, Arved Sandstrom wrote:
> On 05/07/2013 10:38 PM, Arne Vajhøj wrote:
>> On 5/7/2013 6:10 PM, David Lamb wrote:
>>> On 06/05/2013 9:46 PM, Arne Vajhøj wrote:
>>>> On 5/6/2013 6:28 PM, Stefan Ram wrote:
>>>>>    A scope is a region of the source text. Identifiers
>>>>>    have a scope.
>>>>>
>>>>>    A lifetime is a period of time during the execution
>>>>>    of a program. Variables and objects have lifetimes.
>>>>>
>>>>>    This has no special relation with Java, this is
>>>>>    software engineering (or »programming methodology«).
>>>>
>>>> I really don't see that as software engineering.
>>>>
>>>> It is a CS exercise in definitions with little practical
>>>> benefits.
>>>
>>> Whoah, scope versus lifetime is a pretty fundamental distinction.
>>> Admittedly it was more fundamental in old block-structured languages
>>> like Algol, but still...
>>
>> Fundamental for software engineering??
>>
> Well, in order to be a software engineer you must know how to program.

In theory no. Software engineering is the process of getting from
requirements to a detailed description of the implementation. The
output does not have to be code.

In practice yes. 99.999% will have to produce code as output. Producing
documentation outlining details of all data structure and control
structures and then later let somebody else convert it to actual
code rarely make sense.

So let us assume that software engineering requires coding.

> That's essential. So I'd say that programming concepts that are basic
> and fundamental like these two are important at the software engineering
> level.

Why?

Some given code does not get better or worse depending on whether
the author know those definitions.

The usual reason to know common terms is to be able to communicate
efficiently.

But is those two terms something that is used in communication
as part of software development?

I doubt that.

Arne

[toc] | [prev] | [next] | [standalone]


#24116

FromArved Sandstrom <asandstrom2@eastlink.ca>
Date2013-05-17 19:35 -0300
Message-ID<Ogylt.1$MQ7.0@newsfe18.iad>
In reply to#24028
On 05/12/2013 11:17 PM, Arne Vajhøj wrote:
> On 5/8/2013 4:48 PM, Arved Sandstrom wrote:
>> On 05/07/2013 10:38 PM, Arne Vajhøj wrote:
>>> On 5/7/2013 6:10 PM, David Lamb wrote:
>>>> On 06/05/2013 9:46 PM, Arne Vajhøj wrote:
>>>>> On 5/6/2013 6:28 PM, Stefan Ram wrote:
>>>>>>    A scope is a region of the source text. Identifiers
>>>>>>    have a scope.
>>>>>>
>>>>>>    A lifetime is a period of time during the execution
>>>>>>    of a program. Variables and objects have lifetimes.
>>>>>>
>>>>>>    This has no special relation with Java, this is
>>>>>>    software engineering (or »programming methodology«).
>>>>>
>>>>> I really don't see that as software engineering.
>>>>>
>>>>> It is a CS exercise in definitions with little practical
>>>>> benefits.
>>>>
>>>> Whoah, scope versus lifetime is a pretty fundamental distinction.
>>>> Admittedly it was more fundamental in old block-structured languages
>>>> like Algol, but still...
>>>
>>> Fundamental for software engineering??
>>>
>> Well, in order to be a software engineer you must know how to program.
>
> In theory no. Software engineering is the process of getting from
> requirements to a detailed description of the implementation. The
> output does not have to be code.
>
> In practice yes. 99.999% will have to produce code as output. Producing
> documentation outlining details of all data structure and control
> structures and then later let somebody else convert it to actual
> code rarely make sense.
>
> So let us assume that software engineering requires coding.
>
>> That's essential. So I'd say that programming concepts that are basic
>> and fundamental like these two are important at the software engineering
>> level.
>
> Why?
>
> Some given code does not get better or worse depending on whether
> the author know those definitions.
>
> The usual reason to know common terms is to be able to communicate
> efficiently.
>
> But is those two terms something that is used in communication
> as part of software development?
>
> I doubt that.
>
> Arne
>
I respectfully disagree. Maybe we are arguing at cross-purposes here, 
Arne, I can't conceive of a competent developer not understanding scope 
and lifetime. Maybe you don't actually use the words in communication 
often, but it's part of your thinking. I probably last used the term 
"garbage collection" in a conversation last year, but I think about it 
at least once a week.

Scope and lifetime are concepts that fall into the larger categories of 
resource management and reliability. At a minimum.

A lot of programmers may not use the terms per se, but you can always 
tell the difference between the coders who understand those 2 concepts, 
and the ones that don't. And the latter always write worse code. So to 
me that makes them essential concepts in software engineering.

AHS

[toc] | [prev] | [next] | [standalone]


#24118

FromArne Vajhøj <arne@vajhoej.dk>
Date2013-05-17 18:53 -0400
Message-ID<5196b4d7$0$32114$14726298@news.sunsite.dk>
In reply to#24116
On 5/17/2013 6:35 PM, Arved Sandstrom wrote:
> On 05/12/2013 11:17 PM, Arne Vajhøj wrote:
>> On 5/8/2013 4:48 PM, Arved Sandstrom wrote:
>>> On 05/07/2013 10:38 PM, Arne Vajhøj wrote:
>>>> On 5/7/2013 6:10 PM, David Lamb wrote:
>>>>> On 06/05/2013 9:46 PM, Arne Vajhøj wrote:
>>>>>> On 5/6/2013 6:28 PM, Stefan Ram wrote:
>>>>>>>    A scope is a region of the source text. Identifiers
>>>>>>>    have a scope.
>>>>>>>
>>>>>>>    A lifetime is a period of time during the execution
>>>>>>>    of a program. Variables and objects have lifetimes.
>>>>>>>
>>>>>>>    This has no special relation with Java, this is
>>>>>>>    software engineering (or »programming methodology«).
>>>>>>
>>>>>> I really don't see that as software engineering.
>>>>>>
>>>>>> It is a CS exercise in definitions with little practical
>>>>>> benefits.
>>>>>
>>>>> Whoah, scope versus lifetime is a pretty fundamental distinction.
>>>>> Admittedly it was more fundamental in old block-structured languages
>>>>> like Algol, but still...
>>>>
>>>> Fundamental for software engineering??
>>>>
>>> Well, in order to be a software engineer you must know how to program.
>>
>> In theory no. Software engineering is the process of getting from
>> requirements to a detailed description of the implementation. The
>> output does not have to be code.
>>
>> In practice yes. 99.999% will have to produce code as output. Producing
>> documentation outlining details of all data structure and control
>> structures and then later let somebody else convert it to actual
>> code rarely make sense.
>>
>> So let us assume that software engineering requires coding.
>>
>>> That's essential. So I'd say that programming concepts that are basic
>>> and fundamental like these two are important at the software engineering
>>> level.
>>
>> Why?
>>
>> Some given code does not get better or worse depending on whether
>> the author know those definitions.
>>
>> The usual reason to know common terms is to be able to communicate
>> efficiently.
>>
>> But is those two terms something that is used in communication
>> as part of software development?
>>
>> I doubt that.

> I respectfully disagree. Maybe we are arguing at cross-purposes here,
> Arne, I can't conceive of a competent developer not understanding scope
> and lifetime. Maybe you don't actually use the words in communication
> often, but it's part of your thinking. I probably last used the term
> "garbage collection" in a conversation last year, but I think about it
> at least once a week.
>
> Scope and lifetime are concepts that fall into the larger categories of
> resource management and reliability. At a minimum.
>
> A lot of programmers may not use the terms per se, but you can always
> tell the difference between the coders who understand those 2 concepts,
> and the ones that don't. And the latter always write worse code. So to
> me that makes them essential concepts in software engineering.

I agree that an understanding of the substance behind the two terms
are necessary for programming - and for software engineering.

My disagreement was only about the necessity of knowing the terms.

I assume that Stefan was talking about the usage of the terms.

As it is possible for a lecturer to get the terms mixed up, but I can
not really see how it would be possible to get the substances
mixed up.

Arne

[toc] | [prev] | [next] | [standalone]


#24119

FromArne Vajhøj <arne@vajhoej.dk>
Date2013-05-17 19:02 -0400
Message-ID<5196b703$0$32114$14726298@news.sunsite.dk>
In reply to#24118
On 5/17/2013 6:53 PM, Arne Vajhøj wrote:
> On 5/17/2013 6:35 PM, Arved Sandstrom wrote:
>> On 05/12/2013 11:17 PM, Arne Vajhøj wrote:
>>> On 5/8/2013 4:48 PM, Arved Sandstrom wrote:
>>>> On 05/07/2013 10:38 PM, Arne Vajhøj wrote:
>>>>> On 5/7/2013 6:10 PM, David Lamb wrote:
>>>>>> On 06/05/2013 9:46 PM, Arne Vajhøj wrote:
>>>>>>> On 5/6/2013 6:28 PM, Stefan Ram wrote:
>>>>>>>>    A scope is a region of the source text. Identifiers
>>>>>>>>    have a scope.
>>>>>>>>
>>>>>>>>    A lifetime is a period of time during the execution
>>>>>>>>    of a program. Variables and objects have lifetimes.
>>>>>>>>
>>>>>>>>    This has no special relation with Java, this is
>>>>>>>>    software engineering (or »programming methodology«).
>>>>>>>
>>>>>>> I really don't see that as software engineering.
>>>>>>>
>>>>>>> It is a CS exercise in definitions with little practical
>>>>>>> benefits.
>>>>>>
>>>>>> Whoah, scope versus lifetime is a pretty fundamental distinction.
>>>>>> Admittedly it was more fundamental in old block-structured languages
>>>>>> like Algol, but still...
>>>>>
>>>>> Fundamental for software engineering??
>>>>>
>>>> Well, in order to be a software engineer you must know how to program.
>>>
>>> In theory no. Software engineering is the process of getting from
>>> requirements to a detailed description of the implementation. The
>>> output does not have to be code.
>>>
>>> In practice yes. 99.999% will have to produce code as output. Producing
>>> documentation outlining details of all data structure and control
>>> structures and then later let somebody else convert it to actual
>>> code rarely make sense.
>>>
>>> So let us assume that software engineering requires coding.
>>>
>>>> That's essential. So I'd say that programming concepts that are basic
>>>> and fundamental like these two are important at the software
>>>> engineering
>>>> level.
>>>
>>> Why?
>>>
>>> Some given code does not get better or worse depending on whether
>>> the author know those definitions.
>>>
>>> The usual reason to know common terms is to be able to communicate
>>> efficiently.
>>>
>>> But is those two terms something that is used in communication
>>> as part of software development?
>>>
>>> I doubt that.
>
>> I respectfully disagree. Maybe we are arguing at cross-purposes here,
>> Arne, I can't conceive of a competent developer not understanding scope
>> and lifetime. Maybe you don't actually use the words in communication
>> often, but it's part of your thinking. I probably last used the term
>> "garbage collection" in a conversation last year, but I think about it
>> at least once a week.
>>
>> Scope and lifetime are concepts that fall into the larger categories of
>> resource management and reliability. At a minimum.
>>
>> A lot of programmers may not use the terms per se, but you can always
>> tell the difference between the coders who understand those 2 concepts,
>> and the ones that don't. And the latter always write worse code. So to
>> me that makes them essential concepts in software engineering.
>
> I agree that an understanding of the substance behind the two terms
> are necessary for programming - and for software engineering.
>
> My disagreement was only about the necessity of knowing the terms.
>
> I assume that Stefan was talking about the usage of the terms.
>
> As it is possible for a lecturer to get the terms mixed up, but I can
> not really see how it would be possible to get the substances
> mixed up.

And I am not considering it useless to know the definitions
either.

I just don't see knowing the definitions as being
part of software engineering discipline.

Arne

[toc] | [prev] | [next] | [standalone]


#24120

FromArved Sandstrom <asandstrom2@eastlink.ca>
Date2013-05-17 20:14 -0300
Message-ID<YQylt.241$tp3.55@newsfe23.iad>
In reply to#24119
On 05/17/2013 08:02 PM, Arne Vajhøj wrote:
> On 5/17/2013 6:53 PM, Arne Vajhøj wrote:
>> On 5/17/2013 6:35 PM, Arved Sandstrom wrote:
>>> On 05/12/2013 11:17 PM, Arne Vajhøj wrote:
>>>> On 5/8/2013 4:48 PM, Arved Sandstrom wrote:
>>>>> On 05/07/2013 10:38 PM, Arne Vajhøj wrote:
>>>>>> On 5/7/2013 6:10 PM, David Lamb wrote:
>>>>>>> On 06/05/2013 9:46 PM, Arne Vajhøj wrote:
>>>>>>>> On 5/6/2013 6:28 PM, Stefan Ram wrote:
>>>>>>>>>    A scope is a region of the source text. Identifiers
>>>>>>>>>    have a scope.
>>>>>>>>>
>>>>>>>>>    A lifetime is a period of time during the execution
>>>>>>>>>    of a program. Variables and objects have lifetimes.
>>>>>>>>>
>>>>>>>>>    This has no special relation with Java, this is
>>>>>>>>>    software engineering (or »programming methodology«).
>>>>>>>>
>>>>>>>> I really don't see that as software engineering.
>>>>>>>>
>>>>>>>> It is a CS exercise in definitions with little practical
>>>>>>>> benefits.
>>>>>>>
>>>>>>> Whoah, scope versus lifetime is a pretty fundamental distinction.
>>>>>>> Admittedly it was more fundamental in old block-structured languages
>>>>>>> like Algol, but still...
>>>>>>
>>>>>> Fundamental for software engineering??
>>>>>>
>>>>> Well, in order to be a software engineer you must know how to program.
>>>>
>>>> In theory no. Software engineering is the process of getting from
>>>> requirements to a detailed description of the implementation. The
>>>> output does not have to be code.
>>>>
>>>> In practice yes. 99.999% will have to produce code as output. Producing
>>>> documentation outlining details of all data structure and control
>>>> structures and then later let somebody else convert it to actual
>>>> code rarely make sense.
>>>>
>>>> So let us assume that software engineering requires coding.
>>>>
>>>>> That's essential. So I'd say that programming concepts that are basic
>>>>> and fundamental like these two are important at the software
>>>>> engineering
>>>>> level.
>>>>
>>>> Why?
>>>>
>>>> Some given code does not get better or worse depending on whether
>>>> the author know those definitions.
>>>>
>>>> The usual reason to know common terms is to be able to communicate
>>>> efficiently.
>>>>
>>>> But is those two terms something that is used in communication
>>>> as part of software development?
>>>>
>>>> I doubt that.
>>
>>> I respectfully disagree. Maybe we are arguing at cross-purposes here,
>>> Arne, I can't conceive of a competent developer not understanding scope
>>> and lifetime. Maybe you don't actually use the words in communication
>>> often, but it's part of your thinking. I probably last used the term
>>> "garbage collection" in a conversation last year, but I think about it
>>> at least once a week.
>>>
>>> Scope and lifetime are concepts that fall into the larger categories of
>>> resource management and reliability. At a minimum.
>>>
>>> A lot of programmers may not use the terms per se, but you can always
>>> tell the difference between the coders who understand those 2 concepts,
>>> and the ones that don't. And the latter always write worse code. So to
>>> me that makes them essential concepts in software engineering.
>>
>> I agree that an understanding of the substance behind the two terms
>> are necessary for programming - and for software engineering.
>>
>> My disagreement was only about the necessity of knowing the terms.
>>
>> I assume that Stefan was talking about the usage of the terms.
>>
>> As it is possible for a lecturer to get the terms mixed up, but I can
>> not really see how it would be possible to get the substances
>> mixed up.
>
> And I am not considering it useless to know the definitions
> either.
>
> I just don't see knowing the definitions as being
> part of software engineering discipline.
>
> Arne
>
>
Might be a matter of how we interpret the English. To me, "knowing the 
definitions" means to "understand the substance".

AHS

[toc] | [prev] | [next] | [standalone]


#24121

FromArne Vajhøj <arne@vajhoej.dk>
Date2013-05-17 19:29 -0400
Message-ID<5196bd47$0$32107$14726298@news.sunsite.dk>
In reply to#24120
On 5/17/2013 7:14 PM, Arved Sandstrom wrote:
> On 05/17/2013 08:02 PM, Arne Vajhøj wrote:
>> On 5/17/2013 6:53 PM, Arne Vajhøj wrote:
>>> On 5/17/2013 6:35 PM, Arved Sandstrom wrote:
>>>> On 05/12/2013 11:17 PM, Arne Vajhøj wrote:
>>>>> On 5/8/2013 4:48 PM, Arved Sandstrom wrote:
>>>>>> On 05/07/2013 10:38 PM, Arne Vajhøj wrote:
>>>>>>> On 5/7/2013 6:10 PM, David Lamb wrote:
>>>>>>>> On 06/05/2013 9:46 PM, Arne Vajhøj wrote:
>>>>>>>>> On 5/6/2013 6:28 PM, Stefan Ram wrote:
>>>>>>>>>>    A scope is a region of the source text. Identifiers
>>>>>>>>>>    have a scope.
>>>>>>>>>>
>>>>>>>>>>    A lifetime is a period of time during the execution
>>>>>>>>>>    of a program. Variables and objects have lifetimes.
>>>>>>>>>>
>>>>>>>>>>    This has no special relation with Java, this is
>>>>>>>>>>    software engineering (or »programming methodology«).
>>>>>>>>>
>>>>>>>>> I really don't see that as software engineering.
>>>>>>>>>
>>>>>>>>> It is a CS exercise in definitions with little practical
>>>>>>>>> benefits.
>>>>>>>>
>>>>>>>> Whoah, scope versus lifetime is a pretty fundamental distinction.
>>>>>>>> Admittedly it was more fundamental in old block-structured
>>>>>>>> languages
>>>>>>>> like Algol, but still...
>>>>>>>
>>>>>>> Fundamental for software engineering??
>>>>>>>
>>>>>> Well, in order to be a software engineer you must know how to
>>>>>> program.
>>>>>
>>>>> In theory no. Software engineering is the process of getting from
>>>>> requirements to a detailed description of the implementation. The
>>>>> output does not have to be code.
>>>>>
>>>>> In practice yes. 99.999% will have to produce code as output.
>>>>> Producing
>>>>> documentation outlining details of all data structure and control
>>>>> structures and then later let somebody else convert it to actual
>>>>> code rarely make sense.
>>>>>
>>>>> So let us assume that software engineering requires coding.
>>>>>
>>>>>> That's essential. So I'd say that programming concepts that are basic
>>>>>> and fundamental like these two are important at the software
>>>>>> engineering
>>>>>> level.
>>>>>
>>>>> Why?
>>>>>
>>>>> Some given code does not get better or worse depending on whether
>>>>> the author know those definitions.
>>>>>
>>>>> The usual reason to know common terms is to be able to communicate
>>>>> efficiently.
>>>>>
>>>>> But is those two terms something that is used in communication
>>>>> as part of software development?
>>>>>
>>>>> I doubt that.
>>>
>>>> I respectfully disagree. Maybe we are arguing at cross-purposes here,
>>>> Arne, I can't conceive of a competent developer not understanding scope
>>>> and lifetime. Maybe you don't actually use the words in communication
>>>> often, but it's part of your thinking. I probably last used the term
>>>> "garbage collection" in a conversation last year, but I think about it
>>>> at least once a week.
>>>>
>>>> Scope and lifetime are concepts that fall into the larger categories of
>>>> resource management and reliability. At a minimum.
>>>>
>>>> A lot of programmers may not use the terms per se, but you can always
>>>> tell the difference between the coders who understand those 2 concepts,
>>>> and the ones that don't. And the latter always write worse code. So to
>>>> me that makes them essential concepts in software engineering.
>>>
>>> I agree that an understanding of the substance behind the two terms
>>> are necessary for programming - and for software engineering.
>>>
>>> My disagreement was only about the necessity of knowing the terms.
>>>
>>> I assume that Stefan was talking about the usage of the terms.
>>>
>>> As it is possible for a lecturer to get the terms mixed up, but I can
>>> not really see how it would be possible to get the substances
>>> mixed up.
>>
>> And I am not considering it useless to know the definitions
>> either.
>>
>> I just don't see knowing the definitions as being
>> part of software engineering discipline.
>>
> Might be a matter of how we interpret the English. To me, "knowing the
> definitions" means to "understand the substance".

I would say that:
* knowing the definition does imply knowing the substance
* not knowing the definition does not imply not knowing the substance

Arne


[toc] | [prev] | [next] | [standalone]


#24127

Fromlipska the kat <"nospam at neversurrender dot co dot uk">
Date2013-05-18 11:07 +0100
Message-ID<Mc2dnfh197hIzwrMnZ2dnUVZ8kSdnZ2d@bt.com>
In reply to#24120
On 18/05/13 00:14, Arved Sandstrom wrote:
> On 05/17/2013 08:02 PM, Arne Vajhøj wrote:
>> On 5/17/2013 6:53 PM, Arne Vajhøj wrote:
>>> On 5/17/2013 6:35 PM, Arved Sandstrom wrote:
>>>> On 05/12/2013 11:17 PM, Arne Vajhøj wrote:
>>>>> On 5/8/2013 4:48 PM, Arved Sandstrom wrote:
>>>>>> On 05/07/2013 10:38 PM, Arne Vajhøj wrote:
>>>>>>> On 5/7/2013 6:10 PM, David Lamb wrote:
>>>>>>>> On 06/05/2013 9:46 PM, Arne Vajhøj wrote:
>>>>>>>>> On 5/6/2013 6:28 PM, Stefan Ram wrote:
>>>>>>>>>>    A scope is a region of the source text. Identifiers
>>>>>>>>>>    have a scope.
>>>>>>>>>>
>>>>>>>>>>    A lifetime is a period of time during the execution
>>>>>>>>>>    of a program. Variables and objects have lifetimes.
>>>>>>>>>>
>>>>>>>>>>    This has no special relation with Java, this is
>>>>>>>>>>    software engineering (or »programming methodology«).
>>>>>>>>>
>>>>>>>>> I really don't see that as software engineering.
>>>>>>>>>
>>>>>>>>> It is a CS exercise in definitions with little practical
>>>>>>>>> benefits.
>>>>>>>>
>>>>>>>> Whoah, scope versus lifetime is a pretty fundamental distinction.
>>>>>>>> Admittedly it was more fundamental in old block-structured
>>>>>>>> languages
>>>>>>>> like Algol, but still...
>>>>>>>
>>>>>>> Fundamental for software engineering??
>>>>>>>
>>>>>> Well, in order to be a software engineer you must know how to
>>>>>> program.
>>>>>
>>>>> In theory no. Software engineering is the process of getting from
>>>>> requirements to a detailed description of the implementation. The
>>>>> output does not have to be code.
>>>>>
>>>>> In practice yes. 99.999% will have to produce code as output.
>>>>> Producing
>>>>> documentation outlining details of all data structure and control
>>>>> structures and then later let somebody else convert it to actual
>>>>> code rarely make sense.
>>>>>
>>>>> So let us assume that software engineering requires coding.
>>>>>
>>>>>> That's essential. So I'd say that programming concepts that are basic
>>>>>> and fundamental like these two are important at the software
>>>>>> engineering
>>>>>> level.
>>>>>
>>>>> Why?
>>>>>
>>>>> Some given code does not get better or worse depending on whether
>>>>> the author know those definitions.
>>>>>
>>>>> The usual reason to know common terms is to be able to communicate
>>>>> efficiently.
>>>>>
>>>>> But is those two terms something that is used in communication
>>>>> as part of software development?
>>>>>
>>>>> I doubt that.
>>>
>>>> I respectfully disagree. Maybe we are arguing at cross-purposes here,
>>>> Arne, I can't conceive of a competent developer not understanding scope
>>>> and lifetime. Maybe you don't actually use the words in communication
>>>> often, but it's part of your thinking. I probably last used the term
>>>> "garbage collection" in a conversation last year, but I think about it
>>>> at least once a week.
>>>>
>>>> Scope and lifetime are concepts that fall into the larger categories of
>>>> resource management and reliability. At a minimum.
>>>>
>>>> A lot of programmers may not use the terms per se, but you can always
>>>> tell the difference between the coders who understand those 2 concepts,
>>>> and the ones that don't. And the latter always write worse code. So to
>>>> me that makes them essential concepts in software engineering.
>>>
>>> I agree that an understanding of the substance behind the two terms
>>> are necessary for programming - and for software engineering.
>>>
>>> My disagreement was only about the necessity of knowing the terms.
>>>
>>> I assume that Stefan was talking about the usage of the terms.
>>>
>>> As it is possible for a lecturer to get the terms mixed up, but I can
>>> not really see how it would be possible to get the substances
>>> mixed up.
>>
>> And I am not considering it useless to know the definitions
>> either.
>>
>> I just don't see knowing the definitions as being
>> part of software engineering discipline.
>>
>> Arne
>>
>>
> Might be a matter of how we interpret the English. To me, "knowing the
> definitions" means to "understand the substance".
>
> AHS

Software Engineering covers the whole process of getting from a 
statement of requirements written in natural language or more accurately 
the natural language of the problem domain to a working, maintainable 
system.

A methodology describes that process in detail and provides methods and 
guidelines to aid that process. Many different methodologies can produce 
a working, maintainable system from the same statement of requirements.

Scope and lifetime are programming language concepts that need to be 
understood in the context of the chosen language. The 'definition' of 
scope and lifetime as technical terms does not change with the language. 
The 'implementation' of the rules of scope and lifetime does.

What is the 'definition' of scope ... visibility might be a good 
descriptor. What is the 'definition' of lifetime ... how long something 
is available for reference is one possible description.

How can you understand the implementation of scope and lifetime if you 
don't understand what the words mean?

Anything that concerns the production of a system is Software 
Engineering, a methodology is a more abstract concept and implies the 
ability to create working, maintainable code. To create working, 
maintainable code you need to have an understanding of the language you 
are using, otherwise it's just hacking, hacking is not software engineering.

Just my opinion and apologies for butting in.

lipska

-- 
Lipska the Kat©: Troll hunter, sandbox destroyer
and farscape dreamer of Aeryn Sun

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.java.programmer


csiph-web