Hi ats users!I recently had the opportunity to give a talk at a hackathon about ATS and coding productivity / quality. I thought I would share my slides here:https://docs.google.com/presentation/d/157VR0oQNTfUiiChYdbv77PYZkYKo_zkZfwRiqGv6sEY/edit?usp=sharingAnd the informal write up I am currently developing:If, like me, you are passionate about coding quality, methodology, productivity, or functional programming and, of course ATS, please reach out!
I would be happy to collaborate on the write up and hear your thoughts about what drew YOU to ATS.
Hi Artyom!Thank you for your feedback! It is great to hear an advanced programmer's perspective on the appeal of ATS. If you have the time it would be great to incorporate into the write-up a section about this! :)
Hi Artyom,This is awesome :)
I have a question about "gradual improvement" of performance. I personally feels it is more about gradual improvement of specification, e.g. change a simple data type into a more refined type, to catch more bugs. So the sales pitch is more like "write dirty code that works first, and then sit down and formally specify what the code should do", at least to me. What do you think?
Is this any better?
- gradual improvement: no need to put a lot of effort upfront, write dirty code that works, and then sit down and improve efficiency and correctness (either or both, you have the tools!)
Also I would like to point out abstract types. It's a great way to work out a system in a top-down fashion. We craft some abstract types, then provide a set of functions that works on values of these types (like a DSL), and program using these functions. We can quickly prototype the idea using the type checker, and defer the implementation details to a later point. C can probably do this via pointers or structs, but then you need to think about the details of a struct.