Skip to content

๐Ÿงญ 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 .NET 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 libraries
  • Manual memory control
  • Template metaprogramming and multi-paradigm language
  • Can use CUDA for GPU calculations
  • 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 because memory management is manual
  • A bit unsafe

โœ… Ideal Use Casesยถ

  • High-performance applications (executables and libraries)
  • Small size of the executable
  • Small portions of code to speed up sections in Python
  • Embedded device development
  • Large desktop applications

โŒ Less Ideal Use Cases (for me)ยถ

  • Prototyping
  • Web apps

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