Efter min mening lærer man noget bedre, hvis man bruger det et sted.
I sidste ende er sprog værktøjer til at lave noget, du vil bruge.
Jeg gør dette med det meste af det, jeg vil lære.
Men jeg er egentlig ikke sikker på, hvor jeg kan bruge C. Jeg kan ikke se, hvor jeg kan bruge det i virkeligheden, undtagen på kerner.
tl;dr
Hvor kan jeg bruge C til at lære om computerfundamentaler? Undtagen kerne-ting. (Prøver at specialisere mig i sikkerhed)
For at lære C, har jeg først løst alle mine (datastrukturer og algoritmer) spørgsmål selv, med reference til internettet/stackoverflow nogle gange for at få idéer.
En ting jeg har lært, er hvordan man skal sende arrays til en anden funktion. Har tænkt i uger over dette. “Er det ikke understøttet? Damn mand, hvordan skal jeg sende mine arrays for at løse mine problemer?”
Så fandt jeg ud af, at du først skal definere længden af arrayet, og derefter arrayet selv med den tidligere definerede længdevariabel. Og så kan det endelig sendes til en anden funktion!
Jeg har tidligere brugt klasse-wide variabler, og det var en dårlig oplevelse, for det er en dårlig sikkerhedspraksis og dårlig kodningspraksis.
Men SÅ lærte jeg om de magiske ting kaldet “pekere” og “referencer”!!! Og hvordan min løsning var også fjollet, fordi jeg kopierede arrayet unødvendigt, hvilket forårsagede ekstra hukommelsesforbrug. Dette fandtes ikke i andre sprog, og jeg troede, at de bare var tilfældige, unyttige og komplicerede ekstra funktioner, jeg ikke behøvede at bekymre mig om.
Jeg tror, jeg har fået fat i pekere og referencer også (nogenlunde). Cool, men jeg forstår ikke virkelig, HVOR jeg kan bruge dette sprog videre, for at lave mere avancerede ting og samtidig lære om det.
Eksempler er ting som hukommelseslækager, korruption, affaldsværdier og mange andre computerfundamentale ting relateret til C, som ofte tales om i sikkerhedskredse, og jeg ved INTET om dem, og ved ikke hvordan jeg kan støde på sådanne problemer.
Jeg talte om rust & C med en, som fortalte mig om et værktøj, der bruges i C til at rette hukommelseslækager, og jeg tænkte “Hvad for?” aldrig hørt om det!
Hvor kan jeg lære om disse ting? Jeg hører kun om dem i sikkerhedsforedrag!
Jeg vil gerne avancere inden for sikkerhed. For eksempel, binære filer dekompileres/disassembleres til både C og CPU-centrisk assembly i Ghidra og andre decompilere. Jeg har hørt, at C og assembly er lette at konvertere frem og tilbage, fordi C er tæt på assembly. Jeg skal på en eller anden måde lære om dem, så jeg kan forstå, hvad de snakker om i sikkerhedssnakke. Og også for at forbedre mig selv i reverse engineering, malware-analyse, sårbarhedsresearch osv.
Vi blev undervist i assembly i college. Vi kodede ting i assembly, som hvordan man multiplicerer uden at bruge mul, bare ved addition, loop og nop.
Så kodede vi direkte på Intel 8085/86 board. Det var fedt (men) jeg lærte en masse teori og ting, som jeg egentlig ikke fik helt fat i. Fik karakter C i det kursus. (A+ i OOP/DSA btw)
Tak fordi du læste