The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,840 other followers

Archive for the ‘C++’ Category

How to Design Early Returns in C++ (Based on Procedural Programming) – Fluent C++

Posted by jpluimers on 2019/05/15

One more thing to take away from Procedural Programming: It’s Back? It Never Went Away – Kevlin Henney [ACCU 2018] – YouTube was explained in [WayBack] How to Design Early Returns in C++ (Based on Procedural Programming) – Fluent C++.

Though in C++, it applies to all programming languages that stem from a procedural background (Pascal, C#, Java, golang, to name just a few).

The article is about keeping an if/else-if/else tree, even when they can be removed becomes some of their bodies perform an early return, as

In C++, as well as in other languages, the return keyword has two responsibilities:

  • interrupting control flow,
  • yielding a value.

It basically comes down to this argument:

Essentially, the argument for Code #1 is that you need to know less to understand the structure of the code.

Indeed, if we fold away the contents of the if statements, Code #1 becomes this:

The structure of the code is very clear. There are 4 different paths based on the year, they’re independent from each other, and each path will determine the boolean result of the function (if it doesn’t throw an exception).

Now let’s see how Code #2 looks like when we fold away the if statements:

And now we know much less. Do the if statements contain a return? Maybe.

Do they depend on each other? Potentially.

Do some of them rely on the last return false of the function? Can’t tell.

With Code #2, you need to look inside of the if statement to understand the structure of the function. For that reason, Code #1 requires a reader to know less to understand the structure. It gives away information more easily than Code #2.

–jeroen

via [WayBack] Kevlin Henney – Google+: How to Design Early Returns in C++ (Based on Procedural Programming) – Fluent C++

Posted in .NET, C, C#, C++, Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »

Value types not having parameterless constructors…

Posted by jpluimers on 2019/03/27

The list below is based on a G+ discussion in a single language, but has way broader aspects.

It’s on value types, mutability, parameterless constructors and expectations of compiled code.

I’ve bitten myself in the foot with mutable types in too many languages too often, so I started advocating this years ago at clients, and now in this blog-post.

TL;DR:

  • some languages disallow parameterless constructors: C++, C# and Delphi are examples
  • this historically stems from the C++ and C# background
  • it has to do with them not wanting to automatically call them upon array initialisation taking a lot of CPU time
  • most languages do not stop you from making mutable value types, but in practice your value types should be immutable as otherwise you will open a can of worms, for instance you will have a hard time:
    • preventing threading issues
    • making code following functional patterns
    • scaling your code by making your algorithms supporting parallel execution
  • parameterless constructors include constructors with parameters having default values

Some links that explain this in more depth:

The “just pass them as reference” often seen as reason to explain “mutable value types are OK” is exactly describing why they are not OK.

–jeroen

Posted in .NET, C#, C++, Delphi, Development, Software Development | 2 Comments »

gdbgui – browser based debugger for C, C++, go, rust, Fortran. Modern gdb frontend.

Posted by jpluimers on 2019/03/05

[WayBack] gdbgui – browser based debugger for C, C++, go, rust, Fortran. Modern gdb frontend.: gdbgui (gnu debugger graphical user interface)

Via: [WayBack] Browser-based debugger for C, C++, go, rust, and more – written in Python with Flask. https://github.com/cs01/gdbgui Easy installation via PyPI: pip i… – Joe C. Hecht – Google+

–jeroen

Posted in C, C++, Debugging, Development, Fortran, GDB, Go (golang), Python, Scripting, Software Development | Leave a Comment »

performance – Why is this C++ code faster than my hand-written assembly for testing the Collatz conjecture? – Stack Overflow

Posted by jpluimers on 2019/02/28

Geek pr0n at [WayBackperformance – Why is this C++ code faster than my hand-written assembly for testing the Collatz conjecture? – Stack Overflow

Via: [WayBack] Very nice #Geekpr0n “Why is C++ faster than my hand-written assembly code?” The comments are of high quality i… – Jan Wildeboer – Google+

–jeroen

Posted in Assembly Language, C, C++, Development, Software Development, x64, x86 | Leave a Comment »

Delphi and C++ builder Platform Status

Posted by jpluimers on 2018/12/28

Almost all pages at the Embarcadero DocWiki have an embedded product version in the URL or get redirected to one.

One of the notable exceptions is the [WayBackPlatform Status:

The following table shows supported platforms and operating systems for different RAD Studio versions.

* (star) sign next to an operating system indicates that there is a known issue with that operating system and a corresponding RAD Studio version.

To see the workaround for that particular issue, click on the name of the operating system or scroll down to the appropriate section.

It got introduced in 2015 ([WayBackNew DocWiki RAD Studio, Delphi and C++Builder Platform Status Page – Community Blogs – Embarcadero Community) and is maintained at irregular intervals.

For some history: https://web.archive.org/web/*/http://docwiki.embarcadero.com/PlatformStatus/en/Main_Page

–jeroen

via: [WayBack] Summary page showing supported platforms and OS versions for XE4 and upwards, as well as links to known issues for specific versions… – Lars Fosdal – Google+

Posted in C++, C++ Builder, Delphi, Development, Software Development | Leave a Comment »

 
%d bloggers like this: