Published Sep 3, 2019

Episode 14: Interview Ted Neward

Explore the evolution of C# and .NET through Ted Neward's lens as he contrasts relational syntax in LINQ with traditional ORM solutions, delves into the world of functional programming and concurrency models in F#, and compares the technical and cultural landscapes of .NET and Java.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • .NET vs Java

    In this episode, explores the nuanced differences between .NET and Java, two platforms often seen as rivals. He describes them as "evil twin brothers," highlighting their similar genetic makeup but distinct cultural environments 1. While .NET excels in Windows-specific applications, Java shines in cross-platform scenarios, each leveraging their unique strengths in enterprise and user interface domains 2. Ted also notes the faster pace of language evolution in C#, driven by Microsoft's centralized control, compared to Java's community-driven approach 3.

       

    Extension Methods

    Ted explains the concept of extension methods in C#, a feature that allows developers to add new methods to existing classes without altering their definitions. This capability is akin to open classes in Ruby, offering flexibility but also posing risks if misused 4. He illustrates how extension methods adapt based on context, such as querying in-memory collections versus databases, enhancing the language's versatility 5. Ted emphasizes the compiler's role in generating code that appears as instance methods, simplifying the programmer's task 6.

       

    Innovation Debate

    The discussion shifts to language innovation, where Ted contrasts the dynamic evolution of .NET with Java's more conservative approach. He praises C#'s introduction of delegates, a feature he long advocated for in Java, and notes Java's recent steps towards dynamic method invocation 7. Ted highlights the diversity of languages on both platforms, mentioning Scala's roots in Java and the potential for hybrid approaches that blend static and dynamic typing 8. This innovation is crucial for keeping pace with evolving programming needs and ensuring robust language ecosystems.

Related Episodes