Domain: att.com
Stories and comments across the archive that link to att.com.
Comments · 1,491
-
Re:Some thoughts and considerations
You can't fix a bug you don't know about, and saying Apple should somehow magically know about them all itself is disingenuous.
I don't think so at all. It's an indication of the sad state things are in when security holes are accepted as inevitable. If we still have buffer overflows in the year 2006, it's because nobody has really bothered to do what's necessary to eliminate them once and for all. (Switching to a safe language like Cyclone would fix all these, for example.) Ditto format string vulnerabilities, or integer overflows, or most of the other classes of bug that make up 90% of security holes.
I agree that it's best to give the vendor time to respond before making public that there is a security hole - assuming the vendor actually does fix it promptly. All I'm saying is that a bug is a bug, and it's not somehow less serious because of a positive attitude by Apple, or because they have improved greatly in the past couple of years, or whatever. At the end of the day, if the system is insecure then it's insecure, and if the bug found its way into released software this is a failure. With the speed at which worms can spread, you cannot rely on patching fast enough, and so what happens _after_ the bug is found is fairly unimportant. What matters is that the bug exists at all. -
CEO Ed Whitacre's ego
As a former employee of Pac Bell who watched the takeover by SBC, and lived through a couple of other SBC mergers, one of the things I lerned was that acquisitions are driven primarily by CEO Ed Whitacre's ego, not the finical result. His public comments about Internet companies using "his pipes" makes clear (to me, anyway) that this is personal, not business http://www.businessweek.com/@@n34h*IUQu7KtOwgA/ma
g azine/content/05_45/b3958092.htm In the same article from last Nov, he was saying that ATT acquiring BellSouth want's very likely, it was then announced in March http://www.att.com/gen/press-room?pid=4800&cdvn=ne ws&newsarticleid=22140 and now it's almost a done deal. His "business face" will never tell you what he's going to do, especially when he says stuff about "creating value": he's hidding something else that he dosen't want you to know about. As I read through the article with this in mind, I'm almost certain ATT is not telling what it's really doing, but it looks like people are starting to figure that out. -
Nope, you won't get 20 Mbps.
No, the internet portion will be 6Mpbs down and 1Mbps up. The rest is reserved for TV. See https://uverse1.att.com/launchAMSS.do and click on Internet.
Verizon, however, is offering 15Mbps/2Mbps.
When uverse comes to me the internet portion won't even match what I am getting from cable is offering (10/1) now. -
Re:Early Worm Gets the Bird
What happened to the Bell Telephone Company?
Meet the 'new' AT&T. We don't care. We don't have to. We're the phone company. -
Re:Embarassment
Maybe they are worried about coding standard conformance http://www.research.att.com/~bs/JSF-AV-rules.pdf
-
Re:Embarassment
Yes, it's a funny joke, but JSF is actually written in C++. The coding standards are available on Bjarne Stroustrup's website.
-
Re:Intw with Stroustrup - http://www.google.com
I dont think he likes it though
http://www.research.att.com/~bs/bs_faq.html#impost or -
Re:Only my second favorite
Not as funny as his paper on overloading whitespace: Generalizing Overloading for C++2000
;) -
Re:Programmer efficiency
I'm in the same boat you're in and for the first time in my life find myself rearranging code to bring compile times down, using Valgrind, and using Boost.Python for sanity.
The world needs a decent systems language (not C, maybe C++) with easy automated integration with a higher-productivity language like Python or C# -- maybe a closely integrated pair or family of languages, or maybe a single language working in "Safe" and "Unsafe" modes. .Net seems to be in the neighborhood by accident, Stroustrup is showing some interest, Boost.Python users know the value of it (but have to work way too hard), and Common Lispers have known the answer for decades (but have developed a fierce bias against any integration between languages or programs -- it's all one big Lisp system or nothing). Efforts to retrofit such integration onto existing languages seem hopelessly complicated and difficult, so this looks like a problem for language designers. With all this beating around the bush, we should get something useful in the next twenty years -- too bad for anyone who isn't young enough to look forward to it :-P -
Re:Problems with Programming
I think you'll be pleased to hear that arbitrary overloading is already in the works!
-
This is nothing new...
Phone companies will quite frequently attempt to pass off certain charges to the consumer through "fees." For example, the Universal Service Fee is a payment from you that goes directly to the FCC for the Universal Service Fund, the fund that pays for eRate, the government subsidization program that helps fund schools' telecommunication access (POTS, internet, long-distance, equipment to keep it all in order). The same thing is done with 911 access. The government bills the providers, and the providers just pass the bill onto consumers.
When our school switched over from AT&T to a regional long-distance provider, the rep at the regional company gave me a little insight to AT&T's various "fees." Ever take a look at the "FCC Line Charge"? According to AT&T (requires flash, and you'll need to zoom in to read the thing), it is an "FCC-approved flat-rate monthly charge paid by consumers to their Local Telephone Company so that the Local Telephone Company can recover the costs, not recovered in local rates, that are associated with connecting customers to the long distance network." Now don't you love how that works? They can advertise that their phone line only costs $18 a month, then hit you up for another $11 to cover costs that are "not recovered in local rates." And how about the "Carrier Cost Recovery Fee?" AT&T just doesn't want to have to pay their own property taxes, so they pass the cost onto consumers. I was told by the rep that AT&T has been known to pass whatever fees it can to the consumer, whatever can be FCC and state approved. Even approved "expansion fees" can be funneled into paying for new office buildings that "house infrastructure." -
This is nothing new...
Phone companies will quite frequently attempt to pass off certain charges to the consumer through "fees." For example, the Universal Service Fee is a payment from you that goes directly to the FCC for the Universal Service Fund, the fund that pays for eRate, the government subsidization program that helps fund schools' telecommunication access (POTS, internet, long-distance, equipment to keep it all in order). The same thing is done with 911 access. The government bills the providers, and the providers just pass the bill onto consumers.
When our school switched over from AT&T to a regional long-distance provider, the rep at the regional company gave me a little insight to AT&T's various "fees." Ever take a look at the "FCC Line Charge"? According to AT&T (requires flash, and you'll need to zoom in to read the thing), it is an "FCC-approved flat-rate monthly charge paid by consumers to their Local Telephone Company so that the Local Telephone Company can recover the costs, not recovered in local rates, that are associated with connecting customers to the long distance network." Now don't you love how that works? They can advertise that their phone line only costs $18 a month, then hit you up for another $11 to cover costs that are "not recovered in local rates." And how about the "Carrier Cost Recovery Fee?" AT&T just doesn't want to have to pay their own property taxes, so they pass the cost onto consumers. I was told by the rep that AT&T has been known to pass whatever fees it can to the consumer, whatever can be FCC and state approved. Even approved "expansion fees" can be funneled into paying for new office buildings that "house infrastructure." -
Re:Is this a joke?
The refusal to compile does not make the program behave differently. It does not change the behaviour of the program; in other words, it does not crash in places that it did not before.
Are you kidding?
Read the rest of my post. It most certainly crashes in places it did not before. Refusing to compile/run, means it acts differently. Either metric you chose, you're still wrong.I did what you mentioned before and both MSVC 8.0 and Mingw32(i.e. gcc on windows) say sizeof('a') == 1.
Then according to Bjarne, MSVC 8.0 isn't a C compiler. Regarding MingW32, I have no idea what you did wrong. Perhaps mingw was setup to emulate MSVC for compatability purposes.
Nope. MSVC says "c:\temp\test1\main.c(3) : error C2086: 'int i' : redefinition".
Then MSVC isn't a C compiler. Have a good day. GCC compiles hapily.
I don't claim I know all of C, but I have used a large part of it, nevertheless.
Or you have to compile it with '#ifdef __cplusplus extern "c". It is not that difficult.
But these are changes! How can something be a superset if it requires changes to be compatible?
I accept Objective-C as a superset as it doesn't require changes. There is no extern "C" in objective-C, there is no new casts, all C code is valid Objective-C code.
If you REALLY THINK C++ is a superset of C go ahead and compile something big like the Linux kernel with a C++ compiler and see how far you get.use an allocator pool. There are several available. Or write your own; it is trivial. And if you use a statically allocated block of memory, then Windows will allocate the pages for you on start up. I have actually used this on the copying garbage collector I wrote once.
It's not the same thing. You cannot allocate multiple objects out of a static pool in C++ and still get initialization. All of your constructors would need to shadow their allocations against the static buffer, which means uglier code.
So in that light, you don't know sockets, either. See previous discussion which you conventiently avoided to continue.
So let me get this straight. You'd rather not know C or C++, just so I don't know Winsock?
I wasn't going to argue with you on it because this wasn't my point, and it wasn't your point. Your point is that C is a subset of C++, so I wanted to focus on those elements. But if you insist: Winsock most certainly responds to ioctlsocket(h,FIONBIO,...). Yes Virginia, you most certainly are wrong.You also don't know Java, since the benchmark you presented is ridiculus (to say the least).
Boo hoo. You said you had never seen a benchmark demonstrating Java as being faster than C++ at some things. You never said a valid one, nor gave a criteria of what a valid one would look like.
You wanted to say "Visual Basic Classic" maybe. Because Visual Basic
.NET does not have it. And since Visual Basic Classic is obsolete, there goes your argument.Why? Because you say so without justification?
Fine. I accept that you're wrong.I will say it again: for all practical purposes, C can be considered a subset of C++. Please note the bold part. Maybe it gets in your head this time.
Can be considered a subset by you, a person who admittedly "doesn't know C all that well."
Besides, Bjarne disagrees with you.
Oh, and before you bring it up, my favorite part about that link is how he lies three times in the same answer:
``However, C++ supports every programming technique supported by C.''
-- As I've established, not true. C++ cannot mak -
Re:Is this a joke?
The refusal to compile does not make the program behave differently. It does not change the behaviour of the program; in other words, it does not crash in places that it did not before.
Are you kidding?
Read the rest of my post. It most certainly crashes in places it did not before. Refusing to compile/run, means it acts differently. Either metric you chose, you're still wrong.I did what you mentioned before and both MSVC 8.0 and Mingw32(i.e. gcc on windows) say sizeof('a') == 1.
Then according to Bjarne, MSVC 8.0 isn't a C compiler. Regarding MingW32, I have no idea what you did wrong. Perhaps mingw was setup to emulate MSVC for compatability purposes.
Nope. MSVC says "c:\temp\test1\main.c(3) : error C2086: 'int i' : redefinition".
Then MSVC isn't a C compiler. Have a good day. GCC compiles hapily.
I don't claim I know all of C, but I have used a large part of it, nevertheless.
Or you have to compile it with '#ifdef __cplusplus extern "c". It is not that difficult.
But these are changes! How can something be a superset if it requires changes to be compatible?
I accept Objective-C as a superset as it doesn't require changes. There is no extern "C" in objective-C, there is no new casts, all C code is valid Objective-C code.
If you REALLY THINK C++ is a superset of C go ahead and compile something big like the Linux kernel with a C++ compiler and see how far you get.use an allocator pool. There are several available. Or write your own; it is trivial. And if you use a statically allocated block of memory, then Windows will allocate the pages for you on start up. I have actually used this on the copying garbage collector I wrote once.
It's not the same thing. You cannot allocate multiple objects out of a static pool in C++ and still get initialization. All of your constructors would need to shadow their allocations against the static buffer, which means uglier code.
So in that light, you don't know sockets, either. See previous discussion which you conventiently avoided to continue.
So let me get this straight. You'd rather not know C or C++, just so I don't know Winsock?
I wasn't going to argue with you on it because this wasn't my point, and it wasn't your point. Your point is that C is a subset of C++, so I wanted to focus on those elements. But if you insist: Winsock most certainly responds to ioctlsocket(h,FIONBIO,...). Yes Virginia, you most certainly are wrong.You also don't know Java, since the benchmark you presented is ridiculus (to say the least).
Boo hoo. You said you had never seen a benchmark demonstrating Java as being faster than C++ at some things. You never said a valid one, nor gave a criteria of what a valid one would look like.
You wanted to say "Visual Basic Classic" maybe. Because Visual Basic
.NET does not have it. And since Visual Basic Classic is obsolete, there goes your argument.Why? Because you say so without justification?
Fine. I accept that you're wrong.I will say it again: for all practical purposes, C can be considered a subset of C++. Please note the bold part. Maybe it gets in your head this time.
Can be considered a subset by you, a person who admittedly "doesn't know C all that well."
Besides, Bjarne disagrees with you.
Oh, and before you bring it up, my favorite part about that link is how he lies three times in the same answer:
``However, C++ supports every programming technique supported by C.''
-- As I've established, not true. C++ cannot mak -
Re:They like the money they save.
It can be a much more than that. AT&T was able to reduce the number of long distance operators by 99% and replaced them with a voice recognition system ( I worked on this product ). This was the first use of speech recognition in the US long distance phone network, see:
http://www.research.att.com/index.cfm?portal=27 ( scroll down to 1992 ) and look for VRCP. -
Re:What a Novel Concept!
I'm sure the telcos profitted from the arrangement.
AT&T was the only company to admit working with the NSA.
AT&T isn't solely a service provider. I'm sure the NSA is interested in new tech too. The smart approach is to tie the two interests together.
Put it more generally: are you concerned about a customer's specific purchase? Maybe if that customer was also spending many, many more times that on other non-questionable stuff, you'd think different.
That scenario would be a win/win for the buyer and a win/maybe-win for the seller. The seller still wins, but maybe has some hard feelings. -
I have a better solution
I have a better solution, and I'm surprised that it's taken so long for nobody else to come up with it. If I weren't so poor and unemployed right now, I'd patent this idea because it's a real winner. Are you ready? Wireless in-ear cranial vibration sensing microphones. The only ambient noise that will be picked up is the sound of you chewing some gum, so don't chew when you're talking to HAL.
The coolest thing about this idea (I think) is that each mic could be coded to a specific user, and then fifty people could all be talking to the same supercomputer at the same time, and the computer could distinguish based on their user ID and not have to distinguish voices at the audio level at all. I've talked about this idea elsewhere in the past, and I'm still pretty surprised that nobody is doing it.
Speech recognition (speech-to-text) is pretty trivial without training as the newest release of Dragon Naturally Speaking, version 9, demonstrates. With training, it can become nearly flawless. Speech-to-text is another area where AT&T's research lab has made some pretty good progress. I'm looking forward to the future of voice-interaction with my computer with a certain optimism, especially if somebody will just (please) do the cranial-mic thing. (Contact me for licensing! My idea! heh.) -
Re:Since when ?
AT&T Videophones were first built in 1956, aka the PicturePhone(TM).
http://www.att.com/attlabs/reputation/timeline/70p icture.html -
Re:Shared source? Here's one with no license at alStroustrup's take on this.
Basically, do it however you like, but put them in separate declarations if you're going to mix pointers and non-pointers.
-
Is that a surprise to you? :-/*
Apparently you haven't been on Slashdot too long. There's not much fact here; just entertainment for fanboys of LUNIX...err, Linux and The Simpsons.
If you're looking for facts, turn to USA Today. If you're looking at venting some immature prepubescent frustration, come to Slashdot. You'll be welcomed with open arms.
-
Theory not a dirty word
This book might be good for THEORY, but for actually getting useful and applicable information, the review leaves me wondering who would be a worthwhile reader.
SQL theory is useful and applicable. It's just not complete: you also need the specifics of whatever SQL implementation you're using. For that you need to go to books about the specific RDBMS you're using. You can't expect a general SQL book to cover every implementation of the language, any more than you expect Stroustrop to tell you how to work with Visual C++.Not every programmer needs to be a computer scientist, but they do need to learn a little theory now and then. That's especially true when you're work with relational databases, which are full of weird abstractions and subtle performance issues. Not having looked at this particular book, I can't say whether its overkill for what most SQL people do. I can say that most database hackers don't seem to know as much theory as they should.
-
OpenBSD code auditing
I know this is somewhat offtopic, but...
Much of the purpose of OpenBSD's code auditing is getting rid of buffer overflows. But buffer overflows are basically a byproduct of C arrays. Considering that computers these days are significantly faster than they were when the C language was originally written, wouldn't OpenBSD be well-served by porting itself to something like Cyclone?
Cyclone programs do have bounds-checking, and so they'll be a bit slower than C programs, but that seems like a small price to pay for a /guarantee/ that your code will be safe. Then OpenBSD developers can spend their time optimizing their code for efficiency, with the knowledge that it's perfectly secure... which is much better than having to optimize for both efficiency and security at the same time, no? -
Re:Sharing numbers with NSA is legal
i think you are confusing the issue a bit here actually. Did you READ the article that this thread is about? This isn't about collecting a list of phone numbers that someone dialed at all. It's about monitoring ALL of the specific data that is being transferred accross a network and collecting the information for the purposes of turning it over to a government agency. This isn't just about the information that a conversation occured, make no mistake about it...this IS about the content.
Now companies like AT&T and most other large companies who deal with information as well have internal rules regarding the transfer of proprietary information to outside agencies, governments, etc. any customer of theirs who knows about this would have an expectation of privacy and in my opinion that expectation would be entirely reasonable given the situation. Since AT&T is a multi-national corporation with (seemingly at least) no ties to the United States government, a reasonable person most likely would expect that what they do on the internet while it may not exactly be PRIVATE would at least not be given away freely by their ISP...in FACT
http://www.att.com/privacy/#protects
The above web-address is to AT&T's Privacy Policy. Please note in particular paragraph 13 under the heading "disclosure" where it states:
"AT&T will not sell, trade, or disclose to third parties any customer identifiable information derived from the registration for or use of an AT&T online service -- including customer names and addresses -- without the consent of the customer (except as required by subpoena, search warrant, or other legal process or in the case of imminent physical harm to the customer or others)."
Now since (as i'm sure you've heard in reports from the "liberal media") these programs were in existence outside of U.S. legality and without the issuing of a warrant, it is this citizens understanding that the dissemination of said material is in violation of AT&T's self imposed rules ala' the rights to privacy which they (apparently falsely) offer to their customers. I also feel that the very EXISTENCE of this statement in AT&T's "Privacy Policy" reinforces my earlier statements about a customers expectation of privacy when using AT&T to connect to the internet.
Now while it is yet to be determined whether or not AT&T actually gave any information to the government or if so what information they gave, to be more specific: was the information associated with the customers name etc. or was it a general bulk of information showing that *someone* had been visiting *such and such websites* and had been speaking to *so and so* about *blah blah blah.* Note that this kind of information would either be useless making this possibility bloody unlikely or would indirectly give up the information that is not supposed to be given away, in which case they may not have actually violated their agreement with the customer but they are most definitely not innocent due to their ethical violations. Anyway although the legality of the situation has yet to be determined the fact remains that there IS an expectation to privacy.
There are many other entries in that Privacy Policy that would lead one to believe that they DO have an expectation of privacy so feel free to peruse that at your leisure and then get back to me with your counter-argument after looking into your claims a little further before making them.
THANKS! -
These are the tools or databases
From http://www.eff.org/legal/cases/att/faq.php#15
What is Daytona?
Daytona is a database management technology originally developed and maintained by the AT&T Laboratories division of AT&T, and is used by AT&T to manage multiple databases. Daytona was designed to handle very large databases and is used to manage "Hawkeye," AT&T's call detail record (CDR) database. Daytona is also used to manage AT&T's huge network-security database, known as "Aurora." As of September 2005, all of the CDR data managed by Daytona, when uncompressed, totaled more than 312 terabytes.
http://www.research.att.com/projects/daytona/
What is Hawkeye?
Hawkeye is AT&T's call detail record (CDR) database, which contains records of nearly every telephone communication carried over its domestic network since approximately 2001, records that include the originating and terminating phone numbers and the time and length for each call.
What is Aurora?
Aurora is a network-security database that had been used to store Internet traffic data since approximately 2003. The Aurora database contains huge amounts of data acquired by firewalls, routers, honeypots and other devices on AT&T's global IP (Internet Protocol) network and other networks connected to AT&T's network. -
Re:Good questions
Bull, except in the very early days of telephony, that simply wasn't the case. Mechanical multiplexers were developed very early on, since the need for a separate long distance circuit per connection was considered absurd even in the wire-happy 19th century.
http://www.att.com/history/nethistory/transmission .html
Did I give some sort of time frame that you're disputing, or is this another case of a trigger-fingered slashdotter prematurely blowing their "Bull!".
The same thing occured logically at the local level, where every house had a pair of wires going to the switching station. Eventually they deployed substations so the local loop was as short as possible, and then a high capacity line goes back to the switching station, hugely reducing the volume of cable deployed. -
Re:Embrace & DestroyWhat did they do? C++/CLI. This C++/CLI is the worst embrace-and-destroy attack on C++ that this unfortunate language has ever seen. MS's idea is to add special keywords, modify the syntax, modify the virtual function programming model, add new operators and ref/deref symbols, then call the result "C++ something" (C++/CLI in this case). To compound it, they want to have ISO rubber-stamp it, which would result in a huge mess, since "ISO-compliant C++" will now mean two completely separate languages.
See how thrilled Bjarne Stroustrup is about the whole notion: http://public.research.att.com/~bs/bs_faq.html#Cp
p CLIRead up on C++/CLI and how MS is going to pollute the C++ language for all of us: http://www.plumhall.com/ecma/BSI-ICT-1-0009-06.pd
f and http://www.regdeveloper.co.uk/2006/05/05/cplusplus _cli/page2.html (complete with syntax examples of the new language MS wants to call C++)^ and % are not pointer operators in C++. Call it something else.
-
PubliusATT has something like this called Publius. Scientific American reviewed it and, in a most unscientific and unAmerican opinion, called it "irresponsible." The goal was not just storage, but publication.
It's nice to see another attempt that's free. Free speech requires anonymity.
-
The most obvious application to me ...
The most obvious application of this to me is the video-phone. Interestingly, this could be the culmination of a pretty long technological road for this concept. According to my mother, her father (long dead now) was an inventor/tinkerer who especially liked photographic technologies. Once, he took her on a "field trip" in the 1950s to AT&T's laboratory in Houston (where they lived). There, she saw an early attempt at the video phone that is more closely related to the web-cam two-way set ups of today than the Star Trek-style video communication of sci-fi. I can easily imagine a future version that is coupled with a dedicated processor intended to hang freely on a wall to be used as a telephone (with, say, video display options, or whatever).
I would very much like to see this kind of technology perfected (so to speak). I'm interested in how this will relate to phone-tapping laws, etc. Also, I wonder if a "passive" reception would be integrated at some point into this kind of display, and what that might mean for surveillance.
(In case you missed the link above, check out the video phone write-up at http://www.att.com/attlabs/reputation/timeline/70
p icture.html.) -
The most obvious application to me ...
The most obvious application of this to me is the video-phone. Interestingly, this could be the culmination of a pretty long technological road for this concept. According to my mother, her father (long dead now) was an inventor/tinkerer who especially liked photographic technologies. Once, he took her on a "field trip" in the 1950s to AT&T's laboratory in Houston (where they lived). There, she saw an early attempt at the video phone that is more closely related to the web-cam two-way set ups of today than the Star Trek-style video communication of sci-fi. I can easily imagine a future version that is coupled with a dedicated processor intended to hang freely on a wall to be used as a telephone (with, say, video display options, or whatever).
I would very much like to see this kind of technology perfected (so to speak). I'm interested in how this will relate to phone-tapping laws, etc. Also, I wonder if a "passive" reception would be integrated at some point into this kind of display, and what that might mean for surveillance.
(In case you missed the link above, check out the video phone write-up at http://www.att.com/attlabs/reputation/timeline/70
p icture.html.) -
Re:TextYou're being sarcastic, of course, but basing a shell on object passing is actually a pretty smart idea. It's just a form of serialization, which is what any other form of interprocess communication uses. I'm not sure the old Unix concept of building a complex commands out of simple commands and pipes is still viable. But if it is, you really need commands that can handle data more complex than are supported by sort or join. The need for such complexity is why so little scripting is done by bash or csh these days, even on Unix.
The downside with Monad is that you have to have a thorough understanding of the whole
.NET object hierarchy before you can even get started. Unfortunately, .NET's designers don't understand something that ActiveX's designers understood very well: that most users of an object framework need to be able to use the framework without becoming experts in the whole shebang. -
Re:TextYou're being sarcastic, of course, but basing a shell on object passing is actually a pretty smart idea. It's just a form of serialization, which is what any other form of interprocess communication uses. I'm not sure the old Unix concept of building a complex commands out of simple commands and pipes is still viable. But if it is, you really need commands that can handle data more complex than are supported by sort or join. The need for such complexity is why so little scripting is done by bash or csh these days, even on Unix.
The downside with Monad is that you have to have a thorough understanding of the whole
.NET object hierarchy before you can even get started. Unfortunately, .NET's designers don't understand something that ActiveX's designers understood very well: that most users of an object framework need to be able to use the framework without becoming experts in the whole shebang. -
Online Encyclopedia of Integer Sequences
In a sense, the Online Encyclopedia of Integer Sequences, hosted by AT&T Research, does this job already.
With over 100,000 web pages, searchable, with posters' email addresses given, and both internal and external hotlinks and citations to hardcopy literature, this has been the leading collaborationware in Mathematics. The Online Encyclopedia of Integer Sequences (or OEIS) recently faced a problem with increasing numbers of clueless postings.
The distinguished panel of editors, under Dr. Neil J. A. Sloane, first added a keyword of "probation." Submissions so tagged, unless okayed by an editor, are deleted after a reasonable time. At my urging, citing the history of Slashdot, they even more recently adopted the keyword "less" -- meaning less than interesting, but better than probation. "Less" sequences stay in the database, but are given minimum priority in searches.
Similarly, MathWorld is a form of collaborationware or pseudowiki. Although edited by Dr. Eric W. Weisstein and his staff, it encourages submission by form from anyone, and posts attribution to such submissions, and lists of contributors.
I contend that web-based systems have substantially affected the practice of Mathematics. Social mechanisms such as pioneered by Slashdot contribute to weeding out useless from interesting contributions. As with Wikipedia, one's academic credentials mean nothing here. What matters is the quality of one's submissions, as evaluated by one's online peers.
There also many fine Math blogs, but that's another topic.
-- Jonathan Vos Post -
But in C arrays are pointers (more or less).Since C/C++ more or less treat arrays as pointers, there is little point in treating C style arrays and pointers separately.
Since we assume that "Data" is 100 bytes it makes little difference whether we add an extra parameter to the function. If the calling function incorrectly believes that it has enough space for 100 bytes, then it makes little difference whether is (incorrectly) states explicitly that it has enough room for 100 bytes or just implicitly assumes it has enough room. Either way readdata cannot check sizeof(s)>100.
Yes you could disallow use of pointer arithmetic, and use bounded arrays, although C doesn't have primitives for this.
You could still have code like this:AnObject *a;
Note that C++ will have automatically freed the temporary object "a" by the third line, and so you will be messing with unallocated memory. This code will work 99% of the time, and thus will only fail at the most embarrassing possible moment.
a=getAnObject().DoSomething;
a.DoSmthngEls() ;
Now you could get around this somehow, e.g. by garbage collection, but you will either be left with something like a Java reference or something obscure such as one of several different types of pointer supported by the Cyclone l language.
So basically, yes you could limit pointers to the extent that they cannot cause strange non-local and non-deterministic problems. But then they wouldn't really be pointers anymore. -
Re:Boys, boys, calm down.
> 0. C++ (at one time, at least) EXTENDS C
> ...
> 2. C++/CLI LIMITS C++ (no multiple inheritance, no metaprogramming, etc etc) -- more than it extends it (.net class libraries)
According to Strousop, C++ is not entirely a superset of C either.
"In the strict mathematical sense, C isn't a subset of C++. There are programs that are valid C but not valid C++"
Source: http://public.research.att.com/~bs/bs_faq.html#C-i s-subset -
Link to Groklaw
-
Re:ANSI
As a matter of Stroustrup has commented. In a nutshell, he says that Microsoft is revising their documentation to minimize confusion.
-
Re:Fault Tolerance Vs. Stability
Wow. An entire thread devoted to this question, and so far this is the only answer that actually addresses the problem. Every other suggestions seems to be "changes languages", or "here's how to avoid bugs".
Anyway, let's talk specifics here. For the theoretical end of software fault tolerance, you can get a quick overview here or here.
In terms of practicalities, I know of an older fault tolerance library for Unix that includes watchdog, checkpointing, and replication utilities, and was created by AT&T (details and downloads here). A newer version appears to be available for Windows under the name SwiFT. Disclaimer: I haven't actually used either of these, and they both seem a little old. But I don't know of anything newer that isn't a proprietary in-house solution.
Finally, in terms of general design patterns for fault-tolerant distributed systems, you can't go past Joe Armstrong's PhD thesis, "Making reliable systems in the presence of software errors". While it's mostly about Erlang, many of the ideas he presents are readily applicable to other languages too.
-
It's not the language that counts...it's how you use it!
Honestly, everyone seem to believe that all C/C++ code is unstable (probably because of all those people working for companies like Sun/Microsoft, who are promoting The Next Big Thing in Software Development), but it's far more to do with how you go about using the language and its features.
However, it is honestly an improvement on C. I think Bjarne Stroustrup (I'm almost certain I spelled that wrong) said it best: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." (http://public.research.att.com/~bs/bs_faq.html; apart from the quote, it has a whole lot of useful tips).
So, here's my advice, from my experience working in all sorts of languages (professionally I've used everything from TCL through PHP to Java/C#, but at home I use C++ exclusively). This is just my experience, though; take this with the requisite grain of salt:
STL is your friend. I cannot stress this enough. STL allows you to leverage complex containers (automatically resizing lists, hash tables, ropes - which are mega-long strings, etc) with complete type safety: you can create a container for a particular type, and the compiler will balk if you ever try to put something incompatible in. Also, the generated code will be optimized for your particular storage type. In this respect, C++ is actually better than most other languages (only with Java 1.5 and
.NET 2.0 do Java and C# implement Generics, and in the case of Java, it's only implemented in the compiler).Pointers are not always your friend. When you allocate data structures on the stack (e.g. "string blah;"), they will automatically be taken care of by the language. Even if an exception is thrown, these objects will still have their destructor called (which in turn will call all other necessary destructors) and the memory will be deallocated freely.
Of course, this will not work everywhere (large numbers of polymorphic, dynamically allocated objects). But in these cases, you can use helper classes (such as auto_ptr in the STL, or something like shared_ptr from Boost or nsCOMPtr from Mozilla). Look around; lots of other people have already solved this problem. In fact, there are even Garbage-Collection libraries available for C++!
Use exceptions instead of value checking, dammit! Every time you call a function that "returns 0/false/-1 on error" you are exposing yourself to possible bugs. Try to avoid this wherever possible, and try to keep all your OS-specific calls in one spot.
Check out Boost: (www.boost.org) There is a LOT of useful stuff in here, and it will certainly speed up the development process.
Finally, make sure you design it properly! A couple of well-defined interfaces to separate things out will go a LONG way towards simplifying code, as it will ensure there is less coupling between different code modules (i.e. they don't depend on eachother as much, so you can rewrite one without affecting others). This goes for ANY language. C++ doesn't directly support interfaces, but abstract classes will do the same thing.
As for separating modules out, you could try CORBA (as you mentioned): ORBit (orbitcpp.sourceforge.net) is a free implementation (that happens to be used by GNOME). But to be honest you probably won't need to go to this effort. If written properly, your code should be stable enough that you don't even need to separate code out into separate processes. The furthest I'd go in your situation would be to write a command-line application that does all the work, then have a graphical client (although you could write this in a different language; don't get me started on graphics library support under C++) that uses a socket or TCP/IP to communicate with the worker thread. In this case, you could just use a very simple protocol to
-
Re:Deathstar
I always thought it ran VMS.
Deathstar ==> Natural choice for Deathstar operating system. (Note early attempts at commercialization involved use of childish semiotics in advertising in order to conceal Imperial origins).
Duh. -
Re:Not illegal.I don't know which bothers me more. Bush's exercision of wartime powers without any formal declaration of war, or AT&T's Daytona database.
From one of the deep-linked pages:For example, Daytona is managing over 312 terabytes of data in a 7x24 production data warehouse whose largest table contains over 743 billion rows as of Sept 2005. Indeed, for this database, Daytona is managing over 1.924 trillion rows; it could easily manage more but we ran out of data.
I'm all for letting companies collect necessary customer information but there's just something about a database that large which really makes me doubt that it's used solely for business-related purposes. There's nothing which an oppressive government regime enjoys more than a database which contains so much information that, at any time of any day, they could probably massage the database into providing damning evidence against anyone. -
Re:kinda crap but makes sense in the UK
does the USA still have free local calls?
Haha... we have free long-distance calls nowadays. I would much rather live in Europe for a lot of reasons, but I will say this: telecom be cheeeaaaap in this country. -
Interesting stuff going on at beatpaths.com
There's an interesting ranking system emerging over at beatpaths.com. It started as a way of ranking NFL teams based on who has beaten whom, perhaps fueled by a Broncos fan frustrated with his team being ranked too low by other systems. There are plans to analyze the NBA and MLB, but it seems generally applicable to most competitions.
Another cool thing: dig the graphs straight out of graphviz, a nice open source tool for buiding graphs from textual specifications.
-
Re:Phase Change and Complexity
-
Re:Downhill at a fast rate
had a bit of BASIC experience before moving to C++, and cout is a lot closer to PRINT than printf is (somewhat ironically given the names),
C++0x will finally bring the long-awaited operator" "() feature into C++, so the next version of cout will look even more like the old BASIC PRINT. No more << between variables; just type them out one after another.
I don't think the committee has decided if operator() will be replaced with operator" "() or operator,() yet, though. They've already rejected operator""(), which is a shameful lack of vision. -
Re:What a name!
The correct pronunciation from the man himself:- http://public.research.att.com/~bs/pronounciation
. wav -
Re:What a name!
[...] how do you pronounce Bjarne Stroustrup?
This is the first question in his FAQ. Includes a
.wav file. -
Re:What a name!
See his FAQ for an explanation and a
.wav file! -
Disagree
No one has used C++ for any major operating system,
Windows XP, NT, 9x. See: http://public.research.att.com/~bs/applications.ht ml
and no one has used C++ for any hardcore military project.
I'd beg to differ.
-everphilski- -
Re:2009?
I doubt Google, Adobe, or many of the thousands of other companies depening on C++ will be throwing their code base away any time soon. Rather, they will want their C++ code to be more robust and more managable. The features the article lists all seem to do this.
(See Stroustrup's C++ Applications page for more.) -
There's more than one way to skin a cat.
Having used languages with and without garbage collection, my view is that
garbage collection is often very nice... but I don't really mind the "lack" of garbage collection in C and especially don't miss it in C++.
My opinion is that it takes some effort on the programmer's part to learn to use C safely. I'm not sure why, but this answer seems to suprise some people. Do they seriously expect that in the real world-- of software or of anything else-- that they should be able to pick up any tool they want and understand how to use it well right away? Appearantly so, but it's pretty silly, isn't
it?
C++ and C are like very sharp carving gouges: It's up to you to learn how to use them properly, to hone them peridically, and to build safe habits. You need to do this in any language that you use, but the sharper the tool the more important it is to bear this principle in mind. A lot of people try to pick up these sharp tools, and then blame the gouge when they've cut themselves. It's no suprise, because they did not take the time to learn to be careful.
In my view your best bet for using a programming language safely is to develop
certain habits and adopt idioms that cause you to simply not write code with some types of errors. In the case of resource-freeing errors, when you open a door, you must remember to close it. It's not complicated, but you have got to turn it into a real habit, something you just do-- and it follows that there will also be some patterns that you should train yourself to just never write. Give it a go (and give it some time).
That will go a long way, but I'm afraid that there's some bad news: even that is not enough. I've been writing software in C for 17 years now, and although without a doubt I write fewer errors than I used to, I still do not produce error-free programs. Eventually, I make plenty of mistakes. Complexity does that.
Some very good news: Memory management in C++ is so nice that very frankly I do not miss /either/ garbage collection or C-style memory management when I am using it. (And of course, you can use either of those with C++ just fine.) There are all kinds of tools and patterns to help you out, although again it's going to be up to you to use them and make a habit of it. There's the "resource aquisition is initialization", smart pointers (built into the standard library, provided by Boost, and roll-your own), new and delete, malloc() and free(), statically allocated memory, and garbage collectors for you to link in. Take your pick! Use the right one for the job.
Bjarne Stroustrup explains all of this extremely well. Here's a link or two to his FAQ and what it has to say about C++ and garbage collection:
http://www.research.att.com/~bs/bs_faq.html#garbag e-collection
http://www.research.att.com/~bs/bs_faq2.html#memor y-leaks
http://www.research.att.com/~bs/bs_faq.html#advanc ed
Think about it for a while. Remember that memory is only one kind of resource that we need to manage. It's up to you to ferret out and apply the tools available to you.
If you want a garbage collector, why not use one? But it's not the only way to achieve the ultimate goal of producing reliable, efficient software.