But Why Python
?"> "There are components written in Java, LISP, C++ and Python. For each component area, we got a functional spec from the customer saying it has to do X, and we had to figure out who the right people were to work on that project, and those people decide what implementation language to use," he said. There are two critical components that are written in Python, without which the system couldnt exist, Kelley said. The first is the inventory controller, which keeps track of what seats are available on what planes.The other core component is written in Python and is all "messaging well do with travel agents and other reservation systems. That messaging daemon is written in Python," Kelley said. In addition, a significant percentage of Air Canadas ticket volume was done through travel agents last year, he said. In the new system, every one of those transactions will go through a Python message route. But why Python? "Historically, its not known for being something that somebody would go out and code enterprise software in," Kelley said. However, "its definitely an enterprise-caliber language in terms of stability, scalability [and] the ability to have a large number of people work together on a project. "But its just coming into its own where you could defend it to nontechnical people as a language on which you could develop enterprise software. One of the things we have going for us is, because were founded by computer scientists, we dont have to defend our use of that programming language because its not Java," Kelley said. "We have a wonderful ability here to choose the right tool for the job. We have components that are written in Java, in C++, in Python, and Ruby and Perl. [Python is] definitely viewed internally here by some of the best computer scientists in the world, people from MITs AI [artificial intelligence] and CS [computer science] labs, as enterprise worthy," he said. Indeed, ITA has to defend its ability to meet its SLA (service-level agreements) against the Python-based technology. "So we think, absolutely, that its ready for prime time," Kelley said. "What were doing is saying to a billion-dollar business, Yes, we can write components in this particular programming language, and they will keep your airline running." Adrian Holovaty, a developer at Washingtonpost.com and the creator of Django, a Python Web development framework, bristles at the criticism of Python as possibly not being ready for the enterprise. "The word enterprise in this context is mostly meaningless to me," said Holovaty in Chicago. "Its really just a marketing word that has no basis in logic." Holovaty pointed to Google and YouTube, saying that it "doesnt get much higher traffic than that. Personally, I have direct experience using Python as my primary development language daily at my day job at Washingtonpost.com. Its a fantastic language that I couldnt live without," he said. Moreover, when ITA hires new people, the company likes to hire those with Python experience "because weve had a lot of luck with Python people having a lot of core problem-solving and system-building ability," Kelley said. He said it is pretty easy to find Java or C programmers who are good at line coding but not generally good at problem solving. "Its much more unusual for us to find people who can analyze a problem domain and then implement a solution where they cross a bunch of problem domains," Kelley said. Python developers typically can, he said. Meanwhile, getting off the mainframe will afford Air Canada all kinds of productivity and cost benefits, including lower cost of maintenance, better ability to integrate with modern architectures, and the ability to add components and enhancements more easily than with the mainframe, Kelley said. Check out eWEEK.coms for the latest news, reviews and analysis in programming environments and developer tools.
However, "we think of the most core [component] as the piece that takes reservation requests and records them in a database," Kelley said. "Thats written in LISP. But the next most critical thing is the thing thats maintaining inventory levels on airplanes, and thats written in Python."