3 ms·
I think it's a cultural thing. People like to think of a language for the build system as a little language that somehow doesn't "deserve" a type system. And ev
by kccqzy 2y ago
I think it's a cultural thing. People like to think of a language for the build system as a little language that somehow doesn't "deserve" a type system. And even they do think a type system is necessary, they think such a language doesn't "deserve" a complicated type system (say Java-like with subtyping and generics) which makes that type system less useful.
I'm curious, what kind of type system does BUSY use?
- Rochus 2y agoIt's a rather traditional type system; the specification is here: http://software.rochus-keller.ch/busy_spec.html http://software.rochus-keller.ch/busy_spec.html. The main advantage are the combination of modularization, types and formal declarations, so that if you make a change in a large build (such as my https://github.com/rochus-keller/LeanQt https://github.com/rochus-keller/LeanQt or https://github.com/rochus-keller/LeanCreator https://github.com/rochus-keller/LeanCreator systems) incompatibilites are immediately found by the compiler. Without these features you can never be sure whether all effects were checked.
- maartenh 2y agoWhich tool did you use to create that busy_spec.html file? They remind me of Engelbart's blue numbering system for documents, if I remember the name correctly.
- Rochus 2y agoIt's https://github.com/rochus-keller/crossline/ https://github.com/rochus-keller/crossline/, a tool which I implemented and used for many years in my projects. It's inspired by Netmanage Ecco and implements features which can also be found in Ted Nelson's Xanadu or in Ivar Jacobson's Objectory.
- kamma4434 2y agoI wonder why people love to create languages to be embed in applications when there are plenty of languages that are already useful and well known. So in the end, you have to fight the half-assed small language that was created and have to find a way to connect to some real language to get things done.
- grumpyprole 2y agoSmall languages, if they are suitably constrained, offer far more reasoning power and optimisation potential. This is why we need more small languages, not less. Python aims for maximum flexibility and maximum ease of use. This comes with real and serious trade offs. Python programs are very very difficult to reason about, for both people and machines. A textbook example for you are (proper) regular expressions. This little language guarantees O(n) matching. The Python and Perl communities added backtracking without truly understanding why backtracking was missing in the first place. Now their misnamed "regular expressions" cause security issues for their users.
- AlotOfReading 2y agoEven Thompson didn't use the linear time algorithm that's named after him in Ed and Grep. The Python and Perl implementations were inspired by Henry Spencer's regex, which was in turn reimplementing Thompson's backtracking implementations.
- grumpyprole 2y agoAre you sure it was Thompson who added backtracking to grep? Note also that the POSIX standard intentionally omits backtracking regex. It is a shame that others have not deprecated them.
- AlotOfReading 2y agoWe're talking about backtracking and not back references, right? The original implementations of Ed and Grep in Unix did backtracking, not back references.
- grumpyprole 2y agoOops I mean't back references, since that is the problem feature (that requires backtracking).
- hamandcheese 2y agoI don't think it's purely cultural. Starlark is interpreted, which presents some challenges to type checking. You either need to make the interpreter more complex, or have an out-of-band type checking step.