Conclusion ๐Ÿ#

The conclusions are based on the following results. Clearly, itโ€™s a personal opinion shaped by my education and experiences. I quickly started coding at 10 with BASIC (on DOS), then moved on to learn Visual Basic 6, and after that, I developed a long-lasting affection for Delphi from Borland and Embarcadero. Subsequently, I pursued studies in physics and chemistry at university. Following that, I learned Python, C++, and most recently, ASM, purely for enjoyment.

C# and Dotnet framework ๐Ÿ“ฆ#

๐Ÿ‘ Advantages#

  • Cross-platform: code can easily be ported to Linux with no changes required

  • Great optimization: comparable in speed to C++

  • Not verbose: language syntax is clear and straightforward

  • Simplified parallel computing

  • Abundant scientific functions included in .NET Core, eliminating the need to reinvent the wheel

  • Built-in garbage collector

  • Nice debugger, profilerโ€ฆ

๐Ÿ‘Ž Disadvantages#

  • Requires installation of the .NET Core runtime

  • Limited memory control

  • Controlled by Microsoft; the product roadmap is unpredictable and subject to frequent changes. In my opinion, itโ€™s more suitable for developers rather than scientists.

  • Steep learning curve

  • Size of the runtime + โ€œbinariesโ€

  • Limited support for GPU computing (perhaps through libraries like ILGPU?)

  • Not ideal for prototyping due to strong typing

โœ… Suitable Use Cases#

  • When integrating with the entire .NET ecosystem without needing to switch to other platforms

  • For developers aiming to quickly build cross-platform desktop applications

โŒ Less Suitable Use Cases#

  • In the field of scientific computing

  • For machine learning applications

JavaScript ๐ŸŒ#

๐Ÿ‘ Advantages#

  • Good performance compared to Python

  • Compatible with all web browsers

  • Numerous visualization libraries and frameworks

  • Enables full-stack development with Node.js

  • Easy to learn and use

  • Suitable for rapid prototyping due to its dynamic typing

  • Debugging is okay

๐Ÿ‘Ž Disadvantages#

  • While generally faster than interpreted languages like Python, JavaScriptโ€™s performance lags behind that of compiled languages.

  • Limited precision in floating-point numbers due to IEEE 754 double precision, which can cause problems in scientific computations.

  • Challenges with memory management

  • Size of the runtime + script

  • Scarcity of scientific libraries when compared to other languages

  • Managing asynchrony can be complex for beginners, and it may not be intuitive for scientists.

  • Overwhelming number of frameworks that are constantly being released

โœ… Ideal Use Cases#

  • Excellent for creating web interfaces (front only)

โŒ Less Ideal Use Cases#

  • Not the best choice for desktop applications, memory hungry

  • Not recommended for applications where performance is a critical concern

  • The scientific field, due to the lack of specialized libraries and precision issues

  • Machine learning applications, which often require more specialized tools and libraries

ASM ๐Ÿงฎ#

๐Ÿ‘ Advantages#

  • Encourages knowledge of computer architecture, which is beneficial for learning

  • Results in a small program footprint

  • Presents a healthy challenge to developers

  • No abstraction layers: interaction with hardware is direct and explicit

  • Opportunities for hardware-specific optimization

  • Seamless interaction with C and C++ (a significant plus)

๐Ÿ‘Ž Disadvantages#

  • Inherently high complexity

  • Optimization is hard (my c++ program is faster)

  • Debugging can be difficult and tedious

  • Not inherently portable; requires adaptation for different platforms (different hardware, operating systems)

  • Lengthy development time

  • Lack of scientific libraries available

  • Highly prone to errors due to the low-level nature of the language (totally unsafe)

  • Often involves reinventing the wheel for many common functionalities

โœ… Ideal Use Cases#

  • Suitable for embedded device development

  • When high-performance is critical for specific sections of code that need to be directly integrated with C/C++ binaries

โŒ Less Ideal Use Cases#

  • Not practical for developing a modern application

  • Prototyping in assembly language (ASM) is highly impractical

  • Ill-suited for applications requiring user interaction

C++ ๐Ÿงฉ#

๐Ÿ‘ Advantages#

  • Great performance

  • Good portability

  • Mature ecosystem with a lot of scientific library

  • You handle memory

  • Template Metaprogramming and Multi-Paradigm Language

  • Could use CUDA to GPU calculation

  • Small size

๐Ÿ‘Ž Disadvantages#

  • A bit complex if you want to create complex code

  • Not very intuitive, but simpler than JavaScript for me

  • A bit verbose

  • More Error Prone with Memory Management by user

  • A bit unsafe

โœ… Ideal Use Cases#

  • High performance app (executable and libraries)

  • Small size of the executable

  • Small portions of code to speed up section in Python

  • Embedded device development

  • Big desktop app

โŒ Less Ideal Use Cases (for me)#

  • Prototyping

  • WebApp

Python ๐Ÿ#

๐Ÿ‘ Advantages#

  • Extremely user-friendly

  • Rapid prototyping capabilities

  • Effortless direct conversion to native code with Cython

  • A wealth of high-quality libraries (e.g., NumPy, Pandas, PyTorch)

  • Straightforward integration with C and C++, offering extensive compatibility

  • Strong community support

  • Cross-platform compatibility

  • Simplified data visualization

  • Ease of performing GPU calculations

  • Performance boost with PyPy without extra work

๐Ÿ‘Ž Disadvantages#

  • Generally slower performance, with computationally intensive tasks often handled by packages written in C/C++

  • The Global Interpreter Lock (GIL) can be a bottleneck; however, it can be circumvented using Cython or interfacing with C/C++

  • Really slow (for loop) without native packages

  • Higher memory consumption compared to some other languages

  • Indentation-based syntax may be unfamiliar to those new to Python

  • Not tailored for mobile computing

  • Larger footprint due to the combined size of Python, scripts, and virtual environments

  • Managing dependencies can be complicated when distributing applications

โœ… Ideal Use Cases#

  • Quick and efficient prototyping

  • Research in the scientific field, especially when utilizing extensions in C/C++ and Cython

  • Machine Learning projects, particularly with frameworks that have CUDA integration like PyTorch

  • Backend development for web applications

  • Creating small graphical user interface (GUI) applications

โŒ Less Ideal Use Cases#

  • Building standalone heavyweight desktop applications