Okay, I watched all three hours, and it seems like 45 minutes of hours 2 and 3 were review. If they'd skipped the review they could have done the whole thing in 90 minutes, tops.
But a fun show, and informative, despite some of its flaws.
I thought the same thing. It's actually lots of little things that make C# nicer all 'round (in comparison to Java): Most pleasant for me is the fact that I can use enumerations without (a) declaring a new class/interface (b) placing a ridiculously long "public static final int" before EACH member of the enumeration and (c) being able to use the newly declared enumeration's new type name for parameters instead of just "int" - remember semantics?
So how happy are you with the fact that while Enum's don't implicitly convert to an int, they do implicitly convert to a string?
It's amazing what gets marked as "Insightful" around here.
Ah, when asked to defend the indefensible (C's insane design) instead declare yourself an expert and attack the person raising the issue as " lazy and/or incompetent".
Um, no. I was responding to the so-called "low-level problems" of C++ (not C). Null pointers are useful in a function to represent an object, or the fact that an object is not available. Dereferencing a null pointer is a logic error, because it means the object isn't available. Dereferencing it means your logic doesn't know the difference between a valid object and a non-existant object. Failing to understand the difference is a mark of incompetence or laziness. Hence my comment. Most memory leaks can be eliminated with auto_ptr (now in the standard for 6+ years) or boost's smart pointers. Simply slapping garbage collection onto a language doesn't solve this. In the case of C#, you lose deterministic destruction, which means that you can't properly clean up objects that are owned by the object being destroyed. C# forces you to kludge around this by checking to see if the object is being disposed of manually, or by the system, e.g.:
protected virtual void Dispose(bool disposing) { if (!_disposed) { if (disposing) DisposeManaged(); DisposeUnmanaged(); } _disposed = true; }
Of course, this fails in a multithreaded program. So you have to lock the internal variable if you want thread safety.
The problems cited are language problems. Yes, you can do workarounds and never create a bug but a competent language should make it easier to write bug-free code not add land mines to swagger over.
Sorry, they are not language problems. Real language problems in C and C++ are e.g. integer promotion rules and syntax ambiguities which sometimes parse a function call (typically a constructor) as a function declaration.
If you still think these are language problems, be honest and point out that C# has them too. For instance:
SomeObject oops; using (SomeObject so = new SomeObject()) { oops = so; }
oops.DoSomething();//BOOM!!!
And the garbage collection doesn't help with database connections, graphics widgets, etc. You must manually dispose them if you want them to work reasonably. How, precisely is this any better than manual destruction?
[somehow, this reminds me that C++, spec-wise, allows you to explicitely tell the compiler what you're likely to throw(), the way java does... i believe MS VC 6 never got around to supporting that?]
Exception specifications are not for declaring what you're "likely to throw" but rather what you're allowed to throw. Throwing something else results most likely in program termination. Indeed, if the spec is only what's likely, there's little point. Use a comment instead. If it is what's allowed, then there's the question of how it should behave if something else is thrown. Even the latest version of MSVC doesn't support it.
In fairness, all of the articles I've read have suggested that exception specs aren't very useful and add significant compiler complexity and runtime overhead. Until I see why they are useful (or "export" as well, for that matter), I'm not going to seriously criticize an implementation that doesn't support them.
Goto the source, MS. Plonk your 200 bucks down and report it. If it is a REAL problem you will get your 200 bucks back if its YOU they keep it....
They do not respond well to 'its broke fix it'.
Gee, and I thought my MSDN Enterprise subscription would be sufficient. Why should I plonk down $200 to report a bug? I didn't want an immediate fix, we already had a workaround. I just wanted to report a bug. I had sample data and exact steps to reproduce it.
Instead I simply stopped using C# and went on to better things. I'd rather have a language and implementation that works, and has a useful community than one that MS is pushing as 'the next big thing'.
I actually happen to dislike C++, but on top of that, it doesn't suit my project, because the low-levelness makes it harder to program without errors (e.g. null pointers, memory leaking)
It's not surprising that a poor programmer likes C#--it's designed for people who can't design and code well. It's a continuing trend of giving more band-aid's to a language to compensate for lazy and/or incompetent programmers.
Here's a clue: null pointers and memory leaks are not "low level" problems--they're logic errors. Dereferencing a null pointer can happen in Java, and accessing a disposed object can happen in C#. Memory leaks and null pointers usually mean you aren't managing an object's lifetime correctly, and are typically symptoms of design errors (or minor bugs--off by one, etc.--which can happen in any language).
C# is like most MS tools--great for 80% of the work, but the last 20% is difficult or nearly impossible because MS didn't think of the problem you were trying to solve, and the language isn't flexible enough to adapt.
Finally, it is impossible to report errors in the implementation. When I found a serious error in the.Net runtime, I tried several ways to report it, getting no answer, or in the case of the microsoft.* newsgroups, assertions that I couldn't find bugs since the high-and-mighty MS and testers hadn't find it.
Sigh. Compare that to the people who hang out in comp.lang.c++.* -- I ran screaming away from C# as quickly as possible.
As much as I disagree with the 3-judge panel, they weren't ignoring the law. Their ruling was based on the Constitution, which talks about the right to vote, equal protection, etc.
No, it was not based on the Constitution. Otherwise, the 11-judge panel wouldn't have unanimously overturned it. The decision was based on speculation (how many errors their might be with punch-card votes) which itself was based on a study (from UC Berkeley) funded by (surprise!) a company which manufactures voting machines and stands to benefit if the old machines are replaced.
California is still required, by another ruling, to update their voting machines by Spring 2004. That's a good ruling.
CA was going to update the machines by the March primary anyway. It wasn't a ruling, it was an assessment by the Secretary of State (of CA), after setting a retire date for the old punch cards of 2006, that it could be done sooner.
Listen to the arguments of the ACLU--they're laughable. They appeal to the idea that the voters won't have confidence in the results if we use the old voting machines. And since punch card systems are primarily used in minority districts, it will disenfranchise them.
Of course, I had no problem using punch cards as a white male in Santa Clara County (which was one of the most wealthy counties in the state, at least before the dot.bust).
Just because they are appointed by life doesn't mean they can't be influenced. Activist judges want to be seen as changers of society, as legal fulcrums. They don't even have to be bought.
Look at the 3-judge panel of the 9th circuit which suspended the recall election here in CA. The 11-judge panel unanimously overturned that. Why did the 3-judge panel ignore law and create such a ruling in the first place?
Considering the current plan with Steam is that once you download a patch or play online, you have to be connected to the net even to play single-player.
I've already lodged my complaint, though most likely Valve won't care.
Probability is a deceptive thing, because although a million monkeys with typewriters will eventually write Shakespeare, it's just a
theoretical probability which is different to an actual likelyhood.
Okay, I was going to mod you down, but I thought I'd respond instead. The only value in any theory is in its ability to model reality.
In this case you seem to be basing your understanding of probability on a trite statement (a million monkeys...). The number of possible English strings as long as Shakespeare's work is large but finite. As a randomly generated string becomes very large, the probability (in actual likelihood) that the works of Shakespeare will be included becomes very close to one.
Put another way, the number of possible rolls on a standard die is 6. How likely is it that you'll have seen every side come up at least once if you roll 6 times? 100 times? 1 000 000 times? 10^100 times?
As for issues of payment, authentication and piracy, with games having an online component, people will pay not to get the actual code or the media, but rather a "account", "CD key", or other unique identifier. Because such identifiers are always maintained on the server side, they are a (and the only guaranteed) crack-proof way, since one can't crack them client-side.
Baloney. One of my coworkers had a problem with this with Warcraft III. Apparently someone managed to generate a valid CD key--his CD key. When he tried to play, sometimes he would get booted from Battle.net because the keygen guy was online. Blizzard's solution? Return the original CD case to them to get a new one.
Of course that doesn't stop the keygen from doing another keygen (and trying until one works). Burn the customer, do nothing to the keygen. Yeah, that's crack-proof (not).
Where OpenOffice.org really shines (IMO) is the equation editor. It's not only easy to use in the GUI, but when in an equation, a box pops up with the direct commands for equations--remeniscent of LaTeX--so that if your equation is
x = {-b +- sqrt{b^2 - 4ac}} over {2a}
You can just enter that in and it comes out beautifully. It's a joy to use after dealing with MS Equation Editor (which isn't installed by default in MS Office).
I've been an Opera user since 6.0. In most ways I find it superior to Mozilla, though Firebird makes some improvements.
For one, the tabbed browsing is vastly superior.
As noted, on a crash your tabs are saved (more important, when you close Opera, you can reopen precisely where you left off).
Links that pop up a new window show up as a new tab in Opera, but create a new frame in Mozilla (and Firebird).
If a page fails to load, Opera remembers the URL so you can try later. Mozilla leaves it as "about:blank" (Firebird may fix this, but I can't find a page that fails to load right now).
Closing a tab will change your current tab to be either last created or last viewed (user can select this). Mozilla/Firebird selects the neighboring tab to the right.
Forward/Prev tab is '1' or '2' on the keyboard.
Single-key functions are much better IMO than type-ahead-find: 'z' for back, 'x' for forward, and g for turning graphics off (with many more) -- and type-ahead find is available in a search box, by default Shift+F7 takes you there.
"View Source" is easily configurable, and I can use my preferred editor. The mozilla group can't decide whether that should be allowed.
My biggest complaint about Opera is that it ignores my synaptics touchpad side-scroll function (dragging finger along the edge of the touchpad acts like a mousewheel). Also, it seems to crash a lot (though I tend to keep it up for days at a time--so it's at least more stable than Win9X).
Funny, as a freshman at UC Berkeley, I took Linear Algebra (and took another course on it later), but it wasn't until my graphics programming course that I understood the details of basis transforms. It was as if my profs were working hard to produce a concrete example.
Last I checked, the mp3 license is free for decoders. Encoders have to pay. If AAC adopts a similar license, hardware makers adopt it, and PC's can use the service it will win big time, and I'll be cheering it all the way.
Your reading comprehension skills need work. The point is, my health card has my "subscriber ID" printed on it (which is just my SSN). I like to keep that card with me because when I need it it's usually an emergency.
But a fun show, and informative, despite some of its flaws.
You insightful post is actually wrong. Jackson has said he's not been under any pressure from the studio. See here for more info.
There are other search engines?
In fairness, all of the articles I've read have suggested that exception specs aren't very useful and add significant compiler complexity and runtime overhead. Until I see why they are useful (or "export" as well, for that matter), I'm not going to seriously criticize an implementation that doesn't support them.
Instead I simply stopped using C# and went on to better things. I'd rather have a language and implementation that works, and has a useful community than one that MS is pushing as 'the next big thing'.
Here's a clue: null pointers and memory leaks are not "low level" problems--they're logic errors. Dereferencing a null pointer can happen in Java, and accessing a disposed object can happen in C#. Memory leaks and null pointers usually mean you aren't managing an object's lifetime correctly, and are typically symptoms of design errors (or minor bugs--off by one, etc.--which can happen in any language).
C# is like most MS tools--great for 80% of the work, but the last 20% is difficult or nearly impossible because MS didn't think of the problem you were trying to solve, and the language isn't flexible enough to adapt.
Finally, it is impossible to report errors in the implementation. When I found a serious error in the .Net runtime, I tried several ways to report it, getting no answer, or in the case of the microsoft.* newsgroups, assertions that I couldn't find bugs since the high-and-mighty MS and testers hadn't find it.
Sigh. Compare that to the people who hang out in comp.lang.c++.* -- I ran screaming away from C# as quickly as possible.
I would think the stock would be near zero...
Listen to the arguments of the ACLU--they're laughable. They appeal to the idea that the voters won't have confidence in the results if we use the old voting machines. And since punch card systems are primarily used in minority districts, it will disenfranchise them.
Of course, I had no problem using punch cards as a white male in Santa Clara County (which was one of the most wealthy counties in the state, at least before the dot.bust).
Look at the 3-judge panel of the 9th circuit which suspended the recall election here in CA. The 11-judge panel unanimously overturned that. Why did the 3-judge panel ignore law and create such a ruling in the first place?
Considering the current plan with Steam is that once you download a patch or play online, you have to be connected to the net even to play single-player. I've already lodged my complaint, though most likely Valve won't care.
In this case you seem to be basing your understanding of probability on a trite statement (a million monkeys...). The number of possible English strings as long as Shakespeare's work is large but finite. As a randomly generated string becomes very large, the probability (in actual likelihood) that the works of Shakespeare will be included becomes very close to one.
Put another way, the number of possible rolls on a standard die is 6. How likely is it that you'll have seen every side come up at least once if you roll 6 times? 100 times? 1 000 000 times? 10^100 times?
If you are definitely going to buy the album, why are you downloading the songs? Just go and buy the thing for crying out loud,
True, but you can commit fraud with a credit card number and other information.
Of course that doesn't stop the keygen from doing another keygen (and trying until one works). Burn the customer, do nothing to the keygen. Yeah, that's crack-proof (not).
Only if the gun can fire at 531 miles per hour.
If ROT13 qualifies as encryption...
- For one, the tabbed browsing is vastly superior.
- As noted, on a crash your tabs are saved (more important, when you close Opera, you can reopen precisely where you left off).
- Links that pop up a new window show up as a new tab in Opera, but create a new frame in Mozilla (and Firebird).
- If a page fails to load, Opera remembers the URL so you can try later. Mozilla leaves it as "about:blank" (Firebird may fix this, but I can't find a page that fails to load right now).
- Closing a tab will change your current tab to be either last created or last viewed (user can select this). Mozilla/Firebird selects the neighboring tab to the right.
- Forward/Prev tab is '1' or '2' on the keyboard.
- Single-key functions are much better IMO than type-ahead-find: 'z' for back, 'x' for forward, and g for turning graphics off (with many more) -- and type-ahead find is available in a search box, by default Shift+F7 takes you there.
- "View Source" is easily configurable, and I can use my preferred editor. The mozilla group can't decide whether that should be allowed.
My biggest complaint about Opera is that it ignores my synaptics touchpad side-scroll function (dragging finger along the edge of the touchpad acts like a mousewheel). Also, it seems to crash a lot (though I tend to keep it up for days at a time--so it's at least more stable than Win9X).Funny, as a freshman at UC Berkeley, I took Linear Algebra (and took another course on it later), but it wasn't until my graphics programming course that I understood the details of basis transforms. It was as if my profs were working hard to produce a concrete example.
Last I checked, the mp3 license is free for decoders. Encoders have to pay. If AAC adopts a similar license, hardware makers adopt it, and PC's can use the service it will win big time, and I'll be cheering it all the way.
Your reading comprehension skills need work. The point is, my health card has my "subscriber ID" printed on it (which is just my SSN). I like to keep that card with me because when I need it it's usually an emergency.