Avinash Meetoo

Let us build a Smart Mauritius

Search

  • Home
  • About
  • Curriculum Vitae
This work is licensed by Avinash Meetoo under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 Unported License. Creative Commons License

Powered by Genesis

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

Mauritius becoming a Knowledge Society

27 September 2021 By Avinash Meetoo Leave a Comment

Google is 23 years old today: the company started in 1998, the year Christina and I were finishing our studies in France.

Within a few years, Google would perfect its search engine and create all the novel products it is known for today (Android, Gmail, etc). I do not know much about the way the company works and, maybe, this is one of the few things I regret. I was interviewed by Google in April 2007 but I was not offered a job there. I wonder how my life would have been different if I had obtained the job. Or, in March 2008, when I was offered a job in San Francisco by a consulting company but I had to decline because of the infamous Global Financial Crisis then.

Anyway, for the past 23 years, Christina have been in Mauritius. And we are very happy to have lived this quarter of a century here. We have had two wonderful kids who are big enough to fare for themselves now (and they are not spoilt) and we have managed, over the years, to forge formidable memories with family and friends (and these memories are preserved thanks to public photos and private videos).

In many ways, the world we live in today, where I can easily speak to my daughter in France every day, is one imagined by the founders of companies such as Google, Apple, Facebook and Amazon. They dreamt of an always connected world and we are living in one now.

I also need to pay tribute to all the UNIX and Linux geeks in the world. Thanks to them and over open-source software developers all over the world, software works. Most of the formidable things we admire today (think Tesla cars or the datacenters of Google or Amazon) are powered by Linux and open-source software. Apple is also a major user of open-source software, most notably BSD and Mach for its operating system, macOS.

Of course, not everything is rosy for the Mauritian population. Some people are still on the other side of the digital divide and some still do not know how to use technology for enriching their lives. And, to be blunt, some use technology to (try to) keep people in the dark ages…

But one thing I have been thinking about for a long time now is to use the existing technology infrastructure in Mauritius (the fibre, the Internet and the myriad of online services provided by companies such as Google), to transform the country into a Knowledge Country, not only a Knowledge Economy.

I think that our people are sophisticated enough to form part of a Knowledge Society.

What do you think? What does a Knowledge Society looks like? How can we create one? How can we reach enlightenment?

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

  • 1
  • 2
  • 3
  • …
  • 19
  • Next Page »

I am proud of

My family
My company
My music
My photos

A few posts at random

About

52em lane Lindepandans ek 28em lane Repiblik Moris

The Divine Artificial Intelligence

Recent Posts

  • Standard C++ — Evolution at its best 20 June 2022
  • What is high inflation and what can we do? 3 May 2022
  • Privacy Policy for Commercial Mobile Application 1 January 2022
  • Privacy Policy for Free Mobile Application 1 January 2022
  • Mauritius becoming a Knowledge Society 27 September 2021

I am active on

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

All posts

  • June 2022 (1)
  • May 2022 (1)
  • January 2022 (2)
  • September 2021 (1)
  • June 2021 (2)
  • 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 (2)
  • September 2018 (1)
  • August 2018 (1)
  • April 2018 (1)
  • January 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 (2)
  • September 2013 (1)