• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
Avinash Meetoo

Avinash Meetoo

Let us build a Smart Mauritius together

  • Home
  • About
  • Curriculum Vitae

Standard C++ — Evolution at its best

20 June 2022 By Avinash Meetoo Leave a Comment

Using the right tool at the right moment is the best way to increase productivity. Those who have a thorough knowledge of the different tools in existence (with their key functions and major weaknesses clearly identified) can prove this sentence true. The purpose of this article is to give a brief outline of what C++ is capable to do as a tool, following its recent standardisation.

I wrote this article way back on 25 March 1999, after having joined DCDM Consulting as a Business Analysts, fresh from my Computer Science studies in France, and having had the pleasure and experience of writing a major software in C++ during an internship in a startup called Technodigit in Lyon. Some parts of the article are outdated but most of its content is still relevant after 23 years…

C++ as a programming language

The C++ programming languages was devised by Bjarne Stroustrup in the early eighties as a better C. C++ has a clearer syntax and, as a result of it being object-oriented, was much more adapted to handle complexity.

With time, vendors including Microsoft and Imprise (formerly Borland) customised the language for their needs. In parallel, Bjarne Stroustrup and his colleagues at Bell Labs introduced new features in the language like exception handling, templates and namespaces. As a result, C++ became more complex and therefore more confusing to the programmers. At the beginning of the 90’s, C++ was already a highly powerful tool but so complex that very few people mastered it.

The need for Standard C++

The American National Standards Institution (ANSI) and the International Standards Organisation (ISO) decided therefore to set up a committee to work on a Standard C++ project, with the ideas of purifying the language while adding essential but overlooked features to it. Bjarne Stroustrup quickly joined the committee together with Alexander Stepanov and Meng Lee, destined to become heroes of the C++ community.

The Standard Template Library

Alexander Stepanov and Meng Lee introduced the Standard Template Library (STL) to Standard C++.

STL has a dual personality: it is both a container library (with facilities to handle dynamic arrays, linked lists, trees and so on) and it enables one to program using generic and functional paradigms.

A new way of thinking: containers and iterators

STL defines different kinds of containers such as dynamic arrays, lists and trees together with numerous operations acting on them (like adding and deleting elements). One of the major breakthroughs of STL is the fact that the complexities of these different operations are known and are invariant. Adding an element to the head of a list always takes constant time whatever the size of the list. The programmer can therefore calculate the complexity of his own algorithm based on the published complexities of these STL operations.

The elements of a container are accessed via iterators. These special objects mimic C++ pointers. An algorithm to read all elements of a container must do the following: set an iterator to point to the first element and access the other elements by incrementing the iterator until the end of the container is reached…

When the OO, generic and functional worlds meet: generic algorithms

… which brings us nicely to genericity. Given that all STL containers are accessed through iterators, generic algorithms can be devised which work with all containers (whether dynamic arrays, lists, trees, etc.). The complexity of a generic algorithm depends, of course, on the container on which it is being used. The current version of STL has about 80 generic algorithms including functions such as find, fill, randon-shuffle, sort and reverse among others.

If the programmer decides to implement a new container (e.g. b-trees) having the same semantics of an STL container, all 80 generic algorithms will immediately work as expected thereby greatly increasing productivity by cutting development time. In the same way, writing a new algorithm (e.g. topological_sort) respecting the principle of genericity will enable it work with all STL existing containers.

Function objects

Another breakthrough in STL is to treat functions as objects. They can be passed as arguments to other function objects and can be composed with other function objects. Furthermore, they can be used as higher-order function objets (that is, functions returning functions as result). We can say that well-written STL function objets as just like mathematical functions. Well-written in this context means that the function objects does not have side effects.

This feature enables the functional paradigm to be used in C++. Specifically, composition of function objects can be used as a technique to handle complexity. Each function object (whether written by the programmer or not) can be considered as a component and these can be glued together to solve computing problems. A central repository of function objects can be set up and every time a component having certain behaviours is needed the programmer can check if an equivalent function object exists in this repository. Electronic or civil engineers have used this technique for many years and it is high time that computer engineers start to use it. The immediate benefit is a decrease in development time.

The Way Forward

Standard C++ is a major advancement over C++ just like C++ was over C. Owing to STL, component-based programming is becoming possible. Thinking in terms of containers, generic algorithms and components enables the programmer to concentrate on what is really important for the client: having a working solution for his problem that respects requirements and which is delivered on time. The big question is therefore whether the programming community is ready to embrace this new technology.

In the near future, it is estimated that this leading-edge technology will enable customisation and development of programmes to take up to 40% less time implying faster customer service at lower costs.

Filed Under: Computing, Education, News, Technology

What is high inflation and what can we do?

3 May 2022 By Avinash Meetoo Leave a Comment

Inflation is rising all over the world

I am not an economist but I have a family and it is important for us to be financially literate and sound. I have been hearing, for the past few months, that inflation is rising all over the world and is currently at 6.3% in Mauritius according to my own calculations. The last time the rate of inflation was that high in Mauritius was in 2011, eleven years ago.

I am trying to understand what effects a rising inflation will have on the country’s economy but also the economy of a typical household. I am doing that by reading a lot of articles online, watching relevant videos on YouTube as well as participating in a few selected online forums.

Why inflation is so high?

As observed in an article in The Conversation, the population generally feels that COVID-19 is under control and are going out and consuming / purchasing more now.

People are using their own savings made during the pandemic but also the stimulus checks and other pandemic-related aid they obtained from Government.

In some countries, because of the Great Resignation currently happening, companies have had to increase salaries to retain their departing staff. This contributes to an increasing inflation. I don’t think that salaries are increasing in Mauritius yet but I might be wrong…

Consequently, as demand is increasing, sellers are increasing the prices for products and services (and this is what inflation basically is).

The disruptions in shipping and logistics are also contributing to increased prices. There are also chip shortages for important electronic products.

Why high inflation is bad?

High inflation means high prices and poor people will start having difficulties. This is already happening in many countries and can give rise to social unrests.

Companies also suffer when inflation is high as they buy their raw supplies at higher prices. They are forced to sell at a higher price too to keep their profitability (or they need to lower their expectations or decrease production).

If inflation continues increasing, then there is the risk of hyperinflation. This has happened in the past in a few countries.

How does central banks limit inflation?

The best way to control inflation is to incite people and companies not to consume or purchase too much. The way to do that is to increase the interest rates on savings in banks.

Right now, it is around 0.4% per year in Mauritius and, with a 6.3% inflation rate, people have (nearly) zero incentive to save. Better use the money, which will be worth 6.3% less next year, and get the latest car or TV, they say.

The central banks will surely decide to increase the interest rate on savings this year. Of course, people will save more and, hence, the economy will slow down. Similarly, borrowers will have higher interest rates to pay which will also incite them not to borrow too much thereby slowing down the economy even more.

But slowing the economy too much is as dangerous as letting prices increase.

Central banks will definitely have to be careful in their approach.

I am trying to understand what to invest in (securely) in times of high inflation. I will write a post on that. Meantime, please free to offer your suggestions in the comments section.

Filed Under: Education, Finance, Future, News, Society

Assises de la Recherche et de l’Innovation

30 April 2022 By Avinash Meetoo Leave a Comment

From 27 to 29 April 2022, my colleague, Ayooshee, and I participated in the “Assises de la Recherche et de l’Innovation” organised by the Mauritius Research and Innovation Council.

Day 1: TED-talks

On the first day, I did a TED-style talk on the kind of people Mauritius needs to tackle the complex problems which exist today. I spoke about the need to attract some members of the diaspora and foreigners while upgrading our education system. My mantra has always been: “We need peopleware, not only hardware or software”.

I also spend some time explaining the UNDP strategic plan and offer for 2022-2025 based on 6 kinds of solutions to bring in 3 directions of change. Of course, I focused on the 3 enablers: digitalisation, innovation and development (aka new ways of) financing projects.

Ayooshee made a nice talk on “Innovating for Social Change”.

Day 2: Panels

On the second day, I participated in a panel with industry and academia leaders. We explored topics such as how to instill a culture of innovation in the population (and, by extension, at work). We spoke about having role models, about having reward mechanisms for innovators and ways to have more robust ecosystems.

Day 3: Moderating a panel of education experts

On the final day, I moderated a high-level panel of education experts on how to best equip our young people (as well as upskill our existing workers) for the challenges of tomorrow. In particular, we talked about ways to make people more willing to collaborate. This will require a cultural shift in Mauritius but is an important step towards us building a nation of innovators.

We’ll see in the coming months and years.

Filed Under: Computing, Education, Future, News, Science, Society, Technology

  • « Go to Previous Page
  • Page 1
  • Interim pages omitted …
  • Page 19
  • Page 20
  • Page 21
  • Page 22
  • Page 23
  • Interim pages omitted …
  • Page 44
  • Go to Next Page »

Primary Sidebar

Search

I am proud of

My family
My company
My music
My photos

I am active on

Facebook
FB Page
Twitter
LinkedIn
Reddit
Hacker News
Stack Overflow
GitHub
Wikipedia
YouTube
IMDB
Last.fm

All posts

  • April 2025 (1)
  • March 2025 (1)
  • February 2025 (2)
  • January 2025 (4)
  • December 2024 (4)
  • November 2024 (2)
  • October 2024 (1)
  • September 2024 (4)
  • July 2024 (1)
  • June 2024 (1)
  • May 2024 (4)
  • March 2024 (1)
  • February 2024 (1)
  • January 2024 (1)
  • December 2023 (2)
  • November 2023 (2)
  • October 2023 (2)
  • August 2023 (2)
  • July 2023 (3)
  • June 2023 (3)
  • May 2023 (4)
  • April 2023 (1)
  • March 2023 (3)
  • January 2023 (1)
  • December 2022 (1)
  • November 2022 (5)
  • September 2022 (2)
  • June 2022 (2)
  • May 2022 (1)
  • April 2022 (1)
  • January 2022 (3)
  • November 2021 (1)
  • September 2021 (1)
  • June 2021 (3)
  • April 2021 (1)
  • February 2021 (1)
  • January 2021 (2)
  • November 2020 (1)
  • October 2020 (1)
  • September 2020 (1)
  • August 2020 (1)
  • May 2020 (1)
  • April 2020 (3)
  • March 2020 (4)
  • January 2020 (1)
  • July 2019 (1)
  • June 2019 (1)
  • April 2019 (2)
  • January 2019 (1)
  • December 2018 (3)
  • November 2018 (1)
  • September 2018 (1)
  • August 2018 (1)
  • April 2018 (1)
  • December 2017 (1)
  • November 2017 (1)
  • October 2017 (1)
  • August 2017 (1)
  • July 2017 (1)
  • May 2017 (1)
  • March 2017 (1)
  • February 2017 (1)
  • August 2016 (1)
  • July 2016 (1)
  • June 2016 (3)
  • April 2016 (3)
  • March 2016 (3)
  • February 2016 (1)
  • December 2015 (1)
  • November 2015 (1)
  • October 2015 (1)
  • August 2015 (5)
  • June 2015 (1)
  • September 2013 (2)

Copyright © 2025 by Avinash Meetoo · Shared under an Attribution 4.0 International Creative Commons license · Log in