Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×

Comment Re:You don't say... (Score 3, Informative) 606

Don't you feel any shame?

It's trivial to expose your lies, it's even on Wikipedia:

Recently, gang-related incidents have been on the rise. Between the years of 1997 and 2005 over 300 gang-related deaths have occurred. [..] In late September 2005, Toronto police arrested 44 members of the Rexdale-based "Ardwick Blood Crew" also known as A.B.C.

Hmm, also according to Wikipedia, "Rexdale's first residents were mostly English and Scottish, but evolved into a multicultural neighbourhood in the following decades."

But there is more:

Then in May 2006, 106 additional gang members were apprehended, who were part of Rexdale's "Jamestown Crew" (a Crip gang), in the largest gang sweep in Toronto's history.

Hmm, what ethnicity could a gang be that is called "Jamestown Crew"?.... Hmmm, you will probably never know...

In June 2007, Toronto police arrested about 95 people, including leaders of the Jane and Finch-based "Driftwood Crips" and the sister of murder victim Jordan Manners, for a lengthy list of 700 criminal charges.

Aha, a "Crips" franchise gang. What ethnicity could that be... It's a mystery...

http://en.wikipedia.org/wiki/C...

Comment Re:You don't say... (Score 1) 606

Blacks genocided Khoi-San in Angola, Mosambique, etc. - now all violent deaths are black there.
Blacks genocided (almost all) Pigmies in Kongo - now (almost all) violent deaths are black there.
Blacks genocided Indians in Uganda - now all violent deaths are black there.
Blacks ethnically cleansed Whites in Detroit - now (almost) all violent deaths are black there.

Comment Re:People are correctly annoyed by this (Score 3, Informative) 338

The sad thing is that Mozilla hides their ESR release. Once I (unsuccessfully) tried to find it on mozilla.org (Go ahead, try it!).

I only succeeded by using Google (oh, the irony!) to find an obscure download page on mozilla.org.

Mozilla treats their ESR release like some unwanted stepchild.

Comment Re:D is a regression (Score 1) 386

Another point:

The preprocessor-haters always only offer theoretical arguments ("it supports conditional compilation!") but they never post real code.

Why?

Very simple:

First, even they have a hard time to learn C++ templates and all the other highly complicated replacements.

Second, even when you know about it, using templates is pretty hard actual work. You don't do that kind of work for a posting in a discussion-forum.

Third, when you do the work and compare all that highly sophisticated template-code with the preprocessor-stuff it is supposed to replace, you will realize that just using the preprocessor is so much easier that it is almost comical.

Comment Re:D is a regression (Score 1) 386

You only offer emotional arguments ("a blight", "relic from the past", etc.).

Yes, the preprocessor does not work at the same level as the compiler - and that is the good thing about it because it gives you leverage about what the compiler sees and it allows you to guarantee that the logic outside the #ifdefs is untouched by any changes - therefore you get much higher quality/stability.

Your example with the untested feature can be solved by isolating the crazy untested code in its own module, and simply *not enabling that module in the build scripts*.

So you have to have modules for every tiny feature?

And all that bloat and overhead just to satisfy your emotional sense of aesthetics?

So to avoid 2 lines of "ugly" code (#ifdef / #endif) you need to create a module, adapt the build-system, etc. etc.?

And we have not even gone into some "advanced" stuff like

#if defined(TEST_1) && defined(TEST_2)

So easy to do with the preprocessor - how do you do that with modules? Create a third module that contains just the code that is needed when both other modules are included? And hide everything in the build-system so that nobody can find and/or debug it?

And again, why all that overhead when all you get is a program that is slower, uses more RAM and (yes!) is much more difficult to understand and debug?

Ideally, the buld-system should not contain any logic. All the logic should be in the source-code.

And of course your "aesthetics before function" - approach may be acceptable on the PC where all that bloat does not matter much. But it is a absolute no-go in embedded-systems programming. Just two years ago I have worked in a project where we had only 128 KB (yes, that is kilobytes) of RAM. And we had to frequently cut the bloat to stay under that limit.

In that situation you forget about "modules", object-orientation and all that other buzz-words from the ivory-tower pretty fast.

So what do you do when you have a new revision of a circuit board that has a different pin-layout?

Do you throw away everything (several man-months of programming and testing) and create a sophisticated module-system that will create numerous other problems and limitations to satisfy aesthetics?

No: You use the preprocessor to add the new stuff while still avoiding any change for the old, so the old stuff can still be used and tested and (more importantly) you can compare the old with the new.

Comment Re:D is a regression (Score 1) 386

D supports conditional compilation [dlang.org]. And has features to accomplish any other sane use of the preprocessor, but in a cleaner way as first class language constructs.

As I explained to the other guy, it does not help against syntax errors. It does not allow for strict separation of features.

Yeah, but should you? That's basically writing code in a feature-poor unstructured string manipulation meta-language.

I certainly agree that the C-preprocessor is a poor language. But the problem lies in the lack of features of the preprocessor, not the fact that it is a preprocessor.

So yes, it is a poor language - but that is still better than no preprocessor at all.

Comment Re:D is a regression (Score 0) 386

You don't need a preprocessor to have conditionally compiled code.

Yes, you do.

Because programmers make mistakes and "crazy_new_untested_code.c" may include everything from normal software bugs to syntax errors.

A preprocessor is the only way to ignore syntax errors.

C# supports your use-case (producing different code depending on symbols being defined)

Don't lie. The use case was:

the program will still compile and work just fine, no matter what crazy things the new guy who was hired to program "crazy_new_untested_code.c" does.

If the guy checks in some syntax error in C#, it will no longer compile. End of story.

With a preprocessor you can be absolutely SURE that some disabled code does not influence your program. And if the programmer only has write access to "crazy_new_untested_code.c" he does not even have a theoretical possibility of breaking it.

I have not seen any supposed "replacements" of preprocessors that can do that. These "replacements" are full of unrealistic assumptions straight from the ivory tower. (for example your assumption that all code that is checked in is syntactically correct)

The preprocessor makes code harder to understand, very hard to parse, and makes things like refactoring tools, static analysis tools, etc. much harder than they should be.

Preprocessor-code is much easier to understand than C++ templates. (Yes, I admit it - I have once looked at these template programming and I have long since forgotten about C++ templates) In fact the basic #ifdef structure is straightforward.

Another use-case:

typedef struct {
one int;
#ifdef GREATFEATURE
two int;
#endif
} mystructure;

In that case mystructure will be just as big as actually needed. Can you easily provide the same functionality with C++ templates? Probably not, you probably have to check some book and forum to come up with the code - if it's possible at all, which I'm not sure.

And that is the reason why C is still king for embedded software.

Comment D is a regression (Score 1) 386

D may be "nicer" in some niche-aspects, but they destroy all that by dropping the preprocessor. Yes, I know that the snobists don't like it and think it's "outdated". Yet the preprocessor offers something that no other language feature offers: Because the preprocessor "creates" the C-code, you can do *everything* with it.

For example:

#ifdef UNTESTED_FEATURE
        #include "crazy_new_untested_code.c"
#endif

You know what?

If you unset UNTESTED_FEATURE, the program will still compile and work just fine, no matter what crazy things the new guy who was hired to program "crazy_new_untested_code.c" does. He still can check in his work, testers can try it out by setting UNTESTED_FEATURE, etc.

This is the reason why we keep using C after all these years. It's the only (major?) language with preprocessor.

Comment Re:Wow, that actually looks decent (Score 1) 84

KDE has always had the kitchen sink mentality and it has suffered for it. All those buttons, menus and settings are great for people who want to change every last setting but they're a usability nightmare. I believe the reason that GNOME is the default in most Linux dists, particularly enterprise ones is because KDE provides far more opportunities for users to screw things up and raising support tickets. That's the reason it has lived in GNOME's shadow all this time.

Usability depends on the user. I like it when I can customize it to fit my needs and there is absolutely zero need to have another Gnome with a different name.

I can't handle Gnome because it is a usability nightmare for me.

Comment Re:Wow, that actually looks decent (Score 1) 84

Similar story for me, I've bin a big fan of KDE 1 through 3, I delayed KDE 4 as long as I could and even after all those years it's still bugs, bugs, bugs.

Yet KDE is still the best desktop environment out there - but the lesson I have learned (and you probably too) is to only use KDE but not use any critical KDE applications. I also used KMail in KDE 3 but I migrated to Thunderbird because I have heard so many horror-stories about KMail in KDE 4.

Let's hope KDE 5 becomes more stable.

Comment Re:Insanity (Score 1) 412

Not really, it was Hitler who removed the "unnatural"-clause in the homosexuality-paragraph 1935. That's no big surprise because most of his buddies were homos. Yes that is correct: before 1935, homosexuality was considered unnatural and you could lose your civil rights, afterwards it was just an ordinary minor crime. A big step for the LBGT movement.

And if you don't believe me, just look up the laws on Wikisource. This is not some conspiracy-nut war-propaganda, it's a law that was put on the books and everybody can check it - if they are interested in the truth, which most aren't.

The homos only got retroactively "victims" of the Nazis in the 1970s.

He also was a vegetarian and a fan of animal rights. A real progressive.

Slashdot Top Deals

Top Ten Things Overheard At The ANSI C Draft Committee Meetings: (5) All right, who's the wiseguy who stuck this trigraph stuff in here?

Working...