5 ms·
Correctness means adherence to the spec, not some contrived absolute truth.
by jpitz 6y ago
Correctness means adherence to the spec, not some contrived absolute truth.
- viraptor 6y agoBut the spec usually has some implicit assumptions. Usually it's "app doesn't leak memory" in the same way nobody explicitly specifies "result of an addition of natural numbers should match ...". We don't go around saying "oh, you didn't want modulo 5 arithmetic? You should've put that in the spec, not rely on some contrived absolute truth".
- jpitz 6y agoOkay, but we're talking about an application, a piece of software who's primary intention is to run for a short period of time, parse a text file and transform it. It will be ran many many many times a day by developers whose time is expensive. Language servers are a very new concept in terms of being part of the day-to-day tool chains for most developers. Trading garbage collection for compile time was absolutely a winning strategy for compiler writers. It made them money.
- viraptor 6y ago"We made dodgy choices to be competitive" is a valid explanation. They don't start being dodgy when new use cases come around and technical debt bites you in the butt. I see not freeing as a clever bug/workaround with nice positive side effects. Not as a clever solution.
- pjmlp 6y agoLanguage servers go back all the way to Xerox PARC workstations and Lisp machines. C++ had its very first language servers via Lucid's Energize C++ and Visual Age for C++ v4. Here is the 1993 video and related paper from Lucid. https://www.youtube.com/watch?v=pQQTScuApWk https://www.youtube.com/watch?v=pQQTScuApWk http://www.dreamsongs.com/Cadillac.html http://www.dreamsongs.com/Cadillac.html And some information regarding VA, unfortunately most is missing from online world. https://www.ecomstation.it/pido2/home/esterni/vac40os2.pdf https://www.ecomstation.it/pido2/home/esterni/vac40os2.pdf (codestore) http://www.edm2.com/index.php/VisualAge_C%2B%2B_4.0_Review http://www.edm2.com/index.php/VisualAge_C%2B%2B_4.0_Review It is also why Delphi, VB and C++ Builder were already such a pleasure to use versus the Makefile and vi world of UNIX.
- jashmatthews 6y agoIt’s usually the opposite! Correctness work usually has the implicit assumption of infinite memory.
- nitwit005 6y agoBut the memory doesn't leak, it gets freed when the program exits. The user doesn't care that each allocation is paired with another call to free it up. They just care if the program runs quickly and doesn't use too much memory overall.
- viraptor 6y agoUnless the system doesn't have enough memory to allocate for large compilation units and starts swapping allocated/dead memory and slowing down massively. Unless the user runs a CI where as many things should be compiling at the same time as possible and slowly freeing memory in 3 concurrent processes is better than running only 1 at a time. Unless they have spare cores, but no spare memory. Unless ... > They just care ... It all depends on who "they" are and what they want to achieve.
- deleted 6y ago[deleted]
- rwallace 6y ago> nobody explicitly specifies "result of an addition of natural numbers should match ..." Yes they do. In most programming languages, by default integer arithmetic is modulo 2^64 (at best). If you want arbitrary precision arithmetic, you have to explicitly specify that.