On 19 July 2018 Grey Matter and Embarcadero hosted a workshop to a great bunch of C++ developers with sessions delivered by C++ expert, David Millington, about C++ and Embarcadero technologies.
So, what were some of the key takeaways from the event?
In the first two sessions David discussed and demoed traditional C++, explained how and why developers should modernise and incrementally improve code.
What is good code?
- Code you don’t write
- Code you don’t have to think about
- Code you know is correct
What is needed for new, good code?
- Auto functionality
- Smart pointers
- Range-based for or algorithms
How can you improve old code?
- Use smart pointers
- Existing class, new-s and delete-s fields? Unique_ptr them!
- Find leaks. Establish clear ownership.
- Same for methods
- Use unique_ptr, not shared_ptr – tempting, but 99% of the time, shared_ptr is the wrong choice
- Pass references to methods using the pointer. Don’t pass the unique_ptr or a reference to the unique_ptr
- Do: void foo(const MyType& bar)
Don’t: void foo(const unique_ptr<MyType>& bar)
Or even worse: void foo(const unique_ptr<MyType> bar)
In the third session David discussed migration and performance improvements in the latest version of C++Builder (10.2.3). One of the main tools that David went through was Clang compilers. He noted how they can improve your development if you migrate by providing more (and better) error messages, stricter code and minor compiler differences.
What do you get with Clang compliers?
- Much better C++ language support: ‘modern C++’
- Lambdas, move semantics, type inference (auto), range-based for loops, constructors delegate to others, strongly typed enums, template >> problem solved, initialiser lists, tuples, two great smart pointers (don’t use boost anymore!), etc.
- The code you write is better, clearer, smaller, safer, more powerful
- Optimisations and performance
- Compiled app is better
Performance and code generation
- Clang-enhanced compilers use LLVM
- More optimisations
- Compiled code can be 2x faster
- Users in scientific, engineering, and other areas: performance is important
- C++ is a language known for performance!
- Use the modern toolchain
There was supposed to be a fourth session that was hands-on where the attendees would create a cross-platform camera app, but the attendees had so many questions and were so engaged with the other sessions that we ran out of time to do the practical side of it. David did have time to do his own demonstration of how easy it is and encouraged attendees to have a go at home.
We had some great feedback about the event, one of the attendees from the event said his highlight was “the realisation that Clipper Code blocks still exist 🙂 (in the form of Lambdas). Noticing that the IDE Looks remarkably like Delphi, which will get me to have a go at C++. Interesting C++ clang stuff, and finally the FireMonkey stuff (which is what I came for)”.
Here are the slides and code samples from each of the sessions:
- Modern C++, part 1 and 2 slides
- Code sample – old vs new style
- Code sample – old style (bad style and buggy) project
- Migration and performance slides
- How to create a cross-platform camera app slides
- Code sample for quick camera app
If you’re new to C++ and Embarcadero, it would be worth trying out their new (and free!) community edition of C++Builder which is designed for freelance developers, startups and non-profits with revenues under $5000 USD. The community edition allows you to easily design, code, debug, and deploy applications for iOS, Android, Windows and macOS from a single codebase with professional and integrated tools. Contact us to find out more.
Grey Matter is proud to be the Embarcadero UK and Ireland Master Reseller. We have a great knowledge about how the Embarcadero products are licensed and can advise you on which editions would best suit your needs and offer great pricing. We also host regular workshops with Embarcadero to help you use the tools you’ve bought and learn about the new features and technologies. Find out more here. For more information, please reach out to our Embarcadero licensing team on +44 (0) 1364 655123 or firstname.lastname@example.org.