As I was discussing this with my partner we summarised this as:
Humans have always had the capacity for violence and murder; as populations grew, acts of violence could be larger, both in terms of number of combatants and also length of time of continuous fighting. This is a progression of:
- Small bands of people skirmishing with neighbours to
- Towns sending small raiding bands to
- Cities fielding an army for a summer campaign to
- Empires furnishing professional armies and sending them on multi-year campaigns, to
- Nation states using advanced logistics to maintain millions of soldiers in the field for years at a time.
Somewhere between city-states and full modern nation states, there have been full on campaigns of genocide. But genocide can be thought here definitionally as only possible with some significant number of people.
Unfortunately there is a deep dark part of the human psyche that has always been with us.
All junior devs should read OCs comment and really think about this.
The issue is whether
is_number()
is performing a semantic language matter or checking whether the text input can be converted by the program to a number type.The former case - the semantic language test - is useful for chat based interactions, analysis of text (and ancient text - I love the cuneiform btw) and similar. In this mode, some applications don’t even have to be able to convert the text into eg binary (a ‘gazillion’ of something is quantifying it, but vaguely)
The latter case (validating input) is useful where the input is controlled and users are supposed to enter numbers using a limited part of a standard keyboard. Clay tablets and triangular sticks are strictly excluded from this interface.
Another example might be
is_address()
. Which of these are addresses? ‘10 Downing Street, London’, ‘193.168.1.1’, ‘Gettysberg’, ‘Sir/Madam’.To me this highlights that code is a lot less reusable between different projects/apps than it at first appears.