I am very keen in robotics and system programming related topics. One of the courses I really liked the most while I was an undergraduate student is about concurrency.
I used to really like C++ as a programming language and is now moving on to Rust as it is more modern and has a built in package manager.
Reflect CPP is a Moderna C++ Library that allows for pydantic style (i.e. serde style) serialisation in C++. By only declaring structs, one can serialize whole structs into JSON and many more other structures.
Modern C++ modules based CLI Application Library. Batteries included, parses argument and attach actions to arguments made. Use only the import
keyword without any includes.
Modern C++ modules based testing library. Batteries included, perform asserts on std::expected
, create new tests with macros (sadly this means includes), and add your tests to CMakeLists.txt
with a function.
This includes sanitizers, etc..
Modern C++ modules based subprocess spawning, spawn childs with system code and results returned through std::expected
, no more worrying about any exception being thrown obnoxiously. Since, in this library,
only std::bad_alloc
will be obnoxiously thrown.
Moderna C++ modules based library for IO into file descriptors. Most of the functions described here are noexcept
and results are as usual returned through std::expected
. This way, no need to worry about obnoxious parsing error thrown during parsing.
Developing with C++ modules requires the newest of compilers. cpp-module-toolchain
installs everything in a docker container and allows you to compile for the linux os.
Rust port of moderna-cli
, uses very similar structures with a few upgrades.
This is still under works, still private. This is a C++20 coroutine based asyncio abstraction. It will include an event queue and lockfree structures. Currently, an atomic shared pointer (that is lockfree, with tagged pointers) implementation is already inside. A testing with the Michael-Scott queue and this atomic shared pointer reveals an at least 5 times speedup compared to its mutex counterpart. However, further testing is still being conducted. Stay tuned.
I have currently used a variety of programming languages and can vouch that I have a good command of each one of them. I know C++, Rust, Python, Scala, Typescript and Javascript. If I am going to rank the languages from best to worst in terms of usability, I would rank them as follows:
Rust, C++, Typescript, Scala, Javascript, Python. I really like how explicit rust is with their error handling. The bane of programming comes from when you use Python, Javascript or Typescript and there is an exception that is thrown by a specific library you are using, this exception
is very implicit and is hidden until you test a specific code paths. Hence, having explicit return codes like Result
in Rust and std::expected
in C++ is good when you want to program for long hours. Of course, testing is still needed, however, it is easier to reason about correctness
if errors are not implicitly thrown. Additionally, a lot of developers use exception as a means of flow control, this is also not very good in practice since it is not why exceptions are created for. Exceptions should really be reserved for exceptional cases or non-recoverable errors such as
when memory cannot be allocated by the OS anymore or argument errors.
- ๐ฐ๐ท: kind of fluent
- ๐ฎ๐ฉ: born here haha
- ๐จ๐ณ: spoken from birth, optimistically fluent.
- ๐ฌ๐ง: spoken from birth, fluent.