newsfilter.io
Conference Presentation, Webinar

Types, and Why You Should Care

  • Ron forecasts that scientific studies on programming language effectiveness using university sophomores over a semester will yield no useful results because they fail to capture scale, hard problems, or long-term collaboration, and that a six-year study is impossible to conduct, leading to the conclusion that science cannot definitively determine the "right" language.
  • Decisions on programming language selection are expected to rely on intuition, personal experience, and anecdotal evidence rather than controlled experiments, as the required conditions for large-scale, long-duration software development cannot be simulated in academic settings.
  • Ron predicts that dynamic languages like JavaScript require significant engineering effort yet remain unpredictable with potential performance swings of up to 1,000 times slower due to small changes, while interpreted vs. typed compiled language performance differences can reach a factor of 100 depending on the specific language.
  • Type systems are expected to primarily serve historical purposes of improving performance and human readability, though they can introduce complexity ranging from verbose code to terrifying error messages if the system is too expressive, necessitating a design "sweet spot" that balances expressiveness with manageability.
  • Ron expects typed languages to prevent specific bug classes such as null pointer errors (the "billion dollar mistake") and semantic logic errors, while also acting as true documentation and enabling automated invariant enforcement and refactoring, though they may interfere with developer plans if functionality does not align with the type structure.
  • For large-scale, correctness-critical systems with multiple collaborators, typed languages are recommended to reduce the number of required tests and ensure data dependencies and security invariants are enforced via global flow analysis, whereas untyped languages may be preferred for small-scale rapid prototyping or simple tasks requiring quick accessibility.
  • Jane Street's engineering environment is expected to involve diverse problems across market data, trading systems, and distributed systems, with an initial culture moving from untyped VBA to OCaml for superior speed and usability, prioritizing getting systems right over moving fast.
  • Ron predicts that misconceptions exist regarding the need for "super functional programming nerd" skills to apply at Jane Street, and expects his own interest in trading to evolve from non-existent to super fun and intellectually distinct from standard computer science studies.
  • The talk is structured to run for approximately 30 minutes followed by a two-minute break and a Q&A session, with the expectation that audience participation and discussion will be superior during the dedicated question period rather than during the presentation.
  • Ron expects to discuss type systems and static versus dynamic languages in a "relatively low temperature way," avoiding excessively incendiary statements while acknowledging that Java initially lacked built-in pairs and required verbose classes, a verbosity later reduced by generics, while OCaml utilizes type inference to minimize explicit annotations.
  • Even with type inference, typed languages are predicted to retain inherent verbosity compared to dynamic languages where types must be explicit, and learning a type system requires understanding both machine semantics and the distinct language of types that constrains them.
  • Ron notes that while small programs in dynamic languages like Python are often faster to write, typed languages provide benefits such as a "snap into place" property for testing well-typed ML programs and the ability to encode security invariants like preventing SQL injection through abstract types.