It also has grown organically over a long period of time. U.S. law is a mix of a variety of legal traditions, plus historic precedent within the U.S.
Most U.S. states have legal systems that are largely rooted in English Common Law, except for Louisiana which has its roots in French legal traditions. However, it isn't as simple as that.
For example, water rights and laws in California contain competing premises, one of which is from English Common Law and one of which is not. One of these premises is "First come, first served." The other is that you aren't supposed to take so much water from the river such that you completely deprive people downstream of its use. These are both part of the law in California and they are in direct competition. California alone has a very rich history in development of water rights and laws.
From what I have read, countries that lack the sophisticated legal system such as that we enjoy in the U.S. typically have far bigger problems than what we face here with trying to parse the law.
I'd like to see laws come with unit tests, "under circumstance a, b and c, person x would be at fault".
Of course that law is a couple decades old, not a couple centuries.
I don't think it's so much language changes as society changes. Social norms and taboos change. Technology changes. It's like how code needs maintenance because it breaks. The world is changing. This is a feature not a bug.
Hypothetical example. Lets say there were noise regulations designed before electricity. But once you have electricity, now people have loud speakers. How do we interpret the law? Does the existing law really work?
"I'd like to see laws come with unit tests, "under circumstance a, b and c, person x would be at fault""
This is pretty much exactly what they do. Look at all the sub sections spelling everything out exactly. It is as precise as can be.
https://docs.legis.wisconsin.gov/statutes/statutes/939/III/4...
Try reading physics, maths or phylosophy papers. There too you must read a few hundred before things start to line up.
An interesting example of the linguistic changes that affected legal English are legal doublets ("null and void" for instance): https://en.wikipedia.org/wiki/Legal_doublet Those originally were intended precisely to avoid confusion and ambiguity. Legal doublets were an attempt to accommodate both Anglo-Saxon and French (and sometimes Latin) language roots in order to allow speakers of either to understand legal terms.
To modern English speakers these terms are more of a cause for confusion rather than clarity. In addition, terms like 'null and void' nowadays add nothing to the precision of legal language but they keep being used because they're proven to work. They're a sort of legal cargo cult if you will.
'void' has exactly the same meaning as 'null and void' but we keep seeing the latter because lawyers cannot risk being linguistically progressive. They might lose a case if they don't use the terms everybody else in the legal business is used to. Hence, legal English only changes gradually and slowly.
Thus vulgar words in English tend to be based on German roots but high-status language (the law) is based on Latin roots.
Also I'm a jr web developer, I guess I could see how if you are not exposed/use something everyday you wouldn't know how to read it/understand it. At least code words are in "understandable English" I guess I don't know... ayeeee.... but I could see the parallel, that's why if you can't code/need something done you'd probably hire someone compare to a lawyer...
It is as if, having progressed to the point of writing BASIC, future programmers were free to modify many things in subsequent languages to add or modify features, but rarely could anything be removed. For example they had to continue using the existing set of keywords.
So you have the mother of all overloading problems, for example GOTO doesn't just jump to a line number anymore but can also call a function eg. GOTO[foo(bar="baz")]. Worse yet, foo isn't necessarily a function name, but might be a variable (in one of several scopes) containing the function name. And so on.
The Law has been compared to spaghetti code. This is incorrect. It is a spaghetti language. The code is often very straightforward, given the syntax it has to be expressed in). For example the convention of declaring a variable upon first use of the value (and with a reverse infix notation at that) to achieve indirection (eg. "...bla bla city street state, hereafter referred to as THE COMPANY" or "...yadda yadda in Appendix II, hereafter referred to as THE AGREEMENTS") is weird, but does make legal documents much easier to understand when disambiguated (no arguing which "they" is being referred to). Never mind that we as programmers would generally prefer those vars and values declared at the begining of the document outside the body of the text that uses them, it does work.
This goes against the principle that all men are equal and should be treated equally by the law.
I'm like "Oh look at me, I'm a dishwasher / full stack developer so and so" and then it's like debt collectors are like "Oh so you've got money do ya?" And also how they figure out where you live/your phone number based on your resumes (as a possible source) which you're trying to use to get a job... damn this sucks. I just feel scared, I hate that feeling too, like yes, I owe the money, but also I wish I paid the OC back rather than someone who bought my couple grand debt for tens of dollars. But why do I feel that way, is it greed? Am I bad? I don't know... sucks to be in this position.
People are experimenting with various things from Ethereum smart contracts to L4 a programming language for law.
I have also stated a github repo www.github.com/naveenmishra88/opencontract So that we ccan collaborate on a crowdsourced plain English version of contracts that work for us rather than against.
Legal loopholes are big business and making contracts specific enough that they avoid serious loopholes would surely require the high level of complexity used in modern contract writing.