Slashdot stories can be listened to in audio form via an RSS feed, as read by our own robotic overlord.


Forgot your password?

Slashdot videos: Now with more Slashdot!

  • View

  • Discuss

  • Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).


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

by RoLi (#48863993) Attached to: Is D an Underrated Programming Language?

Another point:

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


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

by RoLi (#48863941) Attached to: Is D an Underrated Programming Language?

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

by RoLi (#48863589) Attached to: Is D an Underrated Programming Language?

D supports conditional compilation []. 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

by RoLi (#48863545) Attached to: Is D an Underrated Programming Language?

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;
two int;
} 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

by RoLi (#48863311) Attached to: Is D an Underrated Programming Language?

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:

        #include "crazy_new_untested_code.c"

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

by RoLi (#48802379) Attached to: KDE Frameworks 5.3 and Plasma 2.1 – First Impressions

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

by RoLi (#48802345) Attached to: KDE Frameworks 5.3 and Plasma 2.1 – First Impressions

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

by RoLi (#48775509) Attached to: Russia Says Drivers Must Not Have "Sex Disorders" To Get License

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.

Comment: Re:Here it is. Hope you can read Russian. Re:sourc (Score 1) 412

by RoLi (#48775373) Attached to: Russia Says Drivers Must Not Have "Sex Disorders" To Get License

Exactly. Basically the Russians were greeted with open arms in Crimea, there was not a single death during that "invasion".

Compare that to the mess of Iraq, Afghanistan, Syria, Libya, etc.

But maybe that is the problem the Americans have with Crimea. They only stop nagging and criticizing when the country is in ruin and blood runs in the streets. They would love to drop some bombs on Crimea to show those bastards good old democracy.

Comment: Re:They (well some of them) are mental disorders (Score 1) 412

by RoLi (#48775199) Attached to: Russia Says Drivers Must Not Have "Sex Disorders" To Get License

It's only a disorder if it has a major negative impact on a person or society.

Well they have a high risk of becoming a murderer (about half of serial killers are homosexuals, which is an overrepresentation of about 1000-2500%) of becoming murdered (by aforementioned killers), of suicide and of sexually transferrable diseases.

To say that this is caused by "discrimination" is just flat out wrong, because the murder-rate tripled during the "sexual revolution", and did not decrease. Arguably a virus like AIDS could not have spread so wide and far before it as well. So the "reduction of discrimination" (which in the West has become special privileges already) actually decreased the homo-life expectancy, both because of murder and diseases. So it's the exact opposite of what you are claiming: Discrimination actually protected them from themselves.

People who are not brainwashed by Hollywood (for example the good people of Russia) know that. And now when the West has declared war on them, there is no longer a reason to suck up to the West.

Good for them.

Comment: Re:Few you say? (Score 1) 578

by RoLi (#48729127) Attached to: What Language Will the World Speak In 2115?

What do you mean by 'decadent' here?

All Westernized peoples are incapable - despite all the ressources available - to replace themselves.

If a plant does not grow despite all external needs are met then we say it is sick, wouldn't you agree?

This sickness exists only for the last couple of generations, so it's clearly not genetic and therefore cultural, i.e. decadence.

Why should the 'decadence' of a language stop you from using it

Because it corrupts the children, plain and simple. It is the difference between your children and especially the daughters "seeking careers" (i.e. the decline or extinction of your family-line) and sleeping around (i.e. using unhealthy anti-baby pills, abortions, risk of sexual diseases) or starting families (i.e. the growth and survival of your family).

Just look at the USA: The founding population will become a minority in about 20 years. Are the people concerned about that? No, they even cheer on their own destruction.

In the 1960s, the murder-rate tripled and rapes and other crimes increased similarily. Are Americans concerned about that? No, they think the 1960s was progress and good. They don't care about their women being raped and murdered. In fact they even hide the identities of the perpetrators and concentrate on fake rape hoaxes instead.

The US constitution starts with "We, the people [..] and our posterity", but Americans don't care about their posterity anymore and the US has been turned into an "idea-nation", i.e. no nation at all.

Peoples willing to survive will only be able to do so when they distance themselves from Western mainstream culture and a different language is one way of doing that. There are other ways (religion, ideology, etc.) but a different language makes it much easier.

if it helps you pass your message across clearly, and if it does so better than many other languages because of its rich vocabulary?

The question is, is that advantage really worth all the above problems? When your daughter is depressed because of the anti-baby-pill and is becoming a drug addict because of it (I'm of course talking about 100% legal drugs from your doctor) is a job with a little bit more salary really worth that? There are millions of women in the US who are chronically depressed and are on drugs. And even if they can hold a good job for quite some time, may their drug addiction, their mental instability and their general unhappiness also endanger the "good job" they hold?

Millions of women take hormones to make them sterile and other drugs to combat the side effects of these hormones. And people don't question that, they say it's normal, that it's "liberating".

If you would do something like that to farm animals you would get jailed for abuse.

Comment: Re: (Score 1) 272

by RoLi (#48723735) Attached to: How Civilizations Can Spread Across a Galaxy

"One AU is about 1.5e11 meters."

So you propose an environment that is baked 24/7 with the Sun at the zenith at all times? And you claim that that is desirable? Humans could only survive on that with pretty heavy airconditioning.

"If it was made of metal 1 cm thick"

Right. And it has to be airtight, it has to be somehow able to support plants, houses and streets - and withstand a constant bombardment of micrometeorites. All that on 1cm.
And it has to rotate at enormeous speeds to create gravity (which would not work at the poles anyway, so the poles would fall into the Sun).

"you would only need to dismantle two earth sized planets"

OK, then you have a huge sheet of 1cm thick bare metal. How many planets do we need to actually do something with it? Growing plants needs a little more than 1cm of soil. So the soil alone would take a couple of planets.

Comment: Re: (Score 1) 272

by RoLi (#48723705) Attached to: How Civilizations Can Spread Across a Galaxy

Currently we are covering the Earth with greenhouses because (drumroll) they provide a better (yes, I said it) environment for plants than nature does.

In 400,000 years, one can imagine most of the Earth covered by greenhouses.

Think about that for a moment.

So of course any space colonization will be based on greenhouses and not on terraforming or any other such nonsense.

If it's not in the computer, it doesn't exist.