The STL helps greatly to manage the
scope and lifetimes objects vs. roll-your-own
C datastructures and algorithms. However,
once you put together a complex system
it can still bite you if you're not extremely careful.
STL data structures allow you to push C++
to a very high level of abstraction, but you
should never forget that you're still using a relatively
low-level language.
You have to pay very close attention to where
you are storing pointers or iterators, and to when the
things they reference are freed or moved.
It is very easy to misuse the automatic
constructors and destructors in C++, especially
if you don't understand exactly what the STL
is doing "under the hood" for each operation
you perform with it.
"Smart pointers" help, but they have their own
bugs and quirks, too. (I once did "bidirectional"
smart pointers that were pretty idiotproof; all
ends of each multiway link were aware of each other, but
this had a lot of overhead.)
You can minimize this risk to some extent by
designing the code to pass around auto-constructed copies
of data instead of references or pointers, but
this will tend to impact performance, sometimes
so much so that Java would be faster.
Multi-threaded apps are even harder to get
correct, since STL is not generally threadsafe.
Oh yeah, looking at the mangled names when
you debug your code will drive you insane.
Nevertheless, IMHO, the STL is still the best
thing about C++ and is just about the only
reason I would use it instead of C. (Either one,
though, is a last resort. I tend to develop and test all
code in something like Python, and port portions
to other languages only as needed.)
Man, I totally agree. They're not even worth the diskspace.
Obviously, you've never seen the LP version of
the double album "Kiss Alive II". I still have the
copy I bought 25 years ago. It folds out
to show a vivid color 24x12 inch live concert photo
with the band raised on hydraulic platforms in front
truly impressive array of fireworks and huge orange
fireballs. It contains a 12x12 inch book
detailing the "Evolution of Kiss". It has two
nice big 12 inch vinyl platters. I think it came
with some 24x24 inch Kiss posters, but I've lost those
over the years.
This package had real value that is still interesting
today. I think that side IV even has some good music on it.
I'd bet if you bought the CD version today,
you'd be lucky to get 4 inch sheet of paper
with the list of titles on it.
I think the record companies hurt themselves
when they started selling $17 products that have almost zero
value-add over a bootleg copy.
Maybe the anti-US government poeple who live in those areas should
consider where the land came from in the
first place. The US government appropriated
it from natives or bought it from colonial empires,
then gave it away or sold it (or still rents it) at absurdely low prices to
homesteaders, ranchers and miners.
Now people are unhappy that the government
is less than an ideal neighbor. Maybe the old sayings "caveat emptor" and "you get what you pay for"
are proved right again.
I disagree. You need to get out and deal with non-programmers more...
I guess you're right. Ordinary people thrive
on long meaningless columns of numbers
with cryptic numerical cross references and
instruction steps that lack any context.
Programmers are the only people who
can't handle such a wonderful
system. I'm sorry I suggested any changes.
I suppose that other software companies
looked at Borland's overall success history
in the marketplace, and they decided that
straightforward EULAs must not be a key
factor for success.
(Hmm... Maybe that also explains why
most companies don't switch to a stupid name
and then back either...)
I think another issue is the form designers
are boring accountants, not programmers.
A lot of times the procedure to compute your
taxes isn't that hard, but they always present
it in a linear column format, and they always
use "line numbers" for values, which removes
any meaning. You quickly get lost trying to
juggle all of the meaningless numbers.
It's like writing an algorithm in binary machine
code instead of a readable language. If they
would just structure the form like a flowchart
or indented program, and use real variable
names instead of line numbers, it would
all be much easier for everyone to understand.
as I believe the US Air Force already uses with considerable sophistication, or even better, pointing/typing through brain waves.
I'll bet that system requires some pretty
sensitive signal discrimination. I can imagine
a typical session:
Pilot: Auummmmmmm... I am totally relaxed for smooth brainwaves
System: One moment please...
Pilot: Auummmmmmm... meditate for total concentration
System: Mind lock achieved. Proceed.
Pilot: Auummmmmmmm... nudge cursor to left
System: Beep
Pilot: Auummmmmmmm... a little more to the left
System: Beep
Pilot: Auummmmmmmm... left click
System: Beep
Pilot: Auuumm--- HOLY SHIT!!! INCOMING MISSILE!!!
System: I did not understand. Please try again.
Pilot: FULL THROTTLE!!! DIVE!!!
System: Please try again.
Pilot: DAMNIT!!! JUST DO IT, YOU FUC...[eof]
This is pretty funny, after all of the comments
I've seen in the past about how PC hardware couldn't
touch snooty expensive boxes from SGI named
after gases. Well, I guess this proves them all
wrong. LOL.
Nope... It has a 128 bit wide register, by coupling 2 64bit FP registers. MMX/SSE work on 8-bit pieces of data.
So what you have is a SIMD processor, that can work on 16 8-bit operands at the same time (same opeartion, parallel data). The MMX/SSe ALU is 8-bit wide, not 128bits!!!!
The original post asked for wider buses like
game consoles. Are you under the impression
that game boxes are multiplying 128-bit long numbers
together? No. They're working on little pixels and single-precision
floating point coordinates.
Very few people need 64-bit integers for math, either.
As I said, the big deal is longer address pointers.
Then again most people here have no frigging idea about CPU design, and they speak from their asses.
Your PC already has a 128-bit processor
in the same sense as a game box (MMX and friends).
In fact, the multiple ALUs in modern CPUs
can give you 128 x N bits per clock for N ALUs.
64-bit in the context of this discussion means
address bits. It'll be a long time
before console games need 64-bit addressing.
Even though the 500mil plus price tag is large, this is a small project. 7miles first phase.... And why is it so expensive?
I'll bet the high price is due to typical
classy Vegas features:
A plan to install over 3 million synchronized pulsing neon lights,
flash bulbs and lasers
on the track and the trains. The multiple
megawatts of lights will create dazzling complex
virtual waves of light shooting through the
city
24-hours per day. The light show
will be accompanied by a specially commissioned sound
track from Andrew Lloyd Webber will be blasted
from high-powered loudspeakers.
Another expensive feature is the plan to
accelerate the cars to 90MPH in under 3 seconds,
giving enough velocity to negotiate thrilling
360 degree vertical loops installed at every third block.
mabye someone should start thinking about developing a technology for picking up trash in orbit
I wonder if you could make a solar-powered
robot satellite that heads towards each piece
of junk and snags it. It would vaporize the junk
and feed it to an ion engine that propels
it towards the next junk item. Kind of like Mr. Fusion
without the fusion.
I have no idea
whether the minimal velocity changes between bits
of junk would be too much to be powered
by the junk itself. It would certainly require
careful orbital plotting to work.
Before you take a job with the government,
consider that you will become one of
"them", and you will no longer be able
to ridicule government employees in your/. posts without becoming a hypocrite.
If bashing bureaucrats means alot to you (and it
does seem to mean alot to many people here,
judging from their posts), you should probably
skip this opportunity.
a 10x to 25x microscope will probably do more for you than a 100x,400x,1000x scope would.
Back in the days when I was a hardware
designer at a big corp., I really loved the stereoscopic
microscopes that the technicians (and
engineers in hacking mode) used for
soldering work on teeny tiny surface mount
components. They had brilliant built-in lighting,
a huge zoom range starting from almost
no magnification, a wide field of view,
and the 3D effect was
stunning. I spent lots of time just looking at
random objects in those things.
I'd really like to get one now, but I don't know
who sells them and I'm afraid that they'd be
priced in the stratosphere. If you can
afford one, I highly recommend one.
Software authors need these clauses for a reason, if they didn't have them there, they might as well go start a farming commune instead because it wouldn't be worth it to code anymore.
That's true. Software is unlike most any other
product because of its complexity and nonlinearity. The average
software developer makes hundreds of individual
decisions per day that end up embedded in their
code. Any one of those decisions could be a hole
that destroys the security of the entire product.
Testing and review helps, but it decades ago
it was mathematically shown that in general
you cannot prove whether an algorithm is bug-free.
The tiniest crack in the logic could be used
by an attacker as a wedge to subvert the entire
product.
This is very different from designing bridges
or buildings, for
example, where the thousands of decisions going
into the design tend to reinforce the basic
premise of its fundamnetal soundness. The
mathematics of each calculation are usually verified
by calculations done during other parts of the
work. Due to this feedback, systematic failures are extremely rare, and
when they do happen, often end up
showcased on History Channel programs such
as "Engineering Disasters".
Laws developed to assign liability for bridge
failures, train wrecks, etc. are not suitable
for software problems. There needs to be a
crystal clear distinction made between companies
and individuals who make an honest mistake
and work in good faith to correct it (no matter
what havoc it wrecked), versus those who
recklessly ignore third-party warnings and past problems
in favor of distributing obviously flawed products
time and time and again.
In other words, software liability should not
focus on individual incidents, but trends
and patterns of behavior. Unfortunately, the
law usually focuses on minutia, and it would
be very hard to get it to focus on the big
picture to punish only the genuine schmucks. Current
legal practice usually likes to make examples
out of a few unlucky small-timers. But as I
explained, every software developer is
almost certainly a potentially
unlucky small-time offender.
Yeah, what a fucking genious idea. There NO possible way a file extension could be wrong. Hell no. That's fucking street savvy shit. Do you code? With logic and wit like that, you'd be a fine ass motherfucker.
We're talking about GUI icons here, Einstein. They're
just hints for the user. Any non-broken program would check
the actual file format before operating
on a file. (Yes, I realize that a certain large
OS company has written broken programs that assume
the extension==file format. That's their problem.)
There is little need for extensions what so ever when you are working in a graphical environment. The GUI can assign icons to types
Don't you just love it when you open a 1000-file
directory and your hard drive grinds for
30 seconds while your file manager opens every
last one of those files to peek inside? Then
the GUI thread is bogged down while the
icons are updated in real time.
I'd rather just
use extensions, thank you. (And the thee character
limit helps keep things short and sweet.)
The biggest problem with these sort of drives is seek time.
The slow seek time doesn't bother me nearly
as much as the eternity it takes from the time
you insert the CD in the drive until the time it
is ready to send data. In fact, I'd probably
be happy with an 8X drive if it had a < 1
second delay between hitting the close button
and viewing the README file.
A writer can use a portion of a story with an expired copyright to create a new, copyrighted work. It's my personal belief that government-funded research should go into that same pool.
No problemo. Just wait until the year 2097.
The GPL copyrights on the software will expire,
and you'll be able to use it to your heart's
content.
That's why the framers of the U.S. constitution
specified limited copyright terms, after all.
You can point at a big name like Red Hat, but commercial businesses that derive from GPL software just isn't as successful.
So, you're implying that if two compainies provide
a similar product, the one that milks more money
out of its customers is better for everyone?
I would think that it would be better for Microsoft's
customers to keep many the $Billions they've been spending
on software, and save it for priorities more in line with
their core businesses. It would be like a tax cut.
by the way, the 'please close all aplications and restart your computer' error window really cracks me up when the app was run under wine in the first place.
That's what I love about using Win4Lin:
"Windows needs to restart in order to complete
your request to change the default window frame
color. Press OK to restart."
I press OK, and Win98 "reboots" in 7 seconds flat.
You have to pay very close attention to where you are storing pointers or iterators, and to when the things they reference are freed or moved. It is very easy to misuse the automatic constructors and destructors in C++, especially if you don't understand exactly what the STL is doing "under the hood" for each operation you perform with it.
"Smart pointers" help, but they have their own bugs and quirks, too. (I once did "bidirectional" smart pointers that were pretty idiotproof; all ends of each multiway link were aware of each other, but this had a lot of overhead.)
You can minimize this risk to some extent by designing the code to pass around auto-constructed copies of data instead of references or pointers, but this will tend to impact performance, sometimes so much so that Java would be faster.
Multi-threaded apps are even harder to get correct, since STL is not generally threadsafe.
Oh yeah, looking at the mangled names when you debug your code will drive you insane.
Nevertheless, IMHO, the STL is still the best thing about C++ and is just about the only reason I would use it instead of C. (Either one, though, is a last resort. I tend to develop and test all code in something like Python, and port portions to other languages only as needed.)
Man, I totally agree. They're not even worth the diskspace.
Obviously, you've never seen the LP version of the double album "Kiss Alive II". I still have the copy I bought 25 years ago. It folds out to show a vivid color 24x12 inch live concert photo with the band raised on hydraulic platforms in front truly impressive array of fireworks and huge orange fireballs. It contains a 12x12 inch book detailing the "Evolution of Kiss". It has two nice big 12 inch vinyl platters. I think it came with some 24x24 inch Kiss posters, but I've lost those over the years.
This package had real value that is still interesting today. I think that side IV even has some good music on it.
I'd bet if you bought the CD version today, you'd be lucky to get 4 inch sheet of paper with the list of titles on it.
I think the record companies hurt themselves when they started selling $17 products that have almost zero value-add over a bootleg copy.
That means WITHOUT FIBRE
Which means you dont need to dig holes and most of the assumptions of the poster are invalidated.
WooHoo! Now I can communicate securely with everybody in my unobstructed direct line of sight! Without fiber!
Wait... I could already do that by walking over to them and whispering in their ear. Oh well.
Now people are unhappy that the government is less than an ideal neighbor. Maybe the old sayings "caveat emptor" and "you get what you pay for" are proved right again.
Maybe they interpret the U.S. Constitution thusly:
I guess you're right. Ordinary people thrive on long meaningless columns of numbers with cryptic numerical cross references and instruction steps that lack any context. Programmers are the only people who can't handle such a wonderful system. I'm sorry I suggested any changes.
(Hmm... Maybe that also explains why most companies don't switch to a stupid name and then back either...)
It's like writing an algorithm in binary machine code instead of a readable language. If they would just structure the form like a flowchart or indented program, and use real variable names instead of line numbers, it would all be much easier for everyone to understand.
I'll bet that system requires some pretty sensitive signal discrimination. I can imagine a typical session:
Pilot: Auummmmmmm
System: One moment please...
Pilot: Auummmmmmm... meditate for total concentration
System: Mind lock achieved. Proceed.
Pilot: Auummmmmmmm... nudge cursor to left
System: Beep
Pilot: Auummmmmmmm... a little more to the left
System: Beep
Pilot: Auummmmmmmm... left click
System: Beep
Pilot: Auuumm--- HOLY SHIT!!! INCOMING MISSILE!!!
System: I did not understand. Please try again.
Pilot: FULL THROTTLE!!! DIVE!!!
System: Please try again.
Pilot: DAMNIT!!! JUST DO IT, YOU FUC...[eof]
Good plan. Businesses that use sunlight (farming, tourism, sports, photography, etc.) are huge.
This is pretty funny, after all of the comments I've seen in the past about how PC hardware couldn't touch snooty expensive boxes from SGI named after gases. Well, I guess this proves them all wrong. LOL.
So what you have is a SIMD processor, that can work on 16 8-bit operands at the same time (same opeartion, parallel data). The MMX/SSe ALU is 8-bit wide, not 128bits!!!!
The original post asked for wider buses like game consoles. Are you under the impression that game boxes are multiplying 128-bit long numbers together? No. They're working on little pixels and single-precision floating point coordinates.
Very few people need 64-bit integers for math, either. As I said, the big deal is longer address pointers.
Then again most people here have no frigging idea about CPU design, and they speak from their asses.
Rest assured, I know plenty about CPU design.
64-bit in the context of this discussion means address bits. It'll be a long time before console games need 64-bit addressing.
I'll bet the high price is due to typical classy Vegas features:
A plan to install over 3 million synchronized pulsing neon lights, flash bulbs and lasers on the track and the trains. The multiple megawatts of lights will create dazzling complex virtual waves of light shooting through the city 24-hours per day. The light show will be accompanied by a specially commissioned sound track from Andrew Lloyd Webber will be blasted from high-powered loudspeakers.
Another expensive feature is the plan to accelerate the cars to 90MPH in under 3 seconds, giving enough velocity to negotiate thrilling 360 degree vertical loops installed at every third block.
I wonder if you could make a solar-powered robot satellite that heads towards each piece of junk and snags it. It would vaporize the junk and feed it to an ion engine that propels it towards the next junk item. Kind of like Mr. Fusion without the fusion.
I have no idea whether the minimal velocity changes between bits of junk would be too much to be powered by the junk itself. It would certainly require careful orbital plotting to work.
Before you take a job with the government, consider that you will become one of "them", and you will no longer be able to ridicule government employees in your /. posts without becoming a hypocrite.
If bashing bureaucrats means alot to you (and it
does seem to mean alot to many people here,
judging from their posts), you should probably
skip this opportunity.
Back in the days when I was a hardware designer at a big corp., I really loved the stereoscopic microscopes that the technicians (and engineers in hacking mode) used for soldering work on teeny tiny surface mount components. They had brilliant built-in lighting, a huge zoom range starting from almost no magnification, a wide field of view, and the 3D effect was stunning. I spent lots of time just looking at random objects in those things.
I'd really like to get one now, but I don't know who sells them and I'm afraid that they'd be priced in the stratosphere. If you can afford one, I highly recommend one.
That's true. Software is unlike most any other product because of its complexity and nonlinearity. The average software developer makes hundreds of individual decisions per day that end up embedded in their code. Any one of those decisions could be a hole that destroys the security of the entire product.
Testing and review helps, but it decades ago it was mathematically shown that in general you cannot prove whether an algorithm is bug-free. The tiniest crack in the logic could be used by an attacker as a wedge to subvert the entire product.
This is very different from designing bridges or buildings, for example, where the thousands of decisions going into the design tend to reinforce the basic premise of its fundamnetal soundness. The mathematics of each calculation are usually verified by calculations done during other parts of the work. Due to this feedback, systematic failures are extremely rare, and when they do happen, often end up showcased on History Channel programs such as "Engineering Disasters".
Laws developed to assign liability for bridge failures, train wrecks, etc. are not suitable for software problems. There needs to be a crystal clear distinction made between companies and individuals who make an honest mistake and work in good faith to correct it (no matter what havoc it wrecked), versus those who recklessly ignore third-party warnings and past problems in favor of distributing obviously flawed products time and time and again.
In other words, software liability should not focus on individual incidents, but trends and patterns of behavior. Unfortunately, the law usually focuses on minutia, and it would be very hard to get it to focus on the big picture to punish only the genuine schmucks. Current legal practice usually likes to make examples out of a few unlucky small-timers. But as I explained, every software developer is almost certainly a potentially unlucky small-time offender.
We're talking about GUI icons here, Einstein. They're just hints for the user. Any non-broken program would check the actual file format before operating on a file. (Yes, I realize that a certain large OS company has written broken programs that assume the extension==file format. That's their problem.)
Don't you just love it when you open a 1000-file directory and your hard drive grinds for 30 seconds while your file manager opens every last one of those files to peek inside? Then the GUI thread is bogged down while the icons are updated in real time.
I'd rather just use extensions, thank you. (And the thee character limit helps keep things short and sweet.)
The slow seek time doesn't bother me nearly as much as the eternity it takes from the time you insert the CD in the drive until the time it is ready to send data. In fact, I'd probably be happy with an 8X drive if it had a < 1 second delay between hitting the close button and viewing the README file.
No problemo. Just wait until the year 2097. The GPL copyrights on the software will expire, and you'll be able to use it to your heart's content.
That's why the framers of the U.S. constitution specified limited copyright terms, after all.
So, you're implying that if two compainies provide a similar product, the one that milks more money out of its customers is better for everyone?
I would think that it would be better for Microsoft's customers to keep many the $Billions they've been spending on software, and save it for priorities more in line with their core businesses. It would be like a tax cut.
In that case, considering most of the material here, it's pretty obvious that this site would be forced over to 'http://slashdot.crackpot'.
That's a shame; the new name just wouldn't have the same ring to it.
That's what I love about using Win4Lin:
"Windows needs to restart in order to complete your request to change the default window frame color. Press OK to restart."
I press OK, and Win98 "reboots" in 7 seconds flat.