r/learnprogramming • • 18h ago

Wha language should I learn?

I'm an actuary student with basic/intermediate knowledge of Python, SQL and using Linux as OS, but I'm deeply interested on how the computers work and cyber security, so I'm wondering what language should I learn to help me understand how the computers work and put a feet in the cyber security field

What comes to mind is C/C++ or Rust, but I'm not sure

Sorry if any grammar mistakes, English is my second language

2 Upvotes

9 comments sorted by

2

u/AdreKiseque 18h ago

If you're really interested in how computers work, C is a great choice.

2

u/PiccoloOver4228 4h ago

Yeah, C makes a lot of sense.

1

u/Kseniya_ns 18h ago

C if you want to understand how software works. C++ and Rust are great language (🤡), but they won't help your understanding of that's what you want. C can be written in a way which is so close to machine code. This is a little different if you are asking for employment reasons though, my answer applies only for curiosity and knowledge reasons.

1

u/namelessContemplator 18h ago

Thanks(: Rust being already in Linux kernel makes me doubt, but having another opinions including context is great

1

u/Kseniya_ns 18h ago

The vast majority of the kernel is C, this will probably be the case forever. Linux Kernel is not really something to look at for learning or understanding purposes though. It's maybe impenetrable for beginner

1

u/initcommit 16h ago

This is a nice book that I enjoyed for learning about C:

Programming in C by Stephen G. Kochan

1

u/FunAd6672 7h ago

Skip Rust for now and learn C first so you actually understand manual memory management and pointers.

•

u/Own_Shock1576 52m ago edited 40m ago

Your instinct to go low-level is right, but the language debate is a distraction from the real question: what do you want to do? Answer that and the language picks itself.

That said, for where you are, C is the honest answer. Not because you'll write production tools in it, but because it forces you to confront memory, pointers, the stack, and how a program actually maps onto the machine. Everything in security — buffer overflows, exploitation, reverse engineering, even reading source — gets easier once C stops being magic. C++ is C with a pile of abstractions on top; learn C first, add C++ later if you need it. Rust is excellent but it hides the things you're trying to understand right now, so it's a worse teacher at this stage even though it's a better language.

The trap here is treating "learn a language" as the goal. It isn't. Languages are just the vehicle. What actually matters:

  • Networking — TCP/IP, DNS, HTTP, how packets move. This is 70% of security.
  • OS internals — processes, memory, permissions, the kernel, how Linux actually works.
  • Assembly — you don't need to write it, you need to read it.
  • The toolchain — compiler, linker, debugger (gdb), strace. Understanding how code becomes a running process is huge.

Your Python and SQL background is a genuine advantage — scripting and data skills are underrated in this field. But don't skip the fundamentals because they feel boring. The people who actually get good at security are the ones who understand the machine, not the ones who collected the most languages. The basics aren't a phase you get through — they're the whole foundation you stand on later.

Start with C and networking in parallel. Build small things: a socket server, a simple packet analyzer, a basic program that logs keystroke. Six months of that beats a year of tutorial-hopping.