From mboxrd@z Thu Jan 1 00:00:00 1970 From: steffen@sdaoden.eu (Steffen Nurpmeso) Date: Thu, 30 Nov 2017 16:44:04 +0100 Subject: [TUHS] RIP J.F.Ossanna In-Reply-To: <20171130024816.GI16794@mcvoy.com> References: <003d01d367dc$cd3e8910$67bb9b30$@ronnatalie.com> <20171128001543.GG3430@mcvoy.com> <20171129190055.9ZFVf%steffen@sdaoden.eu> <20171130024816.GI16794@mcvoy.com> Message-ID: <20171130154404.-Z1KH%steffen@sdaoden.eu> Larry McVoy wrote: |On Wed, Nov 29, 2017 at 08:00:55PM +0100, Steffen Nurpmeso wrote: |> Larry McVoy wrote: |>|On Mon, Nov 27, 2017 at 07:06:51PM -0500, Ron Natalie wrote: |>|> 1977 marks my entry into the world of UNIX. I've always stated \ |>|> there was |>|> only one person who truly understood nroff and he was dead. |>|> I mourn the fact that of all the UNIX greats I've met, I missed out on |>|> Ossanna. |> |>|I think one could argue that James Clark has a pretty good handle on |>|roff (having written the GNU version of nroff/troff/tbl/eqn/pic etc). |> |> And Werner Lemberg, who carried the torch for the last almost two |> decades. He brought in some really great improvements, like |> arguments for strings, which allows to write pretty much TeX like |> a.k.a. inline if you want to (as in "this is \*[I talic] text"). | |Yep. James exited stage left and Werner stepped in. I mean no disrespect |to anyone, I was just saying that James has a really good handle on roff, |he redid it all. I admire him for doing so (even though I curse the fact |that he did it in C++). The original source was no free code back then, so he did it for the free and open software world. Thankfully. And i do not know, i mean C++ was in 1989-1992, when he did most of the work as far as i can tell from a shallow look, a class, later template extension layer for plain C, not that overly huge stands-by-itself monster that i call it now. I am absolutely in favour and a of classes and objects, the encapsulation they provide, the method-on-object rather than object-on-function that you have with C. (Multiple) Inheritance including automatic upcasts (to the given parent). Virtual function pointer tables, automatically managed. And "simple" templates. For example, myself, in the process of creating my own fork, can write (globbering the global namespace) color &assign_rgb(rf_ui32 r, rf_ui32 g, rf_ui32 b){ m_scheme = scheme_rgb; return set_red(r).set_green(g).set_blue(b); } color &set_red(rf_ui32 c){ rf_ASSERT(scheme() == scheme_rgb); m_comps[0] = rf_min(c, max_val); return *this; } ... instead of rf_color *rf_color_assign_rgb(rf_color *self, rf_ui32 r, ....){ self->c_scheme = rf_COLOR_SCHEME_RGB; self->c_comps[0] = rf_MIN(r, rf_COLOR_MAX_VAL); ... return self; } and programming all that out over and over again. (Or using macros with side-effects. Or relying on inline functions.) And that is a simple object with a short name. References are unfortunate in my opinion, but you will not see any light if you try doing C++ without them because they are omnipresent for core functionality like standard copy constructors etc. Like many other things, including the complete departure from an underlaying C standard. C++03/C99 or so i would have appreciated. But as long as -fno-rtti -fno-exceptions is possible i can somehow live with it. (Let aside the fact that i have to live with it no matter what bloat the C++ standard introduces next.) And then C is not what it was no more, too, and unfortunately the usage-makes-fun guideline from what Plan9 documents and extends onto ISO C89 was not what the ISO C people looked at when they did. Well. Maybe if he would have known what C++ ends up as he would have used C instead? That would be an interesting question. Myself i currently appreciate coming back to a C++ codebase, however, because thinking in objects is my personal way of dealing with programming, that is how i really got used to it, anyway. --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)