Faced with the challenge of a new application with which you had free reign to design, assemble a team to develop and manage:
- Which language/platform would you choose?
- Why?
Background: The desktop application will control a hardware device and perform computations, analyze and display the data returned by it.
Requirements: (importance: 10=most important)
- will need to communicate with devices using USB and/or ethernet (9)
- availability of engineers with relevant skills (8)
- availability of quality IDE/tools (8)
- cost of IDE/tools (7)
- availability of resources, tutorials, support (9)
- lifetime of language/API/platform/framework- ie how future-proof will the investment in this application be?... the product has a long life-cycle (10)
- cross-platform (3)
- richness and breadth of libraries available (9)
- the application will need to be able to interpret a scripting language (6)
- unit testing (9)
Assumptions:
- For USB variants of the device, a device driver will be written in C/C++
- Application will be a completely new endeavor - from scratch
- Background of existing engineers is C/C++, and they have a strong OO competence. Existing engineers are willing to adopt best language/platform, and new engineers with appropriate skills will be recruited.
Shortlist (which you can add to):
- Java/J2SE
- C#/.NET
- C++/wxWidgets
- C++/QT
- etc.
Looking forward to hearing what you think!