news.volyx.in

Formal methods and the future of programming (blog.janestreet.com)

378 points by eatonphil · 75 days ago · 126 comments on HN

Article summary

Jane Street, a company that has been skeptical of formal methods in the past, is now exploring their use due to the emergence of agentic coding. Formal methods, which involve using mathematical techniques to prove the correctness of software, may help alleviate the verification bottleneck and provide better feedback to agents. The company believes that formal methods can be made more accessible and useful with the help of models and agents. Jane Street is building a team to focus on formal methods and is looking for people to join their efforts.

Main themes

  • Formal methods
  • Agentic coding
  • Software verification
  • Programming languages
  • Artificial intelligence
  • Code quality

What commenters say

  • Formal methods can help alleviate the verification bottleneck and provide better feedback to agents, but may not guarantee that the specification correctly reflects reality.
  • The use of formal methods is not a silver bullet and may not eliminate all bugs, but can improve the quality of software.
  • Formal verification is only useful if the specification accurately reflects the desired behavior of the system, and creating such a specification can be a challenging task.
  • The application of formal methods may be limited to certain domains where the semantics are well-defined, such as logical circuits and kernels.
  • The emergence of agentic coding has changed the cost-benefit calculus of formal methods, making them more viable for widespread use.
  • Formal methods can be seen as a luxury that only certain companies, like Jane Street, can afford to invest in, due to the high overhead of implementation.
  • The use of formal methods requires a deep understanding of the problem domain and the ability to create accurate specifications, which can be a significant challenge.
  • Formal methods can be used to verify the correctness of software, but may not be necessary for all types of programming, such as exploratory work or UI development.