Platform Decision
The first choice in choosing to implement a design is to decide on which platform the design will be implemented, and the language which the design will be implemented in. The following criteria were at the forefront of my mind in choosing the platform.
- Productivity. It was apparent that the simulator would require an extensive amount of software engineering in a very short time scale. It would not be easy to build a reliable product which met the project specifications in time, and thus my most important criterion for choosing a platform was the productivity afforded to me by that platform.
- Availability. I thoroughly believe that software products are built to be used. I wanted a platform that was widely available so that a large number of people would be able to use my software if they so desired
- Marketable skills learnt. I have always been fascinated by learning new skills - this is why I chose to do my individual project in a field that I previously knew nothing about. To my mind the purpose of an engineering degree is to train an individual for future work. Being in the final year of my degree my thoughts were obviously on finding work upon the degree's completion. Employers set great store in experience and so I was keen to learn or expand my skills in an area that would impress my prospective employers.
- Speed. The simulation would require exponential time and memory. However there would be a constant factor involved which would depend upon the programming language and platform used. Whilst I could never hope to run large simulations in small amount of time I would hope that reasonably sized simulations could be run in a reasonable amount of time.
The operating systems that were available to me were UNIX and Windows NT, the main programming languages were Java, C and C++ and the choice of machines were PCs, Sun workstations and the college's parallel processing AP1000. The advantages and disadvantages of these systems are listed below.
- PCs. The biggest advantage was that I had a powerful PC at home, which would help productivity as I wouldn't have to travel to work on the project.
- Sun Workstations. The main disadvantage here was that the machines were at college. Whilst having more raw processing power than a PC the fact that you have to share the workstation with several other logged in users results in far lower performance, on average, than a single user PC. Also, the college lab can be fairly noisy which results in a significant drop in productivity.
- AP1000. The main advantage here is the speed of processing. The main disadvantage was that the only programming language installed on the machines was pre-ANSI C which, by today's standards, is fairly archaic. For instance, passing the wrong number of parameters to a function would result in a crash at run-time and not a compile-time error. As such I estimated that to develop for this machine would result in a serious degradation in my productivity. The availability of the machine left a lot to be desired while the skills learnt would probably not be relevant for any future job that I would be interested in.
- Windows NT. The NT operating system is widely available. The largest advantage was that I had a large amount of previous experience in developing for this platform. Secondly, the are some very professional development integrated environments available, helping productivity enormously. Skills learnt on NT are highly marketable.
- UNIX. Widely available and reliable, though a lack of cheap, professional integrated development environments.
From the above arguments I chose to implement on PC / Windows NT machines. I had then to choose between Java, of which I knew relatively little, and C++, which I had previous experience in. While Java is an upcoming force in the world of computing it is still in its infancy as compared to C++. I look forward to learning Java in the future but at the start of implementation of the project C++ had the best combination of marketable skills which could be learnt and personal productivity. From the available Windows NT / C++ development environments I chose Microsoft's Visual C++ as, again, I had previous experience in it and I thought that it would give me the best combination of skills and productivity.
This web page (c) 2000 Jon Marshall. Last updated 3rd June 2000