[sdiy] Programming Language Recommendation

john slee indigoid at oldcorollas.org
Fri Dec 4 10:25:36 CET 2020


There's lots of great books on C. My favourite is Al Kelley & Ira Pohl's "A
Book on C" but there are many others, and it would be terrible to not
mention "The C Programming Language", commonly referred to as simply "K&R",
for reasons that will be immediately apparent if you read about the
language on Wikipedia.

Regarding pointers — they are variables like any other and, most
importantly, don't necessarily have to point to other variables that you've
declared, thought that does seem to be a common case. They help you achieve
several goals:

1. they let you pass data to functions "by reference", ie. in such a way
that the function can modify the value
2. they let you create data structures of a size that varies at
runtime,such as linked lists and trees
3. they let you dynamically allocate chunks of memory (required for #2
above, and many other tasks)
4. they let you directly access memory at "known" addresses, possibly
representing hardware such as a video framebuffer
5. they let you store and use dynamic references to code (functions) as
well as data

I don't remember who it was but someone referred to C as being a portable
assembly language, and I think that's a rather apt description. Once you
have a good understanding of the machine your code will run on, it should
be fairly straightforward to read some C code and know with a reasonable
degree of accuracy what machine instructions will be generated when you
compile it.

C today is a very different beast to the C that was used to implement the
Unix operating system in the 1970s. It's important to be aware of which C
standard your compiler is applying. If 'gcc' you can choose a standard to
use. The last one I used was C99.

John

On Fri, 4 Dec 2020 at 18:19, Shawn Rakestraw <shawn at epicpoolsga.com> wrote:

> Thanks Jay, I actually installed a VirtualBox with Ubuntu tonight and
> started learning C. It is a lot like C++. Hopefully I can pick up on the
> basics of it pretty quick. At the moment I have been a little confused
> about the * and ** next to variable names. Also the & variable names. I
> found some resources about it and realize they indicate pointers or
> something. I'm just not following the reason to have a pointer instead of
> the variable. I'm sure it will become clear as I continue to learn.
>
> On Thu, Dec 3, 2020, 3:11 PM Jay Schwichtenberg <jschwich53 at comcast.net>
> wrote:
>
>> I was an embedded/bare metal HW/SW engineer and will say working with
>> embedded ARM uCs C.
>>
>> C++ usually complicates things and is overkill for run of the mill
>> embedded stuff. Don't know if it is still true but at one time the C++
>> libraries had a lot of bloat and took up a lot of storage. I've also found
>> C++ harder to debug when people start overloading and abstracting things.
>>
>> If you do need to run object based code you can in C. Take all the data
>> for an object and put it into a structure and then pass a pointer to the
>> structure around through the code. This is more or less the equivalent of a
>> 'this structure' that objects have in C++. The data is isolated to a single
>> object and just use a new structure with different data for another object.
>> Also follow C++ and make you own constructors and destructors to setup and
>> shutdown things.
>>
>> Jay S.
>> On 12/2/2020 6:45 PM, Shawn Rakestraw wrote:
>>
>> Please don't go into extreme detail (unless you really want to). I ask
>> too many simple questions and I feel bad that everyone spends great amounts
>> of time with it.
>>
>> I am thinking about programming ARM chips like the STM32 for something
>> like Braids. I know that I will not be making my own Braids module anytime
>> soon, but I would like to start thinking about the language I need to
>> learn. I know the most about C++. I also realize that my question may be
>> better asked as what libraries should I load / study up on.
>>
>> Thanks guys/gals
>>
>> _______________________________________________
>> Synth-diy mailing listSynth-diy at synth-diy.orghttp://synth-diy.org/mailman/listinfo/synth-diy
>> Selling or trading? Use marketplace at synth-diy.org
>>
>> _______________________________________________
>> Synth-diy mailing list
>> Synth-diy at synth-diy.org
>> http://synth-diy.org/mailman/listinfo/synth-diy
>> Selling or trading? Use marketplace at synth-diy.org
>>
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at synth-diy.org
> http://synth-diy.org/mailman/listinfo/synth-diy
> Selling or trading? Use marketplace at synth-diy.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20201204/0e5dcf66/attachment.htm>


More information about the Synth-diy mailing list