DailyDirt: Made In The USA Rockets

from the urls-we-dig-up dept

We’ve covered a bunch of plans for manned missions to space from amateurs and private companies and various governments. There are three countries that have built space vehicles for people: Russia, China and the US. However, the US hasn’t had a launch system for its astronauts made domestically since the retirement of the space shuttle program. NASA is getting closer to having more new launch systems made in the USA, and here are just a few links on the topic.

If you’d like to read more awesome and interesting stuff, check out this unrelated (but not entirely random!) Techdirt post via StumbleUpon.

Filed Under: , , , , , , ,
Companies: nasa, spacex, ula

Rate this comment as insightful
Rate this comment as funny
You have rated this comment as insightful
You have rated this comment as funny
Flag this comment as abusive/trolling/spam
You have flagged this comment
The first word has already been claimed
The last word has already been claimed
Insightful Lightbulb icon Funny Laughing icon Abusive/trolling/spam Flag icon Insightful badge Lightbulb icon Funny badge Laughing icon Comments icon

Comments on “DailyDirt: Made In The USA Rockets”

Subscribe: RSS Leave a comment
15 Comments
Mason Wheeler (profile) says:

C and C++ for rockets? You’ve gotta be kidding me!

They are both horrible languages–among the very worst in existence, without exaggerating in the slightest–in one of the most crucial areas for a project like space travel: resilience.

This isn’t just hyperbole or theory; it’s a historical fact. Most well-designed programming languages have features available to catch and deal with certain types of errors gracefully, or even to ensure that they’re not possible in the first place. Depending on the language, these features may be turned off at times, and having one of these important safety features disabled was directly responsible for the Cluster explosion.

But here’s the thing: C and C++ don’t have these safety features at all. Writing anything mission-critical in either language, therefore, really should constitute an act of criminal negligence. It’s extremely disappointing to see the folks at SpaceX making such flat-out stupid design decision!

OldMugwump (profile) says:

Re: among the very worst in existence

They didn’t say to use C and C++ for mission-critical systems, they said to learn them.

Learning low-level, primitive languages (including assembly) teaches valuable skills that are applicable in many other areas. Every well-seasoned programmer should know some of these low-level languages – well.

That said, despite the fact that you’re correct that these languages have little or nothing in the way of “safety features”, they nonetheless have a critical role to play in the software ecosystem. Almost all “high level” and “safe” languages today are implemented in C or C++, and for very good reasons (having to do with memory efficiency and fast execution).

As such, they are not “among the very worst in existence” – they merely have strengths and weaknesses, and places where they’re appropriate, and not appropriate.

Just like all the other languages.

[FWIW, I have written a great deal of real-time code that runs close to the metal. Some of it even has flown in rockets.]

John Fenderson (profile) says:

Re: Re:

“They are both horrible languages–among the very worst in existence, without exaggerating in the slightest–in one of the most crucial areas for a project like space travel: resilience.”

Sorry, that is totally an exaggeration. There are many languages that are less protective than those.

“But here’s the thing: C and C++ don’t have these safety features at all. Writing anything mission-critical in either language, therefore, really should constitute an act of criminal negligence.”

I couldn’t disagree more. The lack of safety features isn’t necessarily an act of criminal negligence because the software development process can (and should) mitigate the need for built-in safety features. Reliance on the language itself to enforce software quality is one of the hallmarks of substandard software development.

What those “safer” languages do is to allow development time (and therefore manpower costs) to be reduced by allowing less rigorous development methodologies to be used without causing a total disaster. However, using those languages presents a lot of technical trade-offs in terms of memory and CPU cycle use, determinism, and other such things. Depending on the project, those tradeoffs may be unacceptable.

Mason Wheeler (profile) says:

Re: Re: Re:

Sorry, that is totally an exaggeration. There are many languages that are less protective than those.

Such as? In order to ensure a fair, apples-to-apples comparison, please restrict yourself to serious languages with a non-trivial market share. Anyone can create a crap language, but actually getting it accepted by the community takes some real doing. (Such as corporate sponsorship by AT&T!)

Reliance on the language itself to enforce software quality is one of the hallmarks of substandard software development.

Not at all. It’s a manifestation of the whole point of building computers in the first place: to automate tasks that are repetitive and boring, easily automated, and make sure they’re done right every time.

It’s a sign of humility, which, Larry Wall notwithstanding, is one of the highest virtues a programmer can manifest: demonstrating that they know when something is beyond their abilities and not trying to reinvent the wheel when an existing well-proven system can do it for them?

However, using those languages presents a lot of technical trade-offs in terms of memory and CPU cycle use, determinism, and other such things. Depending on the project, those tradeoffs may be unacceptable.

That argument made sense back in the 80s. In the age of Raspberry Pis and Arduinos, it’s a much less valid excuse.

John Fenderson (profile) says:

Re: Re: Re: Re:

“Such as?”

Well, assembly comes to mind first.

“demonstrating that they know when something is beyond their abilities and not trying to reinvent the wheel when an existing well-proven system can do it for them?”

I’m not sure why you’re bringing this up, since it isn’t really related to anything I said. However, I agree: if an existing, well-proven system can meet the needs, then it should be used.

“That argument made sense back in the 80s. In the age of Raspberry Pis and Arduinos, it’s a much less valid excuse.”

Not at all. In my daily job at a major software company, we are constantly having to deal with memory & CPU cycle limitations. On modern desktop machines. In embedded systems such as on rockets, the limitations are a lot tighter and these considerations become even more important.

In the end, my point is that different languages excel at different things. You should use the right language for the job, and to write off one of the most popular languages on the planet (considering C and C++ as if they were a single language) as always the wrong choice is just as wrong as saying it’s always the right choice.

C/C++ was designed for low and mid-level programming tasks (technically, to write operating systems in) and excels at that. It’s presence in embedded systems is not automatically a bad decision. It all depends.

Mason Wheeler (profile) says:

Re: Re: Re:2 Re:

Well, assembly comes to mind first.

“Assembly” isn’t a language as such; it’s a one-to-one mnemonic mapping of the machine code for a given processor architecture. There’s no such thing as “the ASM programming language;” rather, there’s x86 assembler, x64 assembler, ARM assembler, and so on.

And even if we granted that it’s a real programming language, it still doesn’t fit my criteria. When’s the last time you heard of a program being written in assembly?

In my daily job at a major software company, we are constantly having to deal with memory & CPU cycle limitations. On modern desktop machines.

And I’d bet that most of your dealing with it consists of fixing architectural problems, (such as refactoring bad algorithms to better ones with lower big-O complexity, and replacing inefficient data structures with better ones), and not micro-optimization. As a developer with extensive experience in both low-level and high-level work, I’ve observed that around 90% of the time that’s where the big gains are found.

You should use the right language for the job, and to write off one of the most popular languages on the planet (considering C and C++ as if they were a single language) as always the wrong choice is just as wrong as saying it’s always the right choice.

I’m sure a job might hypothetically exist somewhere, for which C is the right choice. I have yet to actually see it.

For C++, on the other hand, I don’t believe any such job exists or ever could exist. It may not be the worst programming language ever created, but it is without a doubt the worst ever to be taken seriously.

But you don’t have to take my word for it; check out what one of the most accomplished computer scientists of all time had to say on the subject, when he was honored with the Turing Award. The excuse about language-level safety being a necessary trade-off to be given away due to constrained resources was well-known to be bogus way back in the 60s, many years (and Moore cycles) before C, and I would suspect, though I don’t have any documents to show as evidence, that it was invented by the folks at Bell Labs to hand-wave away the horrendous flaws in the language they inflicted upon the world.

C/C++ was designed for low and mid-level programming tasks (technically, to write operating systems in) and excels at that.

If by “excels” you mean “does a terrible job,” then sure. As a former coworker of mine used to say, “Dennis Ritchie’s true legacy is the buffer overflow.” I have yet to see an OS written in C/C++ that did not require regular patching to deal with an unending stream of security vulnerabilities, the vast majority of which were directly the result of language flaws.

Anonymous Coward says:

“A bill in Congress might ban the use of Russian rockets to launch military payloads into space. This move could accelerate plans to build new rocket designs made in America.”

Mr. Ho, you seem to have forgotten that Russia already banned the sale of its rocket engines to the US military, making this proposed import ban pointless. (unless, of course, it was just a big bluff)

http://www.spacepolitics.com/2014/05/13/russian-official-announces-ban-on-military-use-of-rd-180-engines/

jim says:

old code?

But look at the old code? Could it have been improved. Yes, but then assembly was the main code when all this was started. C and C+ all translate to metal languages very fast and efficiently. No odd numbers, very few overflows and work tireslly till the program quits or the unit dies. Modern languages don’t work that way, if the sensor dies, the programs endlessly loop.
So we are wanting to dump on the Russians and jump to the Chinese bandwagon? You know, that would shut down the space station, limit us to forever low hill, better targets for the incoming .. And I thought congress was here to protect the nation not to sell it off to the Chinese. Damn…

Add Your Comment

Your email address will not be published. Required fields are marked *

Have a Techdirt Account? Sign in now. Want one? Register here

Comment Options:

Make this the or (get credits or sign in to see balance) what's this?

What's this?

Techdirt community members with Techdirt Credits can spotlight a comment as either the "First Word" or "Last Word" on a particular comment thread. Credits can be purchased at the Techdirt Insider Shop »

Follow Techdirt

Techdirt Daily Newsletter

Techdirt Deals
Techdirt Insider Discord
The latest chatter on the Techdirt Insider Discord channel...
Loading...