4 ms·
>computer languages (C++ especially, but also systems built in C) are too complex for the average mind I'm not necessarily disagreeing, but have you looked at
by n00b101 10y ago
>computer languages (C++ especially, but also systems built in C) are too complex for the average mind
I'm not necessarily disagreeing, but have you looked at the source code [1] of the Apollo Guidance computer [2]? This software was shipped to production 50 years ago. It literally implements a "self-driving space rocket." It is staggering that this was completed in such a short time and actually worked.
The code is written entirely in the "Apollo Guidance Computer (AGC) Assembly" language. The hardware that it was written for had to be invented in at the same time, and was the world's first computer to use Integrated Circuits ("chips"). They also implemented a Real-Time Operating System with a multi-task priority scheduler, as well as a virtual machine and assembly interpreter within the software.
This was mission and life safety critical code, the risk involved boggles the mind. And yet the software was incredibly reliable. It was so reliable that it even saved the Apollo 11 crew and mission during the lunar descent by famously recovering from a peripheral hardware bug.
I honestly do not know how this feat was even humanly possible, but I do know that these programmers did not rely on "code completion."
[1] https://github.com/chrislgarry/Apollo-11 https://github.com/chrislgarry/Apollo-11
[2] https://en.wikipedia.org/wiki/Apollo_Guidance_Computer https://en.wikipedia.org/wiki/Apollo_Guidance_Computer
- emodendroket 10y agoYeah, sure. But if they'd had code completion it would have been a help, not a hindrance.
- drzaiusapelord 10y ago>I honestly do not know how this feat was even humanly possible The Apollo program, fixed for inflation, was something like $130 billion dollars. That's buys you a lot of talent, testing, etc. Its also worth noting that the program wasn't without its screw ups. The Apollo 1 deaths. The radar control on Apollo 11 eating up all the CPU during lunar landing. Apollo 13's famous O2 tank explosion. I think you may be glamorizing something that was well done, but falls within the realm of 'you get what you pay for' and the occasional human error, which in the case of Apollo 1, turned out to be fatal. I wouldn't call a program with three deaths and an aborted lunar insert to be infallible. That said, NASA/JPL publish code standards, although I imagine most tech companies would balk at giving up their toys and hot languages/frameworks to do fairly tedious work like this. http://lars-lab.jpl.nasa.gov/ http://lars-lab.jpl.nasa.gov/
- eremeevp 10y ago>That said, NASA/JPL publish code standards, although I imagine most tech companies would balk at giving up their toys and hot languages/frameworks to do fairly tedious work like this. For most companies developing non-critical software, applying such harsh coding standards will not be cost effective after all. The cost of you browser crashing is not nearly as high as the cost of a crashing rocket... Besides, even NASA sometimes makes mistakes: http://www.viva64.com/en/b/0416/ http://www.viva64.com/en/b/0416/
- w_t_payne 10y agoI'm sure that there is a happy medium to be found; a modicum of organisation and discipline must surely save more money by avoiding confusion and wasted time than it costs. How much effort does it take to use a linter? To crank the compiler warnings up to maximum? -- versus the time wasted bug hunting and in heroic struggles with spaghetti-monster codebases...
- drzaiusapelord 10y agoAgreed, there are reasons why we do certain things a certain way. But in the age of ransomware and endless cyberwars and nation state spoofing maybe the idea that browsers and other internet facing applications should be barely-shippable shit code is antiquated.
- eremeevp 10y agoYou can't protect everything, but I'm sure they have a secure browser at NSA )
- nickpsecurity 10y agoNSA just uses isolation approach in air gaps or hypervisors like these: The high-assurance community in academia and commercial sectors keep building secure browsers, though. One, OP browser, was inspiration for Chrome security model. They severely weakened it for performance. IBOS is probably most interesting. There's links at the comment below. https://news.ycombinator.com/item?id=9969961 https://news.ycombinator.com/item?id=9969961 Quark kernel is one that's not in that comment for some reason: http://goto.ucsd.edu/quark/ http://goto.ucsd.edu/quark/
- nickpsecurity 10y agoMargaret Hamilton, whose team built it & co-invented software engineering, described the process they used to build that in "Apollo Beginnings:" http://htius.com/Articles/r12ham.pdf http://htius.com/Articles/r12ham.pdf It had little to do with assembly language. They did what most don't by trying to understand root cause of every issue they encountered in software development. Then, they modified their tooling and methodology to systematically eliminate it. They also designed a multi-process, fail-safe OS whose properties are similar to Erlang. They also invented a form of Design-by-Contract to catch errors at interfaces, which are majority. By the time assembly was ready, they had done an amazing amount of specification, analysis, and testing on both individual functions and groups of them. They also had fail-safe and recovery built-in to everything to anticipate inevitable failures, which did show up. There were also 400, highly-motivated individuals working at it for a good chunk of time. The result was this pile of software [1] got people to the moon safely despite multiple failures outside of it. Quite amazing but says almost nothing about safety assembly in regular development. [1] https://www.wired.com/wp-content/uploads/2015/09/Margaret_Hamilton.jpg https://www.wired.com/wp-content/uploads/2015/09/Margaret_Ha...