Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #23874 > unrolled thread
| Started by | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| First post | 2013-05-06 21:46 -0400 |
| Last post | 2013-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.
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
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Date | 2013-05-06 21:46 -0400 |
| Subject | Re: 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]
| From | Sven Köhler <remove-sven.koehler@gmail.com> |
|---|---|
| Date | 2013-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]
| From | Sven Köhler <remove-sven.koehler@gmail.com> |
|---|---|
| Date | 2013-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]
| From | markspace <markspace@nospam.nospam> |
|---|---|
| Date | 2013-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]
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Date | 2013-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]
| From | David Lamb <dalamb@cs.queensu.ca> |
|---|---|
| Date | 2013-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]
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Date | 2013-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]
| From | Arved Sandstrom <asandstrom2@eastlink.ca> |
|---|---|
| Date | 2013-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]
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Date | 2013-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]
| From | Arved Sandstrom <asandstrom2@eastlink.ca> |
|---|---|
| Date | 2013-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]
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Date | 2013-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]
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Date | 2013-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]
| From | Arved Sandstrom <asandstrom2@eastlink.ca> |
|---|---|
| Date | 2013-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]
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Date | 2013-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]
| From | lipska the kat <"nospam at neversurrender dot co dot uk"> |
|---|---|
| Date | 2013-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