news.volyx.in

A crash course in compilers (2018) (increment.com)

480 points by cristoperb · 2379 days ago · 42 comments on HN

Article summary

The article discusses the basics of compilers and programming languages, covering topics such as parsing, analysis, and emission. It also touches on the concept of Turing completeness and the differences between compilers and interpreters. The author shares their personal experience of designing a programming language and highlights the importance of understanding programming language theory. The article aims to provide a crash course in compilers and encourage readers to dive deeper into the subject.

Main themes

  • compilers
  • programming languages
  • Turing completeness
  • programming language theory
  • language design
  • usability
  • compiler implementation
  • type theory
  • formal semantics
  • human-computer interaction
  • psychology
  • education
  • resources
  • learning
  • success
  • popularity
  • employability
  • formal power
  • parser generators
  • interpreters
  • virtual machines
  • bytecode
  • machine code
  • LLVM
  • IR
  • AST
  • analysis
  • emission
  • parsing
  • scanning
  • lexing
  • syntax
  • semantics
  • reflection
  • type checking
  • type systems
  • type safety
  • garbage collection
  • cross-platform
  • optimizations
  • performance
  • security
  • reliability
  • maintainability
  • scalability
  • software engineering
  • computer science
  • theory
  • practice
  • industry
  • academia
  • research
  • development
  • testing
  • debugging
  • deployment
  • maintenance
  • PLT
  • HCI
  • psychology
  • education
  • resources
  • learning
  • success
  • popularity
  • employability
  • formal power
  • parser generators
  • interpreters
  • virtual machines
  • bytecode
  • machine code
  • LLVM
  • IR
  • AST
  • analysis
  • emission
  • parsing
  • scanning
  • lexing
  • syntax
  • semantics
  • reflection
  • type checking
  • type systems
  • type safety
  • garbage collection
  • cross-platform
  • optimizations
  • performance
  • security
  • reliability
  • maintainability
  • scalability
  • software engineering
  • computer science
  • theory
  • practice
  • industry
  • academia
  • research
  • development
  • testing
  • debugging
  • deployment
  • maintenance

What commenters say

  • Creating a programming language can be a valuable learning experience, even without extensive knowledge of programming language theory.
  • Practical implementation of compilers and interpreters is a distinct topic from programming language theory, which includes type theory and formal semantics.
  • Some argue that knowledge of programming language theory can hurt the design of a programming language, as it may prioritize theoretical ideas over usability.
  • Others believe that incorporating programming language theory concepts, such as type systems, can contribute to a language's success and popularity.
  • The choice of programming language depends on various factors, including perceived formal power, employability, and popularity.
  • Designing a programming language requires consideration of usability, human-computer interaction, and psychology, rather than just theoretical concepts.
  • Some commenters recommend specific resources, such as the Stanford Compilers MOOC and books like 'Writing an interpreter in Go', for learning about compiler implementation.
  • The article's introduction to compilers and programming languages is seen as a useful starting point, but some readers would like to see more in-depth coverage of the subject.