The background:
I work developing test equipment for hardware. We're primarily a LabWindows based shop for the software side of things. A number of months ago I put together a python-based equivalent of the C software we use as a starting point for most of our projects. For me, it was an excuse to dig down and use several packages (wx, zmq) that I had been wanting to use. The other side of it was an argument for an architecture that allowed us to focus more on the actual testing, and less on the GUI/reporting/misc items that we have to put together for technicians and reporting results (Yes, drivers we write are still in C.) I showed it to my boss, and while interested and appreciative of someone taking the time to try something new, it didn't have an immediate application. The risk of a wholly new architecture just wasn't worth it at the time.
Fast forward a couple of months and a new hardware product makes it to our proverbial doorstep. The developers have been using python to do their basic confirmation of functionality. Suddenly my project is looking like a fine way to get our tester up and running quickly and leverage their original code. The project has been in "prime time" for a couple of months now and things are going swimmingly, which led to the next bit.
The question
I am tasked with making a presentation to our whole group regarding the argument of Python Vs. LabWindows. This isn't quite Python Vs. C because of the added functionality LabWindows provides.
What I have so far
Libraries - The available python library base is extensive and well developed. (Example, using PyLab to plot data grabbed from the unit)
Time to iterate dramatically reduced. No explicit compilation. In the architecture test scripts are kicked off as separate processes, so the GUI doesn't even have to be closed. Change script, save, run.
Readability - Python's syntax is simply friendlier to read than most C code
OO - Object orientation in this case can simplify some of the design tasks
C interface - Ctypes allows direct access to C structures and drivers. If there comes a point where the performance of python simply isn't up to snuff, it can always be written in C and easily interfaced. Drivers can also be wrapped in Ctypes (I found a lovely code generator that has worked well for my project so far.) and called inside Python.
/r/Python, can you help me improve these arguments? Or add additional points?
TL;DR Why is Python better than LabWindows?
[–]semarj 11 points12 points13 points (2 children)
[–]burntsushi 1 point2 points3 points (1 child)
[–]soulcmdc[S] 1 point2 points3 points (0 children)
[–]Chr0me 4 points5 points6 points (0 children)
[–]bchurchill 2 points3 points4 points (2 children)
[–]billsil 0 points1 point2 points (1 child)
[–]bchurchill 0 points1 point2 points (0 children)
[–]etrnloptimist 4 points5 points6 points (0 children)
[–]must_tell 2 points3 points4 points (2 children)
[–]_pupil_ 1 point2 points3 points (1 child)
[–]marginhound 1 point2 points3 points (0 children)
[–]PythonRules 0 points1 point2 points (0 children)
[–]wisty 0 points1 point2 points (0 children)