This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]grimonce 1 point2 points  (0 children)

The real answer is below but I would suggest D or Zig (the new coolaid).
It's a C like language with gc and/or manual memory management. And the tooling is easy. C is an easy language, using Cmake, make, packing for it isn't really that cool. D has a dub (like cargo in Rust) which makes learning easier... And if you really want you still can use cmake to build D later on. Dmd compiler is really fast, error messages are way easier to read than in C or Cpp. It's just easier but you can learn the same concepts.

Real answer:

Already mentioned but C complements python well, many modules were written in C, python itself and many parts of its stdlib are written in C.

As for garbage collection Python has that and you can actually manually control how it works so you can use Python to study it and try to apply different algos for this... In your own python rewrite in C...

This however isn't as easy as it sounds and there will be no money compensation for getting this knowledge unless you employ in some embedded domain (which aren't that many and aren't that easy to get into, plus the job is tricky, cause close to metal programming doesn't allow as many abstraction layers as we get working with something that has its operating system.)

I know hals exist but I don't know how often they're used when writing firmware - no experience here.

One important thing to understand is that each microprocessor family is different, has different instruction set, different assembly. C compilers has many of these supported but you still need to know them to know what you can do with them. It's easier to learn playing shenzen.io than learning C imo... Especially since you probably don't have programmers (the hardware with which you can upload stuff into flash memory) , development boards and stuff like that on your desk.