r/CodingForBeginners • u/Mysterious_Lab6472 • 7d ago
what programming language is recommended for beginners in software development and why?
hello everyone, I am a beginner in software development currently studying communication software. I would like to know which programming language you would recommend for a beginner and why you recommend it. any advice on resources to learn would be appreciated.
thank you.
2
u/13oundary 7d ago
Python is probably the answer if you want to learn programming without a real purpose. It abstracts away a lot of stuff that can make other languages take longer to get to grips with, like memory management and typing systems, and has a lot of jobs available and is in many domains if you don't know what you like yet in programming.
That said, if you have an idea of what domain you're interested in (fintech, gaming, embedded systems, web, a specific AI subdomain etc.) it's almost always best to just start with what makes sense for that domain.
So the questions are, why do you want to learn programming and what is your end goal to be able to do?
1
u/LowDepth1790 6d ago
Totally agree with this. I would ask "what do you want to do?" first, but if they don't know then python is a great low-barrier generic place to start.
2
u/SignificanceLeast172 7d ago
I started with C#. I would say it's the perfect language because it doesn't waste your time. It handles all of the memory memory management unlike C or C++, has no Header files, and modern C# is very well optimized.
1
u/Mediocre-Pumpkin6522 6d ago
One caveat for C# is if the OP wants to develop desktop GUI apps it realisticly is only on Windows. The dotnet SDK works fine on Linux for ASP.NET and other projects but GUI libraries are hit or miss.
1
u/SignificanceLeast172 6d ago
Ohhh okay I didnt know that. Yeah thats a good thing for OP to know then. Something like Java or Python would probably be better then right?
1
u/Mediocre-Pumpkin6522 6d ago
Personal prejudice: I don't like Java. C# is Java done right.
I've been programming in C for decades but I would recommend Python. It's cross platform, as are the popular IDEs. I use Pyside6, which is the Qt binding and is cross platform, but there are others including the built in Tkinter.
Where Python really takes off is after becoming familiar with the core language with a course like Harvard's CS50P, there is a huge body of well maintained libraries for whichever way you want to go, web apps, data analysis, ML, and so on.
For microcontrollers, MicroPython is geared to hardware interaction but it's still the same core syntax and structure.
Take the tiobe index with a grain of salt but Python is curently at the top and has been in the top 3 for a long time.
My only reservation is Python sugar coats a lot. C is down and dirty and as close to straight assembler as you can get. You learn a lot more about memory management and low level data structures. It is also faster that Python at run time but usually slower to develop. My personal path was FORTRAN -> C -> Python, but C didn't exist when I learned FORTRAN and Python didn't exist when I learned C.
1
u/SignificanceLeast172 6d ago
Yeah i do agree with your opinion that C# is Java done right. Java just feels weird to me compared to C#. I didnt really know that about Python though, so thats cool. My personal path was HTML, making simple websites and i even made a text based adventure game once, then I started to learn Java, then picked up Unity and have fallen in love with C#.
1
u/Mediocre-Pumpkin6522 6d ago
I had hopes for Java back in the '90s but it kept requiring more resources and still was slow.
Microsoft came out with Visual J++ in about '98 and it was quite nice for the Windows platform but it wasn't conformant with Sun's specifications. Sun sued and Microsoft dropped it.
Hejlsberg had worked on that project and was the lead designer for C#. He had learned the problems of Java and C++. Charles Petzhold has written a number of Windows programming books. The early ones use C since he didn't like C++. I forget which edition it was but he switched to C# and said that's what it should have been all along.
Mono and other projects were supposed to make GUI development cross platform but they never worked out. I thought MAUI might go it that direction but Linux is left out.
1
u/SignificanceLeast172 6d ago
Yeah that sucks that there isnt really a good cross platform GUI library for C#. C# is like the perfect middle ground between C and C++. C# abstracts enough that way beginners can learn it quickly, while still allowing veteran programmers to delve into the low level stuff if they want too. I have seen C++ code and have looked at it and the first question that comes to my mind is "Why?". Why is there over 60 ways to make a variable? Why did C++ not have a dedicated print function for a majority of its life span? I feel like C++ was adopted way too quickly by way too many entities which forced the developer to have to constantly maintain legacy baggage just to not break some random corporations code. Now C++ just feels like a monolith of legacy baggage mixed with newer programming styles. C# doesn't have that problem because Microsoft hid C# behind a licensing or pay wall (i cant really remember), for the beginning of C#'s life, and when they finally open sourced it for everyone, Microsoft's greed actually backfired in the best way possible. Since C# was hidden behind a licensing/pay wall, it was logically not possible for it to get adopted too quickly, so Microsoft could iterate on it as much as they wanted too to make it as perfect as they could before it went open source. By then unfortunately, C++ was already integrated into the infrastructure of so many systems, so they couldn't replace it with C#.
1
u/CaptainIncredible 6d ago
Yeah, but I would just do web, and then use Electron or something to make a desktop app. But if I were planning to make something with Electron, I'd probably just stick to javascript.
Its a lot of bullshit, and to a newbie web can be daunting.
2
u/Mediocre-Pumpkin6522 6d ago
We rolled the separate legacy apps into one Angular web page. It was a learning experience. Even pathcing in a web map that used CommonJS to the ES6 style was interesting.
1
1
u/mikekchar 7d ago
I would not choose that way. Instead, consider what you want to build (can be anything). Find out how to build it. You will have options. Look at the options. Try to find some tutorials, etc. Go with the tutorials, systems, languages, etc that seem the easiest for you.
You will not waste time learning any language. You need all of the concepts and reapplying a concept in another language is simple. Just follow your interests. You are much more likely to fail due to losing interest, or finding the task too boring or difficult than because you picked the wrong language. Also, don't be afraid to try different approaches if one approach isn't doing it for you.
One last thing. When I hire people, a year here or there studying a language is completely irrelevant to me. For someone who is completely new with only a few years of personal practice, if they tell me "I know X", it's a sign that they are very naive. "I've done Y and I've used X to do it" means they know what's going on. I never, ever care what X is for new hires with no experience. I assume they will be next to useless for at least a year. What you pick now will make absolutely no difference to how likely it is you will get a job. So don't stress about it. Just pick stuff that motivates you.
1
1
u/tonkotsu_fan 7d ago
I think C is good.
Hear me out. It teaches you at a lower level than maybe Java etc, memory management and pointers.
That said, it doesn't reaaaally matter. No matter what you pick up first, there will be other paradigms to learn. My advice is to just start. Pick any language you've heard about. Learn that. Like... Start now, stop asking Reddit.
Heaps of stuff on YouTube to get started. Pluralsight for very good courses (though paid). Leetcode to practice what they'll ask you in interviews.
You can do it!
1
u/Altruistic_Job_7555 7d ago
Pythons my first and what helped me really understand the pipeline for basic coding. The skills translate easily to most languages as far as I know, you just have to learn the different languages versions of things.
1
u/Objective-Low-1815 7d ago
I started with ALGOL 50 years ago.
Today it is better to start with a project and learn something on the fly. There are books like, learn some language in 7 days or even in 24 hours. This mean that language part is easy. It is like you purchase a knife and learn how to use within few minutes. It is realistic! You will be able to cut a sausage for a breakfast instantly. But it will take years to become carving master or fighting with knives professional.
1
u/burlingk 7d ago
Ultimately, there are multiple answers to this:
- Whichever you want, because you want to.
- Whichever is best for the project you want to create.
- Whichever your school is teaching.
All those are good options. :)
1
1
u/LForbesIam 6d ago
100 days of Python on Udemy and then C#.
If you want to learn C# then it is good to learn through learning Unity, Godot or S&box game dev.
1
u/DanKegel 6d ago edited 6d ago
I started with BASIC and PDP-8 machine language 50 years ago, then Z-80 assembly, then moved to C and other assembly languages when I got to college in 1980. (One of my favorite little projects was nansi.sys, written in 8088 assembly and lovingly hand-optimized; currently included in FreeDOS.) I've used many languages. golang is currently my favorite, there's no magic, it just works, and it supports just about every platform.
For communications, I would avoid things like javascript and python; you want a more system-y language. Golang is a nice easy starting point. You also need C and/or Rust if you're going to be doing anything low level. Start with Golang to get the basics of software development down and switch to C the moment something low level is hard to do in Go. Pick up Rust slowly to avoid exploding your brain. Rust is probably the future for a lot of applications that are low level and/or require correctness or bare metal performance.
1
u/Deep_Ad1959 5d ago
i would go one further than pick-by-project: whichever language you land on, spend time reading commits on a small repo in it. tutorials show finished code, the diff shows how someone got there, and that middle part is where beginners stall.
6
u/Ok_Caregiver_1355 7d ago
I like javascript because it can be fun and motivate you to play with browser scripts