17 ms·
Why NASA Needs a Programmer Fluent in Fortran and Assembly Language
- Fireman 11y agoSome computational physics courses in parts of Canada are still taught in Fortran90. I also worked in a lab (in 2005) which still used 5 1/4" floppy disks. The difference between these and NASA, of course, being choice.
- gopowerranger 11y agoNot too long ago, I lost a job cause I didn't know Fortran.
- Turing_Machine 11y agoYes. A good friend of mine still uses FORTRAN regularly for scientific computing, and has worked at supercomputing centers all over the world (NCSA, ORNL, IVEC in Australia, LBNL...). She just got her PhD around 2006-2007-ish, so it's not like she's ancient, either.
- wkoszek 11y agoTruly fascinating read. Thanks for posting that!
- moconnor 11y agoFortran is widely used for scientific computing and in high performance computing some knowledge of assembly language is useful in making use of vector instructions - compiler auto-vectorisation still needs a lot of help. Fortran and assembly language are key skills at every national supercomputing center in the world.
- spott 11y agoYea, but embedded Fortran, and assembly of whatever architecture that voyager runs on is a different beast.
- walshemj 11y agoIs it embedded Fortran or a Fortan cross complier for the target on the space craft.
- escherplex 11y agoPoint well taken. Couple that with the need for an intimate knowledge of idiosyncrasies endemic to salvaged 8086 chips operating in space.
- duaneb 11y agoHow much can understanding assembly be understood as a skill? Most of the skill that goes into optimization isn't very architecture dependent but CPU and algorithm dependent.
- naveen99 11y agoReally ? I thought people who need super computing performance have moved onto programming for the gpu with cuda c. Are people actually writing fortran or gpu assembly for the gpu outside nvidia ?
- walshemj 11y agoI think for pure balls to the wall performance your still using Fortran probably the Intel compiler with the extensions for HPC/CUDA etc.
- semi-extrinsic 11y agoAh, the GPU hype. Here's something the GPU vendors don't tell you: a huge part of scientific computing doesn't get any speedup at all from GPUs. A good example is fluid dynamics research, or essentially anything that boils down to solving PDEs or doing huge sparse linear algebra problems. Even for the fields where it makes sense, like molecular dynamics, it's not obvious that you get more performance per dollar than with CPUs. Shameless self-plug: http://asmunder.github.io/2015/04/Inaugural-post:-on-the-benefits-of-GPUs-for-molecular-dynamics/ http://asmunder.github.io/2015/04/Inaugural-post:-on-the-ben...
- noobermin 11y agoMainly because no one in hpc is trying... The few that are are blowing things out of the water[0]. [0] https://www.hzdr.de/db/Cms?pNid=3227 https://www.hzdr.de/db/Cms?pNid=3227
- semi-extrinsic 11y agoWell, no. There are fundamental algorithmic reasons why some problems can exploit GPU power and some cannot. Look at any of the ~15 most popular molecular dynamics codes today, they all have some sort of GPU support. Look up something that solves an elliptic PDE, like incompressible Navier-Stokes, and you'll see no-one using GPUs. As for the PIC code you link to: they don't mention any sort of fair benchmark anywhere, so if they are objectively "blowing things out of the water", they're rather silent about it.
- kwhitefoot 11y agoIt's going to be hard to find a person with the right set of skills regardless of their age. One of the skills required is patience and another is absolute dedication to getting it right first time. Not a job for a Scrum enthusiast.
- StillBored 11y agoYah, I'm not sure the assembly is the hard part (I know a couple engineers in their 20's that do just fine with assembly), or for that matter layering fortran on said engineers. The problem is that none of them will likely be interested in working on a piece of hardware for 10 years that effectively is a dead end. Its the same decision that I looked a couple years ago with regard to mainframe development. Its a dead end and the longer you stay there the less employable you will be for your next job. AKA, if whoever gets the job at NASA is younger than the 50 Y/O's they are looking at, it should come with a pension, because getting the next job will be hard.
- msh 11y agoWell, I am not so sure. I think "wrote software for a space probe while at NASA" is going to look pretty eye-catching on a resume.
- technofiend 11y agoI ported the Fortran and assembly code to 'C' for computing stress on orbiter (aka the space shuttle) based on winds aloft data. We received the data from a weather balloon sent up on launch day. We even rolled our own work balancing and coordination system based on NQS. The UNIX code was far faster due to hardware speedups and parallelizing the code but it was much more resilient as well due to our putting in checkpointing and restart and recovery logic into the work manager and code. The project won a Silver Snoopy because we retired a Honeywell mainframe that was costing NASA $5 MM/yr in maintenance fees. I assume there was a guy or team of guys prepared to fabricate any component required at that price. :-) Because I was a contractor working for a contractor I did not receive a Silver Snoopy. Trust me, I regularly look for those little guys on ebay because I'd love to have one. I'm still cheesed about it twenty years later. Although it's a fun anecdote (and admittedly not nearly as cool as your example) I don't think it's garnered much more than a "that's cool" reaction from people. Probably too many other people running around Houston who've done similar things. If it would get me a job at Google I'd jump, but in a town full of ex-NASA employees it's nothing remarkable.
- quux 11y agoThere's still an active community writing tight assembly code for vintage computers like the C64, and there was a ton of excitement around Notch's 0x10c, which was a virtual computer of the same class as Voyager's. There's clearly a yearning among modern programmers for the days where the entire system could be understood by one brain. This probably isn't practical, or sane, but I wonder what would happen if Nasa released an open source simulator for Voyager and invited the community help implement the software fixes they need. There might some really good devs who would do it just for the challenge. Think of it as 0x10c with a purpose.
- avar 11y agoThe concept sounds cool, but what sort of fixes could the Voyager probes possibly need? They were launched in 1977, that's almost 40 years ago. As far as I know they're waking up every once in a while and sending telemetry back. It would be cool to have access to the source code and an emulator, but I really don't find it plausible that members of the general public could submit patches to something that's been running smoothly for 40 years, and where the risks of changes far outweigh the benefits of keeping the existing software running as-is.
- deleted 11y ago[deleted]
- saganus 11y agoThe article says that part of the need to get programmers back in the project is to be able to get exact readings on the amount of energy that's being used and the amount left. It appears like they are currently working with estimates (e.g. they cite a use of 3.2 Watts but it's actually 3.0 due to margins of error in the original design. Now they want to know exactly how much power is consumed). So maybe they don't need fixes in the traditional sense that something is broken, but fixes in that they need the spacecraft to do stuff that wasn't designed for. Another example they cite is when they revamped the software in 1990 so they could better automate certain functions since they were preparing for the interstellar part of the journey and they needed certain automatic procedures which apparently were done manually in the past.
- Loic 11y agoI am 36, coding 3h a day in Fortran for the oil and gas industry. I must say, even if I write a lot of Python code too, I really enjoy the way a program is "optimized" by default, that is, if your algorithm is good, you do not need to do crazy things to get good performance out of your hardware.
- sevensor 11y agoCare to share any references on learning modern Fortran? I've tangled with some pretty ancient code (full of Hollerith constants and tangled mazes of GOTOs) but I get the impression there's a whole other world of Fortran out there.
- Someone 11y agoThanks for mentioning https://en.m.wikipedia.org/wiki/Hollerith_constant https://en.m.wikipedia.org/wiki/Hollerith_constant. It turns out that the Mac OS language extension to write 32-bit integers for file types and creator codes as, for example, 'TEXT' or 'FNDR', was inherited from fortran :-) I always love to learn about stuff that has little to no use in real life (anymore).
- sevensor 11y agoI could not figure out what the heck they were for a while. When I figured it out, I felt like I'd just caught a coelocanth in a fishing net. There it was, making perfect sense in its prehistoric context, but completely out of step with the modern world. Same thing with the weird goto-based control flow. It was very disciplined and regular, but it didn't map to anything I'm used to.
- Someone 11y agoBut goto-based workflows are natural, if you are accustomed to writing assembly on a CPU that doesn't have a hardware stack :-)
- ovis 11y ago
- walshemj 11y agoOk so where's the Job listing would be interested how good a match it would be for me :-)
- walshemj 11y agoDown voated for this really?
- yodsanklai 11y agoI don't get why they need to hire someone that knows Fortran already. I'm sure any competent and versatile programmer would be able to learn quickly those technologies.
- virmundi 11y agoThat is not how we do any more. You have to have the skill. That is why you have a college degree. You should have total knowledge of everything. You must be proficient too.
- eliteraspberrie 11y agoI use Fortran code which was written before I was born on a daily basis. It works exactly as you expect. I can't get C code to behave the same from one release of the compiler to the next. Thank goodness NASA uses Fortran.
- listic 11y agoPopMech makes it sound more arcane thane it might be: it's not that much out of the ordinary to know (or learn) assembly and Fortran or to have to work with computers that have 64K RAM (some modern microcontrollers have less[1]) I imagine it would be as hard as it sounds if they would require a specialist with years of experience in their particular dialect of Fortran and some particular assembler, expecting them to be productive right away. But it looks to me that they just have a peculiar setup and need someone who is able and willing to learn it - that's a situation plenty of companies have. Now a Voyager computer itself looks like a peculiar piece of technology in itself - is it one of a kind? If so, who made an assembler and Fortran compiler for it? Unfortunately, the article (or any others I googled up) doesn't go into that. Is there a description of Voyager computer publicly available? So far, I find it the most marvelous that a tape recorder is alive and well after 40 years of regular usage: the computer memory of the day was not nearly enough to hold scientific data, so it's being written on a 8-track tape recorder, sent to Earth and then overwritten again, in a loop. Still, even with minimial usage, I have trouble imagining how a single tape reel could last 40 years of regular use. In space. [1] List of common microcontrollers: https://en.wikipedia.org/wiki/List_of_common_microcontrollers https://en.wikipedia.org/wiki/List_of_common_microcontroller... STM32 F0: http://www.st.com/stm32f0 http://www.st.com/stm32f0
- jamesmcn 11y agoGiven that the Voyager probes are pushing the absolute edge of humanity's reach into the cosmos, I'd love to see NASA publish the hardware specs and open up a competition to find the best possible solution. With open specs, a simulator or emulator could be built, and anyone with interest could give it a try. A core team of NASA engineers might come up with some unit tests and acceptance tests. If these are passed, then the code is eligible for professional review.
- jrjr 11y agocrowdsource it. there are thousands of programmers that would love to help, let alone audit the result. and even more that would love to write the sims.
- wyclif 11y agoPreviously: https://news.ycombinator.com/item?id=10476306 https://news.ycombinator.com/item?id=10476306 I really, really wish HN would be fair and go with the first post of a story, not the creatively-titled later submission.