Published Sep 3, 2019

Episode 86: Interview Dave Thomas

Explore the intersection of academia and industry with Dave Thomas as he delves into aligning research with real-world challenges, shares behind-the-scenes insights on the development of Eclipse, and discusses scaling Agile methodologies and the evolution of programming languages like Smalltalk and Ruby.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Smalltalk vs. Ruby

    contrasts Smalltalk and Ruby, highlighting their unique features and legacy. He appreciates Ruby's uniform object model and more readable syntax compared to Smalltalk, despite Ruby's metaprogramming complexities 1. Smalltalk, while praised for its readability and quick development capabilities, faced challenges due to vendor-driven platform strategies and the rise of Java 2.

    Smalltalk had the property that it let you get things done quite quickly. The programs were readable by people other than computer scientists.

    ---

       

    Type Systems

    The discussion on type systems reveals their role as constraint systems that enhance program correctness and bug detection. explains that static typing, while beneficial for IDE support, can be cumbersome due to complex APIs and coercions 3. He suggests that dynamic languages, through testing, offer similar reliability without the rigidity of static types.

    The experience isn't that programming in dynamic languages is less reliable than programming in static languages. That's not borne out.

    ---

       

    Language Complexity

    emphasizes the importance of simplicity in programming languages, arguing that fewer lines of code lead to better productivity and quality. He notes that languages like Lisp and Smalltalk offer orthogonal concepts that simplify development, contrasting with the complexity of languages like Java 4. Thomas also sees potential in languages that integrate features from multiple paradigms, such as Scala and Haskell, to create more efficient and expressive code 5.

    The essence of good language design is trying to leave out more things and try and make things more consistent.

    ---

Related Episodes