To STL or not to STL

A

Allan Bruce

Hi there,

I am interested to know if there are any C++ programmers who do not use STL.
I have been coding in C++ for a year or so now, although only recently have
I started a large(ish)-scale project. I do not use any STL, and I was
wondering if there are any others out there that program in C++ without
using STL? (Just to see if I am being stupid by not using it)

Thanks
Allan

--
Allan Bruce
Dept. of Computing Science
University of Aberdeen
Aberdeen AB24 3UE
Scotland, UK
 
?

=?iso-8859-1?Q?Andr=E9_P=F6nitz?=

Allan Bruce said:
I am interested to know if there are any C++ programmers who do not use STL.

Can't speeak for the others by I certainly do not build all the general
purpose containers myself. Why should I?

Andre'
 
C

Christopher Benson-Manica

Allan Bruce said:
I am interested to know if there are any C++ programmers who do not use STL.
I have been coding in C++ for a year or so now, although only recently have
I started a large(ish)-scale project. I do not use any STL, and I was
wondering if there are any others out there that program in C++ without
using STL? (Just to see if I am being stupid by not using it)

FWIW, the director of programming at my company is an old DOS h4x0r, and he
long ago wrote code that completely wraps/replaces (I can't say which...) the
STL. His reasoning is that the STL (std::vectors, particularly), didn't
behave like he wanted, and anyway he's a real "reinvent a better wheel" type
of guy.
 
G

Graeme Cogger

Allan said:
Hi there,

I am interested to know if there are any C++ programmers who do not use STL.
I have been coding in C++ for a year or so now, although only recently have
I started a large(ish)-scale project. I do not use any STL, and I was
wondering if there are any others out there that program in C++ without
using STL? (Just to see if I am being stupid by not using it)

Thanks
Allan
I'd say that the biggest group of programmers that don't use the
standard library would have to be those writing Windows apps using the
MFC library. Since MFC provides similar types of classes (strings,
containers), the majority of programmers that I know have little
knowledge of the standard library.
 
D

d2003xx

Allan Bruce said:
Hi there,

I am interested to know if there are any C++ programmers who do not use STL.
I have been coding in C++ for a year or so now, although only recently have
I started a large(ish)-scale project. I do not use any STL, and I was
wondering if there are any others out there that program in C++ without
using STL? (Just to see if I am being stupid by not using it)

me. Because it slows down the compilation too much (I hate waiting..)
 
R

Ron Natalie

Allan Bruce said:
Hi there,

I am interested to know if there are any C++ programmers who do not use STL.

I'm assuming by STL we're talking about the standard C++ library (as opposed to
the old thing called the STL which precedes it).

If they never use it, they've got their head stuck some where.
I have been coding in C++ for a year or so now, although only recently have
I started a large(ish)-scale project. I do not use any STL, and I was
wondering if there are any others out there that program in C++ without
using STL? (Just to see if I am being stupid by not using it)
Yes you are. If there is a feature supported by the library, you're better
off using it than rolling your own. They make things much simpler. For
example, vector and string both have reasonable copy/assignment/destruction
behavior which means you don't have to sit there managing memory with new and
delete.
 
R

Ron Natalie

Christopher Benson-Manica said:
behave like he wanted, and anyway he's a real "reinvent a better wheel" type

What makes you think his reinvented wheel is better?
..
 
R

Ron Natalie

Graeme Cogger said:
I'd say that the biggest group of programmers that don't use the
standard library would have to be those writing Windows apps using the
MFC library. Since MFC provides similar types of classes (strings,
containers), the majority of programmers that I know have little
knowledge of the standard library.

The majority of people who think the world ends at the MFC boundary
perhaps. I wouldn't say a majority of C++ programmers.
 
C

Christopher Benson-Manica

Ron Natalie said:
What makes you think his reinvented wheel is better?

Nothing, necessarily. His philosophy is that he'd rather debug his own code
rather than someone else's. I think the main reason we don't use the STL is
that he started writing code 20 years ago, and back then I imagine his code
may very well have been superior to the STL. One advantage is that when I
want a "standard" class to do something different, I've got the implementor of
the class sitting two desks away, and in 10 minutes I have what I want. The
disadvantage, of course, is that should I find employment elsewhere, my new
boss probably will not be pleased that I know nothing about the standard
template library.
 
R

Ron Natalie

Christopher Benson-Manica said:
Nothing, necessarily. His philosophy is that he'd rather debug his own code
rather than someone else's.

My philosophy is that the standard library is usually already debugged. Certainly
any bugs in it are much easier to deal with than reimplementing it and debugging
and providing ongoing support for an equivelent amout of code.
I think the main reason we don't use the STL is
that he started writing code 20 years ago, and back then I imagine his code
may very well have been superior to the STL.

That is true. C++ wasn't really usable more than about 10 years ago. I've been
programming in C since 1977. Times change. He needs to shed his antiquated
belief systems. Many people who transition to C++ suffer from this brain damage.
The
disadvantage, of course, is that should I find employment elsewhere, my new
boss probably will not be pleased that I know nothing about the standard
template library.

Absolutely, you'd have extreme difficulty with an interview here.
 
M

Mike Wahler

Ron Natalie said:
The majority of people who think the world ends at the MFC boundary
perhaps. I wouldn't say a majority of C++ programmers.

I write quite a bit of Windows code myself, at first it was
only in C, but now moreso in C++. Guess what I use for string
handling, containers, and much of the i/o? Standard Library.
MFC? Ten-foot-pole, and all that. :)

-Mike
 
M

Mike Wahler

Ron Natalie said:
STL.

I'm assuming by STL we're talking about the standard C++ library (as opposed to
the old thing called the STL which precedes it).

If they never use it, they've got their head stuck some where.

Yes you are. If there is a feature supported by the library, you're better
off using it than rolling your own. They make things much simpler. For
example, vector and string both have reasonable copy/assignment/destruction
behavior which means you don't have to sit there managing memory with new and
delete.

Also IMO equally important, not only is the code portable to
other platforms without all the 'hand rolled' baggage, but it's
also 'comprehension portable'. Any good C++ programmer recognizes
e.g. std::vector<std::string> as quickly and readily as he does
e.g. a 'for' loop.

One might compare this concept with e.g. the consistent sizes,
shapes, and colors of various types of road signs as in the
U.S., IMO a Good Thing(tm). "Everybody knows what they mean."

Who needs to pause to actually *read* the word "stop" on a
stop-sign? A red and white octagon at an intersection immediately
conveys the message, allowing one to focus on other important
things, such as keeping an eye on that child on a bicycle riding
on the shoulder.

Those little rascals are just like program bugs, they'll dart
out in front of you with no warning. (Happened to me this morning,
that's what evoked the analogy.) Other than being a bit rattled
by the tire screech and my scolding, he's OK. :)

-Mike
 
K

Karl Heinz Buchegger

Mike said:
Also IMO equally important, not only is the code portable to
other platforms without all the 'hand rolled' baggage, but it's
also 'comprehension portable'. Any good C++ programmer recognizes
e.g. std::vector<std::string> as quickly and readily as he does
e.g. a 'for' loop.

One might compare this concept with e.g. the consistent sizes,
shapes, and colors of various types of road signs as in the
U.S., IMO a Good Thing(tm). "Everybody knows what they mean."

Aaahhhh. You mean the white "PED XING" painted on the street :)
I had quite a funny time figuring out what that could mean when
visiting the US the first time. (Keep in mind: I am not a native
english speaker)
 
L

lilburne

Allan said:
Hi there,

I am interested to know if there are any C++ programmers who do not use STL.
I have been coding in C++ for a year or so now, although only recently have
I started a large(ish)-scale project. I do not use any STL, and I was
wondering if there are any others out there that program in C++ without
using STL? (Just to see if I am being stupid by not using it)

We don't use the standard library. Because when the decision
to move to C++ was made in 1990 the standard library didn't
exist. Most compilers didn't support templates, and as they
became available they was buggy, poorly implemented and non
standard across different platforms. Basically you couldn't
write a portable system that used templates.

Lists, sets, vectors, maps, strings, smart pointers etc were
developed in-house using the generic macros that were the
forerunners to templates. By the time the standard library
was stable enough to use, we had our own variants that had
been used throughout the company for a number of years.

If we were starting out today then we would use the standard
library, but currently there is no incentive to use the
standard library when our own variant already does the job.
 
P

puppet_sock

[to STL or not as the subject says]

Think of it this way:
- The STL is available to anybody with a recent C++ compiler.
- The STL is far more likely to be transportable than any code
you write to replace it.
- The STL is documented in several very good texts.
- The previous includes how to make the STL peform efficiently
in very many common situations and applications.
- Also included is how to choose the right container for the job.
- Also included are many considerations on how to avoid trouble,
what contained objects are required to do or provide, how to
debug trouble, how to instrument things to see how things are
doing, how to prevent resource leaks, etc. etc.
- There are several good places to discuss the STL with experts,
one such place being here.
- There is an absolute boatload of available examples in STL.
- There are many experienced STL users. New team members are likely
to already be experienced with STL.
- There are web sites that compare compilers based on, among other
things, how well they implement the STL.
- Learning the STL, and learning it well, is likely to make you a
more attractive member of future development teams.

So, if you hack together some cobbled kludge to replace the STL:
- You won't find any examples.
- You will have to provide your own documentation.
- You won't get much help from experts.
- If you want to hire somebody to help on your project, you will
have to train them up in your hacked kludge.
- If it runs slowly, you won't get help on making it faster.
- If you have memory leaks, space issues, etc., there won't be
any articles in magazines to help you.
- Your experience with this hack is unlikely to make you a more
attractive member of future software development teams.

In other words, this is one of those cases where standardization
is a very good thing. As somebody else said, the only reason not
to use the STL would be if you were handed an existing library
that provided all the functionality you needed. For example,
MFC based apps might not use the STL. Though I usually do anyway,
on those occasions I write an MFC app.
Socks
 
W

WW

Karl said:
Aaahhhh. You mean the white "PED XING" painted on the street :)
I had quite a funny time figuring out what that could mean when
visiting the US the first time.

Cross your legs? ;-)
 
M

Mike Wahler

Karl Heinz Buchegger said:
Aaahhhh. You mean the white "PED XING" painted on the street :)

As I'm sure you've figured out by now, that's "Pedestrian
Crossing." But those are usually only found in the more
urban or suburban areas. "Stop signs" appear at any intersection
without electric light signals, urban area or not (with some
exceptions, e.g. "Yield" signs on lower traffic roads, again
with a standard color and shape -- yellow triangle.) Both
those types of sign, and many others, also often appear on
the bedroom doors or walls of juvenile delinquents. :)

[End of driving lesson.] :)
I had quite a funny time figuring out what that could mean when
visiting the US the first time. (Keep in mind: I am not a native
english speaker)

It means "Don't Zing the Peds" :)

My mother recounted many such comprehension 'adventures'
during her six-month stay in Paris. (And she had taken
two years of French lessons in preparation for the trip. :))

-Mike
 
M

Moonlit

Hi,

STL. It's fast to code, it is fast code.

A few reasons and examples from real life:

Even today just 1.5 hour before I would left work, a colleage came over he
had to figure out what records had been sent to another system. Now I'm
talking about millions of records. After figuring out that the first 30
characters for the where unique. I created a program with a set (this sorted
automatically so it can do a binary search), corrected headers and footers
in the file. I was finished with testing the program actually in 1.5 hours
(including the little research for uniqueness, creating the numbers file
etc.) Debugging time was nearly zero (ok, I forget about the headers at one
time). I was surprised about the speed myself since it had to do a lookup in
about 40 megabyte of data loaded in the set.

I have programmed in pure C and this would have taken a lot longer than
this.

I have never encountered a bug in the STL (and I use it all the time).

Sure, it does take a while before you get used to using it. But once you do
you will program faster than anyone in plain C. Not only that, I at
sometime, compared 20 lines of code almost entirely of STL stuff (with the
SGI hash_map) with someone else highly optimized C code of three pages long
(it performed the same function). I talked to him how much microseconds his
lookups took because I was very curious about that. The answer he gave was
nearly the same as I had (I believe it was something like 45 and 47), but I
am quite sure that coding 20 lines take less time than 3 pages of code not
to mention the latter takes more time to read and to debug.

At some time I had to maintain a program without manuals but with a lot of
code. I wondered how to get it up in case it would crash (management decided
no backups since the data was expendible). I read through the code, since
they used the STL a lot, this was reasonably to do. It would have been much
more difficult if I would have to dig through three times the code necessary
to acomplish the same without the STL.

Therefore I would say use and or learn STL, you will do yourself and others
a favor (and you look up to date with your C++ knowledge).

http://www.sgi.com/tech/stl/


Regards, Ron AF Greve
 
M

Mike Wahler

WW said:
What does that mean?

A colloquialism (I don't know the origin). Referring to
something or someone considered undesirable, "I wouln't
touch that with a ten-foot-pole." Meaning essentially
"I would not touch that, or even go within ten feet of it."
(about three metres to you. :))

-Mike
 

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,772
Messages
2,569,593
Members
45,111
Latest member
KetoBurn
Top