NWC

Norwest Computing

Web Application
Development

Photo by Annie Spratt on Unsplash

joe.mariadassou@norwestcomputing.com.au
Ph:0425361912

What we do

I am C++ developer. I used to develop on Windows OS. But now I have shifted to Linux. My latest toy is C++ Asio using coroutines. I developed this website to show case some of my skills and learning. This site runs Openresty (an offshoot of NGINX), which uses Lua as a scripting language, on Docker containers. There are separate containers for MariadDB, PhpFPM, and a C++ http server running as an upstream server. There is also a Wordpress container. Following Jason Knight I don't use any framework apart from JQuery. I started using PHP and Lua in the backend. I am now migrating to C++ from PHP.

I write blogs relating to C++. I also publish code on github


Blogs


Projects


Around the web

Large Scale C++ Volume I by John Lakos

A Qucick Comment on Chapter 1

The book claims that design and development methodologies are predicated on the language and tools used to develop the software. Language independent design and development is not feasible, claims Lakos. Although I don't fully agree with the premise, the second chapter (the book starts with Chapter 0), is a worthwhile read as it makes a number of useful suggestions. There are so many gotchas in compiling C++ programs that, no wonder, most modern languages like Rust and Swift which still go through the compile-link cycle have their own linker. For example C++ uses name mangling to allow function name overloads. Two functions can have the same name as long as they have different paramaters. This is often implemented through name mangling. However the return type is not considered for name mangling. So it is possible to declare "int f()" and "double f()" in two translation units and even the linker cannot point out the discrepency. Another issue is name hiding. A function in a derived class hides a function of the same name in its base class even when the functions are overloaded, i.e. the parameters are different.

Although few organisations have such large codebases - meaning multi million lines of code- many of his recommendations are worth practicing. For example:

The book is over 900 pages long. Every chapter contains a long summary that is worth reading even if you skip most of the chapter. The end of the book contains a quick reference of all the key terms and concepts. Given its length it is worth a quick look over before you put in the effort to read the whole book