EEVblog Electronics Community Forum

Products => Computers => Programming => Topic started by: ktgun on August 03, 2023, 12:00:00 pm

Title: Comparing the effectiveness of languages ​​and frameworks for measurement apps
Post by: ktgun on August 03, 2023, 12:00:00 pm
"For all the good, against all the bad: Comparing the effectiveness of languages ​​and frameworks for measurement applications development"

Hi, folks!
I'm a senior software engineer and a senior scientist in company that makes hardware and software stuff for EMC testing.
In my practice i've made apps not only for EMC, but also for antennas measurements, scanners, radar cross-section measurements, etc.
So, i'm more or less good familliar with few programming languages: C, C++, Java, Python, MATLAB, assembly languages, SQL and many-many frameworks for them.
And some time ago i started to think how to sort them for different measurements tasks, to help me and other engineers make right choice in stage of planning.
Of course, any programmers themselves choose the language for their work, based on the task, their knowledge and skills.
But most often they simply choose the most familiar language and write everything in it.
So, a very common situation: a strange measuring program with a graphical interface,
because of which the eyes bleed and with functionality that makes you want to wash your hands with bleach after:
- Spectral analysis in PHP; 
- Measuring antennas parameters in time domain in LabView; 
- Super-duper "low-code" app for EMC testing with email sending, weather widget, Python scripts, 2 billion options, in C# + Python + SQL + LabView + Word of God;
- Software for reverberation chamber in Basic.
I saw them all.
And they all begged me to do research on improving the efficiency of measurement software development.

And if we say "Efficiency" we need to choice our task and some metrics, for comparing development instruments (languages, frameworks, etc.) between each other.
For example, our task is to make app for amplifiers testing via power meter, signal generator and spectrum analyzer.
And metrics: "Development time - DT", "Development cost -DC", "Functionality - FC", "Performance - PF".
Let's now compare, for example, MATLAB and C++ in this task.
MATLAB: DT - Low (cause we have instrument control toolbox and AppDesigner on board); DC - High or Medium (License cost); FC - High, PF - Medium (Java legacy i think).
C++: DT - High, DC - Medium, FC - High, PF - High.
So, as we can see MATLAB is little bit more efficient for this task than Cpp.
Of course my example is very simple and subjective.

But i want to make my research more objective and that's why i want to hear different subjective opinions of many pro's in their field of work.
So, what is your favorite frameworks, languages, apps for your daily tasks and why?

Thanks for your answers!
Title: Re: Comparing the effectiveness of languages ​​and frameworks for measurement apps
Post by: radiogeek381 on August 03, 2023, 01:37:07 pm
Rather than choosing, project by project, I selected two toolsets and invest in them.

I've written hundreds-of-thousands of lines of C++ over the years. With time I've built a set of libraries (FIR filters, resamplers, spectral analysis, text formatting) and interfaces (C++ ifiers) to useful external libraries (like fftw).  I had a "boost" phase, but discarded all boost components. I use Qt for GUI stuff.*

So when it comes to stuff that will live for a while, I do it in C++. Development time is "optimal" for me. Development cost is low (rely on the previous investment). Functionality and performance are more than acceptable. In fact, performance has been very very good -- every once in a while I do some comparisons. Even the STL stuff like vectors and lists perform very well compared to "roll your own" in C or C++.

But for prototyping and data exploration (algorithm development, and what-the-hell-is-this?) I use numpy, scipy, matplotlib, and pandas with Jupyter/python. I wouldn't ship anything that way, or even keep it for very long, but development time is short, cost is low, functionality is OK, and performance is all over the map. But the experiment results are nearly instantaneous and I can see them before my attention wanders to something else that is shiny.   

(I've been writing code for money for more than 40 years. Lisp, FORTRAN, Sail, C, C++, Simula, and a bunch of "domain specific languages" and scripting languages. Looking back, it is amazing how much my productivity has improved over the years. And it is almost entirely due to the widespread growth of open-source libraries of all sorts, vast improvements in the quality and mechanics of C++ compilers, and the standard template library. (In the beginning STL was not very "performant." But over time, grownups got hold of it and tuned the bejeebers out of it. The improvement in template mechanics since the early days now makes STL the preferred path.)
)
Title: Re: Comparing the effectiveness of languages ​​and frameworks for measurement apps
Post by: ktgun on August 03, 2023, 01:50:41 pm
Thanks for reply 'radiogeek381'! :-+
Yep, I also tried many languages in my work, but the further I go, the more I am convinced that Cpp is the best.
It's such a deep language, with such a range of features, that I just admire it. :clap:
The only, in my opinion, problem with it: if the tasks have different functionality, then teamwork is necessary. And since, to work with this language, you need a fairly high level of programming, on large projects, the development cost is frankly frustrating. :palm:
Title: Re: Comparing the effectiveness of languages ​​and frameworks for measurement apps
Post by: Gribo on August 03, 2023, 06:58:02 pm
I would add also the tool's cost and support, eco system and talent availability. 
Title: Re: Comparing the effectiveness of languages ​​and frameworks for measurement apps
Post by: ktgun on August 03, 2023, 07:17:19 pm
Yes, of course all of these are very important things too. My examples are simple, just to show my basic approach. To be honest, i think that "efficiency" is so complex and sometimes unclear and subjective term, that is very simple for scientist to confuse while research and invent pink elephant in result. That's why my goal in this topic is to gather maximum opinions and then try to separate flyes from pies. :D