Orbitz Flight DetailsOrbice Flight Details
Then you must call the Orbitz number. But the devil is in the details.
ELIZABETH: Carl de Marcken: Within Orbitz
Your computer is located in bombproof, fireproof (literally) Kansas City, Denver, Germany and Atlanta and, for the most part, runs in assembler languages for system performances. By now ITA is gradually substituting the hard- and softwares of the branch with Common Lisp codes, which runs on Linux PC's and uses relatively complex algorithmic tools, which show our CS-backgrounds.
You can find the simplest place to see the barcode in use at www.itasoftware.com. Most of our "thinking" codes are in Common Lisp. Running both Linux/Intel, HPUX/PA and NT/Intel on both sides, we have about 200,000 Lisp in our basic lookup machine. Most of our website generating source cipher is also in Common Lisp, although there is also some Java there.
Since we have about 2 gigabytes of statistical information that we need to quickly retrieve, we use C++ to store large C structure pointer-less file sizes (of airfares, tariffs, etc.), and then retrieve them from Common Lisp via external file retrieval. Structuring a prefix is compiled in two or three statements, so there is actually no system perfomance. Punishment for using C instead of Lisps.
This prevents the Lisp-Garbage Collector from seeing the files (for Lisp, each cursor on a single Lisp instance is only a fixed number, although we often wrapping these pointsers into Lisp entities to make them more debuggable). Therefore our Lisp pictures are only about 250 MB "working" datastructures and codec.
Each request that comes to our site is sent via TCPPIP to a Lisp processor that runs on a 800mhz binary Linux 800x86 case with 2g memory ($3000, vs. about $1,000,000 for a similarly able mainframe), and the processor dedicates between 5 and 15 seconds of processing to it. Someone of our clients will have 200 such speakers with 2 or 3 Lisp-Proceses each.
When you want to make a one-way roundtrip from BOS to LAX in two week, come back in three week, are willing to maintain a 24-hour departures schedule for both parties and then want to limit yourself to "reasonable" itineraries ( "maximum 3 planes and maximum 10 hrs or so"), you have about 5,000 ways to get there and 5,000 ways to get back.
There is a true difficulty in that a one-way flight (a one-way flight from BOS to LAX and a one-way return flight) with only two departures in each flight can have more than 10,000 possible tariff combination options, each with its own specific constraints, which must be verified against the flight and the other tariffs.
Correspondingly formalised, it is not even clear that the issue of choosing the lowest cost flight is NP-complete, as it is hard to limit the amount of space available for the lowest cost flight. The Lisp source tree works with very sophisticated algorithm that allows us to generate in a timely manner a pattern called "pricing-graph", from which we can respond very effectively to a request in the format "give me the k-th best resolution (a validated set o fares), ordered by the f function", with certain limitations naturally assumed for f, the number of responses displayed by the pricing-graph being 10^20 - 10^30 according to the itinerary.
You can do 10 seconds lisp calculation on an 800mhz speaker and less than 5k of me. That' because we preassign all the information we need and we' re dead on requests that overrun them. That may scare many Lisp coders, but with a 250 mega picture and real-time limitations, we can't do it.
Many of our Lisp are conceived in such a way that they can be assembled to a very effective installation. While we make much use of Lisp's Macros abilities, we avoid many other Lisps, such as closes, generics, complex sequencing functionality and the GarbageCollector. Disassembling most of the Lisp functionality in search of inefficiency, we have improved both OMUCL and Franz to better build our work.
Sometimes we had to move source codes from Lisp to C++, usually because of problems downloading files (Lisp Garbageollectors just can't handle shows of files, and there is no way to quickly upload shows of files into a Lisp). We had a 10 to 1 extension of the codes; I don't think there are any developers in our organization who are sorry about the selection of Common Lisp.
We had very little difficulty getting non-Lisp coders to actually write, interpret and enhance our Lisp-script. But the only true issue is that most people in Lisp have learned to program very efficiently without taking care of the programmer. Naturally, with things like STL and Java, I think that even other language developers become quite unaware.
Paul, I have no problem going to a page, but please keep in mind that this news is old and the environment is always changing: we now have tens of thousand of CPUs executing our codes and various carriers and large websites (e.g. Orbitz) that depend on it.