Expert Talk: Zig Programming Language & Linters • Andrew Kelley & Jeroen Engels • GOTO 2022

Expert talk on Zig programming language and linters, discussing the importance of integrating linters with development workflow, handling complex codebases, and providing clear explanations for code suggestions.

Key takeaways
  • Linters are not just about reporting errors, but also providing suggestions for improvement.
  • A good linter should balance between being too lenient and too strict.
  • To use a linter effectively, it’s important to integrate it with the development workflow, such as using it on save in an IDE.
  • Refactoring is a key aspect of coding, and linters can help with that by providing suggestions for simplifying code.
  • Macros can make it difficult for linters to do their job, as they can change the code in complex ways.
  • Imperative programming can make it hard for linters to provide useful suggestions, as the order of operations matters.
  • A good linter should provide clear explanations for why it’s suggesting a particular change.
  • Having a linter integrated with the CI pipeline can help catch errors early and improve code quality.
  • Linters can help with code reuse by identifying unused variables and functions.
  • A good linter should be able to handle complex codebases and provide suggestions for improving code quality.
  • The speaker disagrees with the idea that there’s no reason to disable linter rules, as sometimes it’s necessary to balance between code quality and productivity.
  • Having a linter that can refactor code can be useful, but it’s important to have warnings rather than errors to allow for manual review.
  • The speaker recommends using a linter that has a good balance between being too lenient and too strict, and that provides clear explanations for its suggestions.
  • Integrated development environments (IDEs) can provide a better linter experience by integrating the linter with the editor and providing real-time feedback.
  • A good linter should be able to handle multiple languages and provide consistent suggestions across them.
  • The speaker thinks that it’s possible to have a linter that can refactor code, but it’s not necessary to have it for every language.
  • The speaker disagrees with the idea that all code should be written modularly, as sometimes it’s necessary to have some code that’s less modular.
  • Having a linter that can handle multiple languages can be useful, but it’s important to have a good understanding of the different languages and their quirks.
  • The speaker thinks that having a linter that can refactor code can be useful, but it’s not necessary to have it for every language.
  • Integrated development environments (IDEs) can provide a better linter experience by integrating the linter with the editor and providing real-time feedback.
  • A good linter should be able to handle complex codebases and provide suggestions for improving code quality.