:PROPERTIES: :ID: acab6667-11f5-4c85-93ee-627c1db6d574 :ROAM_REFS: [cite:@greenbergUnixShellProgramming2021] :END: #+title: Unix shell programming: the next 50 years #+date: 2021-08-03 22:42:04 +08:00 #+date_modified: 2022-06-11 18:23:17 +08:00 #+published: 2021-06 #+author: Greenberg, M., Kallas, K., & Vasilakis, N. #+source: https://dl.acm.org/doi/10.1145/3458336.3465294 #+language: en - Unix shell is a long-standing tool with its cruft and history built over the past decades; - the goodies - ease of composition gluing tools together easily - mostly found on Unix systems - capabilities for data streaming - interactivity and automation - the blockers - too dynamic with its environment that - ease of composition of tools made of different programming languages with different properties made it difficult for research - there's no single shell environment; the current ecosystem is made of multiple implementation of the POSIX shell which is made of ~300pp describing the language, arbitrary behaviors, and extraneous tools to go along with it - the solvable blockers - no easy way to handle errors; it can mean the life or death of a system with a misspelling - not-so-good framework for asynchronous jobs; performance is acceptable for single-threaded systems but not for multi-threaded ones; that said, it does exist once you've made yourself familiar with it - redudant computation; several tools like [[roam:GNU Make]] does address it but not fully - not exactly fitting with the modern deployment systems - some projects to look forward to - Jash - Smoosh - Posh and Pash