[sdiy] Programming Language Recommendation
Jay Schwichtenberg
jschwich53 at comcast.net
Fri Dec 4 21:52:11 CET 2020
C and C++ are very close. C is more basic and C++ has a lot of features
to deal with objects. If you look at embedded C++ code it mostly C code
wrapped in C++ classes.
The &, * and ** aren't that hard. Another thing to ad to the list is ->.
One of the things you do to reduce memory usage and speed things up is
to use the address of a variable, structure or array which is called a
pointer. Passing the address of something around you don't have to use
memory to make copies of stuff which uses more memory and copy stuff to
the new memory area which takes time. Another time to use pointers is
passing data into routines that you want to change, example below.
So the & means take the address of something and the * says a variable
is a pointer. Then the ** is a pointer to a pointer.
int iData; /* Variable called data size int */
int *ptriData = &iData; /* Address of iData is put into ptriData */
int **ptrptriData = &ptriData; /* Address of ptriData put into
ptrptriData */
/* To access stuff. */
*ptriData = 8;
**ptrptriData = 8; /* Same as above */
iTemp = *ptriData + 10;
/* Routine call */
int
specialRoutine(
int *ptrToSomething, /* Pointer to something you want to change */
int justData /* Just a number that is not changed */
)
{
*ptrToSomething = 42 + (justData / 3);
return( NO_ERROR );
}
-> is used when you use pointers to structures. I'll let you figure that
one out.
Notice I used iData for an int, this is called Hungarian notation where
you embed the data type in the variable name. A lot of people don't like
it, I can see that for regular applications but I use it in true
embedded applications since data type/size is more important. Might
check into it to see if it would help you out.
There are newer data type definitions that aren't in a lot of the older
books that I would suggest using too. These are in the form of in16_t,
uint32_2 and are defined in the header file stdint.h.
https://www.gnu.org/software/libc/manual/html_node/Integers.html
Good luck.
Jay S.
On 12/3/2020 11:18 PM, Shawn Rakestraw 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 <mailto: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 list
>> Synth-diy at synth-diy.org <mailto:Synth-diy at synth-diy.org>
>> http://synth-diy.org/mailman/listinfo/synth-diy <http://synth-diy.org/mailman/listinfo/synth-diy>
>> Selling or trading? Usemarketplace at synth-diy.org <mailto:marketplace at synth-diy.org>
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at synth-diy.org <mailto:Synth-diy at synth-diy.org>
> http://synth-diy.org/mailman/listinfo/synth-diy
> <http://synth-diy.org/mailman/listinfo/synth-diy>
> Selling or trading? Use marketplace at synth-diy.org
> <mailto:marketplace at synth-diy.org>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20201204/0dbb2f19/attachment.htm>
More information about the Synth-diy
mailing list