Is C++ faddish like Java?

W

wee

I've been using Java for a few years now and am just amazed at how many
new "technologies" or tools come out all the time (i.e., Struts, Java
Server Faces, JMeter, jad, etc.). It is nigh impossible to keep up on
everything. It seems almost like it's a fad in which you've got to know
the next new thing or you aren't much.

I've always wondered: does the C++ world do this? Are there new
libraries coming out all the time, new paradigms, or new sets of words
that are the "in" thing and every employer wants them (even if they
don't know what they mean)? Do you know developers who are devotees of
a new thing every week? Or is it a more stabilized community with
well-known libraries and technologies? Or something else?

Thanks in advance,
wee
 
V

Victor Bazarov

wee said:
I've been using Java for a few years now and am just amazed at how many
new "technologies" or tools come out all the time (i.e., Struts, Java
Server Faces, JMeter, jad, etc.). It is nigh impossible to keep up on
everything.

Is it ever?
> It seems almost like it's a fad in which you've got to know
the next new thing or you aren't much.

I am really sorry to hear that.
I've always wondered: does the C++ world do this?

Nope. Much less hype, much more real work.
> Are there new
libraries coming out all the time, new paradigms, or new sets of words
that are the "in" thing and every employer wants them (even if they
don't know what they mean)?

Libraries? Yes, libraries do come out. Paradigms? Sometimes. Sets of
words? Can't really think of any. Employers... Most of those I know are
much more (a) technically savvy and/or (b) trusting the technical staff,
so, no "want them even if don't know what they mean" nonsense.
> Do you know developers who are devotees of
a new thing every week?
Nope.

> Or is it a more stabilized community with
well-known libraries and technologies? Or something else?

It's something else: The Real World.

V

P.S. Sorry for feeding the troll, everybody. I just can't resist their
appeal sometimes. Besides, I don't do this often...
 
W

wee

Thanks for your reply.

What do you mean by "feeding the troll"? (If you mean I'm not serious
or something, it's not true. I _am_ looking for real perspectives from
people with whom I don't usually have much contact. I would like to
turn toward the C++ world because I've gotten frustrated with the Java
realm as I've described it. It's very hard to get down to actual
programming; I've found myself just looking for the library that can do
what I need, or the new tech that'll fix everything. That's not what I
got into programming for.)
 
V

Victor Bazarov

wee said:
What do you mean by "feeding the troll"? (If you mean I'm not serious
or something, it's not true. I _am_ looking for real perspectives from
people with whom I don't usually have much contact. I would like to
turn toward the C++ world because I've gotten frustrated with the Java
realm as I've described it. It's very hard to get down to actual
programming; I've found myself just looking for the library that can do
what I need, or the new tech that'll fix everything. That's not what I
got into programming for.)

You don't have to turn to C++ to find real perspectives. You simply need
to find real work. It's not the language that you use, it's the problems
you solve, and the methods you use to solve it, which define the "reality"
of it.

As to "feeding the troll", the reasons why I imply that you may be one are
very simple: what looks like a duck, walks like a duck, and squawks like
a duck, _is_ a duck. Traits of a newsgroup troll are well-known, and your
post fits.

V
 
W

wee

Didn't mean to "inflame" anyone with my post (I looked the troll phrase
up on Wiki). I thought since there were C++ programmers here that they
could easily answer an overview comparison question like what I posted.

I personally don't believe I could just easily get a job doing C++ with
my background. Hopefully, I'm wrong. Do employers looking for C++
programmers hire people who write Java at work and who've only done C++
on their own (i.e., made their own applications at home)? If not, what
would be a good way to get into C++ programming with my kind of
background?
 
V

Victor Bazarov

wee said:
[..]

I personally don't believe I could just easily get a job doing C++ with
my background.

And that's probably not unfounded. However, the two languages have quite
a few similarities, so you could probably learn C++ fairly quickly enough
to hold an entry-level position with reasonable advancement opportunities.
> Hopefully, I'm wrong. Do employers looking for C++
programmers hire people who write Java at work and who've only done C++
on their own (i.e., made their own applications at home)?

"All generalisations are bad". To answer the question, some probably do.
But I do not keep track of employment markets outside of my own locality
and sphere of interests, and many here probably don't either, so a better
place to ask would be some newsgroup where employers hang out (not that I
know of any).
> If not, what
would be a good way to get into C++ programming with my kind of
background?

Get on a team that does both, get involved with both sides of the project,
and gradually begin doing more and more of C++ and less and less of Java.
There are probably other ways, but this one makes the most sense to me,
anyway.

V
 
W

wee

After reading several other interesting things on the web about trolls,
I now understand what you mean.

Thanks for shedding light on my uptight opinion here.
 
S

Steven T. Hatton

wee said:
I've been using Java for a few years now and am just amazed at how many
new "technologies" or tools come out all the time (i.e., Struts, Java
Server Faces, JMeter, jad, etc.). It is nigh impossible to keep up on
everything. It seems almost like it's a fad in which you've got to know
the next new thing or you aren't much.

I've always wondered: does the C++ world do this? Are there new
libraries coming out all the time, new paradigms, or new sets of words
that are the "in" thing and every employer wants them (even if they
don't know what they mean)? Do you know developers who are devotees of
a new thing every week? Or is it a more stabilized community with
well-known libraries and technologies? Or something else?

Thanks in advance,
wee

My impression is just the C++ programmers *tend* to be just the opposite to
a fault. That is, they tend to reject new ideas and new ways of looking at
things, even when they are good. It's probably because they are a bit
jaded. They seen so much hype already, when something new and different
comes along, they simply scoff at it as "the latest fad". If you say
something like Java (or C#) does such-n-such, they will often become
indignant and dismissive of the idea. That's not really a good attitude to
have. The people who work on designing Java and C# are very smart, and
often veterans of C and C++ programming. There are good ideas in these new
programs. Some of them could be adopted in C++ without any change to the
core language, and could be used to better effect, or implemented in more
efficient ways.
 
S

Steven T. Hatton

Steven said:
My impression is just the C++ programmers *tend* to be just the opposite
to
a fault. That is, they tend to reject new ideas and new ways of looking
at
things, even when they are good. It's probably because they are a bit
jaded. They seen so much hype already, when something new and different
comes along, they simply scoff at it as "the latest fad". If you say
something like Java (or C#) does such-n-such, they will often become
indignant and dismissive of the idea. That's not really a good attitude
to
have. The people who work on designing Java and C# are very smart, and
often veterans of C and C++ programming. There are good ideas in these
new
programs. Some of them could be adopted in C++ without any change to the
core language, and could be used to better effect, or implemented in more
efficient ways.

Sorry about the bad grammar. I plead low blood caffein.
 
D

David

I've been using Java for a few years now and am just amazed at how many
new "technologies" or tools come out all the time (i.e., Struts, Java
Server Faces, JMeter, jad, etc.). It is nigh impossible to keep up on
everything. It seems almost like it's a fad in which you've got to know
the next new thing or you aren't much.

I've always wondered: does the C++ world do this? Are there new
libraries coming out all the time, new paradigms, or new sets of words
that are the "in" thing and every employer wants them (even if they
don't know what they mean)? Do you know developers who are devotees of
a new thing every week? Or is it a more stabilized community with
well-known libraries and technologies? Or something else?

Thanks in advance,
wee

The Windows folks seem to have a new name for the same thing every
few months. Truth is, there isn't much new in computing for a long
time. Maybe that's a clue that I've been here a while.

C++ hasn't added a lot. A few people worked on stanardizing the
idea of sets and such once most users could agree on what was needed
and the compiler side managed to get templates working on most of the
pltaforms. Bsacially that resulted in the STL which just makes
common things to write a little more common.

There will aways be people that think they have something new and
it is generally something old or rediscovered. Extreme Programming
and stuff like that. We seem to go in cycles about what programmers
amd managers feel is an acceptable development protocol.

There are some new ideas out there that seem to come up in various
languages or discussions. The C++ groups seem to remember C often
enough that not everything is really new.

Java does appear to be part of the group that is often reinventing
itself. New tools for the same old tasks accomplished elsewhere.

I don't see many career developers or shops that get caught up
in that loop. Occasionally we'll get asked to interface with or
use something, but we've become selective about learning what the
job takes and not on free-associative learning. Developers are
always learning. Hopefully we can elimindate some of the more
mundance tasks of relearning how to develop in the next language
or operating system. Those tasks come along, but don't have to
dominate the landscape. Microsoft seems to cater to such crowds
and encourages the mahem. A team I was on briefly got their way
with using all the latest technologies and forgot the cost of
doing business that way. Eventually XML over slow serial
connections with encryption bit them pretty hard when the standard
customer of the previous product actually can back and started
begging for their productivity of the old DOS-based tools. It
wasn't DOS or the tools at the time that mattered. Those people
wrote with an understanding of what a serially connected device
could be tolerated by the customer. I'm not nieve enough to
imply that they actually made it that way on purpose the first
time around. However the next generation team that had the next
bigger embedded processor, serial links, and ethernet capability
went crazy with all kinds of tools to make their life simpler.
They even ordered hardware to blast the data into memory so they
didn't have to use the slow serial or ethernet conenctions and
could start with a loaded embedded device. When production
came around and the customers saw the new joy -- they had mixed
feelings. They didn't care about the underlying XML Database
because they couldn't use it that way. It was just slow to
manage and take care of and make it look like the old product
but a bit better via the grace of networking. The whole new
design actually consumed all the power of the processor and
it didn't do an earth-shattering amount more work than the
older system. I'm not entirely certain they figured out the
problem before they had to add all the compression and other
bells and whistles t actually make it more comfortable for
the end user.

The end goal you should strive for is not the new tools
and the new flashy interface at the beginning. Start where
the user needs you to start and work up from there. A nice
fancy underpinning could be the wrong solution even on the
new top of the line system. New is nice, a clean workable
interface that works all the time, reliably, and is responsive,
won't get the headlines at first, but it will get the users.
Are you in it for the long haul or just riding this periods
wave of tool hype?

David
 
D

David

Thanks for your reply.

What do you mean by "feeding the troll"? (If you mean I'm not serious
or something, it's not true. I _am_ looking for real perspectives from
people with whom I don't usually have much contact. I would like to
turn toward the C++ world because I've gotten frustrated with the Java
realm as I've described it. It's very hard to get down to actual
programming; I've found myself just looking for the library that can do
what I need, or the new tech that'll fix everything. That's not what I
got into programming for.)

That is a better attitide and it usually takes you further.

Java XYZ isn't what solved that xyz problem you had. There were many
solutions before and now there is XYZ for Java. There are likely
similar tools for C++ and other languages. The trick is understanding
what the XYZ tool gives you and if it is worth the investment.

XML can be easy or it can be quite complicated. The problem is,
if you're using it to talk between two of your components and you don't
need everything XML offers, there may be a simpler protocol. Yes,
XML is just fancy packaging. We've had lots of standards over the years.
XML is nice if the device you want to talk with understands it. If
the device simply speaks ASCII text with carriage returns for delimeters
is that less desirable? Not always.

C++ generally has more solutions for a given technology (say XML)
than other languages. They usually differ by how robust and complex
the developer needs them to be. You can write you own class to handle
SMTP email or buy someone elses code to do it. In the C++ world
you cna usually get the source code for at least a good example of
what you need. Combining all that can be a taks though.

In the end, C++ is more about just developing and just getting
the job done. Its not about establishing a standard and getting your
name on the protocol. C++ is also a bit more complex than your
friendly calculator. You can shoot yourself and everyone else when
you don't pay attention to the details. Most languages have that
aspect somewhere.

Actually at any given time, there is always more to learn and
understand about any given system you are developing. Even if we
isolate ourselves and learn no other tools that might also be
helpful. Master C++. Then master all the tools around it. Work
with others to make it happen. That won't happen overnight. Be
that (C++) craftsman that is saught out to make that fine product.
There are enough would-like-to-get-paid-big-bucks-for-anything-I-do
out there that all of them together wil never create that fine
product.

Yes, C++ is a way to accomplish that. Java will probably be
around for a while, but the mentality may get in the way. C++
has those traps too. Just do what you need for all the right
reasons.

David
 
D

David

Didn't mean to "inflame" anyone with my post (I looked the troll phrase
up on Wiki). I thought since there were C++ programmers here that they
could easily answer an overview comparison question like what I posted.

I personally don't believe I could just easily get a job doing C++ with
my background. Hopefully, I'm wrong. Do employers looking for C++
programmers hire people who write Java at work and who've only done C++
on their own (i.e., made their own applications at home)? If not, what
would be a good way to get into C++ programming with my kind of
background?

A background with multiple languages is usually desirable. However
you do need the experience the employer needs. Some people will suggest
open source and stuff like that. My suggestion is find a mentor --
somone to work with and explore what C++ can do. Perhaps you can do
that here. Talking over projects with others helps you develop the
thought process for making things that work.

Home experience is okay. Find a way to work into C++ work and see
if it matches what you think it is. Take that next Java task and
also write it in C++. At some point you may actually use both
languages and decide which to use. You need not support just one
language. Be good at most of them though. If you have ideas
show them around at work. Never mind that they are in C++. Learning
to design is also good. See where that takes you while you explore
the possibility of coming over the bright side of development.

David
 
T

tttpppggg

Hi wee.

Deep down in the heart of the machine is machine language.
While the hardware of the machine has grown in complexity
the machine language has too.
But it is still pssible to see what is going on in the computer,
particularly at the level of subroutine calls.
This is one level that all of these languages have in common.
Tell the computer to set a breakpoint at a routine and it will.
All of these things produce routines.

This is merely a basis and all high level languages are severely
dependent upon that base. For example if we were to create a tri-branch
machine language instruction all of the code would change; what if the
computer takes the third branch and only two are specified? This would
require a universal branch instruction much like the ARM chip.
It has conditional code built into every machine instruction.

So anyhow, for ARM at least, a third branch conditional could present a
major hurdle.
Now, the entire software chain that they have been built on must
change. Certainly porting high level code would not be a big deal,
unless there was a significant branch cost savings. A savings of some
instructions could be a very good reason to assume that this model is
valid. Generating a logical meaning out of the tribranch is
ridiculously simple. Two threshhold values may be compared by one
threshhold comparison(note spare bit). So a three way branch is simply
a band function of two values. They can easily be half the size of the
full value and still be very meaningfull.

I'm just trying to construct an argument that points out the fact that
the low level machine is really where it is at. In this way java and
C++ are both poor, but java is worse. Java has to be machine
independent and so all of this talk above really posts a nail in them
as the top tier. Until a compiler is built for the chip, no code will
run on it. Code portability can hold up for some time, but there may be
breakpoints where the old code is too expensive to allow it to
run(remember the polling loop?)

-Tim
 
W

wee

Are you in it for the long haul or just riding this periods
wave of tool hype?

I'm trying to get off of this period's wave at the moment, actually,
and get into a long haul stream. :) I'm working as a Java programmer
right now, but am just getting fed up with scurrying around, trying to
use the newest thing (which is a re-packaged old thing, as you
referenced) to make my supervisor or the customer happy. Or, my project
lead decides what we use, and he currently is jumping from one thing to
the next, and never stops on one thing to master it or to use it in a
second project. We used jsp and javascript for one project, then Struts
for the next, and now we're skipping Java Server Faces (because we
missed that loop) and going right into Spring (some other redesigned
thing that sits on top of Struts I believe). At my prior company, it
was as bad if not worse because they kept using the newer JDK as soon
as it went beta (not too smart). They even threw out their Swing/AWT
GUI and implemented Eclipse's SWT GUI instead just because someone
mentioned it.

Personally, I'm annoyed at learning new words for the same old thing,
or repackaged libraries that are still based on the same thing, or
libraries that someone wrote as an alternative (not necessarily better)
to an older tech. As you said. . . .

I would love to work in a calm environment where the tools were
stabilized and I could focus all of my time on algorithms and
architectural design. That's why I'd like to migrate over to C++,
actually.
 
W

wee

A background with multiple languages is usually desirable. However
you do need the experience the employer needs. Some people will
suggest
open source and stuff like that. My suggestion is find a mentor --
somone to work with and explore what C++ can do. Perhaps you can do
that here. Talking over projects with others helps you develop the
thought process for making things that work.

Home experience is okay. Find a way to work into C++ work and see
if it matches what you think it is. Take that next Java task and
also write it in C++. At some point you may actually use both
languages and decide which to use. You need not support just one
language. Be good at most of them though. If you have ideas
show them around at work. Never mind that they are in C++. Learning
to design is also good. See where that takes you while you explore
the possibility of coming over the bright side of development.


Thanks for this good solid information. Sounds like a plan. I will do
it!
 
V

Victor Bazarov

wee said:
[...]
I would love to work in a calm environment where the tools were
stabilized and I could focus all of my time on algorithms and
architectural design. That's why I'd like to migrate over to C++,
actually.

A calm environment? Having stable tools does not necessarily mean
a calm environment, let me tell you... Besides, algorithms and
architectural design often do not depend on what language you're
using to implement them. Just so you know...
 
W

wee

I'm just trying to construct an argument that points out the fact that
the low level machine is really where it is at. In this way java and
C++ are both poor

I agree 100%. However, I am only a beginner in Assembly (and I don't
know how to read machine), and cannot think of expecting someone to pay
me for that (though it would be very cool to work on that every day)!

I figure that C++ is closer to the machine than Java, since you can put
Assembly code inside a class file if you want/need to, and you can
touch most, if not all, of the components of the machine. Java, on the
other hand, handcuffs you before you ever make it near the components.

I've always felt a little like I was playing bumper pool when I wrote
in Java since it won't let you really hurt the machine much. The
opposite is true of Assembly, which is why it's so very cool (and scary
too). I guess I'd rather be closer than farther away from the machine,
and web programming in Java feels way too far away.

Thanks,
wee
 
W

wee

A calm environment? Having stable tools does not necessarily mean
a calm environment, let me tell you...

Oh, I'm sure of that--I can hear it in your voice! :)

By calm, I just meant an environment where I am not constantly scouring
the web for a new library to use in place of writing my own code (the
Java mentality I've seen is to prefer the former to the latter). By
calm, I mean that I'm not getting distracted every day by my peers
asking me about or my project lead asking me to use the newest tech
that they've heard of but never tried.
Besides, algorithms and architectural design often do not depend on what
language you're using to implement them. Just so you know...

I know. I write algorithms and use design patterns as much as I can in
the web programming I do at work now. It's just that the focus of my
team is not on that; for them (and in my prior 2 companies too--all of
the work in Java), algorithms & design are/were not even very important
compared to these other things.
 
V

Victor Bazarov

wee said:
[..] I write algorithms and use design patterns as much as I can in
the web programming I do at work now. It's just that the focus of my
team is not on that; for them (and in my prior 2 companies too--all of
the work in Java), algorithms & design are/were not even very important
compared to these other things.

Unfortunately (or fortunately, depending from where you look), this is
much more often a characteristic of the group than any particular
technology. I am fairly certain that given enough time one can find
a very stable group and a reasonably calm environment doing pure Java.

Perhaps the C++ community at large is less prone to swings from tool to
tool or from library to library, but hey, there are still people doing
Fortran, they should be even stabler, no?
 
D

David

wave of tool hype?

I'm trying to get off of this period's wave at the moment, actually,
and get into a long haul stream. :) I'm working as a Java programmer
right now, but am just getting fed up with scurrying around, trying to
use the newest thing (which is a re-packaged old thing, as you
referenced) to make my supervisor or the customer happy. Or, my project
lead decides what we use, and he currently is jumping from one thing to
the next, and never stops on one thing to master it or to use it in a
second project. We used jsp and javascript for one project, then Struts
for the next, and now we're skipping Java Server Faces (because we
missed that loop) and going right into Spring (some other redesigned
thing that sits on top of Struts I believe). At my prior company, it
was as bad if not worse because they kept using the newer JDK as soon
as it went beta (not too smart). They even threw out their Swing/AWT
GUI and implemented Eclipse's SWT GUI instead just because someone
mentioned it.

Personally, I'm annoyed at learning new words for the same old thing,
or repackaged libraries that are still based on the same thing, or
libraries that someone wrote as an alternative (not necessarily better)
to an older tech. As you said. . . .

I would love to work in a calm environment where the tools were
stabilized and I could focus all of my time on algorithms and
architectural design. That's why I'd like to migrate over to C++,
actually.

There are certainly groups of developers that fit more closely
with your desires. The C, C++, Forth, COBOL, FORTRAN, assembler,
and possibly even Java languages (to name a few) all have groups
that don't embrace new tools simply because they are new. As you
have also observed, there are also groups that thrive in that
environment. Perhaps part of your exploration should also include
moving to some other industry.

I suspect that your current focus is on web-based or at least
web-delivered applications that embrace a marketplace that tends
to buy what looks new and improved. There are those that do enjoy
exploring all the new gadgets out there. Personally, I don't like
or trust loading dozens of new add-ons or plug-ins to view a new
site that I may visit.

So what might be a stark contrast to the fast moving web
clientel? Consider some everyday products that use computers.
What does an ipod have inside it? Would they embrace a brand
new technology or go for some proven technologies? If you have a
car or have ridden in a plane and it had computers used to operate
and make it do you think that the latest version of technology
would be in there? Would you even want it to be? Perhaps you
have seen the cartoon where an airline passenger opens their
laptop during a flight and the ever helpful bluetooth agent
helps you aquire control of a nearby device -- the airplane!
The automobile and especially the airline industry is highly
focused on goals like cost cutting, safety, and reliability.
Another area group that might interest you is the medical
industry. While there are groups that use the new tools for
exploring molecular relationships, would unproven tools be
embraced for creating the next pacemaker? Not likely.
The entertainment industry also has groups that focus on
cheap, effective, reliable devices. Consider your television's
set-top box, TiVo, or a similar gadget. There are also groups
that will challenge even these careful folks. How about
the military and space agencies? Java was part of some recent
devices sent to Mars. So were some very reliable operating
systems and interpreted languages. You might like to read up
on the Mars Rover and its technologies.

I've worked in education, military, telecommunications,
internet, and medical groups over the years. Sometimes I'm
at the leading edge and other times at the trailing edge of
technology. It is always a great challenge to restructure
a system, build something reliable and valuable, and be able
to say that you contributed to some part of something that you
can point out to people. You will probably want to enjoy
your work environment and what you are working on. Perhaps
some of these areas will also interest you.

There are many other news groups you could also hang out in
that could help you explore other ideas. comp.arch.embedded
is a good one. The focus there is naturally embedded devices,
but that can mean many things. They explore reliability and
testability more than say a web developer group would.

Some of the above areas are likely not to be something you
want to do. I've applied for and been turned down for certain
radio and airline industry positions. The complaint was that
I wouldn't be happy making one of two changes every couple years
and filling out mountains of paperwork to justify and specify
every change. The medical device industry (implantable devices,
scanners, and diagnostic equipment) can also be kind of different.

What other interests do you have besides the obvious interest
in computers? Say that you are interested in medical technology.
While you may not be a leading expert on some facet of technology
or contribute at some doctoral level, there may be areas that
can be very rewarding. I've worked on several medical and
technical problems where there were terrific scientists that knew
how to do something like image recognition, however they weren't
professional programmers and wrote garbage for prototypes. Usually
they didn't even do the recognition tasks in an unlimited time,
let alone be able to repeat it for the next image. That is where
it is best to create a team of several professions of which you
may be just a small part.

Teams of developers come in all sizes and organizations. What
is comfortable for you? Would being part of a team of 20 people
writing some large business application for some company be
a good or bad experience? Would it even matter?

You are obviously a bit dissatisfied with a few aspects of your
current position. It is but one small step in a long career if
you would like it to be. I hope it is a satisfying one for you.

David
 

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
474,176
Messages
2,570,950
Members
47,504
Latest member
SherryFerr

Latest Threads

Top