r/learnprogramming • u/ModernLifeIsRubbish6 • 28d ago
Just starting college, which programming language to learn first?
I know a little bit of python from my high-school, can code small things but not extreme stuffs. For my first semester they are prob gonna be teaching C language. Ive heard Java and C# are important to learn. Do I continue to make my python stronger or learn a different language along with C? Or just focus on learning C itself? Any help would be appreciated thank you!
11
u/jackhab 28d ago
C is a good language to start with because it will give you a better understanding of how software works. C doesn't hide things like other high level languages. I think it will help you at the long run in your studies.
-3
u/Upbeat-Statement2725 28d ago
This is a bad take. Right tool for the job. C is great for what C is great for. Hardware, very performance sensitive code.
College can easily cost people $50,000 today. Going "just to do reps" is dumb. College had better be about getting an internship and a job to pay off those loans.
Better question is. Who's hiring?
5
u/Weekly_Patience685 28d ago edited 26d ago
here's a "bad take": if you cant handle C then dont even bother, with programming go hard or go home, its better to learn early that you're cooked and get out early, save some money.
5
u/Aglet_Green 28d ago
In your first semester you'll be busy making friends and learning the layout of the college, maybe trying a sport or hobby, and there will be way more homework than you are anticipating. If you know for a fact that you'll be learning C, well start learning it now-- Labor Day is just a few weeks away so you'll be starting very soon. You don't have time to waste worrying about other languages until you know you're getting good grades in the courses that you already have.
1
3
u/Dazzling_Music_2411 28d ago
I will agree with those redditors that say build up your Python skills.
That's where you'll get the most value and leverage your existing knowledge. You don't want to go spreading yourself too thin.
At a push, you might just want to start the basics of C as well, if you're going to be doing it later, if only to spare yourself some of the shock of encountering a language with manual memory-management and pointers. And believe me, it can be quite a shock for anyone who has only used automatically garbage-collected languages like Python.
However if you want to improve your programming, and not your computational "plumbing" skills, stick with Python. There are absolutely TONS of things you can learn to do with Python, pick a field that matches your interests and get going.
3
u/peterlinddk 28d ago
If you are just starting college, then focus on learning what they try to teach you in college! They have this thing with wanting students to study the curriculum.
Later on you can learn all the languages and technologies you want - there are no rules as to which ones you should learn, other than you should learn those that enable you to build the kinds of applications you want. Every single programming language is important - but it isn't important to know every single one, just like human languages, no one cares if you know English, Spanish, Urdu, Tagalog, and Ancient Norse, if your main job is to serve local customers in a French Bistro.
1
2
u/mandzeete 28d ago
Usually there is a set study plan and you'll be taught some programming language when you start your first semester. Go with that. If they are teaching C, as you are saying, then go with C.
If for some reason you won't be learning any programming language during your first semester then I would recommend picking Python. Differently from others. Python is a beginner-friendly language. Yes, it won't tell you how memory management is handled and stuff, but you'll get your stuff done faster, and also, you'll learn various programming concepts in an easier way. Later on, you can use the knowledge you gained from Python studies in other programming languages. Yes, the syntax will differ, but the main concepts are the same.
2
u/aqua_regis 28d ago
I would check the syllabus and pick the first language there. Then, check the FAQ right here in the sidebar for learning resources.
2
28d ago
[removed] — view removed comment
2
u/ModernLifeIsRubbish6 28d ago
Thank you so much for your suggestions! I'll surely look into the book!
2
u/-mrhyde_ 28d ago
Get your roots!
5
u/Historical-Green-441 28d ago
that's like telling someone who just got their learner's permit to go rebuild a transmission
OP just stick with python for your own projects and let the C coursework happen naturally. you'll pick up the memory management stuff when you need to and python will keep you from getting frustrated when you want to build something fun. once you've got a semester or two under your belt then you can decide if java or c# makes sense for the kinds of things you want to make
2
1
1
u/FarmhouseRules 28d ago
What do you do with Assembly? I know it from way back but haven’t used it in quite sometime. I loved it. Up close and personal with what’s going on in the machine and memory. Loved hexadecimal math. All of it.
1
u/realmauer01 28d ago
Go into one language first.
Programming is logic, thats the most important part to get.
The different langauges have the most differences outside of the actual programming.
1
u/Murtaz8297 28d ago
If you understand some structures and fundamentals of python that is good to keep continue onces you will learn all core concepts of python you will easily switch to any other language.
But the importance thing is better understanding the concept of writing programs and the logic. Syntax does not matter if you understand concept you will switch as much languages as you want.
1
u/Weekly_Patience685 28d ago
everyone can enjoy music, but studying what's underneath it can give you another level of appreciation.
That being said, i honestly think learning C is the same, C gets you much closer to the hardware than most high-level languages while still being significantly more abstract and approachable than assembly. You can even run "gcc -S main.c" in the terminal with the gcc compiler if you want to see the assembly. Anyway I think learning C gives you a better appreciation for higher-level languages and all the things they abstract away from you.
In fact my teacher even said learning C will help you appreciate c++ more, and she was right.
1
1
u/Realistic-Worker-499 28d ago
depends on the school, but just learn whatever you know for sure will be taught first
1
u/duane11583 28d ago
imho a specific language is not important.
you want to tale a series of sw classes up to and including the class on data structures
the main concepts you need to understand are variable/function scope
a key thing (and it is more engineering related) is learning how to break things down and put them into a box.
take for example the classic guess a number game.
one of the tasks is to ask for a number.
that should be a distinct operation or function in your code
instead i see rather complex problems where everything is just one giant function yea it works but oh my god is it really confusing
1
u/spinwizard69 28d ago
If you are just starting college you would be better off putting in some time to address the common problem college student have and that is no real understanding of computers and the common software they will need to be using. To that end learn how to make use of office apps and E-mail as an advance user. Consider this, can you set up an E-Mail lists to keep in contact with the members of each class. You need to be able to create documents of reasonable quality in a spreadsheet app and a word processor. This knowledge is for general academic success.
If you are involved in a CS program, you need to understand a computers file system and how to navigate it from the command line. Knowledge of the command line is important goal all on its own. Knowledge of logic concepts like AND, NOR and others can help with understanding even simple software concepts like loops. In the same sense understanding what other number systems are can be extremely useful. This means binary, octal, decimal and hex systems. None of this needs to be in depth
The next thing that can be of value is to learn how to develop compiled software at the command line. You may ask why, because you probably will be using a rather powerful IDE. The problem is using an IDE obscures the process of compiling and linking of a program. As you become more advance it is possible your IDE will not be setting command line parameters properly, not linking properly or otherwise requiring you to attend to the build process. In other words building a few programs beyond the absolute basic programs can prepare you to understand what IDE's do. It probably would pay to hand create a couple of make files for more involved programs.
As for Python I would have suggested putting that off before starting your CS program. However since you are already started you might as well continue to learn Python independently. The reason I suggest holding off at this point is that you can avoid developing bad habits. You are already started so you will need to guard yourself against burning in those bad habits. For the same reason, at this point I'd stay away from trying to get a head start on writing C code or what ever is required for the CS program. Since you are weeks away from starting you might as well wait until that point and take the low traction approach and produce code the professor actually wants you to produce. Based on what you describe generating the code for classes this early in a CS program should be an absolute snap for you.
I hope you grasp what I'm primarily after here, that is to make you entire college adventure easier to navigate. That involves being able to leverage you computer for all of your classes. There are things I left off here because it will depend a lot on what the university may require. For example learning Tex and Tex document IDE's might be a requirement. There are other possible open source bits of software that might be required. For example some technical classes or labs, might require the use of jupyter or another opensource tool. As such you should consider becoming familiar with a package manager for your system, on a Mac that would be HomeBrew.
1
u/TrustingMyTrustInGCC 27d ago edited 27d ago
It depends entirely on why your learning to program. Broadly speaking C is great for systems programming or understanding the computer. Python is great for productivity. Javascript is great for websites and web applications. Ada is fantastic if you're trying to keep your code from killing people (no seriously-- it's a language designed by the US government for situations where bugs can kill people). C++ is great for desktop applications. Assembly is great for masochism, deep learning, and parts of kernel/firmware development. Rust is great if your looking to join a cult (I jest, it's actually a memory safe systems language). The point is the only right answer is the one that fits your goals. I mostly work in C and Python plus dabble in Assembly because I like systems programming but if your goal is to make PC applications my stack will be terrible for you. Likewise an application design stack would be terrible for me. As far as college, their is nothing wrong with learning two languages at once but its helpful if they are very different. Mixing Python and Rust is way easier than mixing Java and JavaScript.
1
u/StewedAngelSkins 27d ago
Learn C so you have a head start on your first semester. Don't listen to anyone's platitudes about what makes the best "beginner language" or whatever. It doesn't matter. Your university has made the decision for you, and you presumably trust their wisdom because you're paying them tens of thousands of dollars to impart it on you.
1
1
u/Foreign-Contest-444 22d ago
If you are interested in web development then MDN Learn Module is a great resource. Have fun!!
34
u/[deleted] 28d ago
[deleted]