[HN Gopher] Learn TLA+
       ___________________________________________________________________
        
       Learn TLA+
        
       Author : MindGods
       Score  : 107 points
       Date   : 2022-07-01 20:48 UTC (2 hours ago)
        
 (HTM) web link (www.hillelwayne.com)
 (TXT) w3m dump (www.hillelwayne.com)
        
       | bediger4000 wrote:
       | How does TLA compare to Spin?
        
       | anonymousDan wrote:
       | Several people I know with a formal methods and distributed
       | systems background aren't that impressed with TLA+. I'm not
       | exactly sure why or what else they prefer (Isabel? Coq?). Anyone
       | with a formal methods background care to comment?
        
         | mhh__ wrote:
         | TLA+ has very different aims.
         | 
         | A better criticism would probably be to note that TLA+ is even
         | within the more similar world of (say) model checking, it is a
         | LISP to (say) Spin's (or similar) C
        
           | [deleted]
        
         | ahelwer wrote:
         | It's not like TLA+ is really pushing research frontiers, it's
         | just a great language using solid established algorithms that
         | works really well for modeling distributed & concurrent
         | systems. Maybe they're unhappy with the proof system part of
         | the language? That's still a research project in progress.
        
         | pron wrote:
         | The vast majority of people using languages like Coq, Isabelle,
         | or Lean, are researchers, and those tools are designed for
         | research (such as defining and exploring new logical systems).
         | TLA+, on the other hand, is designed for practitioners, i.e.
         | people who build systems for a living. That is why more papers
         | are being written about Coq and Isabelle, but more bugs in more
         | real-world systems are being found with TLA+. So it depends on
         | what your job is.
        
           | avgcorrection wrote:
        
         | hwayne wrote:
         | I'd be interested in hearing their opinions! Do you know more
         | about their contexts? Like if they're in academia, industry,
         | what kinds of things they're doing, etc.
         | 
         | (I don't think it's necessarily the case that they prefer
         | Isabelle or Coq; it really depends on what they're trying to
         | do. I'd be especially fascinated if they prefer, say, SPIN to
         | TLA+, which is a much closer tool.)
        
       | an_d_rew wrote:
       | Awesome, thank you, Hillel!
       | 
       | Bought the book, FWIW, and love it - but this will help me
       | evangelize TLA+ with my employer and other groups!
        
       | jacoblambda wrote:
       | This looks awesome. I'm hoping to start working through it
       | starting some time in the next few weeks.
        
       | dqpb wrote:
       | I wish this wasn't so focused on PlusCal
        
         | hwayne wrote:
         | In my teaching experience, more people find it easier to start
         | with PlusCal. That said, I plan to also add a lot of topics and
         | examples that are pure TLA+.
        
         | ahelwer wrote:
         | They're both good to know - PlusCal for concurrent programs
         | with more sequential if/then/else/while/for-type logic, and
         | TLA+ for more event-driven systems that receive inputs and
         | react with few sequential steps. Lamport has published lots of
         | resources on TLA+ itself. I learned from _Specifying Systems_.
         | I 've also seen the video course and it's pretty good.
        
       | im3w1l wrote:
       | So can it spit out C or something? Or something to actually
       | perform the algorithm? Or are you expected to manually translate
       | back and forth between your model specification and your code?
        
         | Jtsummers wrote:
         | It does not spit out C. TLA+ is aimed at the
         | design/specification level, not the implementation level. You
         | would have to take the information learned from the model
         | checker or proof system (or even just the act of constructing
         | the model can reveal problems) and change your program to
         | address any discovered issues.
        
       | rotifer wrote:
       | I just started reading the book a couple of days ago. Sigh... :-)
       | 
       | One thing that I wish websites did is to make it easy to report
       | simple typos and grammatical errors without having to go through
       | GitHub. For example, on https://www.learntla.com/intro/faq.html
       | "losting" should be "losing". It would be great to simply and
       | quickly report them without having to context switch and go
       | through the overhead of opening an issue or creating a PR. (In
       | any case, I don't even have a GitHub account.)
        
         | hwayne wrote:
         | It's also fine to send me an email (h@mymainwebsite) or a
         | twitter DM or whatever, I just presented the issue so people
         | know they can send feedback and that I'll accept it.
        
       | elcapitan wrote:
       | Really liked the paper book, looking forward to the new version
       | of the website!
       | 
       | Nice to see some new posts on TLA every once in a while. A few
       | days ago someone posted this series of very real-world examples:
       | https://elliotswart.github.io/pragmaticformalmodeling/ It's also
       | quite good.
        
       | tra3 wrote:
       | My mind works best with examples, I was about to ask here when I
       | stumbled upon it on the TLA site [0].
       | 
       | The example starts out with a simple piece of code that exposes a
       | bug, then the bug gets fixed and the following question is asked:
       | 
       | > Does the issue go away because we've solved it, or because
       | we've made it rarer? Without being able to explore the actual
       | consequences of the designs, we can't guarantee we've solved
       | anything
       | 
       | > The purpose of TLA+, then, is to programmatically explore these
       | design issues. We want to give the tooling a system and a
       | requirements and it can tell us whether or not we can break the
       | requirement. If it can, then we know to change our design. If it
       | can't, we can be more confident that we're correct.
       | 
       | [0]: https://www.learntla.com/intro/conceptual-overview.html
        
       ___________________________________________________________________
       (page generated 2022-07-01 23:00 UTC)