De status van dit document is voorlopig en zou nog kunnen wijzigen.

Language choice for the ace project

Introduction

This document outlines the decision-making process for selecting a programming language for the ace project. The goal is to choose a language that best meets the project’s requirements in terms of performance, security, and development efficiency.

Criteria for Choosing a Programming Language

Options for programming languages

Based on the criteria for community support, we have started with the list of most common programming languages. The list is based on the TIOBE index for May 2024, which ranks languages by popularity and usage.

May 2024,May 2023,Change,Programming Language,,Ratings,Change
1,1,,,Python,16.33%,0.0288
2,2,,,C,9.98%,-3.37%
3,4,,,C++,9.53%,-2.43%
4,3,,,Java,8.69%,-3.53%
5,5,,,C#,6.49%,-0.94%
6,7,,,JavaScript,3.01%,0.0057
7,6,,,Visual Basic,2.01%,-1.83%
8,12,,,Go,1.60%,0.0061
9,9,,,SQL,1.44%,-0.03%
10,19,,,Fortran,1.24%,0.0046
11,11,,,Delphi/Object Pascal,1.24%,0.0023
12,10,,,Assembly language,1.07%,-0.13%
13,18,,,Ruby,1.06%,0.0026
14,15,,,MATLAB,1.06%,0.0018
15,14,,,Swift,1.01%,0.0009
16,8,,,PHP,0.97%,-0.62%
17,13,,,Scratch,0.93%,-0.02%
18,17,,,Rust,0.93%,0.0011
19,33,,,Kotlin,0.89%,0.0052
20,26,,,COBOL,0.85%,0.0029

Disqualifying issues per language

Performance and Correctness: Python, JavaScript, Visual Basic, Ruby Security and Correctness: C, C++, PHP Community Support: Fortran, Delphi/Object Pascal, Assembly language, Swift, COBOL Not Applicable to the Project: SQL, MATLAB, Scratch

Remaining options

Conclusion

After evaluating the options based on the criteria, the team has decided to use Go for the ace project. The primary reason for this choice is the prioritization of prototyping speed, which is crucial for exploring the feasibility of the claim sourcing database. Rust’s higher demands on the developer will lead to slower development. Additionally, Java, Kotlin, and C# are not very well known to the development team, making Go a more suitable option due to its familiarity and ease of use.