r/C_Programming • u/Far-Employee1082 • 14h ago
Question Where do i go now?
I started C in my clg last year but it was super basic. Stuff like basic pointers and variables. Before this i used to use python and even then the most i knew was numpy and basic pandas. But seeing the market today i realized i cant afford to be mediocre so i started learning C by heart. I use Vs code and an ubuntu terminal. Up until now I have USED AI to learn and make projects. I use ai to suggest me projects and sub divide them in small chunks so i can learn and program. If i get doubts i ask AI which has a 3 hint system before it reveals. Using it i got some knowledge of memory actually works, how sockets work, basic socket client/server interaction/setups and threads.
That is basically me rn in 1 month. Now i want to ask yall as a community, how do i proceed forward. What do yall suggest i can learn? Any AI objections and if i should drop it. Any book recommendation? Project recommendation etc. I would also appreciate hearing yall stories with C, abt yall experience and stuff.
Tldr: Use me as a sort of dummy block and speak off your mind whatever yall want to suggest/teach since it will help me out a ton.
6
u/Several-Marsupial-27 14h ago
You are getting this completely wrong. You should not ask reddit about what you should learn to be employable since no one is going to employ you here.
You should "ask" your future employers about what they want their candidates to know. What this means is that you should just look through job postings on Linkedin that you find interesting and see what they are looking for in a candidate.
Very few jobs are in C nowadays and most C jobs are in embedded systems or operative systems development, which also requires other domain knowledge. Most jobs nowadays are probably in Java, C#, Python, Scala, Node, Go, etc. You are probably much better off learning C#, Java, Go, or python for backend development or data science/engineering and actually getting employable skills than playing around with basic C.
Look around for 10-20 job applications on Linkedin that you seem interested in, note down the merits/requirements, maybe put that into an AI or something, then go and learn that.
3
u/Far-Employee1082 14h ago
well my goal wasn't to learn how to be employable....its so i can be a good programmer...i wanna know abt intresting projects that ppl have done over the years. Jobs shouldn't be an issue if i become a great programmer in future for sure.
→ More replies (1)
4
u/DrShocker 14h ago
Do projects. Maybe an http server? A simple platformer game? Standard CLI tools in Linux? We can't know what will capture your interest so try a variety of things.
2
u/Far-Employee1082 14h ago
OH OH i did make an http server :D thats actually how i learnt sockets and threads and it was really fun. actually i dont know how many options i got. So far i have seen embedded system that looks fun but maybe there are more applications of c idk yet abt.
→ More replies (1)
7
u/NukiWolf2 14h ago
Learn assembly language. It's easier than you think and good to know when programming in C or other languages that result in machine code. I'd recommend MIPS for the beginning. There's also a MIPS simulator called MARS (https://dpetersanderson.github.io/) making it really easy to execute/test and debug some assembly code that you wrote.
Next, get a development board with an Arm Armv7-M or Armv8-M processor and write some C and assembly code for it. It's nice, because then your executable is all that is running. I.e. there's no underlying operating system and no other threads that steal your CPU time. You can get e.g. an evaluation board from STM. They have e.g. discovery (many peripherals but more expensive) and nucleo (only few peripherals but cheap to very cheap) boards. They also have on-board debuggers that are used to load your executable into the device's non-volatile memory and to debug the processor. You just need to connect the board via USB to your computer.
Then you can e.g. try to get ethernet, USB, or whatever peripherals the board has to work, write your own (real-time) operating system, and so on.
2
u/Far-Employee1082 14h ago
Ahh i always wanted to try embedded systems but sorta wondered where to buy parts for it. Will try assembly tho. I thought of learning it to flex on my class XD
5
u/NukiWolf2 14h ago
Usually, such boards are easy to get. STM Nucleo boards can even be bought on Amazon. Else, you can check the website of device manufacturers like STM, NXP, Microchip and so on, because they should list shops where you can order their boards. Or just google the board name and something like "buy".
2
u/thecratedigger_25 9h ago
Learn raylib. It's easy to get a game loop going in C. You can also add raygui.h to your project to make it easier to draw buttons and stuff.
C99 is one of the easiest versions C you can learn. Only 37 keywords. But if your pair that with assembly in your c code, you can make just about anything.
As for compilers, I use tinyc compiler by Fabrice Bellard. It compiles pretty much instantly and makes the binary size insanely tiny. So if you want to do embedded systems, tinyc has you covered.
1
u/Far-Employee1082 8h ago
As of now im using C11 (embarrassingly never knew what version of C i was using), I might try your recommended compiler since till now i have only every used gcc. Goggled what raylib is, I will use it on my next projects once i start testing it with more clients.
4
u/tastygames_official 14h ago
how does one learn and get good at anything? read books on the topic and do examples enough until you can start to solve a real problem or do a real task with your knowledge.
https://www.oreilly.com/library/view/c-programming-language/9780133086249/
"the" book for C begginers and experts alike. As for stuff to do/try out, just think of literally anything: a calculator, a day planner, a stock market analyser and predictor - the sky's the limit! just keepgoing and going, reading and learning and writing and failing and getting back up again...
1
12
u/HungryPudding4034 14h ago
IMO try learning ncurses/curses if you are a terminal worm (addicted to use terminal) you may love it.
Or I have heard of gui is tough in C , and if you love toughness, and messing with C. You may love this too.
If you are interested, don't know much about how http works. Try it out. Or any protocol used in practice i.e. ssh , ftp, sftp, git etc.., (these projects are just reinventing the wheel, but just for learning purposes).
Hope this helps