Who gets higher salary a Java Programmer or a C++ Programmer?

L

LR

Bill said:
I teach my students that software engineering is the study of tools and
techniques (methods) that are used in the development of large software
systems. Anyone developer not familiar with software engineering
principles should not be a leader (IMO).


What do you mean by large?

LR
 
L

LR

Paavo said:
One can apply sccientific principle regardless of the area of the study.
And besides, I see no fundamental distinction of a process running on 1D
arrays of bits in the computer memory, and a process running on 11D M-
branes.

Sounds like you might be discussing computer engineering?

If preparing a dinner would take man-years of team effort, then by all
means, the cooks should use engineering principles to ensure that the
result is edible. And yes, I call something engineering if it applies
engineering principles.

Like say the application of materials science to extruded food?
If I want to cross a ditch and throw a log over it, then I'm not
engineering. Maybe only a bit, the "scientific knowledge" learned from
experience and experimentation consists of facts that larger logs bear
more weight, however on the other hand they are heavier to lift.

That only a bit would imply that everything is engineering. There'd be
some interesting consequences of that. So I suspect that no one really
wants to go there.
When
choosing the suitable log I have to compromise, and this is what
engineering is all about (IMO).

If I want to make a permanent bridge over the ditch, I have to apply more
thought and effort. If I want to make a bridge a car or train can pass, I
should already make some calculations. And so on, engineering is gradual.

But surely not every calculation involves engineering? Suppose I want
to decide how much pepper to add to the pot and I have some formula
based on the volume of the pot, or rather the volume of the contents, is
that engineering?

If programming were mathematics, then it would be possible to derive new
programs from existing ones. We would have no buggy software, because the
smallest "axiom" programs would be correct, and everything else would be
rigorously derived from them. The fact that the people are forced to use
software with bugs inside shows that this is not mathematics, just like
people are forced to use bridges which sometimes collapse.

I think that Alan Turing's mathematics was quite rigorously done and his
math suggests that what you've written here is wrong. Although I'm not a
mathematician either, so maybe someone here will correct me. Not
everything can be proven using math. I think this is sort of a meta issue.

It appears you have a definition of "engineering discipline" which
excludes computer programming. In that case it make no sense to argue
further.

I have a definition that I've taken from various engineers I know who
all told me that engineering is the application of scientific principle.
Either the definition has changed, in which case I'd like to know why,
or I'd like to know what scientific principle is being applied in
"software engineering".

LR
 
L

LR

James said:
Engineering is a lot about finding cost-efficient
solutions (as opposed to pure science, where cost is not a
factor).

Yes. I'll agree with that.

Except for funding the research. ;)

LR
 
L

LR

James said:
Not really. He's arguing about the definition of a word.
Definitions are determined by use. He's siting a use. And all
uses aren't equal---the use he cited was by a professional group
of engineers, generally recognized as such. Which has a bit
more weight that citing just one random individual.

In which case AFAICT the definition would seem to have changed. Why is
that, do you think?
[...]
So far it hasn't helped me except as more evidence that there
isn't any scientific principle being applied in this so called
engineering disciple.

As we say in French: "Il n'est pire sourd que celui qui ne veut
pas entendre." (There's none so deaf as those who don't want to
hear?)

I've already admitted that I may be slow. I don't believe that I've
seen a single example of the application of scientific principle to
software development. Please be explicit. Thanks.

LR
 
L

LR

Sabine said:

Interesting stuff. I've heard about that first usage in a NATO paper.
I read somewhere, sorry, no cite, that the intent of the usage was to shock.

Because it makes it a structured, systematic and quantifiable approach
(see link above). Instead of just guessing use cases, results and
timelines.

If I accept the definition given above. But to my mind that would make
"software engineering" a unique thing. Different from say chemical,
mechanical or civil. But perhaps there is another branch of engineering
that doesn't require the application of scientific principle?
The criteria are different, so you can't apply physical strength to any
project. There is stress testing in software development.

There are viruses and bugs too. Is software development biology? I
don't mean to be flippant, but the mere use of a word doesn't confer
meaning on the object it refers to, does it?
The
engineering part makes sure the software has been tested for all
possible (and impossible) events/usages.

I suspect that this is not even likely. I gave a counter example else
thread involving input for a number of boolean variables, let's say 64.
Tough to test all of those.

And to repeat, I once spoke to a EE who told me his company was going to
test software for all possible inputs. Once I did the arithmetic for him
he withdrew his statement.

And AFAIK civil engineers have formulas to calculate physical strengths
and such, that are based on observation and experimentation.


They do. I'm sorry, did I say anything to indicate otherwise? If so,
please allow me to withdraw that. Although, I suspect they may not know
all there is to know about this yet. I also note that, AFAIK, at least
some of these are of comparatively recent origin. For example, I think
the use of timber in bridges wasn't even reasonably understood until
Herman Haupt did the experiments to figure out what the strength of the
beams were.

LR

LR
 
L

LR

James said:
So if it's defined that way, then that's what it is?
I wonder why the definition of what engineering is seems to
have changed.

It's not changed. The concept engineering includes many
aspects; he's just accenting a different one.

The _American Heritage Dictionary_ gives:

The application of scientific and mathematical principles to
practical ends such as the design, manufacture, and
operation of efficient and economical structures, machines,
processes, and systems.

That certainly covers software engineering. The term
"scientific and mathematical principles" is broad, and covers a
lot more than just physical laws like Archimedes' principle. Or
even mathematical proofs of programs. The entire sentence above
makes it clear that it also applies to the process, for example.
Every good shop I've seen makes extensive use of statistics, for
example, in evaluating their process. And controlled testing,
which is the basis of all scientific methodology. And code
review, which is a form of peer-review such as is used in all
scientific journals. Software engineering is all about the
"design [...] of efficient and economical [...] systems", using
"scientific and mathematical principles" in a practical way.
You can't get more "engineering" than that.

I'm sorry, but could you please be explicit about which scientific
principle is being applied?

Thanks,

LR
 
L

LR

Sabine said:
Well, have you ewver considered that that wasn't a complete definition,
that it may have changed over the years?

Engineering makes use of scientific methods, yes. But that's not all. To
wit:
<http://en.wikipedia.org/wiki/Engineering>

Of course that's not all. I've already said so. What I've said is that
without this, it's not engineering but something else.

I'll try to make this clearer. Application of scientific principle is
necessary but not sufficient to make something engineering.

Please tell me if that isn't clear and I'll try to do better.

Sorry if I wasn't clear before.

LR
 
J

James Kanze

[...]
I'm sorry, but could you please be explicit about which
scientific principle is being applied?

All of them. The results must be reproduceable. The results
must be validated by peer-review.

You seem to be confusing scientific principles with scientific
laws. Scientific principles are what we use to determine
whether something is a scientific law or not. Or whether a
program works or not. Whether a given program works according
to its requirements specifications is, in some ways, a
scientific law, or at least, a proposed scientific law. If we
accept that it works according to scientific principles, we've
applied those principles.

(But of course, there's a lot more to engineering than just
using scientific principles.)
 
J

James Kanze

In which case AFAICT the definition would seem to have
changed. Why is that, do you think?

I don't see where it has changed. Engineering is a complex
endevour, and its definition includes many aspects. His
definition accents one particular aspect, perhaps, but no more.
 
J

James Kanze

[...]
If I accept the definition given above. But to my mind that
would make "software engineering" a unique thing. Different
from say chemical, mechanical or civil.

Well, the same thing could be said about chemical engineering.
Or electronics engineering. Each engineering discipline is
unique. What makes them "engineering" is that they use a
scientific approach to solving pragmatic problems.
But perhaps there is another branch of engineering that
doesn't require the application of scientific principle?

They all do, including software engineering. That's part of
what makes them engineering.
There are viruses and bugs too. Is software development
biology? I don't mean to be flippant, but the mere use of a
word doesn't confer meaning on the object it refers to, does
it?

Certainly, but as I've pointed out elsewhere, software
engineering is as rigorous in this regard---perhaps
moreso---than e.g. bridge design, or some of the other
activities you've named.
I suspect that this is not even likely. I gave a counter
example else thread involving input for a number of boolean
variables, let's say 64. Tough to test all of those.

It's sufficient that it takes a double as input, and it is, for
all intents and purposes, impossible to test exhaustively.
People who claim the software is correct because it passes some
test suite aren't engineers. (Nor are people who forego testing
entirely, on the grounds that it can't catch everything.)
And to repeat, I once spoke to a EE who told me his company
was going to test software for all possible inputs. Once I did
the arithmetic for him he withdrew his statement.

Just because there are incompetents making unreasonable claims
doesn't mean that the field doesn't exist.
They do. I'm sorry, did I say anything to indicate otherwise?

My understanding was that you were forwarding the opposite
argument; that you'd only accept software engineering as an
engineering discipline if it had such formulas. And of course,
we don't have formulas based on physical strengths (although
things like the big-O notation are related in some ways). On
the other hand, the formulas aren't the scientific principle;
the reason which causes the civil engineer to accept them and to
use them is. And there are other "formulas" in software
engineering, to which the same principles can be applied.
If so, please allow me to withdraw that. Although, I suspect
they may not know all there is to know about this yet. I also
note that, AFAIK, at least some of these are of comparatively
recent origin. For example, I think the use of timber in
bridges wasn't even reasonably understood until Herman Haupt
did the experiments to figure out what the strength of the
beams were.

An aspect of engineering that hasn't been mentionned yet is that
it is continuously evolving. It took real engineering talent to
design the pont du Gard, but a modern civil engineer would
probably not recognize (or even accept as usable) any of the
"engineering" techniques used.
 
J

James Kanze

I conclude that you don't have an argument.

I conclude that you are using a rhetoric technic that isn't
being recognized or understood here. (Happens to me all the
time:).)
In what way is computer science a science and not mathematics.

In the same way quantum physics is a science. Mathematics is
also a science. It differs from other sciences in that it has a
somewhat particular relationship with reality, but if you've
read any Feynman, you'll realize that quantum physics is pretty
much in the same situation. (And if you understand quantum
physics---supposing that understanding quantum physics is
possible, or that the word "understanding" is even applicable to
quantum physics---you'll realize that it implies that all other
sciences have the same somewhat tenuous relationship to
reality.)

In a very real sense, one might say that science is
understanding, and engineering using that understanding.
Mathematics leads to real understanding, so it is a science.
Applied mathematics uses that understanding, so it is
engineering. In a similar way, computer science determines the
big-O for some algorithm (understanding), so it is science;
software engineering chooses between algorithms on the basis of
that understanding, weighing big-O, cost, etc., so it is
engineering. Of course, there's a lot more to software
engineering than just choosing the right algorithm. Much of it
is involved in choosing the right "technique"---sort of like
deciding whether a bridge should be welded or use rivets.
 
J

James Kanze

Is applied mathematics science?
I think every branch of engineering applies mathematics. But
they do it to apply scientific principle. I repeat, as I don't
believe I have received an answer, what scientific principle
is applied in "software engineering"?

That's because you've left us guessing what you mean by
"scientific principle". The examples you've given have been
more akin to formula than to principles. Software has such
(e.g. big-O forula), and they do play a role in software
engineering, but a moderate role. What makes something science,
however, isn't the formula (chemistry uses a completely
different sort of formula), but rather, the principles which are
used to determine which formula are valid. Why do you accept
F=ma (which actually isn't valid according to modern science),
rather than, say F=2ma, or F=mv? (This isn't trivial. For the
longest time, scientists believed that it was acceleration which
was dependent on the gravitational masses, rather than force.
And today relativistic and quantum physics teach us something
different as well.)
 
J

James Kanze

A cook might experiment with the mixture of spices in a dish.
Is that engineering?

If he does so in a scientific way. If he's just guessing, no,
but if he's basing his choice of which spice to try on the known
characteristics of the spice, and if he meets the other
qualifications (considers price, etc.), then it is engineering.

[...]
I don't think that an engineering approach to something
doesn't mean that it's engineering.

So what is engineering. It sounds to me like using a
engineering approach would be a definition. (Not a good one,
since it is circular.)

Science tells us whether the algorithm is correct or not, and
evaluates its speed (in big-O). Engineering tells us whether it
is appropriate in the context of the given requirements, taking
into account what science tells us about it (e.g. big-O), but
also other pragmatic issues (like development time).
 
J

James Kanze

That only a bit would imply that everything is engineering.

Not really. If there are three logs, of different sizes, and I
choose the smallest, because it is easiest to lift, even though
I hae no reason to believe that it will support my weight, it's
not engineering. If I choose one of the logs because of some
religious reasons (always choose the one on the right, because
things on the right are holy), it's not engineering. It's only
engineering if I choose based on scientific fact (or what is
believed to be so by me)---log A won't support me, but log C
will require a lot more effort to put into place than log B,
etc.
But surely not every calculation involves engineering?
Suppose I want to decide how much pepper to add to the pot and
I have some formula based on the volume of the pot, or rather
the volume of the contents, is that engineering?

Maybe. If the formula was given to me by a priest, because the
gods said to do it like that, no. If the formula is based on
how much pepper it takes to achieve a certain degree of
spiciness (determined by scientific research), yes.

The fact that it costs money:). Seriously: mathematics or
logic, in the classical sense, are sciences. They're concerned
with some sort of abstract truth, determined according to
certain criteria. Programming is concerned with solutions, not
the abstract truth. Which makes it engineering, instead of
science. (If you accept that programming is a branch of applied
mathematics, then you've accepted the "scientific principles"
aspect; the only question remains is whether it is engineering
or pure science. And I don't think that there's much doubt
about that one.)
I have a definition that I've taken from various engineers I
know who all told me that engineering is the application of
scientific principle.

Which is only part of it. Quantum physics applies scientific
principles, but I wouldn't consider it engineering.
 
T

Tom Anderson

One can apply sccientific principle regardless of the area of the study.
And besides, I see no fundamental distinction of a process running on 1D
arrays of bits in the computer memory, and a process running on 11D M-
branes.

Fundamentally, no. But in practice, there's a huge difference, because
there are simplifying approximations that describe the M-branes (or
whatever it really is) very accurately, which we can use to analyse
problems and designs to predict with corresponding accuracy whether
they'll work. There are no such approximations with the bits.

Or rather, there are such approximations for *some* things the M-branes
do. I note that there are no fields of engineering which are based around
detailed sculpting of the patterns in turbulent flow. I also note that
fast-moving compound pendulums are rarely used in mechanical engineering.
Both of these are systems which are chaotic, and thus for which there are
no simplifying approximations. Hence, they aren't tractable for
engineering.

My position is that software is like the latter - sufficiently nonlinear
that you can't engineer it in the way that you can machines, structures,
or chemical reactions.

tom
 
T

Tom Anderson

All of them. The results must be reproduceable. The results must be
validated by peer-review.

You seem to be confusing scientific principles with scientific laws.
Scientific principles are what we use to determine whether something is
a scientific law or not.

This is not a definition of 'scientific principle' which i have heard
before. In normal (and British) English, 'principle' is interchangeable
with 'law'. Mach's principle, Le Chatelier's principle, Archimedes'
principle, etc. Perhaps this is different in French.

tom
 
T

Tom Anderson

Same here: its well recognised in the UK. I hold a CE in software
engineering as well as an MSc (Chemistry).

But i'm right in thinking that one doesn't need either of those to call
oneself a software engineer, i hope?

tom
 
L

Lew

James said:
Ben Voigt [C++ MVP] wrote:
[...]
I've given several examples of scientific principles in this thread.

I'll repeat them here for your convenience.
F = ma is a scientific principle. I^2*R=W is a scientific
principle. Hz = 1/(2*PI*sqrt(L*C)) is a scientific principle.
And I repeat, I admit I had to pull out my copy of Marks for
that last one. It's a been a long time since I needed it.

Those are NOT scientific principles. They're just formula. How
and when you use them would be controled by various scientific
principles. How you know that the formula applies would be
controled by scientific principles. But the formula itself
isn't a principle.

And the principle which says that you use F=ma to determine the
force, given mass and acceleration, in a limited set of
circumstances (low speed, non-quantic mass, etc.), and which
causes you to understand that the results aren't exact, but are
probably close enough, is the same sort of principle as those
which govern software engineering. (I.e. analysis of the
surrounding conditions, to determine whether the techniques I'm
using to determine quality are "close enough".)

Don't feed the troll.
 
L

Lew

LR said:
I've already admitted that I may be slow. I don't believe that I've
seen a single example of the application of scientific principle to
software development. Please be explicit. Thanks.

You may not believe you've seen a single example of such, but in this thread
you've actually seen several examples.
 
L

Lew

James said:
Of course it is. It's the queen of sciences.

And computer science is a science. Or are you going to claim
that computer science doesn't exist, too.

He is going to, and has already done so. He's a troll.
I'd prefer the expression "scientific method" to "scientific
principles". The word "principles" can be understood at too
many different levels.

Well, LR will just reject any definitions, evidence, authority or experience
that violates his "reasoning".
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,780
Messages
2,569,608
Members
45,244
Latest member
cryptotaxsoftware12

Latest Threads

Top