Monday, January 21, 2008

[HiPerCoPS] Java It Is!

I finished my programming language selection today. The analysis I performed is outlined below, but it might be changed in the future. The most current version is kept here.

LanguageSelection  
Choosing the project's implementation language.

Introduction

After completing the design phase, the system will have to be implemented using a computer programming language. Different programming languages offer different trade-offs, so selecting the right language for this application can improve implementation speed and application performance.

The Candidates

The following programming languages were selected because they are standard, tried-and-true tools used by most of academia and industry.

The Selection Process

The selection process will include the following steps:

  1. List the pros and cons of each language.
  2. Assign a score of +1 to each pro to get the ProScore.
  3. Assign a score of -1 to each con to get the ConScore.
  4. The language's overall score is ProsScore + ConScore = LangScore.
  5. The language with the highest overall LangScore will be selected.

C (LangScore: -1)

Pros (ProScore: 3)

  1. Very familiar language.
  2. Fast program execution.
  3. Highly standardized.

Cons (ConScore: 4)

  1. Not object oriented.
  2. Weak type strength.
  3. GUI support only in Linux?
  4. Type unsafe.

C++ (LangScore: 3)

Pros (ProScore: 6)

  1. Familiar language.
  2. Object oriented.
  3. Good for multi-platform applications.
  4. Strong type strength.
  5. Standardized.
  6. Nominative compatibility.

Cons (ConScore: 3)

  1. No simple GUI tools.
  2. Multi-threading unsupported.
  3. Type unsafe.

C# (LangScore: 4)

Pros (ProScore: 7)

  1. Language of the existing simulator.
  2. Designed for rapid development.
  3. Fast and easy GUI implementation.
  4. Object Oriented.
  5. Strong type strength.
  6. Type safe.
  7. Standardized.

Cons (ConScore: 3)

  1. Targeted for Windows only.
  2. Unfamiliar syntax.
  3. Multi-threading unsupported.

Java (LangScore: 6)

Pros (ProScore: 8)

  1. Cross-platform.
  2. Object Oriented.
  3. Multi-threading is supported.
  4. GUI tools are standard.
  5. Widely used in industry (would make me more marketable).
  6. Strong type strength.
  7. Type safe.
  8. Nominative compatibility.

Cons (ConScore : 2)

  1. Unfamiliar syntax.
  2. Not standardized.

Conclusion

Java received the highest overall LangScore, so it will be used to implement the system's modules and functions.

References

I used the following web pages to inform my decision:

Comparison of Programming Languages

Programming of Programming Languages

Computer Language Shootout Scorecard


No comments: