3 ms·
There is a inverse relationship between ease of developer experience writing a program and ease of user execution of that program on an arbitrary platform sligh
by superkuh 3y ago
There is a inverse relationship between ease of developer experience writing a program and ease of user execution of that program on an arbitrary platform slightly different from the developers. This is taken to the extreme in two languages that otherwise are very similar in origin and use: Python and Perl.
Python is a great language to write things in. It's super popular and always getting new features. But it is one of the worst languages for people who aren't the developer to try to run what the developer wrote. It is just implicitly assumed these days that the system python install simply won't be able to install or run the dependencies the developer used. But it's not just dependency hell of a normal type. In python you need a dependency manager manager (conda/poetry/pyenv to a lesser extent) to set up the container in which you'll use your actual dependency manager in isolation (pip, pypi, etc) to try to set up the depencies needed for the python script(s) to run. An even within the multiple layers of management overhead python changes from version to version (even minor version sometimes) and a python script written 10 years ago won't actually run today and vice versa.
Perl is notoriously not a great language to write (and maintain) things in. It also no longer popular and doesn't get lots of new features. But it is one of the best languages for people who aren't developers to run what the developers wrote. The system perl on your distro will be able to install the dependencies without breaking anything and run the script, usually from disto repositories, but at worst from cpan which is universal. A perl script written today can be run on a system perl install from a decade ago and vice versa.