Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #71574

Re: two's complement idea

From David Brown <david.brown@hesbynett.no>
Newsgroups comp.lang.c++
Subject Re: two's complement idea
Date 2020-01-25 20:12 +0100
Organization A noiseless patient Spider
Message-ID <r0i3un$8sk$1@dont-email.me> (permalink)
References (4 earlier) <KqrWF.100712$UPz1.15399@fx15.am4> <h8vqe4Fiqq9U1@mid.individual.net> <4hBWF.107660$LY2.60603@fx23.am4> <r0ft7j$gun$1@dont-email.me> <lIMWF.216643$oQ3.163953@fx29.am4>

Show all headers | View raw


On 25/01/2020 02:19, Bart wrote:
> On 24/01/2020 23:05, David Brown wrote:
>> On 24/01/2020 13:19, Bart wrote:
> 
> 
>>> Your once in a million lines sounds extreme. None of my projects are 
>>> anywhere near that size. goto is inelegant but if it's the simplest 
>>> way to code something, then I will use it.
>>
>> I can only ever remember /once/ using "goto" in C code (and that was 
>> only for a while - it got removed after a refactoring).  I don't know 
>> how many lines I have written over the years, in all my work - I don't 
>> think it would be a million lines, but it is a great deal.  Different 
>> people code in different ways and have different requirements.
>>
>> I suspect you'll find "goto" occurring most in either badly written 
>> and badly structured code (we all know this kind of code exists, but 
>> lets ignore it for now), for generated code (again, we'll ignore 
>> that), or code where there is a strong emphasis on good performance 
>> even in the face of poor compilers (or no optimisation enabled) and 
>> older C standards.  For this kind of thing, there are going to be more 
>> situations where "goto" (or other unstructured code practices, like 
>> non-trivial switch case fall-throughs) can be a definite help in 
>> getting efficient results.
>>
>> When you have better tools (or don't care about performance), there 
>> are many more options available.  You can re-factor code into smaller 
>> functions, and leave nested loops with a "return" - in the knowledge 
>> that the compiler will inline these single-use static functions and 
>> give you just as efficient results.  You can add extra booleans for 
>> flags and put them in the conditionals for the loops - knowing the 
>> compiler will turn them into goto's.  You can duplicate code (not 
>> often a great idea, but sometimes the neatest and clearest solution), 
>> knowing the compiler will merge duplicate code sections without manual 
>> goto's or switch case fall-throughs.
>>
>> I am all in favour of using a coding technique if I think it is the 
>> simplest, clearest, and most maintainable option.  The reason I don't 
>> use goto's myself is that I have never found it to be the best choice 
>> for my code - not because of a particular allergy against it.
> 
> Well, I've never seen any actual code of yours, only fragments that you 
> might post, so I don't know what the cost might be in terms of 
> readability, or loss of localisation (eg. when you have to invent dummy 
> functions etc to avoid use of goto) or things like that. (Or how much 
> longer it takes to write such code.)

My code (especially my C code) is almost invariably written for 
customers, and not something I can publish.  Most code written by most 
programmers is like that.

("Readability" is a somewhat subjective quality, and always a balance 
between different factors, so I don't want to sound like my way of 
coding is the only way.  I code in the way that gives the best 
readability for the type of programming tasks I handle, with 
consideration for the customers and colleagues I have - I don't say my 
styles and habits are universally applicable.  Well, not /all/ of them, 
anyway.)

> 
> I can only repeat that the Linux kernel seems to use a lot, about 
> 163,000 gotos in 25Mloc (including headers) or 19Mloc (.c files only).
> 

You can repeat it until you are blue in the face - it is irrelevant for 
any purpose other than showing that at least some large C projects use a 
lot of gotos.  Personally, I am not particularly fond of some of the 
coding styles I have seen in the Linux kernel.

> That's a frequency of once every 152 or 117 lines.
> 
> Even within only the header files, there are 500 gotos in some 6M lines 
> of headers, or once every 12,000 lines; still far more that you write in 
> actual C code.
> 
> Or C++; as I said earlier, it's not clear how much C++ helps avoiding 
> gotos compared with C. C++-style exceptions would be handled by longjmp 
> in C? Then that wouldn't count as a goto.

You can probably take a guess at how much I use "longjmp".  I don't 
believe I have ever seen a case where I thought it was a remotely good 
idea.  (I am not a great fan of exceptions in C++ either - certainly not 
for the kind of coding I do on small systems where failure is not an 
option.  They are okay in Python, but that's a different kind of language.)

C++ RAII through constructors and destructors is what avoids many of the 
coding problems that are sometimes solved with "goto" in C.  It is not 
exceptions.

> 
> On the subject of never using a common feature of a language (or 
> development system), then I've never written a makefile. And in the last 
> 1.7Kloc pure C module I wrote, I didn't use a single macro.

A difference here is that makefiles are not part of the C or C++ 
languages, while macros are.  I don't know why you would mix these.

> 
> I tend to use gotos to share the same fragment of code within a 
> function. I once came up with a new feature to make that possible 
> without gotos, like in-place, lightweight, not-parameterised local 
> functions, but their use resembled Basic's GOSUB; I decided I might as 
> well just use goto!

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-11-28 12:19 -0800
  Re: two's complement idea "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2019-11-29 00:14 +0100
    Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2019-11-29 09:15 +0100
      Re: two's complement idea Bo Persson <bo@bo-persson.se> - 2019-11-29 10:58 +0100
        Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2019-11-29 12:49 +0100
    Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-12-07 07:53 -0800
      Re: two's complement idea Öö Tiib <ootiib@hot.ee> - 2019-12-07 08:22 -0800
        Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-01-10 20:44 -0800
          Re: two's complement idea Öö Tiib <ootiib@hot.ee> - 2020-01-10 23:44 -0800
            Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-01-14 07:08 -0800
              Re: two's complement idea Öö Tiib <ootiib@hot.ee> - 2020-01-14 08:42 -0800
                Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-01-21 02:09 -0800
                Re: two's complement idea James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-01-21 05:14 -0800
                Re: two's complement idea Daniel <danielaparker@gmail.com> - 2020-01-21 13:08 -0800
                Re: two's complement idea James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-01-22 00:07 -0500
                Re: two's complement idea Öö Tiib <ootiib@hot.ee> - 2020-01-21 23:21 -0800
                Re: two's complement idea Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-22 01:51 -0800
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-22 11:28 +0100
                Re: two's complement idea Bonita Montero <Bonita.Montero@gmail.com> - 2020-01-22 11:52 +0100
                Re: two's complement idea Öö Tiib <ootiib@hot.ee> - 2020-01-22 04:47 -0800
                Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-04-02 07:19 -0700
                Re: two's complement idea James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-04-02 08:07 -0700
                Re: two's complement idea boltar@nowhere.org - 2020-01-21 16:44 +0000
                Re: two's complement idea Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-01-21 20:01 +0000
                Re: two's complement idea boltar@nowhere.org - 2020-01-22 11:26 +0000
                Re: two's complement idea Christian Gollwitzer <auriocus@gmx.de> - 2020-01-22 20:04 +0100
                Re: two's complement idea Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-22 11:30 -0800
                Re: two's complement idea Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2020-01-22 19:57 +0000
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-23 10:03 +1300
                Re: two's complement idea boltar@nowhere.org - 2020-01-23 09:24 +0000
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-24 07:29 +1300
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-23 10:03 +1300
                Re: two's complement idea "Fred. Zwarts" <F.Zwarts@KVI.nl> - 2020-01-23 10:09 +0100
                Re: two's complement idea boltar@nowhere.org - 2020-01-23 09:29 +0000
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-24 01:08 +0000
                Re: two's complement idea boltar@nowhere.org - 2020-01-24 12:27 +0000
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-24 01:06 +0000
                Re: two's complement idea Bo Persson <bo@bo-persson.se> - 2020-01-24 10:07 +0100
                Re: two's complement idea Paavo Helde <myfirstname@osa.pri.ee> - 2020-01-24 11:36 +0200
                Re: two's complement idea Öö Tiib <ootiib@hot.ee> - 2020-01-24 17:34 -0800
                Re: two's complement idea Siri Cruise <chine.bleu@yahoo.com> - 2020-01-24 17:57 -0800
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-24 12:19 +0000
                Re: two's complement idea Bo Persson <bo@bo-persson.se> - 2020-01-24 14:19 +0100
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-24 14:11 +0000
                Re: two's complement idea Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-01-24 17:26 +0000
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-24 17:35 +0000
                Re: two's complement idea Paavo Helde <myfirstname@osa.pri.ee> - 2020-01-24 22:27 +0200
                Re: two's complement idea James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-01-24 23:21 -0500
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-25 11:06 +1300
                Re: two's complement idea Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-01-24 22:12 +0000
                Re: two's complement idea James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-01-24 23:24 -0500
                Re: two's complement idea Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-01-25 09:04 +0000
                Re: two's complement idea Öö Tiib <ootiib@hot.ee> - 2020-01-25 04:15 -0800
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-25 19:55 +0100
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-25 00:05 +0100
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-25 01:19 +0000
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-25 19:50 +1300
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-25 11:57 +0000
                Re: two's complement idea Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2020-01-25 13:42 +0000
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-25 14:58 +0000
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-26 07:58 +1300
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-25 20:34 +0100
                Re: two's complement idea Öö Tiib <ootiib@hot.ee> - 2020-01-25 12:41 -0800
                Re: two's complement idea Paavo Helde <myfirstname@osa.pri.ee> - 2020-01-26 16:08 +0200
                Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-01-27 02:20 -0800
                Re: two's complement idea Paavo Helde <myfirstname@osa.pri.ee> - 2020-01-27 15:03 +0200
                Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-02-15 06:44 -0800
                Re: two's complement idea Paavo Helde <myfirstname@osa.pri.ee> - 2020-03-06 10:18 +0200
                Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-04-02 07:05 -0700
                Re: two's complement idea Paavo Helde <myfirstname@osa.pri.ee> - 2020-04-02 20:03 +0300
                Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-04-04 12:37 -0700
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-26 07:45 +1300
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-25 19:56 +0000
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-26 09:49 +1300
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-25 21:33 +0000
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-26 11:00 +1300
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-25 22:23 +0000
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-26 11:46 +1300
                Re: two's complement idea Paavo Helde <myfirstname@osa.pri.ee> - 2020-01-26 10:55 +0200
                Re: two's complement idea Öö Tiib <ootiib@hot.ee> - 2020-01-26 03:47 -0800
                Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-01-27 01:28 -0800
                Re: two's complement idea Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-01-25 22:22 +0000
                Re: two's complement idea James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-01-25 18:24 -0500
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-26 12:54 +0100
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-26 12:44 +0000
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-26 14:58 +0100
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-26 14:53 +0000
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-26 19:10 +0100
                Re: two's complement idea Robert Wessel <robertwessel2@yahoo.com> - 2020-01-26 13:20 -0600
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-26 20:51 +0000
                Re: two's complement idea Robert Wessel <robertwessel2@yahoo.com> - 2020-01-26 21:02 -0600
                Re: two's complement idea Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-26 19:06 -0800
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-27 18:50 +0000
                Re: two's complement idea Robert Wessel <robertwessel2@yahoo.com> - 2020-01-27 14:18 -0600
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-27 22:13 +0100
                Re: two's complement idea Bart <bc@freeuk.com> - 2020-01-27 21:38 +0000
                Re: two's complement idea Robert Wessel <robertwessel2@yahoo.com> - 2020-01-27 19:37 -0600
                Re: two's complement idea Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-01-27 19:15 -0800
                Re: two's complement idea "Fred. Zwarts" <F.Zwarts@KVI.nl> - 2020-01-28 11:45 +0100
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-27 16:31 +1300
                Re: two's complement idea Manfred <noname@add.invalid> - 2020-01-26 18:50 +0100
                Re: two's complement idea Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-01-26 18:57 +0000
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-26 20:46 +0100
                Re: two's complement idea Robert Wessel <robertwessel2@yahoo.com> - 2020-01-26 13:14 -0600
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-26 22:15 +0100
                Re: two's complement idea Robert Wessel <robertwessel2@yahoo.com> - 2020-01-27 21:06 -0600
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-28 13:08 +0100
                Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-01-27 01:50 -0800
                Re: two's complement idea Ian Collins <ian-news@hotmail.com> - 2020-01-27 08:21 +1300
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-25 20:14 +0100
                Re: two's complement idea David Brown <david.brown@hesbynett.no> - 2020-01-25 20:12 +0100
                Re: two's complement idea Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-01-27 07:48 -0800
                Re: two's complement idea Bonita Montero <Bonita.Montero@gmail.com> - 2020-02-18 18:46 +0100

csiph-web