View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Spring 2004 Final Exam Review: Language Choices

For each of the applications below, you are to pick the language of your choice for implementing the application (e.g., Smalltalk in general, Squeak in specific, Java, C, C++, Ada, Visual Basic, Fortran, Lisp, Assembler, etc.) and provide your rationale! We don't have a right answer in mind for each of these, but we are looking for true, reasonable statements in your rationale. (E.g., ``I'm going to pick C++ because it is the least likely to crash" would be a bad answer.)

A. You're building a claims-entry system for a large insurance firm. You have to run on whatever platform the insurance agent may purchase. New claims forms are defined by the company fairly frequently-usually several a month. You want people to be able to fill out the forms via the internet. The system must be able to grow to handle millions of users and it must be secure.

B. You're building a new video game based on the movie "Finding Nemo" to run only on Windows boxes with hardware acceleration. You're going to be distributing the code on CD. You'll have a small, hand-picked group of developers who are expert in your language of choice. There is intense pressure to have the game out by summer's end, so you only have a month or two to implement the complete game.

C. You are writing the software to control a nuclear power plant. THE SYSTEM MUST NOT CRASH! The software doesn't have to be developed very quickly and it does have to be well tested.

D. You're writing the operating system for a new computer.

E. You are writing a fairly simple application for a small company that mostly needs some simple processing and a nice GUI. They have a self-taught programmer who will be maintaining it.

F. You are developing a system for children to teach them about science by having an environment that they can write small programs in without having to do lots of typing. The kids should be able to make simulations of things like objects falling due to gravity.

A. Java is a good language for this situation. J2EE is well supported, well documented, and generally secure. Java is VM based, so it is highly portable and already runs on most major platforms.

B. C++ would a be a good language because many libraries for such things already exist. You're very unlikely to find something you can't do in C++. Because of the tight schedule, this is important because you can't switch platforms if the choice suddenly seems bad. C++ also provides many O-O facilities to aid design, which will hopefully mean that the product will turn out better than it might have using the many C only APIs that exist for 3d gaming.

C. I wouldn't write this software, because it's already written. License from that guy in Japan whose operating system has never crashed because the microkernel design is so good. If I had to, I would write it from scratch in C to control every step of the engineering process. VM languages were written by somebody else, so I can't verify that they won't ever crash, but I can use good engineering practices to certify my C to the best of my ability. If I wasn't guaranteed the experts in the field like in B, then I wouldn't do this at all.

D. C is the language of choice because it's as close to the hardware as you can get without writing assembly. Kernels need this closeness to provide the capabilities they are required to provide.

E. Visual Basic would be able to handle this task. The GUI would be familiar, and easily tweakable to the customer's needs. Self-taught programmers would have absolutely no trouble picking up VB to maintain the software for themselves. Also, if they change platforms, they'll have to call you back to do more work :).

F. Squeak would be the best on list, because it is the only one that provides an /environment/. The scripting capabilities are much more intuitive than many other languages (why should I have to recompile things to see changes?). It also comes with lots of pretty drawing things out of the box, and kids like those.
Andrew Sayman


C. Ada is a much overlooked language; however, it was developed for just such a type of application. The security and dependability make Ada the natural choice for high-risk situations like Nuclear Power Plants, and Air Traffic Control systems. Additionally, Ada was developed to be able to handle this sort of application in Real-time, which is essential to operation. The next best option for such time-critical operations is C/C++, but this is a much more risky route to take.

D. As Andrew said, C is the closest to the hardware without writing Assembly (excluding writing pure machine code); however, most Unix-based operating systems would not limit themselves by ruling out Assembly. So for Operating Systems, a combination of C and Assembly would be optimal. This provides the best speed, and the best utilization of hardware.

E. I too would likely choose Visual Basic for this development; however, if the client was amenable to the idea, I would also consider Smalltalk. The GUI does not need to be complex, and we are looking for maximum maintainablity, so the absolute simplicity of learning and modifying Smalltalk programs would be a large bonus.

Seth Horrigan

these all sound great, with the exception that i think seth's answer for part c is better. (with the exception of ada, which is clearly the best choice) i think java might actually be better than c/c++, it is easier to test (think junit), and if there is a problem, there won't be a seg fault. exceptions can be caught and handled in some way. -ellie


Java would be a bad choice in part C in my mind. Using java requires agreeing to the software license, which explicitly states that java is not too be used in situations regarding life and safety (such as nuclear reactor failures). Assuming the reactor failed in spite of your code, you got a legal nightmare on your hands. There's more to a design decision than technical merits of the language. John Lyon

Link to this Page