Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
What Is the Oldest Computer Program Still in Use? (technologyreview.com)
138 points by amalantony06 on Jan 29, 2017 | hide | past | favorite | 84 comments


I think the more interesting thing about these ancient programs is the question of why projects to modernise them fail over and over again. Of course we can already guess many of the answers without even reading any post-mortems, but obviously these organisations were able to execute complex IT projects once upon a time and over the years lost that ability, leaving them stranded with ancient systems.

In the case of MOCAS I'm going to assume it's all of the standard reasons: weak management, absence of competition, over-reliance on the same small pool of defence contractors that know how to navigate byzantine federal procurement rules, etc.


Because that usually involves understanding a complex, mission-critical legacy system with no documentation, no support and implemented using little to no methodology or best practices.


>I think the more interesting thing about these ancient programs is the question of why projects to modernise them fail over and over again.

A lot of it is because they fail the KISS principle.


Specifically, suffer from second system effect [0].

[0] https://en.m.wikipedia.org/wiki/Second-system_effect


While we were building a web frontend on top of an insurance system written in Cobol running on a mainframe, another team was trying to port that Cobol to Java. I often talked to those guys as we were in the same IT basement and indeed, they were to port it and 'and some things'. That project failed while ours is still running on that Cobol system.


Can't edit (yet?) but obvious typo 'and = 'add.


Exactly this. "Do it better" is contagious.


Yeah. They should just replicate 100% the old system first, and then, only after testing, and 1-2 years on, start adding any new features...


How do you justify to the person paying for it that you are are going to spend money to build essentially the same system? Often they don't really care if it is COBOL rather than something newer. The only way to justify is if the maintenance costs are higher than the redevelopment costs.


>How do you justify to the person paying for it that you are are going to spend money to build essentially the same system?

Obviously in that:

1) It will completely work with your existing clients etc, because it does exactly what the old one does, with no wild new features and untested stuff.

2) It will bring your old legacy app up to date with a modern language, being able to run in modern hardware, maintained by readily available programmers for hiring, etc.

3) It will allow you to start to add all kinds of features a couple of years down the line, as the remake proves a success, and any minor issues are ironed out.

4) It's much less of a risk of some total rewrite, with a new architecture, ambitious plans, and the idea that you can just migrate the data and switch over, since those "second systems" tend to fail, and over-shoot their costs.

>The only way to justify is if the maintenance costs are higher than the redevelopment costs.

You forgot the opportunity costs. Enabling them to be more agile, add new features, take advantage of modern pool of programmers, etc., is important, even if they have first to build an identically behaving version of their legacy app.


I think you just answered your own question (?) Tell them about the maintenance costs, the difficulty of adding new features or the foreseeable impossibility of finding programmers who know COBOL.


Because of its longevity, replacing the program will essentially mean replicating all the logic so that its input and output is perfectly duplicated - including any bugs or quirks it has. Any differences, I'm sure, will end up causing a domino effect of failures and inaccuracies in all the other antiquated systems this program talks to. So then the question becomes, "why bother?" and 58 years later it still chugs along. I know of code I personally wrote over a decade ago still being used in production happily every day, so I'm sure this is bound to be a much more common experience in the years to come.


It was written by Grace Hopper, there are no bugs ;)


They wouldn't dare.


The first thing I did was scan the article for her name. She was such an amazing person in so many ways that I'm in awe.


For me, I still occasionally get a server monitoring email from a cron job running a Perl program that first mailed me in April '97. I've got no idea who's keeping that running... The "startup" I wrote that for (and later went to work for) has been dead a decade now.

(Scary though: this might mean _someone_ is still running a Redhat 5 or 6 linux machine or VM - that's a late'90's vintage Redhat, not Redhat Enterprise Linux. It's _possible_ I updated that Perl script when we moved to CentOS in the early 2000's, but surely if anyne's been updating it since then - they'd surely have taken my personal email address out of it???)


Slightly off-topic, but meta user interface relevant:

IMHO Google has been so successful because of their user interface and not because of its superior algorithm. In essence it is a REPL where the E part is slightly non-trivial.

But I agree it is the best user interface. Files and processes are a great thing, but the shell built on-top of it glues everything together and for me is the most successful interface. However it would be nice to switch interpreters online, i.e. switch between e.g. Bash or Python and "human language" (like Google Search). Interestingly DuckDuckGo provides something similar via its '!' syntax.


I think at least at first, Google's success was definitely because of the algorithm. Existing search engines were terrible. They primarily relied on text analysis and human edited web directories. You could search for something as basic as "pet food" and get a few relevant results and then a bunch of random garbage. When Google came out using PageRank, it was a whole new world. Every tech savvy person I know switched right away, and not because of the interface.

But no doubt the simple and elegant interface helped too, and has helped them stay ahead as the other search engines have caught up with their algorithm.


I agree. That PageRank was patented is only reason Google is what they are today. They would've been copycatted to much lower revenues or market share.


That's completely untrue.

There were numerous well-understood PageRank alternatives available at the time (eg HITS was published in 1999[1]).

Google did lots of things right (good algorithm, good scaling, good UI, text-based advertising, spam handling, no portal etc), and to say it was "only PageRank" is just wrong.

[1] https://en.wikipedia.org/wiki/HITS_algorithm


Never heard of HITS for some reason. Thanks for the tip. A quick Google for comparisons between two give this:

http://www.slideshare.net/shatakirti/pagerank-and-hits

http://www.ijarcce.com/upload/2014/february/IJARCEE9J_a_pooj...

The first indicated PageRank has less disadvantages like spam. The second sums up the result here:

"page rank is more popular algorithm... due to the features like efficiency, feasibility, less query time cost, less susceptibility to localized links, etc which are absent in the HITS algorithm"

If that's true, then my claim would stand as HITS wouldn't have been good enough without a lot of modification. Google also got me better results than Ask that used HITS. If such claims are wrong, then you might be right. It would take more than a quick search to know.


That, and the recognition that search was a powerful conduit for ad revenue is the reason that Google is what they are today.

Jerry Yang and Yahoo did not appreciate this and missed their oppurtunity to acquire Google early on. That said, Yahoo would have fumbled it even if they had pulled the trigger.


>IMHO Google has been so successful because of their user interface and not because of its superior algorithm. In essence it is a REPL where the E part is slightly non-trivial.

Nope, it was the superior algorithm. Other search engine at the time had similarly simple interfaces, but we all moved to Google (back in 2000 or so) because of the superior results.


Slightly non-trivial? :)



I read a book by Vernor Vinge where the main character did some software archeology as part of his hobby and technological interests. He discovered that the program used to keep time was viciously ancient, and after looking into "epoch" figured that the old-calendar year "1970" must have been decided upon because "that was when humanity first landed on the moon".


> It’s widely accepted that the first computer program was written by Ada King, Countess of Lovelace, in 1842

Hmm. Hasn't this been widely disputed and disproven? I wonder why it keeps being circulated, and with such a bold tone.



My first real job out of college, classic DoD contractor gig, I walked in and was shown the spiffy VAX I was going to be using. I didn't know which was older, the computer or me. There's one sitting in the Computer History MUseum in Mountain View. Wirewrap, 4mb of RAM maximum and each 1mb was a square foot of circuit-board you'd have to slide in and lock into place with thumb-tabs. I felt my own obsolescent like an angry itch every day I showed up for work and turned it on.

The way I understand it, the Navy got tired of supporting that. "If you want more of our money, you'll upgrade this crap." So they did, and now it's one server rack with, wouldn't you know, such modern things like USB ports and 21st century OSs and ethernet capability. But that's crazy talk.


Here's a great article with many more examples:

http://www.pcworld.com/article/249951/computers/if-it-aint-b...

My favorite is the 90 yr old Texas company that uses an IBM 402 from 1948. The computer uses plugboards - breadboard-like cards that are programmed by plugging wires like a patch panel. As of the date of the article (2012) they still used the plugboards, as well as a more modern card reader/puncher.

Edit: I just realized my example is also mentioned in the OP article, though there is more detail (and photos) in the PCWorld article I linked.


Ironically (I think? Or is it Fittingly?), they're probably using MOCAS to try and find a replacement for MOCAS.


Notedly it runs on a very small configuration of an IBM mainframe (z10 BC - 8 GB of RAM), costing less than 100k USD.


Not practical/legal due to IBM licensing, but the open source hercules emulator is stable enough to even run current z/OS on a linux box: http://pastebin.com/umhdBsPu



Is an organ really in the 'computer' class of machine? It doesn't "carry out an arbitrary set of arithmetic or logical operations," to quote the Wikipedia definition.

A barrel organ could be said to follow a 'program', if we're loose enough to mean 'a set of machine-readable instructions that cause a process to take place' but it is in no sense calculating a result based on logical operations.


"You can still find antique green-screen systems if you look hard—in some cases, a pleasant Web interface just disguises the old guts." - There is so much wrong with this sentiment! It's just kind of folded in there, the insinuation that "web interfaces are more pleasant" than TUIs. I cannot express how much this kind of writting annoys me. Why can't they tell the story without wedging in unbacked opinions. The sentence "You can still find antique green-screen systems if you look hard—in some cases, a Web interface just disguises the old guts." would work just as well.


I think you can hold your fire. Don't you think it is true that in some cases a pleasant web interface disguises the old guts of a legacy system? I see absolutely no insinuation that all web interfaces are more pleasant than TUIs.


TUIs are great for experienced users, but are terrible for inexperienced users.

A good example of where a simple GUI is useful is POS systems. Sure, you could use a TUI, but you'd have to train every 16 year old kid who works for you for 2 weeks over summer, which is going to cost you.

On the other hand, I've noticed that airlines still use a terminal emulator for their booking and check in system. They're amazingly fast at using it, most of the commands are 1 or 2 letters. But you're dealing with a smaller group of trained and skilled employees, with a much lower turnover and a much higher overall training requirement.

There's probably also legacy reasons why airlines use a TUI, but it seems that the staff never have any issues using it, I've never seen them having to consult a manual.


I developed POS systems for a friend who starts and runs places (restaurant-bars) that are the most successful in the region; always packed, making him pure gold. He insists on never hiring '16 year old kids during the summer' but rather have his decades long trained staff move from old to new place to properly train the new staff there. The system we made for him was absolutely optimized for hitting the screen as little and as fast as possible per order. This made it unusable for beginners however he argues he made a lot more money because of it: no queues at ordering so no risk of people walking away bored (this is very common with people who are not usual bar goers), less error prone etc.

If everything is ran like a gig economy then simple and wizard like interfaces are a must but for long running companies with long term staff it probably will show less efficient over time although no one will probably measure that in most companies.

A lot of projects we did were web interfaces on top of DOS or terminal projects; usually the companies did not want to replace the legacy because their seasoned employees who basically made all the money for them were very used to the old system. But now short term hires could do some specific tasks as well via the web interface.


> He insists on never hiring '16 year old kids during the summer'

Unfortunately, as a company developing POS systems, you can't just tell your customers that.

You're right on the minimal taps thing though. It shouldn't take more than 3 taps to send a basic order through (e.g. a beer).


If you put a number next to the on screen menu, and a small keypad below the screen, they can use the screen in the beginning and naturally start using the keypad to speed up orders over time. They'll teach themselves because in crunch time they'll want to become faster so they can get more orders to make more tips, etc


Expert mode. Most applications would do well with that.


Well, in this case, he ordered a custom made POS for all his bars/restaurants. So it was a specific case.


So the solution is for everyone to hire decades-trained staff?


No, I did not say that. I said that there are plenty of cases in which those less intuitive interfaces + a bit of training pays off. I even added an example where we built intuitive web interfaces on top of DOS/terminal programs to make them more accessible for 'new people'. Nothing wrong with it, just wanted to provide a case (mentioned by the parent) where a company makes significant profits because of a faster workflow with a hard to use (for beginners) interface.

My local (tiny) bank went from TUI->GUI->TUI because the, again decade long employees who train their colleagues and follow ups, found it awfully inefficient with all the wizards and forms spread out over multiple pages and design elements where more option buttons could have been. It's not a contest either; for most cases a carefully crafted GUI works better; in some cases, a TUI or very dense (considered ugly) GUI works better. I miss the Expert Mode button in web applications.


Hiring decades-trained staff is often a good idea.


> TUIs are great for experienced users, but are terrible for inexperienced users.

Usability research proved this to be false again and again but unfortunately text is not showy enough.


TUIs suffer from a lack of discoverability, I have to type in "help" or look up the man page to actually figure out how to do anything.

Put me in front of an airline booking system, and I'm going to be completely lost. Put me in front of a computer opened to an airlines website, and I can probably figure out how to order myself some tickets.


> TUIs suffer from a lack of discoverability

Not always true. "Type customer reservation number" is very discoverable. A car dashboard has little text but there is no way to guess the meaning of some engine failure LEDs if you have never seen a car before.

It's about usability design. The airline website has been carefully designed to guide inexperienced users.

In the same way TUI can have guided "conversations" that are often easier for complete beginners, and become less verbose over time, as needed.


TUIs require training. After training they are often very fast to use.


They are probably talking about what TUIs get with replaced with in practice, rather than an optimum replacement GUI.


I'd love to see this research. I've wondered about it myself


Back in my cashier days all the registers had 2x40 char LCD screens and that was it. Training was all of two days, and most of that was loss prevention and how to bag properly.


> TUIs are great for experienced users, but are terrible for inexperienced users.

For most users in a professional setting, they will spend far more time as an experienced user than they will as an inexperienced user. Why optimize to the first 6 months or so of a persons job, when they might work there for years, or even decades?


Because some jobs have an average turnover <6 months, so it makes sense to optimise those first months.

Apart from low skill jobs, there's also seasonal work. For example fruit picking and packing. There's only 1 or 2 months a year that they're operational, so it makes sense to optimise those systems for inexperienced users.

Sure, there will be some who work every year for decades, but there will also be a lot of seasonal workers who only ever work one or two seasons.


I'd disagree strongly. The dynamics of a web application are different than a terminal app.

You're average web-skinned 3270 app is generally a direct translation of whatever the app did done by a gang of contractors without any design consideration.

The problem with that is that for all of the most trivial of apps, the use cases were envisioned 30 years ago. That's usually a problem. For example, one app that I looked at that still had old documentation available. Their design was based around 90% of transactions were initiated by a clerk opening paper mail. The obtuse layout of screens was there because they processed mail to dispatch it to appropriate teams of clerks, and it was customized to each function. Today 90% of transactions are initiated by phone or webchat, and are expected to be resolved in one call.

Bad web implementations are common. But it's almost always bad to ape things that aren't understood, which is the case 80% of the time for webified temrinal apps.


> You're average web-skinned 3270 app

Am I?

(Sorry I couldn't resist)


Life would be simpler!


>There is so much wrong with this sentiment! It's just kind of folded in there, the insinuation that "web interfaces are more pleasant" than TUIs. I cannot express how much this kind of writting annoys me. Why can't they tell the story without wedging in unbacked opinions.

Not everything needs to backed. It's obvious that most people, at least most lay people, find web UIs better and more friendly than terminal style interfaces...

Pleasant is not something objective to be measured comparing TUIs and web UIS -- it's in how people see them, and it's clear that what the article says it true for most people.


Until 2014 (at the earliest, may have extended into 2015), the built-in ticketing kiosks at AT&T Park (San Francisco) ran on Windows NT PCs, with a 1999 copyright date on the boot screen (when it crashed).


I think that you might be very nearly alone in your sentiment that green screens offer as good a user interface as more recent technologies.


I've seen it many times, particularly in finance which still has plenty of VT100 applications.

The reason is that once you know the codes, you can navigate and enter data at a genuinely incredible rate. If you've ever watched an experienced operator on one of these applications you'd be amazed. For one loan processing application, the terminal was an order of magnitude faster than the Web-based interface that was being deployed.

The key here though, is "experienced". This is someone who has developed the knowledge and muscle-memory to operate at that speed. This also makes the system more brittle (and often harder to change). Critically, it also means it takes a lot of training and time for people to be productive.

The reason many big organizations dropped the terminals - they wanted to be able to train people quicker, not because it was more productive.


I call this "the Dwarf Fortress UI paradigm."

Yes, it's very fast to someone experienced with it.

Yes, the learning curve is incredible.

No, it will never change because the stakeholder (ie. the developer) is happy with it.


>The key here though, is "experienced".

The other key is that those people and those "POS" style apps do very little things -- mostly a single task like e.g. bank accounts management.


The example I put in there was loan applications, which are quite complex. Loan origination (especially Business Loans) is perhaps the most complex business process I've ever encountered.


Text terminal can provide superior user interface. They can be faster and very logical. When you use them several hours per day and master the system they surpass most modern UI's. Minimal distraction, fast access and less errors.

Good modern UI design uses common metaphors that make it easier to learn new systems that are used with mouse if you are familiar with metaphors. They are designed for the beginner. There is nothing that prevents modern UI designer from learning the lessons from old terminals and carefully crafting the application so that experienced users can use different screen layout with fast keyboard navigation. It's just very rare.


The worst thing about our modern GUIs, IMO, is that they've basically brought UI evolution to a screeching halt.

I don't think we've even begun to develop optimal user interfaces, and we won't as long as the "common metaphor" idea holds sway.

Think what it would be like if we applied that idea to the real world, so (e.g.) hammers, can openers, toilets, and bulldozers all had to operate using a common set of widgets. It's hard to envision, but I would bet a very large sum of money that the result wouldn't be optimal for any of those jobs.

That's what we've done with computer UIs.

Unfortunately, I don't see any real way out of the trap.


>Think what it would be like if we applied that idea to the real world, so (e.g.) hammers, can openers, toilets, and bulldozers all had to operate using a common set of widgets.

Only apps don't do that. Paint apps use brushes and canvases, spreadsheet apps use cell grids, music apps use notation views and piano rolls, writing apps use document screens, games use whatever invented controls and worlds, etc.

What is common is that a lot of stuff we do involves mere text and symbol manipulation (buying tickets, reading news, checking sports scores, entering customer data, etc). For those we use the same widgets, yes.

But in the real world we do build all kinds of stuff, from cars to boats, and from skyscrapers to bulldozers, to pinballs with nuts, bolts, screws, wires, glass panels, etc., too. A hammer is as useful for hanging a frame as it is for building a house.


"Paint apps use brushes and canvases"

No, they use skeuomorphic simulations of those things.

(edit, to expand a bit)

We have the capability to put anything on the screen that we can imagine, but we're not doing that. We're limiting ourselves to bad simulations of real-world tools. The "brushes" are just more of the same thinking that gave us "desktops", "file folders" and "trash cans". As others have noted, those things do make it easier for newbies to learn the system, and yeah, that's a point in its favor. It's just disappointing to me that we haven't come further than we have with respect to truly innovative interfaces.

You even see it in VR! You get the same menus, buttons, and whatnot, but, hey, now the components are rendered as high-resolution stereo images. Yay! I guess?


>No, they use skeuomorphic simulations of those things.

No, they don't. You don't paint moving some virtual drawn brush gizmo, taking to some "virtual water box" to wash it out, etc.

You paint moving a cursor (whether it has a brush icon is irrelevant and not skeuomorphic in the UI sense), and you control properties of the underlying line (color, spread, width etc) with some of them going far beyond what a real world brush can do.

>We have the capability to put anything on the screen that we can imagine, but we're not doing that.

That's because it's not convenient. Except if you have some cool new idea we haven't tried.


What are you proposing as an alternative to a button? Gestures? Voice commands?


Unfortunately, I don't see any real way out of the trap.

Some new device or application will introduce a new metaphor or technology that eventually trickles into existing software. Unfortunately, last time this happened that new tech was touchscreens, and I fear voice is next. These are both regressions in efficiency for lots of tasks.


Nah. Green screens were great. Stuff today is crap.

How does a user interface? For a web site, primarily with a mouse. So, single touch input. For green screen they have an array of dedicated individual simultaneous input devices (known as "keys"). In addition, green screen often provides near-immediate response, whereas touchscreens can suffer from lag either in the physical interface or the unfortunate multiprocess operating system. Finally, green screen was designed to step quickly through the interface, where web requires lots of hunting around for what you want to do.

You simply can't interface better with an application than a single process dedicated application using fixed multiple inputs with immediate response. It's like web pages are a cart and horse and green screen is a race car.


The first job I took right out of college (I was kinda out of money and needed a job immediately) was at a polling company. You know, the obnoxious kids who call and say, "If an election were held tomorrow..."

Anyway, the place still used green screen terminals in 2006 (Mmm, with mechanical keyboards attached). In most cases, the only input required was a single number for each response, so once I'd memorized a script and the responses, I could get through a survey without looking at either the screen or the terminal.

Eventually the company shut down, and needing another job right away, I went to another polling company, who used a web interface for some reason. So there I had to use a vintage mouse (...which obviously did not bring the same joy as a vintage keyboard) to click radio buttons and check boxes and was, frankly, just a painful experience all around.

So, yeah, I agree, there are a surprising number of instances where an old terminal UI is significantly better.


From talking to the sales & service agents at ${COMPANY} after prototyping some 'New Generation' systems we determined that Web-based UIs had two advantages:

1. Multi-column layout with independent updates. Useful for presenting prompts and help information beside the main transaction window.

2. AJAX-style dynamic updates on data-selection.

Other than that there were few advantages to Web UI. In fact we had to spend some time developing Javascript functionality such as tab-order and F-key capture that are elementary, 'free' features with green-screen and which greatly improve transaction speed.

Any 5250 terminal emulator from the 1990s onwards offered copy-and-paste and multi-session capabilities so a Web UI didn't offer advantage there.


On what TUI systems is a multi-column layout not possible? On what TUI systems are dynamic updates not possible? In my experience, teletype or ssh is much better in this regard, as the systems use socket connections which support push, which allows updates to propogate faster and more efficiently than using http (I know, http2 improves this system, as well as websockets, but those are recent arivals and only serve to play catch-up).


I think that depends on what you mean by "good". Being able to complete transactions without taking your fingers off the keyboard is almost always faster.

So, if it's an application where the end user spends a lot of time, a green screen can be more efficient. Things like a call center, or the check-in counter at an airport, etc.

It does depend on a good text and boxes ui though. Green screens had things like pulldowns, copy/paste, etc.


And even if it weren't faster, it's more comfortable. As someone who spends the vast majority of his waking hours behind a screen, I can tell the difference between two days that involved a lot of mousing around and two days typing (I usually get to type most, but there are projects where I can't). I can only imagine what it must feel like if you have to use a web interface to move between pages all the time.


>Being able to complete transactions without taking your fingers off the keyboard is almost always faster.

Until you get carpal tunnel syndrome.


Is switching back and forth from a keyboard to a mouse less likely to cause carpal tunnel?


Me and three upvotes in however many minutes. Plus all the old ladies at the supermarket who can enter a product code into the terminal without even looking at the screen, because the rules for what element is focused are so simple.


I agree that terminals are more "productive". One of the reasons that the mouse based interfaces gained such traction is that the sales people pitched it as "you can teach someone to use this interface in X amount of time" where X is orders of magnitude less than using a terminal interface. Like saying that Nodepad is quicker to learn than Emacs or Vim. This is true at face value, the trade off is that you pay for it later on as people become productive with it. Alas, cutting down "training time" and the costs involved with this for new employees is something bean counters can measure.


As "more recent technologies", probably not. (At least as good) as the non-native, slowly-responding, glitchy web UIs that are so hip lately, most likely yes, especially when it comes to tasks like data entry and the like.


Give me a good responsive web app, mobile Android/iOS app, Win32 app or TUI app over ugly not so responsive XAML Win10 apps or SAP screens.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: