5

So obviously NASA need programmers to develop applications for them, be it VOIP applications, applications for control of machines and AI, etc. But in what language do they actually use for this?

I am thinking of learning how to program an Arduino, or Engduino as we may be witnessing in my Computer Science classes, but is this at all related to the type of programming NASA do. I understand that NASA will be programming MUCH, MUCH, MUCH more advanced programs than I, but to just get the sense of bringing a inanimate object to life would be an achievement to me.

gnat
  • 21,442
  • 29
  • 112
  • 288
Harry Kitchener
  • 179
  • 2
  • 6
  • @GlenH7: That's just one application. – Robert Harvey May 16 '14 at 19:14
  • 7
    Note that what they use now is not necessarily what they will be using when you graduate from college. – Gort the Robot May 16 '14 at 19:20
  • 1
    You want to code? Code! Just try to do it lots of different ways. The more ways you know to do things, the more likely it is you'll know a _really good_ way. Knowing lots of languages helps a lot. Don't worry too much about whether you end up at NASA; there's lots of other cool places to work too and all that stuff is lots of years away. Get Good first, and learning lots of stuff helps a lot (as does lots of practice; nobody gets good without practicing, 'cos that's the way human brains work). – Donal Fellows May 16 '14 at 19:52

1 Answers1

6

Armstrong Flight Research Center uses C, C++, C#, Fortran, MATLAB, Python and other languages, based on their specific software requirements. Some of their software development involves legacy systems. Some of it involves spacecraft systems, and some of it involves ground control systems. The control rooms run custom software written in C, C++ and C#, running on Dell computers.

ADA is seldom used anywhere in the military-industrial complex anymore, probably at least in part due to the Ariane 5 accident. There's a wide variety of software development that takes place at NASA, some of which involves exotic embedded systems. It never hurts to learn Arduino, and have some fundamental knowledge of electrical signals and digital data systems.

See Also
What is the Mars Curiosity Rover's software built in?
They Write the Right Stuff

Robert Harvey
  • 198,589
  • 55
  • 464
  • 673
  • Are there any that use Java? I am fairly experienced in this language, and was hoping it would be a brilliant one to follow up into the future. – Harry Kitchener May 16 '14 at 19:17
  • I haven't seen Java, but there is extensive use of C#, which is similar to (and I daresay a better language than) Java. – Robert Harvey May 16 '14 at 19:18
  • I have played with C# but have had one main issue with it, which you may want to kill me for. The idea of Drag and Drop forms. I hate being able to just drop the GUI onto the screen, I feel like a numskull when doing so :D. I have the same feelings about any language that uses Drag and Drop... – Harry Kitchener May 16 '14 at 19:21
  • 4
    Hand-coding forms is only interesting the first couple of times you do it. After that, any employer will wonder why you're wasting your time and their money writing that code by hand when the IDE will write most of it for you. – Robert Harvey May 16 '14 at 19:22
  • Good point, I never really thought of it in that way. But as I'm currently only writing small programs, to an extent, I feel that GUI takes up most of my time. I don't enjoy finishing a program in 1 hour. – Harry Kitchener May 16 '14 at 19:24
  • See if you can work out [some of these problems](https://projecteuler.net/) in an hour or less. :) – Robert Harvey May 16 '14 at 19:25
  • No. Not project Euler! My worst enemy, I am not of great enough intellect to solve such problems. :( – Harry Kitchener May 16 '14 at 19:26
  • 1
    @HarryKitchener Not all programming has to do with GUIs. When I started learning to program I made some windowed applications with Java, but soon found the stuff behind the chrome to be more interesting. If I need an interface, I'll mostly offer a text-based interface via the command line or through a web page, as they are easier to implement. – amon May 16 '14 at 19:26
  • Yes, I find the back-end stuff a hell of a lot more interesting. However, I feel my mathematics and intellect skills are not high enough to place myself in such a position as of yet. – Harry Kitchener May 16 '14 at 19:28
  • Note that NASA has a co-op program. You should explore that as a possible option. – Robert Harvey May 16 '14 at 19:30
  • @RobertHarvey I live in the UK... :( – Harry Kitchener May 16 '14 at 19:32
  • C/C++ are very big when dealing with robotics and hardware interfaces. C# is a big player in application development. I've had the pleasure of working with applications/equipment that will be utilized by NASA in the future(Though I didn't actually get to work for NASA, I worked with a partner). You'll also want to look into protocols for network communication such as UDP and TCP/IP. These can be implemented in C, C+, and C# and are very useful when dealing with applications that have to have network communication to work. – Loren Shaw May 16 '14 at 19:56
  • Would you recommend I stop learning Java and go onto C#/C++ then? – Harry Kitchener May 16 '14 at 20:28
  • 1
    No. The more you know, the better off in your field. The company I did my internship with used both Java and C# for different applications. Continue learning Java, and as you get familiar, take on C#/C++. Java is syntactically similar to those and knowing Java will help you learn the others as well. – Loren Shaw May 19 '14 at 12:14