more on readme

This commit is contained in:
balhau@balhau.net 2021-12-26 14:06:07 +00:00
parent 9e821b96a7
commit 24a10be6c3
No known key found for this signature in database
GPG key ID: 1E666F326A121830

View file

@ -2,17 +2,17 @@
## What is?
This is just c++ project that works as a engineering laboratory. C++ is an extension of the C language that adds some Oriented Programing Features. The C++ language is a strange one. Tries to give high level primitives to the developer but also the full responsibility of memory management and low level that characterizes the c language. So why to explore C++ today when so many high level languages exist in place? That's an obvious question right? The reason why is basically because C++ is at the same time a low level language and high level one. You got the access to low level trickery and also the primitives to implement the design patterns you usually find in any modern software project.
This is just c++ project that works as a engineering lab. C++ is an extension of the C language that adds some Oriented Programing Features. The C++ language is complex and odd. The language give high level primitives to the developer but also the full responsibility of memory management and low level control that characterizes the c language. So why to explore C++ today with so many high level languages out there? The reason why is basically because C++ is at the same time a low level language and high level one. You got the access to low level trickery and also the primitives to implement the design patterns you usually find in any modern software project. The amplitude of use cases provided by the language is huge and the amount of knowledge you get from master it is also valuable. The fact that high level languages don't force you to understand the memory model and underlying hardware architectures does not mean that that knowledge is not important. This repository serves as the laboratory needed to conduct those kind of experiments.
In a nutshell this project has the sole purpose to serve as a learning platform
## What can you learn with C++
You can understand in a practical way how you can manage the memory manually. How you can avoid some of the most pitfalls like memory leak problems by following practices like [RAII](https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization). By exploring the technics that revolve around memory allocation you can understand in a more profound way how languages like java, python, and rust manage memory and the obvious tradeoffs involved.
You can understand in a practical way how you can manage the memory manually. How you can avoid some of the most pitfalls like memory leak problems by following practices like [RAII](https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization). By exploring the technics that revolve around memory allocation you can understand in a more profound way how languages like java, python, and rust manage memory and the obvious tradeoffs involved.
## How to run this?
This c++ project uses premake5. Premake will generate the build files needed based on the development environment you need.
This c++ project uses [premake](https://premake.github.io/docs/). Premake will generate the build files needed based on the development environment you need.
In my particular use case I use linux and the `gmake` profile to build this project.
@ -23,4 +23,4 @@ premake5 gmake
make
```
Premake consumes the `premake5.lua` file. This in turn will include other premake files that you can find in the [premake](premake/) directory.
Premake consumes the `premake5.lua` file. This in turn will include other premake files that you can find in the [premake](premake/) directory.