On 2017-10-11, Marko Rauhamaa <ma...@pacujo.net> wrote: > Bill <bill_nos...@whoknows.net>: >> Steve D'Aprano wrote: >>> Bjarne Stroustrup is famous for designing one of the most >>> heavyweight, baraque, hard-to-understand, difficult-to-use >>> programming languages in common use. While C++ has many excellent >>> features, and is constrained by the need to be compatible with C, I >>> don't think many people believe that it is a well-designed language. >> >> It is a well-designed language. It is and was carefully >> thought out. One could argue that there are perhaps "too many >> ways" to do a given thing in Python (one could say it's >> features are "not orthogonal"). I'm sure you are familiar with >> where the language drew its name. I'm not here to "cast >> stones", I like Python. I just think that you shouldn't cast >> stones at C/C++. > > One is allowed to have opinions and express them. We are not talking > about religion here. > > I don't like everything in Python. On the whole, though, it is an > excellent language. In practice, it is the best available tool for most > programming needs I face. > > There are situations where C++ is suitable. Its primary > advantage over C is the automatic generation of the virtual > table. However, having programmed in C++ for a decade or so, it > has left a bad taste in my mouth. Its core philosophy (ie, do > the utmost at compile time) is cumbersome and misplaced. Until > very recently, C++ didn't offer a good way to implement > callback functions, for example.
Some other cool stuff in C++ and how it relates to a Python features as I understand them: Support for Resource Acquisition is Initialization (RAII) with constructors and destructors is a big advantage. Python's got this now, too, with with. C++'s big idea of allowing you to define you own data types and make them work precisely as you wish is a great idea, only it's too bad it requires such experience and skill to get it right. Python provides a similar feature with dynamic typing, though the urge to implement my own type that acts just like one of the built-in types hardly ever comes to me in Python, thanks to its fabulous standard library, which regularly uses these features. C++ compile-time polymorphism using templates is awesome and vital, but unfortunately (or fortunately?) abusable for compile-time data processing and foster-parent of horrid compiler error message bloat. Run-time polymorphism using inheritance is a feature that in both Python and C++ is easy to overcomplicate with the multiple inheritance feature. Alternatives are almost always preferable. Some people also appreciate C++'s improvements upon C's type sytem enough to compile all their C programs with C++. I dig const qualifiers, even though I'm comletely fine with their absence from Python. I'd use C++ for stuff--but Python is perfect for my needs, meanwhile the advantages I'd get from using C++ wouldn't be relevant to my work. If I ever need to write a device driver I'm really screwed. -- Neil Cerutti -- https://mail.python.org/mailman/listinfo/python-list