Development Enviornment
This page contains the methodology and the journey of selecting the Development Environment for The GCS.
To start with the development of GCS I had to choose a language for making the GUI application, I has some points that needed to be satisfied:
Choice of Languages
C/C++
The first language that came to mind was C/C++, I have used it for development of CLI applications as well as for embedded applications. It provides low level hardware access for accessing USB devices, it is cross platform with enough effort. Memory Safety is a major concern when using C/C++. Libraries like QT can be used for ensuring memory safety and provide cross platform support. However QT requires to use there own QT Creator IDE and for the GUI elements it requires to use there own QML (QT Modelling Language). Technically QT can be used without QT creator but the third party support is not good enough. For these reasons I decided not to use C/C++, also it was the language I used for most of my projects so I decided to not go for it.
Python
Python is a great scripting language, it is used in lot of modern application, it is cross platform, and it has many GUI libraries like TKinter or PySide that provides QT Binding for python. It can also interact with hardware like Serial port and IP Protocols. The only down side of Python is its interpreted nature which causes it to hang specially when there is lot of data flowing in from the Serial port.
JavaScript
JavaScript is primarily a language for web development and does not supports hardware access in the browser, but things like node.js allow to use JavaScript to access hardware of the Computer, for running back end servers and communicating with the physical layer including USB, thanks to JS nerds who can not comprehend any other language. JS also has a lot of good looking GUI libraries like ChakraUI and MUI. These can be used together with Electron, which is a Framework that bundles a chromium based browser along with node.js for the back end, allowing me to create cross platform desktop application. So even with all the shitty abstraction of JS i am going to use it for creating this application.
Conclusion
So to conclude I am going to use React for the front end and bundle it with Electron to create a cross platform application.
Why did I choose JavaScript, despite it being shitty?
Majorly because I am lazy and don't want to make my own GUI components, and I hate life.
Last updated