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

A

Arne Vajhøj

LR said:
Arne said:
LR said:
I've seen some bridges come with documentation that says things like "No
vehicles over 5 [sic] tons." But I can't say I can recall ever seeing
documentation for a program that says "Do not enter numbers over
1,000,000.00 or your computer will break." Sometimes the program itself
will tell you after you enter a bad number. I suppose that would be
more like driving a six ton truck on the aforementioned bridge, without
the sign present, with perhaps obvious consequences. Although I suspect
the bridge sign was probably written with some safety factor in mind,
whereas the program probably won't work if 1,000,000.01 is entered.
I can not think of any serious enterprise app where the docs
does not specify a lot of limits (both functional and for
given hardware performance related).

Please define what you mean by the word "serious" in the above. TIA

Try:

http://www.google.com/search?hl=en&q=define:serious&btnG=Google+Search&aq=f&oq=

Arne
 
L

Lew

LR said:
IANAL, but since you're calling yourself a "software engineer" might I
ask what jurisdiction you do that in?

I call myself a "software engineer" in Maryland, the U.S. of A.
 
J

James Kanze

James Kanze <[email protected]> kirjutas:
Fascinating, would you care to give an example? (just a
theoretical interest, I'm neither French nor German).

Well, it affected almost all levels, and part of it was due to
differences in corporate culture. One simple example: the
French use a lot more white space in their coding guidelines.
More importantly, perhaps, were expectations with regards to
personal relationships. It's difficult to describe these in
detail, because of course there was a great deal of personal
variance, and there were a lot of people in both groups who you
might situation "in the middle".
 
J

James Kanze

Is it grammar? I think it's typography.

Or spelling. The line between orthography and typography is
fine.
'I' and 'i' are the same word, surely, just as awesome and
AWESOME are. But the question of where capitalisation stands
in relation to grammar is interesting - failing to capitalise
an acronym or a proper name, or the start of a sentence, is
wrong, isn't it? But is it grammar? In German, it definitely
is. In English? I'm not so sure.

In both, I'd say it's orthography, which can be attached to
grammar, but is also related to typography.
Anyway, this business of capitalising 'i' is modern trendiness
with which i have no truck. People started doing it because
lowercase 'i' was a bit indistinct in medieval handwriting,
and it made it clearer. But like the double spacing after a
full stop that people used with typewriters, it's a convention
that's outlived its usefulness, and can now be laid to rest.

Hmmm. I'm having problems relating "modern trendiness" with
"medieval handwriting", but one thing is certain: established
practice in English is to capitalize the nominative first person
singular pronoun, and it has been since the 1700's. The
original motive may have had to do with difficulties in
distinguishing the character in handwriting, but that's really
irrelevant now. The standard practice is to capitalize it, and
neither you nor I have much say about it. Not capitalizing it
is felt as an error by most English readers, and thus hinders
communication. Refusing to capitalize it, for whatever reasons,
can only be attributed to a lack of respect for your readers.
Nonetheless, Lew makes clear, in a subtle way, that he
considers this incorrect. But this is merely one of many
points on which we consider each other incorrect!

The difference, in this case, is that there are numerous
established standards. English orthography contains a lot of
irregularities, and it really could stand some cleaning up, but
you can't just decrete something in your corner, and expect it
to take hold.
 
J

James Kanze

{...]
Do the programs provably work? To the same extent that an
engineer could "prove" that the bridge they designed will
work?
There is a whole branch of computer science that is
dedicated to "program provability". In the practical world,
the theory gave rise to what is called "design by contract",
by which you define formally the specifications of your
program with pre/postconditions, invariants, etc. You can
mathematically prove that your program will work by those
means. This is used in any sensible environment that needs
absolutely reliable softwares.
Absolutely reliable? Suppose you have a customer who wants a
formal proof that the program you've written will halt. Can
you provide that?

Most of them want just the opposite:). If the program should
halt, there's usually no problem in proving it in practice;
proving that it won't is more difficult.
 
J

James Kanze

I thought that you had mentioned the use of tools in
connection with this, if not, sorry.
In that case I think the answer is "no". Software is not like
a bridge.

Not entirely. It's generally easier to verify that software
will work than it is for a bridge, because software works in a
very controlled medium.
Yes, but do software systems fail in the same way that bridges
do?
I tend to think that a significant number of bridge failures
occur because engineers don't take the entire physical world
into account when they do their work. EG, in the case of the
Tacoma Narrows they may not have accounted for certain kinds
of fluids problems. I don't recall exactly but I think the Tay
may have collapsed under it's own weight.
OTOH good engineering can work wonders which layman can only
comment on as Lincoln famously did: "That man [Herman] Haupt
has built a bridge four hundred feet long and one hundred feet
high, across Potomac Creek, on which loaded trains are passing
every hour, and upon my word, gentlemen, there is nothing in
it but cornstalks and beanpoles." I'm not sure if this is the
bridge in question, but it might fit the
bill:http://www.geocities.com/rayhaupt.geo/GeneralsBridge.JPG
I think software doesn't have this particular problem.

I'm not exactly sure what problem you're referring to. If I've
understood you correctly, then no, software doesn't have this
problem. Which makes verification several orders of magnitude
easier; you know the full environment. For some types of
software, at laest. For real time software, it's less obvious,
since it's fairly hard to be sure that you've analysed all
possible timing issues. But it's still several orders of
magnitude easier than verifying that you've analysed all
possible physical interactions which might affect a bridge.
No, I agree that would be difficult. I think I've visited that
site in the past. However, I've always thought that Computer
Science was a branch of Mathematics, and I've been told by
several engineers that engineering is the application of
scientific principle, so if you don't mind, even though you
can't do the full four years here, I was wondering if you
could take a shot at answering what I think is a simple
question with what might be a quick answer: What scientific
principle is being applied in "software engineering"?

Mathematics.

Seriously, engineering is a lot more than just the application
of scientific principles---engineering is also concerned with
esthetics, cost, development methodology, etc. (Take a look at
some of the bridges designed by Gustave Eiffel---the viaduc de
Garabit, for example---and tell me that esthetics aren't
involved). But the operative word in your case is "principles",
not just one principle, but more the set of all of them.

In many ways, the way you develop software is exactly the same
as the way an engineer develops a bridge, or an architect
develops a building. It involves a complex mixture of creative
work, applying known and established principles, having the work
verified by others, etc., etc. There is also the great range of
applications: most bridges/programs are really just a rehash of
standard solutions, and can be turned out quite quickly, with
very little real creativity or analysis. And a very, very few
push the envelope; these require even more analysis than usual.
 
C

courpron

On Tue, 25 Nov 2008, (e-mail address removed) wrote:

[...]
I don't have the numbers and you don't have them either. In particular,
I wouldn't use the adverb "vanishingly". Furthermore, any software
developper that adopts a defensive programming approach and uses
assertions as pre/postconditions starts to be on the path of DbC. Such
programmers can develop reliable components because of sufficient
defensive programming techniques.

No, sorry, DbC not accompanied by proof - as i understand (perhaps
wrongly, and please correct me if so) is normal for mainstream DbC, for
instance in Eiffel - is not any kind of analogue of proven correctness.
It's no more than a very regular and powerful testing mechanism. I'm all
for testing, and i think DbC-style pre/postcondions are a great idea, but
they do not constitute proof.

I'm talking about using pre/postconditions assertions in conjunction
with other defensive programming techniques, i. e. you use pre/post
assertions for your component and use, between those assertions,
defensive programming techniques that are known to handle all possible
situations in the context you are facing. I brought this up for the
discussion because I believe this kind of programming is more used
than pure DbC. However those techniques are rarely used homogeneously
over the whole development of a large software. In such cases, you
have in one hand the software that is not 100% reliable but, on the
other hand, some components inside the software that are reliable.
[...]
If you want to "prove" by DbC a large, existing software, then yes, it
can be costy. If you start a project and use DbC from the beginning of
the development cycle, you can actually make savings because of the
testing phase removal/reduction I mentioned earlier.

If anyone tried to sell me a project with a superficial testing phase on
the grounds that they'd designed it by contract, i would not be impressed.

I would say that's a normal reaction if you didn't hear about DbC
before.
However, between a software that has DbC but a superficial testing
phase, and a project without DbC but a lot of testing, I would choose
without hesitation the former if I wanted reliability.


Alexandre Courpron.
 
J

James Kanze

I am sure the roman engineers also considered bridge building
a mature discipline.

And it was. Mature doesn't mean that it won't evolve.
I very much doubt that software engineering is mature.
It has come a long way, but there are still lots of open road
ahead.

Certainly. That will always be the case.
 
C

courpron

 {...]
Do the programs provably work? To the same extent that an engineer could
"prove" that the bridge they designed will work?  
There is a whole branch of computer science that is dedicated to
"program provability". In the practical world, the theory gave rise to
what is called "design by contract", by which you define formally the
specifications of your program with pre/postconditions, invariants,
etc. You can mathematically prove that your program will work by those
means. This is used in any sensible environment that needs absolutely
reliable softwares.

Absolutely reliable? Suppose you have a  customer who wants a formal
proof that the program you've written will halt.  Can you provide that?

Yes, absolutely reliable. The program is proven to be correct in any
way. The proof can be given in the form of mathematical notations.

Alexandre Courpron.
 
B

Bent C Dalager

I fear you don't really understand what engineering is about.
In a very real sense, most software is more provable than any
bridge, because all possible inputs are known, and nothing else
is relevant.

Moreover, if bridge engineering is dependant upon software simulation
in order to be proper "engineering", and the software in question
cannot be engineered, then the bridge also cannot be engineered except
by replacing the software simulation with some proper engineering
discipline (scale model testing perhaps).

(Which, of course, isn't in itself an argument for software being an
engineering discipline.)

Cheers,
Bent D
 
B

Bent C Dalager

Anyway, this business of capitalising 'i' is modern trendiness with which
i have no truck. People started doing it because lowercase 'i' was a bit
indistinct in medieval handwriting, and it made it clearer. But like the
double spacing after a full stop that people used with typewriters, it's a
convention that's outlived its usefulness, and can now be laid to rest.

Capitalising the first person singular is expected by the vast
majority of readers, and it is expected to such an extent that not
capitalising it effectively makes the text harder to read. When you
consistently fail to do it on purpose it reveals a fundamental
disrespect for your readers that, in turn, causes me to lose respect
for you as a writer. Similarly there are those who feel that
capitalising the first word of a sentence is an archaic habit that
might as well be ignored, or that the established conventions for
punctuation are purely optional.

Now, for all of these it may very well be that they are correct, that
they are part of a linguistic movement that will lead to the gradual
shift of the language in the direction that they are advocating. This
is all well and good but in the mean time their text /is/ harder to
read and this /does/ have an intrinsic cost both to themselves and to
others.

It's either the price of progress or else the price of being wrong
about progress.

Cheers,
Bent D
 
T

Tom Anderson

{...]
Do the programs provably work? To the same extent that an engineer could
"prove" that the bridge they designed will work?

There is a whole branch of computer science that is dedicated to
"program provability". In the practical world, the theory gave rise to
what is called "design by contract", by which you define formally the
specifications of your program with pre/postconditions, invariants,
etc. You can mathematically prove that your program will work by those
means. This is used in any sensible environment that needs absolutely
reliable softwares.

Absolutely reliable? Suppose you have a customer who wants a formal
proof that the program you've written will halt. Can you provide that?

He might well be able to. Don't make the mistake of thinking that the
undecidability of the halting problem means you can't ever prove a program
will or will not terminate. It doesn't. It just means that you won't be
able to prove it for *some* programs (or rather, combinations of programs
and inputs). Much like how Goedel's incompleteness theorem doesn't mean
you can't prove anything, it means you can't prove everything.

tom
 
I

Ian Collins

James said:
Well, it affected almost all levels, and part of it was due to
differences in corporate culture. One simple example: the
French use a lot more white space in their coding guidelines.
More importantly, perhaps, were expectations with regards to
personal relationships.

It can work well, I worked on a couple of projects within Alcatel, all
of these were multi-national. The company had a policy of multinational
teams at that time (late 80s) with all written communication (including
meeting minutes) in English. That caused a few grumbles when there were
no native English speakers at meetings! Female software was an
interesting concept for the English members to grasp...
 
P

Puppet_Sock

Either way, another 10-15 years from now, things may look very different.

This is likely to be true regardless of whether it's
India or North America, or what language, or what
kind of computer, etc.

What did software look like in 1993? What did the
"interweb" look like in 1993? Where were entities
like Google and Amazon.com? C++ was still pretty
young, though it was a precocious little squirt.
Most of our contact with the client consists of emails and phone calls.
Once every few weeks, a couple of people fly out to their offices (which
are in a nearby country). A Bangalore-based team would have a longer plane
trip, but what's to stop them having just as much contact with the client
as us? Is it just a language thing?

We've got a contract coming over the horizon where the client is in the
Middle East. That puts the Bangaloreans closer than us, and nobbles the
lanuguage edge. How about then?

The amount of contact you need with the user/client
is highly variable from project to project.

The less clearly the spec is known, the more contact
I'd expect you to need. I've been on projects where
the client and I would sit down at a terminal three
or four times a week and bash at the interface.
"This sucks, this is good, that's confusing, what's
this for?" We'd do that for two or three hours,
then I'd take my notes and his notes back to my
desk and develop them for a day or so, and then we'd
be back at the terminal over the app again.

This was because the requirements for the app were
not very clearly defined. The guy was doing trades
with the app while I was hacking it. (In the test
market system, not the real system.) He'd find that
it was clumsy doing things the way they thought they
would do it, and changed his mind. Then he'd have
an idea that some feature needed to be more prominent.
And another needed polish. And another had to be faster.

It was a wild and crazy project. But the end result
satisfied the traders. I got "gold star" reviews
from everybody on the trade floor. My boss was happy.
His boss was happy. The traders and two levels of
their bosses were happy. Productivity abounded.

Though it was sometimes hard to be open and accurate
about the current progress of the project.

The software I replaced was supposed to be developed
on an at-a-distance basis. The client tested and
sent emails of bug reports. A month later they
would send the new version with the "bug fixes."
And the old bugs would still be there, and new
bugs would be added. After 20 consecutive months
when the bug count rose every month, upper levels
of management pulled the plug. And the lawyers
and other suits took the project.
Socks
 
L

LR

Lew said:
Logic, a branch of mathematics, for one. Not that I agree that you have
defined engineering completely, or even correctly. Also, algorithms and data
structures. Before you say those aren't scientific principles, you'll have to
let me know what you mean by "science", which I understand to be the formal
and rigorous study of phenomena to elicit the underlying structures and
relationships pertaining to the area of study. The formal study of the
underlying structures and relationships of software is called "computer
science". So the scientific principles of software engineering are the
principles of computer science.

That sounds like mathematics to me. I've always been told that Computer
Science is a branch of mathematics. Just because something is called
science doesn't mean it is, the same as if you call something
engineering it doesn't mean it is.
Just because an engineering discipline is relatively young and not necessarily
well developed doesn't mean that it's not engineering.

I agree. But something that isn't engineering won't become engineering
as it gets more mature.

Engineering is also about the way in which one applies "scientific" principles
to solve real-world problems. While the structural physics of buildings or
bridges differs from the structural rules of software, there is a cohesive and
formalizable set of principles to software. The deliberate and knowledgeable
attempt to apply those principles, i.e., the principles of computer science,
qualifies as engineering.

Sorry, I think that qualifies as mathematics.

LR
 
L

LR

Lew said:
That would not be fair. He quoted a noted and authoritative source for
definitions of engineering disciplines that categorizes an endeavor as
"software engineering". That is evidence.

Argument by appeal to authority? Well, I've done that too. And there was
nothing whatsoever unfair about it.
Providing an authoritative definition from a professional organization with an
acknowledged expertise in the area is not a "semblance of something
intelligent" but the real thing which does promote an ability "to really
understand things".

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.

Let's see, a definition from the professional organization of engineers whose
business includes software engineering is at variance with the answers you
claim to have gotten from engineers (not cited by name, I notice) over "apprx"
35 years. I think I'll align with the definition offered by the professional
society whose business it is over the unattributed anecdotal non-evidence of
your hearsay.

If that choice works for you, then that's what's best for you. I'm
still waiting for a single example of a scientific principle applied in
the development of software.

LR
 
L

LR

Arne said:
LR said:
Arne said:
LR wrote:
I've seen some bridges come with documentation that says things like "No
vehicles over 5 [sic] tons." But I can't say I can recall ever seeing
documentation for a program that says "Do not enter numbers over
1,000,000.00 or your computer will break." Sometimes the program itself
will tell you after you enter a bad number. I suppose that would be
more like driving a six ton truck on the aforementioned bridge, without
the sign present, with perhaps obvious consequences. Although I suspect
the bridge sign was probably written with some safety factor in mind,
whereas the program probably won't work if 1,000,000.01 is entered.
I can not think of any serious enterprise app where the docs
does not specify a lot of limits (both functional and for
given hardware performance related).
Please define what you mean by the word "serious" in the above. TIA

Try:

http://www.google.com/search?hl=en&q=define:serious&btnG=Google+Search&aq=f&oq=


Ok, thanks, I think I take your meaning now. So it's circular? If it
doesn't fit your criteria, then it's not serious and if it does, it is?
Did I get that right?

LR
 

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

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,019
Latest member
RoxannaSta

Latest Threads

Top