Best Programming Language | John Carmack and Lex Fridman

Lex Clips
4 Aug 202208:52

Summary

TLDRIn this insightful discussion, the speaker, considered by many as the greatest programmer ever, shares his views on the best programming language. He acknowledges Python's convenience but points out its inefficiencies, especially when compared to GPU tensor operations. He favors C++ for serious programming due to its simplicity and directness, which encourages good software engineering practices. He also discusses the importance of a language's ability to facilitate maintenance and handover between engineers, and touches on the simplicity of C, the malleability of Lisp, and the straightforwardness of Go and Rust, emphasizing that the best language is often the one currently in use.

Takeaways

  • πŸ’» The speaker uses Python for AI and ML work but doesn't consider it their native language, highlighting Python's convenience and potential performance issues.
  • πŸš€ Python can be significantly slower for certain operations compared to specialized libraries, such as those for GPU tensor operations.
  • 🌐 The speaker prefers C++ for serious programming due to its efficiency and control, despite not being a fan of modern template metaprogramming.
  • 🎼 A deep dive into Lisp and functional programming has influenced the speaker's coding style, emphasizing the importance of mutable state management.
  • πŸ”„ The longevity and adaptability of code are crucial, not just its initial writing speed or operational efficiency.
  • 🀝 C++ is good for knowledge transfer between engineers, although it may not be the best for this purpose according to the speaker.
  • πŸ‘Ž The simplicity of C is both criticized and appreciated for its potential security flaws and ease of understanding.
  • πŸ› οΈ The speaker values the malleability of Lisp but finds it daunting for large-scale projects due to the extensive abstractions it encourages.
  • πŸ”§ Google's Go language is praised for its simplicity, allowing easy onboarding for new programmers, which contrasts with more complex languages.
  • βš™οΈ Rust is mentioned as a modern language that the speaker has limited experience with, acknowledging its popularity but withholding judgment.

Q & A

  • What is the speaker's view on Python's performance compared to GPU tensor operations?

    -The speaker acknowledges Python's significant performance gap compared to GPU tensor operations, noting that Python can be thousands to potentially a million times slower in certain scenarios like triply nested loops.

  • What does the speaker appreciate about Python despite its performance issues?

    -The speaker appreciates Python's convenience and the ease with which it allows people to accomplish tasks that were not possible a decade ago, by simply importing different modules.

  • What programming language does the speaker consider for serious programming?

    -The speaker prefers C++ for serious programming, particularly a C-flavored version of C++, avoiding modern template meta-programming.

  • How does the speaker's experience with Lisp and functional programming influence their current coding practices?

    -The speaker's experience with Lisp and functional programming has influenced their C and C++ coding practices by adopting ideas such as avoiding random mutable state and promoting better software engineering practices.

  • What is the speaker's perspective on the importance of a programming language's lifespan?

    -The speaker emphasizes that the lifespan of a program is crucial, not just its initial writing or operation speed, but also its adaptability to changing situations and maintainability over time.

  • What challenges does the speaker identify with using multiple programming languages in a single project?

    -The speaker identifies challenges such as mixed language projects often being a mistake, leading to difficulties in maintaining and understanding the code across different parts of the project.

  • What does the speaker find appealing about the simplicity of C?

    -The speaker finds C's simplicity appealing because it allows anyone familiar with the language to jump in and understand the code without needing to learn new paradigms.

  • How does the speaker view the malleability of Lisp and its impact on code structure?

    -The speaker views Lisp's malleability as a double-edged sword; while it allows for significant customization, it can lead to a situation where large Lisp programs essentially become their own language, potentially complicating maintenance and understanding.

  • What is the speaker's opinion on the programming language Go?

    -The speaker acknowledges Go's simplicity and popularity, noting that despite criticisms for not being state-of-the-art, its straightforwardness allows programmers to jump right in and use it effectively.

  • What is the speaker's stance on Rust as a programming language?

    -The speaker has not formed a strong opinion on Rust, having only done basic work in it a few years ago, but acknowledges that it is a modern language that is often discussed in the programming community.

  • What does the speaker believe makes a great programmer?

    -The speaker believes that great programmers are rare and are not necessarily defined by the programming languages they use, but rather by their understanding of the fundamentals of a language and their ability to build systems that are maintainable and adaptable.

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Programming LanguagesSoftware DevelopmentPerformance IssuesPython EfficiencyC++ PracticesFunctional ProgrammingLanguage ComparisonDeveloper ExperienceCode MaintenanceTechnical InsightsIndustry Trends