back to article Think Fortran, assembly language programming is boring and useless? Tell that to the NASA Voyager team

If you thought Fortran and Cold War-era assembly language programming is pointless and purely for old-timers, guess again. NASA has found an engineer comfortable with the software to keep its old space-race-age systems ticking over. In an interview with Popular Mechanics this month, the manager of NASA's Voyager program …

COMMENTS

This topic is closed for new posts.
  1. Anonymous Coward
    Thumb Up

    Even then...

    ... technology was amazing.

    Some info here:

    http://history.nasa.gov/computers/Ch6-2.html

    Reading that makes yer eyes go wonky though.

    1. JeffyPoooh
      Pint

      Re: Even then...

      http://history.nasa.gov/computers/contents.html

      ^- link to the whole thing.

      1. smartypants

        Re: Even then...

        That nasa website seems almost as old as Voyager itself... and I hope that it isn't a good guide to the coding quality at Nasa - take a peek at the mark-up... About half of it seems to be trying to stuff geneva down the throat of every poor little tag on the page.

    2. John Smith 19 Gold badge
      WTF?

      Some info here:

      You'll notice in fact there are 3 processors involved here. Some came from the Viking programme but all (AFAIK) are custom processors built out of LS TTL, usually aroudn the LS171 ALU, like the PD11 and the Xerox PARC Alto.

      When one of the processors was not fast enough to do the work they decided to add a DMA mode to all instructions to allow "hidden" data movements without the direct involvement of the CPU.

      Not something the average x86 or ARM programmer is used to considering as a design option.

      I suspect the JPL does have the necessary documents but you may have to rehost the assembler if you're going to have a go at re-programming Voyager as data updates are going to be sloooooow.

      1. Charles Manning

        Some mis-info here:

        "When one of the processors was not fast enough to do the work they decided to add a DMA mode to all instructions to allow "hidden" data movements without the direct involvement of the CPU.

        Not something the average x86 or ARM programmer is used to considering as a design option.

        "

        DMA usage is very common. As I write this I'm taking a 10 minute break from debugging a dma issue on an ARM micro. The CPU is doing almost no work (CPU loading of about 1%), but the DMA is working at about 70%.

        Go look in the Linux kernel - stuffed to the gunnels with dma. cd linux; greip -ir dma

        " but you may have to rehost the assembler if you're going to have a go at re-programming Voyager "

        What do you mean by rehosting the assembler? I would expect the assembler is a cross-assembler (ie. it runs on a normal machine (eg. originally a Vax or such, but now aLinux box), but generates code for the target CPU. THat's how most embedded systems are developed.

        1. John Smith 19 Gold badge

          Re: Some mis-info here:

          "DMA usage is very common. As I write this I'm taking a 10 minute break from debugging a dma issue on an ARM micro. The CPU is doing almost no work (CPU loading of about 1%), but the DMA is working at about 70%."

          You need to read the chapter. Slowly.

          The design team added DMA to each individual instructions implementation when data transfers were not quick enough. Not an option for any modern mpu's IP.

          "What do you mean by rehosting the assembler? I would expect the assembler is a cross-assembler (ie. it runs on a normal machine (eg. originally a Vax or such, but now aLinux box), but generates code for the target CPU. THat's how most embedded systems are developed."

          True, these systems data from the 70's. IOW you're looking at 70's assembler written in the 70's version of it's implementation language and running on a 70's computer.

          It all depends on how up to date NASA's tool hosting has been.

          If the toolset was developed in a main stream language without using too many supplier unique features it'll be simple. If they relied on special features of that language or its support libraries you'd either have to duplicate them or build a new tool chain.

          1. Cynic_999

            Re: Some mis-info here:

            "

            If the toolset was developed in a main stream language without using too many supplier unique features it'll be simple. If they relied on special features of that language or its support libraries you'd either have to duplicate them or build a new tool chain.

            "

            There won't be any "support libraries". It will be from-scratch code all written by the project programmer(s). Take a look at the ZX spectrum disassembly (google) to see how it was done in those days. A 1 or 2 pass assembler *maybe* followed by a linker - though frequently the code was fed to the assembler as effectively one single module, in which case linking would not be required - the assembler output the completed binary.

            There are a few generic assemblers available. You start by defining the basic architecture and instruction set / mnemonics, and then the rules for each instruction and associated binary (machine code) output and you end up with a perfectly usable assembler. I once programmed a generic tool to do Z80 assembler programming as I did not have access to a Z80 cross-assembler at the time.

            A quick google came up with http://sourceforge.net/projects/sgasm/ that looks like the sort of thing I recall. I have also read of a self-configuring generic assembler - you feed it an existing comprehensive source code and associated binary, and the program figures out the assembler rules (obviously it won't understand instructions or variations that weren't in the source code you fed it).

        2. Gannettt
          Headmaster

          Re: Some mis-info here:

          Stuffed to the gunwales.

          I feel better now!

  2. Chris Miller

    For which chipset?

    Someone fluent in assembly language for current Intel chips wouldn't have a Scooby when it comes to the hardware in this ancient beasty (Google suggests it's a GE 18-bit system). They could learn, of course, but then so could a competent C programmer.

    1. Paul Crawford Silver badge

      Re: For which chipset?

      Alas, how many competent C programmers are there? You know the ones who actually understand how to manage memory & pointers...

      1. Toastan Buttar
        Boffin

        Re: Competent C programmers

        Actually, there are quite a few working in embedded software. Low-powered processors and kilobytes of RAM are still commonplace in that area.

        1. a_yank_lurker

          Re: Competent C programmers

          Two problems with C programmers and neither has to do with competence. First the FORTRAN dialect is probably something like FORTRAN IV which is very different from the modern version of FORTRAN. Lots of nasty differences between the versions. Second is assembly language instruction sets are processor specific. So someone familiar with the assembly language of current processors would be unfamiliar with the quirks of this processor. To add to the problem, apparently the processor is effectively a one-off. Finding documentation for either language would be difficult. You might find a used copy of a FORTRAN IV text but I suspect the assembly language would be difficult to find. The assembly language documentation was probably very good originally but how much has been lost, misfiled, etc. in 40 years is an open question.

          Programming in the mid 70's was more concerned about absolute memory management and accounting for memory usage than today. The economics of programming has fundamentally changed from programmers are relatively cheap compared to the hardware to now were most hardware is cheap and this the programmer becomes relatively expensive. The two schemes require very different approaches to programming.

          1. This post has been deleted by its author

            1. Chemist
              Coat

              Re: Competent C programmers

              "You need to know how to use basic concepts such as bitwise operations, BCD number representation, etc, which are basically universal in any assembly coding."

              I'd add understanding of the various addressing modes and the elegant, fast data structures that they can be used to build.

              (Mine's the one with programming the 6809 in the pocket

            2. Bill Michaelson

              Universal ops are still universal

              IBM 360- and 370-series BAL programmers of the 1970s and earlier carried accordion-folded "green cards" that listed all the operations. I had white cards and yellow cards that covered later 370 models like the 370/168, but they were still known as green cards. The summary information all fit on the card and reference to the big manual that actually described how the instructions worked in detail was only occasionally required. The instruction sets of the DEC PDP 11/70 had a distinct flavor (memory addressing and subroutine calling conventions, octal vs. hex, ASCII vs. EBCDIC), and the programming conventions were different but the basic concepts were the same. The IBM Series/1 minicomputer instruction set, for which I coded assembly for several years was relatively byzantine. The equivalent "green card" was actually a booklet, and the full processor manual was a little more useful. I only dabbled with Motorola 6502, Intel 8088 and the like in assembler, but can say confidently that the knowledge is universal and relevant even when working in much higher layers such as say, Scala in a JVM, but less often applicable.

              But all this knowledge could be circumscribed well and is limited in scope. There is much more to know in today's environment and I believe the work is even more challenging to do well. We have tools to protect us from the old classic errors, but as creative humans, we will continue to find new ways to screw up. I believe an assembly language experience is worthwhile for any coder.

    2. JeffyPoooh
      Pint

      Re: For which chipset?

      Chipset?

      Not exactly a 'chipset'.

    3. This post has been deleted by its author

      1. Simon Harris

        Re: For which chipset?

        "I wrote a an introductory tutorial to X86-64 assembler, specifically aimed at those who had a bit of experience with the Z80 from the 8-bit home computers of 30 years ago."

        Since both the X86 and Z80 are essentially derived from the 8080, the concepts would be quite similar. This task may well be more like someone who has some experience of the wealth of instructions on the X86 being restricted to a PDP8, or having to learn fluent assembly code for the PIC with the most obscure set of on-chip peripherals and registers.

    4. Deryk Barker

      Re: For which chipset?

      WTF is a "nibble-serial CPU"??

      1. Killing Time

        Re: For which chipset?

        Re: WTF is a "nibble-serial CPU"??

        As I recall a nibble is four bits (half a byte) and given that all I have read suggests that the processor is probably a 'bit splice' design, i.e. entirely custom and created from discrete logic IC's, its not inconceivable that the data is shuttled between memory and accumulator in a serial fashion as opposed to a parallel bus. No doubt error checking and reliability being a major driver behind the design.

        Its a long long time since I have been involved in that stuff but its not a complete punt more an educated guess.

        1. joea

          Re: For which chipset?

          bit "slice", is the term. See AMD 2900 family. Still "splice" works.

        2. Jason Ozolins

          Re: For which chipset?

          Yeah, the 74181 is a 4-bit ALU on a chip, and NASA mentions using TTL 4-bit parallel logic in the chapter linked in the first comment, processing 18-bit words in 5 cycles, as a significant advance over bit-serial ALUs. Fewer wires, fewer packages, less power, but less speed than a full parallel ALU.

          FWIW, DEC sold a bit-serial ALU version of their PDP/8 at a fifth of the price of the full 12-bit unit, so this was a strategy pursued even outside the limits imposed by space engineering.

          In this chapter about Galileo [http://history.nasa.gov/computers/Ch6-3.html] there is mention of 2901 series 4-bit slice ALUs being used in parallel to make a full 16-bit ALU PDP-11/23 equivalent machine with a fully customizable instruction set. Then NASA found that the processors were not sufficiently radiation hardened to survive the conditions found around Jupiter, and had to pay Sandia $5M to fabricate special versions of the chips that could survive being blatted by high-energy particles. If the spacecraft had not been delayed they would not yet have discovered the radiation problems before launch...

      2. Cynic_999

        Re: For which chipset?

        "

        WTF is a "nibble-serial CPU"??

        "

        Basically the opcode size is bigger than the memory data bus, so one opcode is fetched by fetching two or more bus-size nibbles one after the other. You could get 1 bit CPUs that have 8 or 16 bit op-codes.

    5. Cynic_999

      Re: For which chipset?

      "

      They could learn, of course, but then so could a competent C programmer.

      "

      I doubt most C programmers (at least those used to programming PC applications running under a sophisticated OS) could learn assembler quickly - it's a significantly different mindset, and for the older CPUs you have to have a good handle on the hardware operation as well. Most assembler programmers are however capable of switching to a different CPU instruction set and becoming competant in programming in that language reasonably quickly.

      Maybe the C programmers who program embedded devices that do not have a formal OS or shedload of libraries could transfer to assembler more easily.

  3. Your alien overlord - fear me

    Wow, that's forward thinking of NASA. It's not like the guy got hit by a bus or something. They have had years (decades) to look for a replacement.

    But no, let's wait until he's retired then start looking.

    1. Anonymous Coward
      Anonymous Coward

      Yeah, but maybe they was using inches and not millimetres - mistakes happen!

    2. Grikath

      well to be honest.. between the risk of the Voyagers not surviving, and budget cuts, Voyager driving has been a year-to-year squeeze-by. So forward planning replacement of what is nowadays a rather exotic skillset would not have been high on the agenda.

      1. MyffyW Silver badge

        Since these probes were meant for encounters with the gas giants I guess forward planning didn't necessarily extend past the working life of the programmers when the probe had, by some estimates, left the solar system.

    3. chivo243 Silver badge

      Same thing happened with my mom, she put in for early retirement, and her position still sits open 7 plus years later... She worked on HP mainframes something 3000 or 2000 I even used one them for one compsci course at the Uni where she worked, and that was 1984ish?

      1. Mpeler
        Boffin

        HP Mainframes job open?

        If it's the HP3000, that great machine hit EOL in 2006 ([NO]Thanks Carly, Winston, and Wim)...

        2100 (2000) was gone a lot earler than that; 1000 probably still has MIL contracts, but it's by no means a mainframe, as it's a realtime box.

        Spent many a year developing, managing, debugging, and peering at the h/w and s/w innards.

        MPE forever, we say. Too bad HP didn't listen...

        1. Mike Pellatt

          Re: HP Mainframes job open?

          HP 2100 not a mainframe, 'twas a desktop mini.

          2nd year elec eng, 1974/5, programming it was part of the optional computing course.

          We had to write the assembler, then hand-assemble it into the machine code, then enter it in with the front panel pushbuttons.

          I thus gained an intuitive understanding of how instructions are decoded, logic flows through the ALU, and the way an ISR works.

          Can I have the job please ?? I still don't "get" object-orientation :-)

          1. Mpeler
            Windows

            Re: HP Mainframes job open?

            2100 was more of a controller, predecessor of the 3000. I did OS/language/DB/utilities/internals development and support at HP. The HP-IB and PA-RISC versions of the 3K were worlds apart from the "Classic" 3Ks, which were similar (somewhat) to the 2100. Bob Green has some good articles about the origin of the 3K.

            Well, there's object-oriented COBOL now, so oo-RPG can't be far behind :)

            Gosh, even this icon isn't old enough :) ------------------------------------------^^^^^^^^^^

            1. Mike Pellatt

              Re: HP Mainframes job open?

              2100 was more of a controller

              I only called it a mini 'coz the lab one had a teletype attached :-) I seem to remember programming an ISR for the keyboard was the task we had.

            2. Michael Wojcik Silver badge

              Re: HP Mainframes job open?

              Well, there's object-oriented COBOL now

              "Now"? Since 1993. OO COBOL is old enough to vote and td

              so oo-RPG can't be far behind

              Maybe, though the only real change to the language since RPG IV in 2001 seems to be 2010's Open Access for RPG, which is really an I/O plug-in mechanism.

          2. This post has been deleted by its author

          3. heyrick Silver badge

            Re: HP Mainframes job open?

            I still don't "get" object-orientation :-)

            +1

            The last time I tried some OO code, I found myself staring at the disassembly wondering why anybody would actually want to use such things. It seems to me that the further you get from native assembler, the slower and clumsier the software becomes.

            MOV PC, LR (or RTS if you are old school) (^_^)

            1. Michael Wojcik Silver badge

              Re: HP Mainframes job open?

              The last time I tried some OO code, I found myself staring at the disassembly wondering why anybody would actually want to use such things.

              Funny. The last time I wrote some assembler, I found myself wondering why everyone didn't just write an instruction stream in binary. Lazy bastards.

    4. Charles Manning

      Never forget what NASA stands for

      National Aeronatical and Space ADMINISTRATION.

      A bunch of ADMINISTRATORS.

      The head of NASA is personally selected by the prez, so it's largely a political position, and that sets the one. The decision making is much like most political decision making: just kick the problem down the road and hope the ramifications are not experienced on your watch.

      Now perhaps you can understand by people just ignore O-ring erosion and cross their fingers or ignore the fact that an old coder is going to retire. It explains why there was no plan to replace the Space Shuttle (or fix it in the first place).

      What's important is picking which tie to wear for the next trip to the White House.

      1. ecofeco Silver badge
        Black Helicopters

        Re: Never forget what NASA stands for

        You are correct about administrators, but wrong on replacement for the STS.

        Lockheed was supposed to deliver the Venture Star, but bit off more than they could chew with the radical engine design. Project failed.

        McDonnell Douglas also had the Delta Clipper, which was actually in ongoing low level test flights, but lost the contract to... yeah, the Venture Star. Which didn't even have a static engineering model having all the money spent blowing up or melting engines.

        https://en.wikipedia.org/wiki/VentureStar

        https://en.wikipedia.org/wiki/McDonnell_Douglas_DC-X

        (be sure to google flight video. Have a hanky ready because it's a crying shame how the American people got fucked over on this)

        All this was over 20 years ago. <<-------------

    5. Cynic_999

      "

      Wow, that's forward thinking of NASA. It's not like the guy got hit by a bus or something. They have had years (decades) to look for a replacement.

      But no, let's wait until he's retired then start looking.

      "

      If the code only needs updating every 5 years or so, you'd not want to hire someone to sit doing nothing until the next update.

  4. stucs201

    There is some hope for younger people learning assembly

    Someone managed to make it into a game:

    https://www.gog.com/game/human_resource_machine

    1. Mpeler
      Coat

      Re: There is some hope for younger people learning assembly

      Erm, cough, may the FORTH be with you...

  5. Valarian

    Where do I sign?

    Seriously.

    I'm 47, a hotshot 6502 and COBOL coder, and desperate to work on any space programme that'll have me. 64K? Luxury!

    1. J.G.Harston Silver badge

      Re: Where do I sign?

      I'm 46 and can program 6502, Z80 and 6809 in my sleep, and have recently been crowbaring some PDP-11 code into 2K of memory. I almost got that PDP-11 unclear power station gig a couple of years ago, but didn't have a passport.

      1. Anonymous Coward
        Anonymous Coward

        Srsly? Didn't have a passport?

        I think I've heard it all now.

        Passports are pretty easy to get. A work visa might be a little harder.

        1. Anonymous Coward
          Anonymous Coward

          Re: Srsly? Didn't have a passport?

          re: work visa.

          Why would you need a work visa? If you can't perform THIS job remotely, I don't think they'd be willing to hire you.

          1. Anonymous Coward
            Anonymous Coward

            Re: Srsly? Didn't have a passport?

            > If you can't perform THIS job remotely, I don't think they'd be willing to hire you.

            It's not a question of can you do it remotely. It's will they let you. It is the US Government, in the form of NASA/JPL and Caltech

            1. Anonymous Coward
              Anonymous Coward

              Re: Srsly? Didn't have a passport?

              > If you can't perform THIS job remotely, I don't think they'd be willing to hire you.

              It's not a question of can you do it remotely. It's will they let you. It is the US Government, in the form of NASA/JPL and Caltech

              Wow. Have you ever heard of humor?

          2. tomalak

            Re: Srsly? Didn't have a passport?

            Indeed. It's not as if you'll be commuting to the heliopause.

        2. J.G.Harston Silver badge

          Re: Srsly? Didn't have a passport?

          They needed me on site next Monday. I asked about remote working, but they needed somebody hands on on site. (I still had two weeks of the contract I was working on. I've had a quick skim through my email archive and can't find correspondance.)

      2. JeffyPoooh
        Pint

        Re: Where do I sign?

        "...didn't have a passport."

        Only takes a few days in urgent circumstances.

      3. Pet Peeve

        Re: Where do I sign?

        Was it maybe because you said "I want an unclear job"? Kidding.

        Back in the days that voyager launched, I could code in assembler for a bunch of processors, and I've even added a few over the years, but a one-off processor? They may as well just train someone - what is the chance of finding someone who has those skills already and isn't the same age as the guy doing it now?

        Now FORTRAN on the other hand - Fortran IV was a very simple language to learn - in fact I learned it in highschool over a weekend using the famous "Fortran Coloring Book", when the choice was doing that or not getting hangout access to the computer lab. The teacher hated that I was correcting HIS work by a couple weeks later, but he let me stay.

        What I don't understand is what a space probe is doing with a fortran runtime on board. You would think that it's all static binaries, at which point any language with a compiler that can target the processor would work fine - spend some time getting CLANG/LLVM or GCC working for that processor.

        I'm going to have to see if I can learn more about the environment, it seems really odd.

        1. Tromos

          Re: Where do I sign?

          I would imagine the space probe doesn't have a Fortran runtime on board, that particular requirement being for the command and control and received data processing back here. The assembler would be for the probe itself and I would think anyone suitable for the job would already have worked with several different assembly languages and would take adding another in their stride.

        2. DaveB

          Re: Where do I sign?

          From memory the PDP 11/10 and LSI 11 did not have floating point hardware, or multiply. The quick win was to use the Fortran runtime which emulated floating point or alternatively do all the maths with fixed point.

      4. This post has been deleted by its author

    2. Steve Evans

      Re: Where do I sign?

      YAY! I no longer have a partially redundant skill-set!

      6502/Z80 assembly... More recent experience with low power micro controllers with only a few K of eeprom and 1K of RAM.

      And they said I wouldn't go far!

      :-D

      1. Anonymous Coward
        Anonymous Coward

        Re: Where do I sign?

        I still have my 'ZAKS - Programming the Z80'. Just need to brush up a bit. Still remember reading through that on instructions clock cycles to get my Spectrum code to run faster (a WOW moment for me when I coded a version of Conway's game of life - first time ever did I see it work in real time as opposed to the graph paper versions).

      2. Anonymous Coward
        Anonymous Coward

        Re: Where do I sign?

        Good man :)

        I was told similar bollocks at skool. Not clever enough to be an engineer, why not go into the fire service? Nothing wrong with the fire service, but not what I wanted to do. Mr Grigg, you, Sir if you are still alive, are an arsehole.

        I cut my teeth on the 6510, spent many years writing code for the old 4-bit Hitachi H400 series of MCU's and PIC's. At 48 I'm working for a semiconductor manufacturer. Is it just me or does the whole semiconductor industry seem to be comprised of people in their 40's? Where is the new blood?

        1. Philip Lewis

          Re: Where do I sign?

          "Where is the new blood?"

          They are all busy becoming the masters of advanced button pushing and object obfuscation, skills which require precious little understanding or intellect - the results are available for all to see at your nearest "abortion of a website"

    3. Anonymous Coward
      Anonymous Coward

      Re: Where do I sign?

      COBOL, gah! that is a woman's langauage M'lord

      The CPU on these would be much closer to the DEC PdP 10/11 CPU's with high level functions and structure availible in assembler than the 6502 which was almost a forerunner for RISC. Why do you think Acorn made the ARM simply because there was because there was nothing comparable to the 6502 availible as everything else at the time was going the CISC route.

      1. itzman
        Go

        Re: Where do I sign?

        Why do you think Acorn made the ARM ?

        From someone who was there...

        "Because we couldn't afford the silicon for CISC and had to do it with as simple hardware as was possible at the price we could afford"

        And didn't he/she do well..

      2. Steve 114
        Happy

        Re: Where do I sign?

        Yes, we had a real woman on our COBOL team. And all the (rather lovely) younger women who punched our 80-column program cards if our fingers were exhausted. The '60s were better than anyone can possibly imagine.

        1. Frenchie Lad

          Re: Where do I sign?

          370 Assembler is what what you really need none of that later Motorola or Intel stuff.

        2. Anonymous Coward
          Anonymous Coward

          Re: Where do I sign?

          "The '60s were better than anyone can possibly imagine."

          If you can remember the 60's you wasn't there.

    4. Steve 114
      Thumb Up

      Re: Where do I sign?

      Why did I ever leave Fortran, Algol, (and Assembly) for COBOL? AhHa, for the money - I remember now.

    5. yoganmahew

      Re: Where do I sign?

      47 and 25 years of OS/360 assembler and derivatives. Plenty of us about too!

  6. Warm Braw

    ······WRITE (6,100)

    ······STOP

    ··100·FORMAT (9HHOW MUCH?)

    ······END

  7. Anonymous Coward
    Anonymous Coward

    Which fortran?

    Fortran-I, Fortran-II, Fortran-III, and Fortran-IV are different beasties.

    1. Warm Braw

      Re: Which fortran?

      The FORTRANs up to 66 are modest variations on a theme. FORTRAN III never saw the light of day. From FORTRAN 77 onwards the pace of change accelerated - Fortran 2015 is going to be largely unrecognisable to a programmer of the 1960s.

      There was, of course, a time when the question was not "Which?" but WATFOR?

      1. Mpeler
        Boffin

        Re: Which fortran?

        Not forgetting WATFIV...

        Ahhh. Those were the days, many years ago.

        (Waterloo FORTRAN IV)

    2. Yet Another Anonymous coward Silver badge

      Re: Which fortran?

      >Fortran-I, Fortran-II, Fortran-III, and Fortran-IV are different beasties.

      At least with Fortran77 you didn't have to use roman numerals for all the calculations

  8. Infernoz Bronze badge
    FAIL

    Replace technology drudgery by automated life-cycle convention.

    Why didn't NASA port to an OSS maintained, cross-compiler tool-chain decades ago, like say GCC, and have the toolchain automatically generate any extra machine code by life-cycle convention, like Maven does for Java artifacts? The test rig should only be need for final testing, all prior testing could be orders of magnitude faster in an emulator, so WTF have they been playing at?

    I wrote assembler for single digit MHz machines as a child, and the reason it was slow and hard was the more primitive software development technology, not just the technology limits of the hardware.

    Any employer who isn't proactive about, or doesn't allow, cost effective reduction of developer drudgery (e.g. via build automation, appropriate better hardware/software/process) deserves to loss all their developers and be rejected by potential recruits.

    Sorry, software developers were never factory worker 'cogs'. We are well past the Industrial Age, and have been transitioning from the Information Age to the Design Age for well over a decade now!

    1. JeffyPoooh
      Pint

      Re: Replace technology drudgery by automated life-cycle convention.

      I don't think that you understand the situation.

      1. Anonymous Coward
        Anonymous Coward

        Re: Replace technology drudgery by automated life-cycle convention.

        LOL - perfect reply.

    2. Richard 12 Silver badge

      Re: Replace technology drudgery by automated life-cycle convention.

      Compilers can never produce code as efficient as hand-optimised assembly.

      In most cases, this really doesn't matter in the slightest.

      But sometimes it does - albeit very rarely these days.

      Even in modern embedded hardware you can end up needing to hand-optimise (or even hand-write) assembly segments.

      1. Michael Wojcik Silver badge

        Re: Replace technology drudgery by automated life-cycle convention.

        Compilers can never produce code as efficient as hand-optimised assembly.

        A ridiculous claim. Of course they can in some circumstances, such as when a compiler produces code as efficient, by whatever metric you like, as possible, and thus as efficient as hand-optimized assembly.

        What's more, they can generally do it faster. They can do it fast enough that they can profile the execution of a wide range of alternatives and pick the best-performing one. They can run against CPUs with hardware tracing and see exactly what's going on with pipeline stalls and cache misses and coherency.

        Is there still sometimes an opportunity to improve performance by hand-tuning? Sure. But to claim that it always beats the compiler is foolishness.

    3. Pet Peeve

      Re: Replace technology drudgery by automated life-cycle convention.

      Not sure why the downvotes, Infernoz is totally right. We've got 16mhz processors with 2k of RAM running C binaries today (any arduino or bare Atmel embedded processor) generated by GCC - it seems they would be far better off getting a modern compiler environment set up to target the voyager's processor. It would probably be easier than training up someone to use the ancient toolchain they have. I assume they have equivalent processors on the ground so they can test, so I don't see the big deal doing that.

      1. Mike Pellatt

        Re: Replace technology drudgery by automated life-cycle convention.

        If you don't realise why he's been so royally downvoted, oh well.....

        I'm sure you'd just love the reputation of being the guy who lost 2 deep space probes that had gone the furthest of any manmade object and had been doing just fine for decades. Through your bright idea for how Things Could Be Done Better.

        Seems you couldn't be arsed to upvote him, either.

      2. This post has been deleted by its author

      3. Anonymous Coward
        Anonymous Coward

        Re: Replace technology drudgery by automated life-cycle convention.

        We've got 16mhz processors with 2k of RAM running C binaries today (any arduino or bare Atmel embedded processor) generated by GCC - it seems they would be far better off getting a modern compiler environment set up to target the voyager's processor. It would probably be easier than training up someone to use the ancient toolchain they have

        So.... you're volunteering to rewrite all the assembly in C?

        And, you're assuming that someone is willing to do the work to target that processor.....

    4. ecofeco Silver badge

      Re: Replace technology drudgery by automated life-cycle convention.

      I know a little bit about NASA and the answer is they most likely did and do, but they need someone to customize and debug.

      I upvoted you because those were some damn good questions.

  9. Primus Secundus Tertius

    Obsolete tech

    In the 90s I remember hearing an American project manager lament that the young chaps did not seem interested in learning JOVIAL.

    1. MD Rackham

      Re: Obsolete tech

      Heck, I programmed in the original IAL, before Jule's Own Version of IAL came around.

      I prominently feature that on my resume (along with ALGOL, SAIL, SNOBOL, and Bliss) yet I get no responses. Why is that?

      1. Anonymous Coward
        Anonymous Coward

        Re: Obsolete tech

        Bliss! Great language.

        AFAIK, unless you have Csharp or Java or other modern languages none of the Recruitment Agencies will have a clue as to what you are talking about. For example Algol and its derivatives.

        I have a PDP-11/83 and a MicroVax in my Garage. Fortran 4+ compiler as well as Bliss Cobol etc.

        Retro stuff and sadly no front panels but still proper computers. I love programming in Macro. Far more pleasurable that C or Java or .... just about anything in widespread use today.

        Pascal is another language I like to use.

        Is any of this use for finding a job? Nah. Not a chance.

        But the principles of writing 'tight' code you have to learn with these memory restricted systems can make the code you write today a lot faster.

        Currently I'm working with a number of awful XSLT's that are just ****. Even Coral-66 is better than that sort of shite.

        1. Anonymous Coward
          Anonymous Coward

          Re: Obsolete tech

          unless you have Csharp or Java or other modern languages none of the Recruitment Agencies will have a clue as to what you are talking about

          Oh, come on, very very few of the Recruitment Agencies have any clue about anything either their clients (aka victims) or jobseekers (aka victims) are talking about.

          I'd better be AC, as I may possibly have need of one in desperation

        2. This post has been deleted by its author

          1. HPCJohn

            Re: Obsolete tech

            1989s_coder - Genuinely interested in what you say. Care to amplify?

            I see lots of people my age who are doing contracting or consultancy.

            I know I am skilled, but I am unsure of how they go about getting a similar or largre income than a full time job. Forgive my naievity (splelling)

        3. John Styles

          Re: Obsolete tech

          I worked on a system where, bizarrely, my employer had been contracted to convert a system from CORAL-66 to FORTRAN-77. Never really understood why. Rumour had it that the CORAL-66 compiler for the PDP-11 was shite. Also there was a lot of PDP-11 assembler (using 2 completely different macro libraries) and some assembler for some obscure SIMD array processor.

          Small boys, 3 way gotos for goal posts, isn't it? Hmm?

        4. jsc42

          Re: Obsolete tech

          I used to like Coral66. The m/c that I was using at the time (an ICL1904S) had a limit of 2K for user programs and I managed to fit a lot of Coral66 into that space (although I did used PLAN macros in the Coral66 source to squeeze even more power). My first High Level Language was Fortran IV using WATFOR. I am sure that there are still thousands of programmers still working from 'my' generation.

          There used to be a saying that a good programmer could write in Fortran in any language.

          So, NASA, if you want us, just reply - we are ready and able.

  10. Me19713

    Old (OLD!) programmer here -- Burroughs ALGOL, DC-ALGOL and ESPOL, Fortran II (IBM 1620 and SDS 930), Fortran V (Univac 1108), IBM 1401 and S/360 assembler, ... Those were the days. Amazing what we could do in a few K of memory and cycle times less than 1 MHz.

    1. ecofeco Silver badge

      Damn! I forgotten Burroughs made computers!

      1. elDog

        Don't forget the BUNCH

        Burroughs, Unisys, NEC, CDC, Honeywell - anything but IBM.

        And then when Honeywell and Fairchild were bought out, "Fair Well, Sweet HoneyChild."

        Burroughs was, to my recollection, the first company to actually make a commercial computer that used virtual memory.

        God this is all so much fun. I hope it keeps on going until my dying day.

        1. a_yank_lurker

          Re: Don't forget the BUNCH

          Before that it was IBM (I've Been Moved) and the 7 dwarfs - BUNCH plus RCA and one other.

        2. circuitguy

          Re: Don't forget the BUNCH

          don't forget GE, Xerox,CDC,TI and Cray were players in the mainframes in the 70s There were a lot more smaller computer corps in the field too..

    2. Mpeler

      Cycle times < 1MHz

      More like cycle times of 1 Hz :)

      1. Mike Pellatt

        Re: Cycle times < 1MHz

        Clock rates <1MHz. 4 clocks per cycle if you were lucky :-)

  11. The Infamous Grouse
    Alien

    What's the FORTRAN code for "Learn all that is learnable and return that knowledge to the Creator"?

    1. Anonymous IV

      I wasn't aware that FORTRAN was used to 'code' trite sayings.

      At least it isn't in my copy of McCracken...

    2. ecofeco Silver badge
    3. Ian Bush
      Coat

      Simply

      END

      As in Fortran GOD is implicitly real

  12. Boris the Cockroach Silver badge
    Boffin

    No room at

    NASA for an old Z80 programmer?

    Used to enjoy doing interupt driven programs, gives you a nice feeling when you have 64 mSec to execute the interupt code and return from it before the next interupt occurs.

    (please note... bad things happen when it takes 65 mSec .. like calculating the number of clock cycles for each route through the code to see exactly which route and by how many you are too long)

    But I'm still a dab hand at robot programming of one variety or another, so I guess brushing up on Fortan to command another robot should'nt be too hard.

    1. hplasm
      Thumb Up

      Re: No room at

      If it's not a Z80, it's just a petrol-pump controller chip.

  13. Henry Wertz 1 Gold badge

    Re: Replace technology drudgery by automated life-cycle convention

    "Re: Replace technology drudgery by automated life-cycle convention. "

    Not sensible. There are two big objections (that would scuttle this technique even if reliabilty were not a concern, which it most definitely is.)

    1) Custom hardware. So, you get gcc to emit code for this CPU (and make sure it handles any corner cases properly). You still must support the various 1970s-era hardware on this probe. Does it use interrupts or polling? DMA? I/O ports? Some other mechanism? It's unlikely the existing code has seperation between the "OS", "drivers", and "application code", this is an embedded CPU running a dedicated task in a limited-RAM environment.

    2) They have an existing, working code base, and are not looking to make radical changes or rewrite from scratch or anything, they're not looking to port other stuff to run on this CPU either. So, to port this to C, you'd have to have people knowledgable with assembly and (I guess) Fortran anyway, to decipher what the existing code does and write up a description of this behavior. They would then write a C implementation of this behavior. Then, they would cross their fingers that GCC's build of this code would still fit in the same RAM that just managed to hold the hand-written-assembly implementation.

    So, is NASA *really* hiring or is this one of those "woe is me...." type articles? I'm in my early 30s, know assembly (x86, PDP-8, 6502) and Fortran (and have a "Fortran IV with WATFOR and WATFIV" book just sitting on the shelf), have no problem with working on older hardware, and have full respect for the Voyager I and II probes and what they have done. I did several reports through my educational years as Voyager II flew past Uranus and Neptune and even got to talk to Professor Gurnett (who was largely responsible for the Plasma Wave instrument on board the Voyagers).

    1. elDog

      Re: Replace technology drudgery by automated life-cycle convention

      I doubt they're really hiring. More of a slow week at Popular Mechanics (and elReg.)

      But it's fun thinking about being the hero that rode in to save the day! Y2K away!

  14. Anonymous Coward
    Anonymous Coward

    NO THANKS

    I live 40 miles from KSC and work at a large software company. The stories from ex-NASA tech folk that have escaped to either here or Lockheed-Martin down the road would cause all your hair to fall out.

    You think the bureaucracy & managerial incompetence at where ever you work is bad? Try a government agency that doesn't really have a mission any more, with funding to match, and is used as a major political football by Congress, and doesn't have any weight to defend itself, unlike the military.

    Then at the other end, you've got contractors that are like 100-year-old vampires sucking any money that's left, and knowing they don't have to produce because the project they're working on will be canceled by Congress next year. The order of the day is "Powerpoints and more Powerpoints"

    Yeah, that's a ball 'o fun.

    Don't forget this is the agency that's left data from old missions to rot on tapes until the equipment to read them is long gone, and people have to pull shit like the Lunar Orbiter Image Recovery Project (LOIRP) (http://www.moonviews.com/) as a semi-clandestine operation in an abandoned McDonald's, using crowdfunding to scrape together whatever remaining equipment and expertise they can to recover data before it's permanently gone.

    Oh, and this is also the bag 'o dicks that decided NASA TV didn't need to show the GPS launch this morning, because that couldn't possibly be of interest to it's constituent audience of space fans. Both of 'em.

    I'm sure this position has been open for a long time, and any one with the skills also has the sense enough to avoid a job for $35k/year in that sort of environment.

    1. Mpeler

      Re: NO THANKS

      Sounds like a whole bunch of PHBs and Wallys, with no Dilberts to bring them through. Sad.

  15. x 7

    When I was recently clearing out my parents house I actually found one of my schoolboy casual reading books "Fortran IV for Beginners" or some such title. Virtually mint - unread for the last 40 years

    Sorry, it went in the bin.......

    1. HPCJohn

      x7 I proudly still have a copy of "A Structured Approach to Fortran 77 Programming"

      I was first taught top-down programming with Pascal.

      1. Michael Wojcik Silver badge

        "A Structured Approach to Fortran 77 Programming"

        I think that's the text I have too. I'd check but it's down in the basement somewhere and I don't feel like spending half an hour grubbing it out. Haven't had to use Fortran in many a year.

        Not that I ever did a lot - mostly wrote test programs for the XGKS Fortran binding, and similar tests of inter-language calling.

        These days, if I wanted to do any number-crunching, I'd probably use R or Julia. Not that there isn't still a place for Fortran, of course - there's a vast body of extant special-purpose code, and still a pretty large skill pool. But a lot of scientific computing seems to be moving to R or other languages.

  16. martinusher Silver badge

    High level languages?

    Whenever my PC stutters and splutters or requires a bazillion gigabytes just to read my mail I curse modern programming. Oh yes, I understand it and all the techniques. Its just that programming has degenerated to a form of 'throwing mud at wall to see what sticks' process and a big part of the blame can be laid at the feet of misapplied object methodology. This technology got perverted to suit the needs of graphical interfaces and like all universal tools now everything's a nail to it.

    So I'm one of those older programmers (thankfully mostly retired). We didn't use a lot of assembly even in the 70s, it was more a 60s thing, and if we did have to use it we used macros to tidy it up a bit (resulting in that universal macro assembler aka 'the 'C' programming language'). There were higher level languages about but these were for applications, not for systems or real-time work. I tended to avoid Fortran, its a dog's breakfast of a language, preferring Algol based languages and certain types of non-procedural language for the things I had to do back then.

    Realistically not much has changed over the years except that the new hires where I've been working can't function without an IDE, can't work with scripting languages and haven't a clue how to work with things that don't come with complete support libraries. (Basically, all they're fit for is putting a few buttons and text boxes around a ready-made library)(and obviously they've never heard of Tk). (...and you should have seen the reaction when I used a bit of FORTH for something....everyone knows its impossible to make language interpreters that are smaller than a few tens of megabytes)

    So I'm a bit of a curmudgeon. So what. Just bear in mind that the reason why I'm "almost" retired is that I'm still somewhat irreplaceable. Its nice to be wanted even if it is a bit of a drag (my time is worth more than their money).

    1. Paul Crawford Silver badge

      Re: High level languages?

      Have an up-vote :) I wish I could give to 100 votes for the "universal macro assembler aka 'the 'C' programming language'" though!

      Also share some of your views on FORTRAN, great for scientific work due to its built-in support for maths and complex numbers, extensive libraries (NAG & IMSL, etc) but had some horrible attributes as well (implicit typing, joys of GOTO being used far too often, being able to enter a function at multiple places, etc)

      1. This post has been deleted by its author

        1. Mike Pellatt

          Re: High level languages?

          Is there any other way to write Perl code ?

    2. Philip Lewis
      Coat

      Re: High level languages?

      " (Basically, all they're fit for is putting a few buttons and text boxes around a ready-made library)"

      Never a truer word spoken IMHO, based on my 35 years in this industry and recent entry into the world of "retired but always interested in something that might be interesting"

      Mine is the one with the MACRO-11 manual in the pocket!

    3. Mark 85

      Re: High level languages?

      When I started programming as somewhat of a hobby, all you needed was an assembler and C complier (for the mundane stuff). PC games needed assembly for speed as a C-compiler just wouldn't do it. To much bloat built in.

      When Win98 hit, as far as employers... assembly was dead on the PC. Using contractors who only new Visual Basic and some other high levels, drove the coffin nails home.

      It's good to hear that there's still hand assembly going in on with the embedded stuff. Clean, fast code is from a bygone era it seems.

  17. This post has been deleted by its author

    1. Paul Crawford Silver badge

      I guess in a lot of cases they don't have much choice, they have a good enough job and that company often wants them to keep doing what they need done. No offers of new projects or training on things as they come along.

      I'm as guilty as any. I have not pushed myself to change job as life has been OK-enough here, and the steps in my relevant knowledge have come not by planned progression but by projects coming along and I end up doing them. Hence learning a new skill, like how to write "C code" in python...

    2. John Styles

      Oh, I wish I could use a year's worth of up-votes on this.

    3. Michael Weintraub

      COBOOOOL not COBAAAAL.

      M.

    4. Michael Wojcik Silver badge

      we have precious few programmers who really understand and who are confident in using technology from 30 or 40 years apart

      There are plenty around these parts, but then that's our business.

  18. Anonymous Coward
    Anonymous Coward

    '8051 Assembler

    We (not me specifically) just wrapped up a project that required rewriting some '8051 assembler that was poorly documented from the start. Crikey. Our resident genius got it done, very nicely.

    256 bytes of RAM should be enough for anyone.

  19. MarketingTechnoDude

    Reminds me of my first real programming task back in the early 80's. Fortran IV on a PDP-11 (LSI11-73) with lots and lots of Macro-11 assembler. My supervisor Norman introduced me into the discipline of programming the hardware of the machine as libraries of macro-11 assembler which had the ability at assembly time to check the args passed down to each segment of assembler code. So I could write with maximum code efficiency but also benefit from calling a sequence of these code segments in a way that looked like a high level language. These also had to deal with fun things such as overlays where memory regions were swapped in within the 64k address range. I didn't have to resort to using self modifying code techniques to save on memory usage though which wise old Norman had to resort to on earlier PDP-8 machines. I don't really see what is so difficult about this project of programming using Fortran IV and assembler. It was an absolute fun time back then, being in total control of the machine hardware, counting cycles, understanding what the CPU is doing, dealing with interrupts, dma's, overlays, in/out ports, passing arguments between Fortran IV and the macro-11 libraries of assembler code routines I wrote. Oh and writing all of the user interface in Fortran IV to run on a VT-11 VDU. Ended up writing every line of the code myself in a period of 6 months and it was all done as my year in industry on the third year of my degree course. 3 years prior to this period I had no clue whatsoever about how computers worked at all and I was more interested in petantonic blues scales on a guitar playing in a rock band! The gig at NASA sounds like a fun gig!

  20. HPCJohn

    Lucrative?

    OK - I have FORTRAN programming skills. I have been taught Motorola 68000 assembler while at Uni.

    I have done IBM JCL, and have used the MVS and VM/CMS operating systems.

    I have skills in a whole range of operating systems and languages gained over my career.

    So where are the companies shovelling money at me?

    I see these things all the time - there is a shortage of blah-de-blah skills and banks are shovelling money at people with those ancient skills. Well show me the money.

    Sorry, I'm just so cynical about all these "there is a shortage of IT skills" stories.

    Look at the modern counterpart of "coding" where "code schools" are tempting ordinary Joes into short courses in "coding apps". How many of them really end up in well-paid jobs?

  21. Anonymous Coward
    Anonymous Coward

    Where do I sign uo

    Great job for those of us who grew up with fortran! Where do I apply?

  22. ZeeX

    AUTOVON Programmers

    Hi, dear NASA, I used these languages as an AT&T Bell Telephone Laboratories Security cleared AUTOVON programmer during the late 1970s.

  23. Anonymous Coward
    Anonymous Coward

    The Guru of Assembly Language Programming

    According to Google, Lance A Leventhal is 69 years old and alive. He's the Guru, I'd have never passed my degree without his books on Assembly Language programming. NASA should go seek him out and he could train up any bright young team in case Voyager keeps going into the 2030s or beyond...

  24. Anonymous Coward
    Anonymous Coward

    According to tje CNN article quotec by Pop Mech: The job has already been filled for a year.

    Nobody caught this when writing the golly-gee-apply-now bit?

    http://money.cnn.com/2015/10/27/technology/voyager-nasa/

  25. Highroads
    Coat

    Sounds familiar...

    Isn't this just the plot for "Space Cowboys?"

    Mine is the XXL spacesuit.

  26. Blonde Wino

    Hah! I wrote with Fortran IV in 1976...for use on mini-computers like Perkin Elmer, Interdata while working in Colorado. Our storage disk was so large and highly fussy. You can imagine my delight with the floppy disk and PC of the 1980's. Ancient? I was a female, baby boomer who took time out from the sex, drugs and rock roll life of the 1970's to learn a new language in digitizing the earth. Those brain cells are now gone or written over.

    There are many linguists who can help my favorite space travelers...The Voyagers! They were the best thing to come out of the 1970's. The highly rated Gold record and the only way we 'bags or water' could leave the planet at that time.

    Some humans actually love the ancient languages -- nothing to 'snark' about.

  27. tjb

    tjb

    My native language. FORTRAN, my father worked at GE and got me access to their timeshare computer when I was 12. Used FORTRAN at UC Berkeley along with PDP-11 Assembler for my Computer Science degree. Don't want the job though, even though it sounds interesting. I am a full time Monash University student getting my RN degree. Finish when I am 67, no retirement, no money. Will get a full time job. If I put 55% of my gross income away each year can afford a house by the time I am 84. Yippee! At least there is longevity in the male line of my family. Should enjoy retiring at about age 98 for a quiet retirement, if my investments don't go sour.

    1. HPCJohn

      Re: tjb

      tjb

      my native language is FORTRAN also.

      I taugth myself to program at the age of 12. My father managed a PDP 11/45 in the lab where he worked. The lab wrote a medical diagnostics package on the PDP - in FORTRAN!

      The FORTRAN manuals I used were for an HP-85 desktop computer, borrowed from one of the professors.

      I guess I was a lucky wee boy to get to use such an advanced system at the time - and store my programs on disk and to run on an interactive system using a terminal.

      When I later went to Uni I learned Pascal by punching card decks and having them wheelbarrowe dup the hill to a batch processing ICL machine.

      The weans of today don't know they are born - waiting till the next day to fix a syntax error!

      And having the skills to repunch an already used card!

  28. Gruntled

    Why???

    Why does NASA need to write code for a space-craft that is unlikely to ever receive that code?

    Surely NASA doesn't need that code for earth-side data analysis, does it? That could probably be done in Excel. So who in NASAsent out that press release and were they really thinking?

    1. GrumpenKraut
      Facepalm

      Re: Why???

      > That could probably be done in Excel.

      Just go away. Thank you.

      1. Michael Wojcik Silver badge

        Re: Why???

        Anything worth doing in Excel is worth doing in something better.

        (Not that Excel has anything to do with this story, of course. Just making a general observation.)

  29. ScottDrysdale

    All of us Engineers now who graduated from UNB Fredericton, New Brunswick in the mid 70's took Fortran as well as Watfor then Watfiv..

    Many of us working in western Canada's Oil and Gas Industry are being forced to retire due to lack of O&G engineering related work so would be willing to help out.

  30. John Styles

    These 'oh there is no-one who understands this obsolete technology' stories always need to be taken with a huge pinch of salt in my experience when one does some Googling to find out a bit more. Still they liven up a dull, foggy Monday.

    I bet there is an awful lot of FORTRAN 77 still in use - probably FORTRAN 77 tweaked over the years to use the odd bits of later FORTRAN. Probably more of it than native modern Fortran.

    And, of course, as other people have said there are an awful lot of embedded processors with this sort of memory constraint floating around. I don't think we are yet at the stage yet where we need to conscript the people writing new games for Atari 2600s (128 bytes of RAM).

  31. ChrisCabbage

    What NASA will probably have to do is - find someone with good general computer science knowledge/experience and get them to learn the system, under guidance from the guys who are nearing retirement.

    Many of us who work on embedded systems are constantly having to learn new and even old technologies. It's a different piece of silicon every few months in my job. :)

  32. dbeberman

    Sounds like fun!

    Programming in Fortran, Assembly languages with and without Macros, small memory footprint where every bit counts, for Voyager... Sounds like fun to me:)

    Remember 4K memory? Yes 4K with cores? The 8051 HDK had 256 bytes of memory and a hex keyboard to program it. 64K was a luxury. What would you do with so much memory?

    Maybe Suzanne Dodd at NASA should consider crowd sourcing support for the old software. Make it open source and allow people to collaborate on any projects she needs to do. Wouldn't it be fun to be part of a NASA project in some small way?

  33. Anonymous Coward
    Anonymous Coward

    Why are they looking for a human? The Enterprise crew found a fairly nifty AI back in the day, who would surely do the work for a reasonable price if they could borrow an Indian contractor (pref female).

  34. Michael Weintraub

    Enough already about Cobol & Fortran

    Is a wheel bad because it is ancient?

    There is a lot of money to be made learning these amaizingly mature languages. And do not forget - it is not the language that makes a good program.

    Regards

    Michal Weintraub

  35. Anonymous Coward
    Anonymous Coward

    Can you idjits quiet down!!

    I'm trying to tweak the length of my mercury delay lines, and all this noise is making it difficult.

    Bloody kids.

    HEY! GET OFF MY LAWN!!

This topic is closed for new posts.

Other stories you might like