Compare commits

..

2 commits

2 changed files with 26 additions and 11 deletions

View file

@ -241,8 +241,28 @@ Many tools were made for one thing, and over time have evolved into another thin
This can happen by conscious design or, more commonly, This can happen by conscious design or, more commonly,
from an industry or community picking a tool up and using it for something it was not originally designed for. from an industry or community picking a tool up and using it for something it was not originally designed for.
While hacking tools for uses they were not designed for is always fun and in many cases the only way to do something, While hacking tools for uses they were not designed for is always fun and in many cases the only way to do something,
its perhaps better to make a dedicated tool when the new usecase eclipses its perhaps better to make a dedicated tool when the design choices made for the old usecases start hindering the new usecases.
<!-- look at just command runner, simplifying the common use case of make-->
A great example of this is [just](https://github.com/casey/just), a command runner heavily inspired by GNU make.
Make was (and in large part still is) a C build system.
As such, it includes features such as implicit rules
(if a file called `foo.o` is needed and there is no explicit rule is there, the C compiler will be invoked on the file `foo.c`
(there are similar rules for C++ and linking))
and file modification time laziness
(fantastic as a build system, needs liberal sprinkling of `.PHONY` rules when used as a task runner).
These features are *good* features when make is being used as a build system,
but another major use of make that has emerged has been as a way to run common tasks.
so alongside `make build` to buld your program, you would have `make bootstrap`, `make test`, `make config`, etc.
This is where the design decisions behind make the build system start to hinder make the task runner,
making one learn about make the build system in order to work around those features to use make the task runner.
However, make cant drop these features, both because projects still actively use make as a build system,
and because even makefiles that are just used as taskrunners still work around the footguns and
would be broken by make making large changes to its syntax and semantics.
However, Just was designed from the outset to be a command runner, and as a result,
it is much easier to pick up the just language and make a quick set of commands that can be run.
By leaving behind the old tool, a new tool can be made that better fits the tasks that people use the tool for.
## The trendsetter ## The trendsetter
@ -256,10 +276,10 @@ its perhaps better to make a dedicated tool when the new usecase eclipses
## Appendix: the tools ## Appendix: the tools
This is an extremely unscientific table of command line tools that I have tried, This is an extremely unscientific table of command line tools that I have tried, have used, or currently use.
have used, or currently use. It is assuredly incomplete, but *should* be broadly It is assuredly incomplete, but *should* be broadly representative.
representative. The date data has been gathered from the first git commit where The date data has been gathered from the first git commit where available,
available, wikipedia otherwise, and sorting is by year first, then alphabetical. wikipedia otherwise, and sorting is by year first, then alphabetical.
|tool|year|language| |tool|year|language|
|-|-|-| |-|-|-|

View file

@ -1,5 +0,0 @@
+++
title = "Gitea"
date = 2022-02-10T01:33:49-05:00
draft = true
+++