Runtime verification in Erlang by using contracts
arxiv.org
arxiv.org
Meanwhile, any of this available for Elixir, too? One of the languages on my 2019 list…
Just by companies that actually buy their software tools.
How do you think they are still in business, selling multiple variants of their tools?
But from what I've seen, I wouldn't mind it to become a bit more popular, more libraries, more publicly available applications. More rising tide lifting boats than secret weapon.
(NB: not that you'd need to be a secret weapon to keep a business afloat, there are a lot of companies that run on legacy support. There's nothing inherently better in paid software. Also: Eiffel the language vs Eiffel Studio.)
https://www.liberty-eiffel.org/
Just like with Smalltalk and Common Lisp, a language without the respective developer experience, isn't that attractive.
And did you actually like the EiffelStudio dev experience? I thought that was the weakest part of the whole offering (as opposed to CL and SmallTalk, by the way). And I like BON about as much as UML.
I do enjoy using UML, not the extreme case of compiling UML to native code as promised in the 90's, but surely for application architecture and data flows.
I was quite pleased that my previous customer allowed externals access to their Enterprise Architect pool licenses.
My feel at the time was that Meyer introduced Eiffel right on the cusp of the move to free compilers, and he never recovered from that tectonic shift.
Whether most developers of that generation could be convinced that rigor was useful I cannot say (but fear the answer is “no”), but they certainly weren’t going to pay to learn or use a new language.
Alternative was making our own ones, from code listings.
That rigour is useful, having learned Eiffel, coming from Wirth languages background, reading Code Complete, completely influenced my way of writing C and I regularly used all the nice VSC++ ASSERT macros variants for pointer and argument validation.
Also adopted code contracts in Java and .NET years later.
Coming back to Eiffel, languages need a killer use case for business to adopt them, so they end up only having customers on domains where companies are required to take quality seriously, like high integrity computing.
Is there any recent writings on this pattern on applying the idea more sanely? As it is, I think I prefer to write testing code outside of the core behavior and have to anticipate what values are valid, or create new tests as bugs are found.
Also, there’s been a lot of work in the Racket community on contracts: I think it has something to do with making Racket/Typed Racket interop safe .
One concern I have with their Erlang solution is that the preconditions and postconditions are expressed for the function as a whole, not each function clause. In some contexts, rather like OOP, a function can be quite different depending on the context it’s called with.
It just looks like a thunk of code, with little rhyme or reason.
Otherwise, I have to painstakingly go through their source or read 19 pages of small font. I don't want to do that.