Why is C/C#/C++ hard?

Because they're programming languages not scripted or mark up languages because of how memory sensitive it needs to be they're statically typed languages. You need to be explicit about everything and think about the order you're doing it in.

C isnt also like other languages in that theres no garbage collector, when you Allocate memory on the C is a different ball park than Python, Python is a Program used to automate other programs. A programming language is used to create programs from the ground up it's not really a "Web" sort of language its desktop/system orientated.

As a result the language needs to be more powerful to handle Low Level Data Structures, Memory Manipulation and Overhead.

C Isnt a hard language you just should never program blindly (A large complex program anyway) without a Reference Manual and you should always do some forethought. It's also a Data Structure Centered language visual/Draw out the blocks of memory and etc. And think of the relevant psuedocode.

If you're impatient and just spew verbal diahorrea into an IDE without even proof reading or thinking about it your bound to get T'd off. It's not really a language you can get away with Hackjobs.

It's not that they're hard its just that theres lots of little nuances you need to get such as knowing your types. Always think ahead what sort of values are your variables gonna store and choose the appropriate qualifiers.

Need Data from a variable to be stored in cache for fast accesst? Use the "register" Qualifier. Want a variable to retain its value across function calls but not have a wide scope use the "static" qualifier. Sure you're never gonna touch a variable value again and it's going to remain constant? Used the "const" Qualifier.

Else all things are declared automatically as "auto" variables which you find out if you read the Reference Manual. I'm not talking out my ass here. They even tell you other facts like what Preprocessing is and the steps that's happening.

Is the value always going to be positive? Is it going to be a short number? Could it potentially hold large numbers? Is it a constant? Does it require double precision?

And dont ever assign bigger values than the size allocated it's simple rules. So if you have a long type variable dont give it a value bigger than 264

Reference Manuals are the rulebooks get one. They're giving you the answers to whatever problem you may have. And any sort of syntax you need to know or will ever see

Precedence is also very important in C

For example

void *Foo(int);

Is different to

void (*Foo)(int);

The difference being one is a declaration of a function that takes an int and returns a void pointer and the other is the declaration of a Void Function Pointer.

If ever you've looked at someones code and you've seen something you've never seen done before. The Reference Manual will tell you what it is and how it can be used! There's even an appendix and Contents page.

This is the problem with purely learning from a website or video they dont tell you everything.

/r/learnprogramming Thread