By and large they do. English, like all indo European languages, used to have many grammatical cases and verb forms. Now we mostly retain cases in pronouns, and most verbs are about two forms per tense.
Latin used to have all its cases suffixes, and today's Romance languages have dropped nearly all of them.
English has simple verb and noun morphology, but very complicated syntax and phonology. Hard to say that it’s uniformly more or less complex than Latin.
I think it's possible to sidestep the harm vs suboptimality discussion. It's clear that there is a benefit to the public when works become public domain, and copyright law should balance benefits to creators and consumers (though of course we all fill both roles to some degree). Laws also have to be politically viable, of course.
> Using your logic, the government then ought to force you to donate all your savings and excess possessions to "society" so that harm is reduced.
I would argue that governments do a "soft" version of this with redistributive tax schemes and social programs.
It’s worth noting that PyPlot.jl is a nearly seamless way to use matplotlib from Julia. JIT compilation of the middle layer does mean that it suffers from time to first plot problems though.
Do notation is jokingly called a programmable semicolon. True, it is often used to model imperative computations with it, so that is the association people have with it. Also people come mostly from imperative backgrounds and look, we can bind something to a value. Finally something I get! And that is fine, let them play around with it like that.
But if they look closer, they find out it is not really imperative. Why is there a difference between let and bind? Why can't I reassign values. And they start to use more exotic and also more interesting monads and boom the imperative feel goes away.
For example with the interesting LogicT[1] monad. Or what about the probability monad[2]? Or the continuation monad[3]? Or the reverse state monad[4]? How imperative are those really? It really depends how you use it. And I think it adds more to the magic, that you think it is just imperative code at first, because suddenly you can create code that behave very different under various monads that represent computation models. I think that is a cool thing about this confusion.
I understand that if you are a professional that needs to get work done, it can be annoying.
> I find the latter easier to read and lends itself to a fluent, lightweight style.
Maybe I'm bikeshedding, but I think this is a nontrivial part of why people like OOP languages. Being able to read right to left, without nested parens, makes code comprehension easier.
I think the mathematical notation for function application has held programming languages back. I realize that there's a huge benefit to uniformity of syntax across languages, and that syntax is ultimately much less important than semantics, but I wish we could settle on something better than f(x). I really appreciate languages that are willing to do something different (e.g. haskell and lisp).
Yes, thanks! It now makes sense, but I think it's very unsatisfactory visually. The divided segments make it look like the service has some break between stops, or this is very puzzling. And the "O"s mixed with the dividing lines and the subway line letter are highly confusing.
And by the way, for his legal case, if there was anything to point to the argument of derivative work, this would be it. It's clearly copying (because it's so confusing) the broken line segments style in the map you just linked.
[1] https://www.roc-lang.org/faq#self-hosted-compiler