From owner-freebsd-hackers@FreeBSD.ORG Fri Dec 5 09:30:10 2008 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4F7321065675 for ; Fri, 5 Dec 2008 09:30:10 +0000 (UTC) (envelope-from erikt@midgard.homeip.net) Received: from ch-smtp01.sth.basefarm.net (ch-smtp01.sth.basefarm.net [80.76.149.212]) by mx1.freebsd.org (Postfix) with ESMTP id CC7828FC13 for ; Fri, 5 Dec 2008 09:30:09 +0000 (UTC) (envelope-from erikt@midgard.homeip.net) Received: from c83-255-48-78.bredband.comhem.se ([83.255.48.78]:62403 helo=falcon.midgard.homeip.net) by ch-smtp01.sth.basefarm.net with esmtp (Exim 4.68) (envelope-from ) id 1L8X0i-0003Is-4e for freebsd-hackers@freebsd.org; Fri, 05 Dec 2008 10:30:09 +0100 Received: (qmail 85056 invoked from network); 5 Dec 2008 10:30:05 +0100 Received: from owl.midgard.homeip.net (10.1.5.7) by falcon.midgard.homeip.net with ESMTP; 5 Dec 2008 10:30:05 +0100 Received: (qmail 29547 invoked by uid 1001); 5 Dec 2008 10:30:05 +0100 Date: Fri, 5 Dec 2008 10:30:05 +0100 From: Erik Trulsson To: Garrett Cooper Message-ID: <20081205093005.GA29478@owl.midgard.homeip.net> References: <7d6fde3d0812040324y3bf0901cy1f4a6d961362c314@mail.gmail.com> <20081205072229.GE18652@hoeg.nl> <7d6fde3d0812050034y43a70ce8i49fbba92f9c8943b@mail.gmail.com> <7d6fde3d0812050035u6e3ea930o9e093830a8608444@mail.gmail.com> <20081205084441.GA29312@owl.midgard.homeip.net> <7d6fde3d0812050050l57684eebkf14f252d78b68ec0@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7d6fde3d0812050050l57684eebkf14f252d78b68ec0@mail.gmail.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Originating-IP: 83.255.48.78 X-Scan-Result: No virus found in message 1L8X0i-0003Is-4e. X-Scan-Signature: ch-smtp01.sth.basefarm.net 1L8X0i-0003Is-4e 1b0207a258bc302f531a5addaef8a2dd Cc: FreeBSD Hackers , Maksim Yevmenkin Subject: Re: RFC: small syscons and kbd patch X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Dec 2008 09:30:10 -0000 On Fri, Dec 05, 2008 at 12:50:38AM -0800, Garrett Cooper wrote: > On Fri, Dec 5, 2008 at 12:44 AM, Erik Trulsson wrote: > > On Fri, Dec 05, 2008 at 12:35:31AM -0800, Garrett Cooper wrote: > >> On Thu, Dec 4, 2008 at 11:22 PM, Ed Schouten wrote: > >> > * Maksim Yevmenkin wrote: > >> >> the idea was to ensure that kbd->kb_locked variable only takes values > >> >> 0 (zero) and 1 (one). > >> > > >> > I often use constructs like these to do that: > >> > > >> > foo = bar ? 1 : 0; > >> > > >> > Maybe !!bar is a lot shorter to write, I think the line above is a lot > >> > easier to read. > >> > >> Indeed. I had no idea (and I would assume that many people wouldn't in > >> my similar level of systems programming) what in the work you were > >> trying to do above with that line. The one-line conditional is > >> universal in almost all major high-level language dialects I've hit, > >> minus Python and Tcl. > >> -Garrett > > > > The !!bar construction to map {0, not-0} to {0,1} is fairly common in C > > programming, and I would certainly expect any experienced C programmer to > > recognize it. > > (I feel like I'm getting off on a bikeshed topic, but...) > > 1. What dialect of C was it defined in? Is it still used in the > standard dialect (honestly, this is the first time I've ever seen it > before, but then again I am a younger generation user)? The '!!x' construct is well defined in all dialects of C as far as I know. It is after all just using the standard '!' logical negation operator twice in a fairly straight-forward manner. If you know what the '!' operator does it should not be too difficult to figure out what applying it twice would do, even if one has never seen it done that way before. > 2. Is it still taught in schools (I didn't learn it when I was taught > C)? If not in schools, what about the Richie text (it's sort of like > the defacto C programming standard book of course)? Since I did not learn C in a school I have no idea what is (or has been) taught in schools in that regard. As for K&R I must admit to never having read it. It is however one (of many) idiomatic constructions in C that I would not really expect to be explicitly taught in a class. It is rather something I would expect programmers to either come up with on their own or to encounter when reading other peoples programs. > 3. What's the real loss of going to `? :', beyond maybe 3 extra > keystrokes if it's easier for folks who may not be as experienced to > read? An inexperienced C programmer who do not understand the '!!x' construct is not a programmer I would count on being familiar with the '? :' operator either. Besides, I personally find the corresponding '? :' construction harder to read. -- Erik Trulsson ertr1013@student.uu.se