From owner-freebsd-current@FreeBSD.ORG Mon Feb 16 01:11:42 2009 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 02439106566B for ; Mon, 16 Feb 2009 01:11:42 +0000 (UTC) (envelope-from cpghost@cordula.ws) Received: from fw.farid-hajji.net (fw.farid-hajji.net [213.146.115.42]) by mx1.freebsd.org (Postfix) with ESMTP id 52F188FC0A for ; Mon, 16 Feb 2009 01:11:41 +0000 (UTC) (envelope-from cpghost@cordula.ws) Received: from phenom.cordula.ws (phenom [192.168.254.60]) by fw.farid-hajji.net (Postfix) with ESMTP id C9390325F1; Mon, 16 Feb 2009 01:52:36 +0100 (CET) Date: Mon, 16 Feb 2009 01:52:36 +0100 From: cpghost To: Marcel Moolenaar Message-ID: <20090216005236.GA1751@phenom.cordula.ws> References: <4995BB1B.7060201@icyb.net.ua> <20090213231513.GA20223@duncan.reilly.home> <4997F105.5020409@icyb.net.ua> <499811DF.6030905@incunabulum.net> <20090215151318.0d17bfb9@ernst.jennejohn.org> <499835BE.3000705@gmx.de> <8EF8771C-76D8-4556-96B2-B97B35573CBD@mac.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8EF8771C-76D8-4556-96B2-B97B35573CBD@mac.com> User-Agent: Mutt/1.5.18 (2008-05-17) Cc: freebsd-current@freebsd.org Subject: Re: weeding out c++ keywords from sys/sys X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Feb 2009 01:11:42 -0000 On Sun, Feb 15, 2009 at 09:50:04AM -0800, Marcel Moolenaar wrote: > On Feb 15, 2009, at 7:33 AM, Christoph Mallon wrote: > > More robust error handling and less tedious resouce management > > directly come to mind: > > Just look at normal C functions which allocate resources and have > > multiple points which can fail. They are the usual mess of if()s, > > goto error and lots of cleanup code. Further all this code looks > > pretty much the same in several modules. In C++ you write the > > resource handling code once (constructors/destructors) and then you > > cannot forget to clean up, because thanks to scoping and defined > > life ranges it happens automatically. > > While on the surface this looks better, under the hood > it's just the same. Worse in most likelihood, because > with C the programmer writes the logic that is known to > be needed (assuming no bugs). With C++ it's the compiler > that generates code that handles all possible scenarios, > and goes beyond what is strictly needed -- as such the > cost tends to be higher, even when there are no errors > or exceptions. > > I'm not saying this is a problem. All I'm saying is that > you move responsibility from the programmer to the compiler > and in general this comes at a (runtime_ cost. One we may > very well accept, mind you... You just have to know how to use C++ properly and avoid some constructs to create efficient code. Have a look at L4::Pistachio for an example: http://l4ka.org/projects/pistachio/ > Marcel Moolenaar > xcllnt@mac.com -cpghost. -- Cordula's Web. http://www.cordula.ws/