How different are C and C++? Can I still say C/C++?

Jacob Sorber
31 Aug 202110:25

Summary

TLDRIn this video, the host explores the differences between C and C++, addressing the cultural divide that has emerged between the two programming communities. They discuss the historical context, with Dennis Ritchie's creation of C and Bjarne Stroustrup's subsequent development of C++ to include object-oriented features. The host distinguishes between 'big C++', referring to the language syntax and tools, and 'little C++', representing the community's standards and recommendations. They argue for the practical use of C features in C++ code, despite community preferences, and encourage a more inclusive view of the language's capabilities.

Takeaways

  • 😀 The video discusses the differences between C and C++, aiming to clarify confusion for new programmers.
  • 📚 Dennis Ritchie invented C, and later Bjarne Stroustrup created C++ to include features like classes and objects.
  • 🔍 C++ is often considered 'a better C' with additional features such as data abstraction, object-oriented programming, and generic types.
  • 🗣️ The speaker suggests that C should ideally be a subset of C++ for simplicity, but acknowledges it's not quite the case.
  • 🚀 The evolution of C++ from 1998 to 2021 has led to some developers being sensitive about how C and C++ are discussed together.
  • 👥 There's a cultural divide where 'Big C++' refers to the language syntax and tools, while 'Little C++' refers to the community standards and recommendations.
  • 🛠️ C++ allows for low-level operations and high performance, which sets it apart from languages that completely abstract away low-level features.
  • 💡 The video points out that C++ community standards often discourage the use of certain features like unions and character pointers.
  • 📝 The script suggests that teaching C++ to beginners can be challenging, leading to recommendations that simplify the language for educational purposes.
  • 🤔 The video concludes by encouraging a pragmatic approach to using C++, acknowledging that community standards are not always one-size-fits-all.

Q & A

  • What is the main difference between C and C++ as discussed in the video?

    -C++ is an extension of C with additional features such as data abstraction, object-oriented programming, and generic types. It was designed to be 'a better C' by Bjarne Stroustrup, who aimed to add classes and objects to C without losing its efficiency and low-level access capabilities.

  • Why do some C++ developers get upset when C and C++ are discussed together?

    -Some C++ developers feel that the two languages should not be conflated because C++ has evolved significantly with new features and best practices that differentiate it from C. This cultural and philosophical divide has led to a sense of distinction between the two communities.

  • What is the historical context behind the creation of C++?

    -C++ was created by Bjarne Stroustrup as an extension of C, which was initially developed by Dennis Ritchie. Stroustrup wanted to add object-oriented features to C, leading to the creation of C++.

  • What does the term 'Big C++' refer to in the video?

    -The term 'Big C++' refers to the C++ language syntax, the compiler, and the tools, which encompass the broad technical capabilities of the language.

  • What is meant by 'Little C++' in the context of the video?

    -'Little C++' refers to the C++ culture, community recommendations, and the standard library, which represent the collective best practices and stylistic preferences of the C++ community.

  • Why does the video suggest that C is almost a subset of C++?

    -Most C code can compile with a C++ compiler with little or no change, indicating that C is almost a subset of C++. However, it's not a complete subset due to differences in language features and community standards.

  • What are some of the community standards in 'Little C++' that are discouraged?

    -In 'Little C++', the community discourages the use of unions, passing pointer arguments, character pointers, and including certain headers like string.h. Instead, they recommend using features like standard variant, references, the string class, and smart pointers.

  • What is the core philosophy behind C++ that prevents it from removing certain features?

    -The core philosophy of C++ is to add features like object-oriented programming and data encapsulation without losing the ability to be fast, lightweight, and low-level. It also emphasizes that programmers should only pay for what they use, which means not removing features that some might find useful.

  • Why does the video mention that main functions in C++ programs can be problematic according to 'Little C++' standards?

    -The main functions in C++ programs typically use C-style strings through character pointers in their argument lists, which 'Little C++' standards discourage in favor of more modern and safer alternatives like the string class.

  • What is the stance of the video creator on the use of C-style strings in C++ code?

    -The video creator acknowledges that C-style strings are part of the C++ language and are totally legal to use. They express a preference for pragmatism over strict adherence to 'Little C++' community standards, especially in contexts where C-style strings make sense, such as in embedded systems programming.

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
C ProgrammingC++ FeaturesLanguage EvolutionCommunity StandardsProgramming HistoryCode Best PracticesType SafetyObject-OrientedLanguage PhilosophyC++ Culture