Compatibility and legacy in language evolution
Jan Claeys wrote:
Op za, 09-09-2006 te 13:49 -0700, schreef Radenski, Atanas:
Bjarne Stroustrup was educated in the Simula tradition and recognized the benefits of objects, so he decided to improve C by adding objects. Most notably, Stroustrup preferred compatible design in his transition from C to C++. Indeed, C programs are C++ programs as well.
That's not true and mr. Stroustrups own books explain how and why; even basic C programs might be invalid as C++ programs (or they work different in C than in C++, which is even worse).
Strictly speaking this is true, but Mr. Stroustrups own papers also explain how important the full C/C++ compatibility is - and that achieving it is his ideal (sect. 5 in this paper): http://www.research.att.com/~bs/compat_short.pdf
Op za, 09-09-2006 te 17:53 -0700, schreef Radenski, Atanas:
Strictly speaking this is true, but Mr. Stroustrups own papers also explain how important the full C/C++ compatibility is - and that achieving it is his ideal
Well, strictly speaking language A can only be fully compatible with language B and have more features if language B has a mechanism for extension that ignores unknown features. Considering that C has no such mechanism, C++ will never be 100% compatible with C. -- Jan Claeys
On 9/12/06, Jan Claeys <lists@janc.be> wrote:
Op za, 09-09-2006 te 17:53 -0700, schreef Radenski, Atanas:
Strictly speaking this is true, but Mr. Stroustrups own papers also explain how important the full C/C++ compatibility is - and that achieving it is his ideal
Well, strictly speaking language A can only be fully compatible with language B and have more features if language B has a mechanism for extension that ignores unknown features. Considering that C has no such mechanism, C++ will never be 100% compatible with C.
I think the point is that a C programmer can start writing C++ programs without having to change anything -- legal C programs will still run just fine in C++. Then the C programmer can gradually learn whatever parts of the extensions of C++ at whatever rate, and slowly evolve into a C++ programmer. --Joshua Zucker
On 9/12/06, Joshua Zucker <joshua.zucker@gmail.com> wrote:
I think the point is that a C programmer can start writing C++ programs without having to change anything -- legal C programs will still run just fine in C++. Then the C programmer can gradually learn whatever parts of the extensions of C++ at whatever rate, and slowly evolve into a C++ programmer.
--Joshua Zucker
For me it's less a question of what runs what in purely syntactical terms -- if A++ runs A unchanged, then I'd tend to call A++ an "extended version" of A i.e. A++ is the "full language" with A a kernel, core or subset thereof -- and more a question of learning curves. What's a realistic transition? How might we recruit to our language and not loose too many, even the ready and willing, over some cliff? Python is more a cosmopolitan meeting ground of friendly ideas from several good languages (albiet some of them obscure) than it is remote or alien, like J is, or M. Python feels friendly, not intimidating. That's not just because it's agile, although that's a big part of it. I talk about this in my presentation to the London Knowledge Lab earlier this year -- about how I "feel like a genius" when I get my J stuff working, yet I'm suspicious of that. I prefer "an ordinary experience" most of the time, and I get that in Python. http://bfi.org/pythonicmathematics One cool part about all this is I'm *not* required to "abandon J" just because I like Python or vice versa. When it comes to computer languages, I don't believe in monogamy. Don't get married to Python, just hook up. We'll gladly share you with another. Kirby
participants (4)
-
Jan Claeys -
Joshua Zucker -
kirby urner -
Radenski, Atanas