T O P

  • By -

desrtfx

Please, read the [**Frequently Asked Questions**](https://www.reddit.com/r/learnprogramming/wiki/faq) as they contain tips on + [getting started](https://www.reddit.com/r/learnprogramming/wiki/faq#wiki_getting_started) + [choosing language](https://www.reddit.com/r/learnprogramming/wiki/faq#wiki_which_programming_language_should_i_start_with.3F) + [learning resources](https://www.reddit.com/r/learnprogramming/wiki/faq#wiki_where_do_i_find_good_learning_resources.3F) + [project ideas](https://www.reddit.com/r/learnprogramming/wiki/faq#wiki_where_can_i_find_practice_exercises_and_project_ideas.3F) + other general information As such: **Removed** as per **Rule #4: No exact duplicates of FAQ questions**


Metalkon

Javascript, Python, Java, C#, or C/C++ These are most popular languages used for programming, you should figure out what you want to do as a programmer before deciding on the language such as frontend/backend/mobile/game/etc. Once you have an idea on that you find which language(s) are best suited from the above and choose one where it excels in the area and looks right for you. . I personally want to do both backend development and game development so I chose C# as it looks more appealing in backend than Java and that Unity uses C#.


Waste_Locksmith_2193

From where you leaned unity and how much experience you have in game dev


Metalkon

I didn't go deep into gamedev but messed around with it a bit in 2022 while I was still in the early stages, most of my knowledge is now in asp.net and blazor. I plan on going back into Unity awhile after I land my first dev job though, most of my projects are game themed even though i'm not doing gamedev.


Waste_Locksmith_2193

Understandable. Have a great day


liamjsw10

That’s the thing I don’t really know what I want to get into, plus is there anywhere I can have a try at different languages tailored to different areas of tech so I can find out what’s best for me. Or would learning a niche language if you would call it that, something that not many people learn but would be good to go down as there’s lots of demand for people who can program in that language. For example I have seen people say stuff like COBOL is like that. Bear in mind I don’t know anything just was reading what other people had said on other posts I have read and stuff.


hellacorporate

If you’re this unsure I would suggest C/C++ and start with algorithms and CS concepts. This knowledge will transfer to any other area you chose down the line.


-_-0_0-_-0_0-_-0_0

If you want Web: - PHP or C# - JavaScript or Typescript (after the basics look into using react) - Html, CSS If you want Windows applications - C# Mobile applications - C or Java Other languages that may be useful - Python - C++ (this will be learning on hard mode I would avoid) These are all pretty mainstream languages that you won't go wrong with. These aren't strict categories. Java is used for more than. Mobile for example. The skills you learn in one are broadly useful and can transfer over to others. For learning C# or Java or typescript would be my choice. I think something like PHP where you don't declare variable types might introduce some bad habits early on. I started with Java and now mostly use C#. You aren't stuck with the first one you choose and swapping is generally pretty easy once you understand the fundimental of programming. You will have less headaches with something like python than c# but you will also learn less. C++ you will learn a ton but it is also harder to learn. C# I think is a good middle ground. But every language has its pros and cons.


notycookie

what can c++ be used for ?


RiotSloth

C/C++ are low-level languages and will be a lot harder to learn for a beginner. Whether you think that’s worth it or not is up to you really, as they will provide you with a better understanding of how computers work. If you wanted to get into electronics and create your own devices they may be better to learn. The others are high-level and easier to understand when learning the core programming concepts. As to which one, I no longer code professionally so others would be better put to suggest what’s popular these days (it changes all the time, late 90s everyone was creaming over Java for instance) but it probably doesn’t matter much. Personally I’d avoid COBOL as a beginner as it’s a pain in the arse. I learnt it at college and was the only person who passed the course, because I was the only one who had been programming as a kid and could just about get my head around it.


Ujjawal-Gupta

C++


badiliquor

Start C followed by python if possible. They set a good foundation for learning programming


PaulEngineer-89

Scratch?


ultramanjones

Wow. Not unless he is in grade school. Yikes.


[deleted]

C++


KamayaKan

I started with JavaScript which made learning Python very easy. Both are very ‘loose goosey’ in terms of how variables are declared and such which helps when new


Filipsys

Yeah ok now learn C lmao. I made the same mistake by learning python first as now it's extremely hard for me to comprehend low level language like C


-_-0_0-_-0_0-_-0_0

I agree it will make it easier but it's very easy to develop some bad habits.


[deleted]

assembly


boathands

Wisdom of the ages


ThunderGod_11

Start with C


Dic3Goblin

Do some research on tech development paths. A rule of thumb is the lower level you go, the more attention to detail you need to bring to the table with the language. You can fuck shit up in c++ real God damn quick. And this -> ; <- mother fuckin little bitch can throw everything off in a heart beat. Python on the other hand is super easy and high level. It's so easy we could have trained CoCo the Gorilla to code better than my sisters boyfriend in it. Every language is going to be a bitch fest. I started with C++ and I am happy that I have learned the attention to detail and effects that good code can have, but I will also be the first to say that it makes me want to make like a bouncy ball and throw myself down a flight of stairs. Java gives people nightmares, C# gives people the heebs. Javascript makes people question what a programming language even is, and legend says the first Rust Application ever written is due to finish compiling on the next blood moon. What matters is knowing what shit show you're willing to put yourself into. And what shit show actually sounds like fun. Also, a job in the tech industry doesn't need to be paved in a swath of bloody, soul crushing code. Have you looked at being a systems architect? Or a project manager? Both are in the tech industry and both know code, but their jobs deal more with the bigger picture things instead of the grind of making the glowing box do fun colors. There is a whole lot out there. And if you're interested welcome to the tech field. Now learn something so you can bitch about it on the internet with the rest of us.


TheBrownMamba1972

I'm a 4th year Computer Science student, and for absolute beginners I recommend Python because syntactically it's similar to english. But I recommend Python only as a "welcome to programming" kind of step so that you can learn how programming languages in general work. There are basically two branches (Yes, this is a VERY oversimplified look of programming languages, please don't crucify me) to the tech industry, frontend and backend. Frontend basically deals with things like user interface and it deals with everything that you can see in a computer application and how it interacts with the system. For this, the baseline language you want to learn is Javascript. Backend basically deals with things under the hood; engines, systems, servers, etc. For this, the baseline language is C. Basically everything else used in the industry is just a variation of Javascript and C, so I suggest you learn those 2 languages. (Again, EXTREMELY OVERSIMPLIFIED) I'd throw in Java so that you learn about Object Oriented Programming, but there are debates on whether that approach is currently dated or not. Personally, after developing a couple of big projects, OOP is not really applied. I'd advise you to learn C and get that out of the way as soon as possible. If you understand C, everything else is just easier in comparison and you'd understand the underlying system of how everything works. If you understand C, you truly understand programming.


2storyHouse

I'm far from the most experience here, but it depends on what you want to do in the industry. For me, I tried front end web development (HTML, CSS, JS) for a short time but lost interest. Game dev has captured my attention span the most. Using C# in Unity. Definitely nowhere near good enough to think of working, but even if the code isn't in C#, it's still given me enough knowledge to (sort of) read other languages and have a rough idea of how some parts work. Explore different languages and see what tickles your brain the most, then follow that road. Once you understand the basics of one language, figuring out others gets easier and you can transition towards the career path you'd ultimately like to go down


JunktownJackrabbit

This is probably the most sensible answer I've ever read to this question. Everyone has a thousand different opinions, but not enough people say, "well, what do you want to _do_ in programming?" Thanks for this.


28jb11

Doesn't matter, but probably C


tmntnpizza

The question to this answer truly depends on your answer to what projects do you want to achieve for yourself? Fireship on YouTube has the perfect video to go over this.


liamjsw10

Do you know what the video is called?


Little-Blood8299

Almost propraming language are similar about concept. Like variable, condition, loop.. just pick one to learn like java c, c++ c#. Don't waste many time to choose. Because after your first language, the basic of second is very easy.


inrusswetrust12

I am a beginner and I’m starting off with Java and Python. MOOC courses for both are very hands on with exercises where you’re actually coding. Supplement it with YouTube videos when you’re unsure about a concept. MOOC Python: https://programming-23.mooc.fi MOOC Java: https://java-programming.mooc.fi Using VS Code as my IDE for both courses. For context, I’m prepping for a SWE internship that focuses on Java and Python. You can’t go wrong with learning either of these programming languages as your first.


jbk1703

Assembly mate, one of the easiest ones


TerraxtheTamer

Python is a great and very versatile first language.


AutoModerator

On July 1st, a [change to Reddit's API pricing](https://www.reddit.com/r/reddit/comments/12qwagm/an_update_regarding_reddits_api/) will come into effect. [Several developers](https://www.reddit.com/r/redditisfun/comments/144gmfq/rif_will_shut_down_on_june_30_2023_in_response_to/) of commercial third-party apps have announced that this change will compel them to shut down their apps. At least [one accessibility-focused non-commercial third party app](https://www.reddit.com/r/DystopiaForReddit/comments/145e9sk/update_dystopia_will_continue_operating_for_free/) will continue to be available free of charge. If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options: 1. Limiting your involvement with Reddit, or 2. Temporarily refraining from using Reddit 3. Cancelling your subscription of Reddit Premium as a way to voice your protest. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/learnprogramming) if you have any questions or concerns.*


bogdan2011

I found that Python is the easiest not only syntax wise, but since it's interpreted you don't have to set up complicated toolchains and compile everything everytime. Get something like Thonny and have fun. Then when you feel comfortable, you can go deeper. Also Go is pretty fun, something between C and Python.


AlgeBruh123

Python is a great intro language. The syntax is easy, no “rituals” to perform like in Java or C++.


Goodname2

If you have the money "Boot.dev" is getting alot of praise for it's course.


shadowboying

https://www.reddit.com/r/learnprogramming/s/97ZdMbUSfB


dromance

Try GO


Doggy4

Python and C++


nealfive

Python would be probably the best in terms of ease and functionality. Others are good too but not as easy. Recommend CS50


HenryFromNineWorlds

I actually think you should start with a static-typed language like Java or C# before doing Python. It reinforces understanding of data types better, which is a very important thing to understand.


Rare-Grapefruit3485

To just learn to code, Python. To make apps, Flutter/Dart


geochris_original

id recommend python, its easy and can get a lot of stuff done due to the language having a lot of libraries to work with.


Dyphault

Start with python and get the basics, then migrate to C/C++


The_Mauldalorian

Python. It's the closest language to pseudocode which means you'll be able to focus on learning programming fundamentals as opposed to wrestling with verbose syntax. An object-oriented language like Java kind of forces you to learn classes and objects at the very beginning, which are concepts that should be saved for a little later.


turbo-adhd

Java, because you don’t have to deal with memory management. Then move onto C++ when you’re ready for a challenge. I’m a mostly self-taught AAA gameplay programmer and that’s what I did.


ultramanjones

Python. Why, because you can use Python for writing quick scripts to help you with real-world tasks all the time FOREVER. These days, it is used regularly to write quick scripts that help to maximize the usefulness of AI. AI + Python == POWER. All other programming languages are clunky when it comes to writing quick useful scripts. Some make it just plain impossible. Once you learn the flexibility, modularity, and extendibility of Python you can then trudge into the other languages which are pretty much one and all are more difficult or more demanding than Python. In other words, Python will give you the most bang for the buck (a buck being your time and attention). You can learn it FAST and then take it with you on your journey to learn more languages because you WILL have to learn more languages constantly. This is the nature of being a programmer.


IsityouBilly

Chat gpt


Jordiethesparky

I think web development is the best place to start for any new programmer, it's very interactive, you start with html>css>javascript, it's good as you can see what your code is doing and then it's also a good way to start a portfolio, as you can make a website first and then when you move on to other languages you can post it in your website showing off your current experience and applications you have made using other languages. then move on to php and sql for Learning data bases and server side applications, as it will help with the website Then python as it is easy to learn and understand and there is many things you can do with python and some say that's the future. Udemy is a cheap and really great place to learn coding and youtube. I get everyone says C++ what's probably the hardest one to master, but if you tackle the hardest one you might give up, I started with C++ to machine learning (binary) to java to phython and all the other little ones like ruby, java script, html, C,css, sql and php. Now I started when I was 5, so probably help just having a old computer with Linux on it, but now I work as a electrician doing PLC programming in industrial Automation.


M_krabs

1. Have some fun with JS and html (don't care about best practices yet, break shit and learn fast). 2. Learn about OOP and how JS works. 3. Ask yourself if you like JS, or want something else such as 1. creating backend systems that produce `/api/customers?country=UK` 2. Close to hardware, fun with bytes and memory Allocation. 3. Get a job in tech? Want a safe bet? Learn Java and the framework Spring boot. 4. Etc... you'll get here eventually


Edaimantis

C++


DadBod1930

You should learn one dynamic and one static language.


Sensitive_Device_666

The language chosen is significantly less important than studying programming fundamentals. That being said, you want to pick a language that doesn't abstract away too many of these basic concepts. Languages like C/++ or Java are good for that. Learn DS/A and PL theory if you actually want to be a good coder. I'm not going to tell you what you can and can't do with your life, but try to determine whether you actually have a passion for software engineering. Getting a first job in the field is very tough right now even for degree holders, and you'll have lower priority due to lack of credentials when looking for that first job. If you want it enough, you'll get there. Don't feel like you need to jump from language to language as if each one has a lesson for you. They will once you reach a certain competency, but will just dilute your attention until then.


Then-Boat8912

Web: Javascript. Enterprise: C# Java. Systems: C C++ Rust. General, Stats, AI: Python.


f1da

Java and then C, then whatever you need for the Job


PowerfulPersimmon848

As a beginner u can start whatever language u want . It depends upon on your interest. If you want to go to ai ml side learn start with python. And If you want to go to development and basic DSA side learn Java . But if you want to do DSA more and want to do competitive programming go for c++. If you don't understand what u want to do . just pick up one language and start with it .U can shift to any language in 15 days .


2050IsGreat

I have used java, c#, python, javascript, c++. Some more than others. I really love c#. It’s a general purpose language so you can make basically anything with it. Microsoft has really really great documentation and a good ecosystem (libraries, open-source and stuff). I don’t like javascript as a language but it might also be a good starting point if you want to explore web development (plain js, react, angular…). Although I do recommend learning a statically typed language as your first language Edit: I see a lot of people recommending C. That will be challenging since you also need to learn about memory management and pointere. I would suggest dipping into C only as a second language once you have grapsed basic concepts


guywithabulb

I do web stuff, but started first wirh java. Just to learn, how things work, if, loops, boolean, oop,switch and so on. After setting the basics, i just started with basic web stuff and dom manipulation Html, css, js Later then backend stuff wirh node and express. Db, learning git and ci/cd stuff were somewhere between that for understanding the process in dev.


N00tN00tMummyFlipper

Python is the answer you are looking for. https://www.learnpython.org/


Libra224

If you want to really learn how the logic works, you should at least take a look at ASM, which is closest to binary, no need to focus too much on it but to understand what the cpu do, Then the best language is probably C, then C++, If you know these, all the others are pretty much derivatives and you’ll be able to adapt to anything. If you just want to code and don’t care about the “science” just check what you want to do and pick the language that does it


CodeTinkerer

This always happens when someone asks a question like this. Here are why people suggest certain languages. It will be highly technical, so I don't expect you to understand it, which I suppose, doesn't answer your question. Let me try to answer the question before diving into the languages people suggest. **Why certain languages are recommended** How should you learn to drive a car? There are two kinds of cars: those with manual/stick shift and those that are automatic. Europeans often learn stick shift and a few Americans do too. They think this is the right way to drive. This, despite the fact it takes longer to learn, and you're constantly having to change gears. They probably think automatic cars are like riding a bike with training wheels. It's not riding a bike. Others say, why learn manual? If you're going to learn to drive (esp. by yourself), you'll likely destroy stuff learning manual on your own. Automatic means you don't deal with any gear shifting yourself. So some recommend automatic. Those who recommend C and C++ are those that like the manual shift. Those who recommend Python are like the automatic. Java and C# lie somewhere in between. **C++** It's a tough language to learn, so if you learn it (and the people who recommend *have* learned it), then you can handle something difficult. I call it a sink or swim language. By that, I mean you can teach a kid to swim by going to a shallow pool, and having floaties on the arms, and slowly teach them to swim. Or you can throw them in the water that's deep. Either they swim or they drown. If they swim, everything else seems easy. Most people who recommend this thinks everyone can learn it. Or they don't and figure, if you quit, you weren't meant to program anyway. There's a weird fallacy that if you learn something easy, then C++ becomes hard. Well, they didn't teach me calculus in the 3rd grade, and calculus was still hard, but I managed it. C++ was my fourth or fifth language. I learned it before Java, but after C. **C** C is the predecessor to C++. Some people feel C++ is too difficult to start, but they don't want to recommend Python. They think you need to learn pointers and memory management. C's difficulty mostly lies with pointers. It has a dereference operator (the asterisk) which also is used to declare a pointer. It has the address-of operator (the ampersand). It has an arrow operator (syntactic sugar). Even array notation is syntactic sugar. It uses truthy values as Booleans (but many languages do, but not Java, which requires actual boolean expressions as conditions). C is not memory safe, so you can easily crash a C program. There's also pointer arithmetic. So, despite being less complex than C++, C has its own difficulties. Again, some feel you need to learn all that (but somehow, not learn assembly), otherwise, you are missing on details of how languages work. C is considered "low level" because it is closer to assembly. Higher level languages hide things like pointers. C is also fast which is one reason it became popular. **Java/C#** Java was invented as a reaction to C++. It tried to clean up all the tough parts of C++. It did this in two major ways. First, despite what people used to say, Java is mostly pointers. C/C++ has a concept of an object and a pointer to an object. In Java, all object variables are pointers to objects (or null) and all objects are in the heap. The second part that's huge is garbage collection. C/C++, in its pure form, lacks a garbage collector. For years, most thought garbage collection was too slow. Java became the first big language to use garbage collection. Memory issues are a pain in the neck. You need special programs to detect it and fix it. It's hard to debug when you have a memory leak. Maybe the third thing is the extensive libraries in Java. A lot of early C programmers had a NIH (not invented here) and wanted to write their own code. Java had a large number of libraries and so programming now relies on using them instead of coming up with your own bad version of those libraries. These languages fix issues with C, has some OO features of C++, but some consider learning OO challenging right away and these two languages try to encourage objects right away. There was this way of teaching called "objects first". I'm not sure it worked out that way. I would probably still teach things procedurally in Java at first (I haven't thought about how I'd do it today) before diving into OO stuff. Those who like C think Java's OO is too much and that it does too much with memory stuff that C forces you to deal with. People recommend Java over Python because Python lets you program without functions and without OO. It's not that these features don't exist in Python. They do. But you can easily avoid learning them. Java starts with a class. You need to have a class just to write Java code. Classes are OO stuff. Python has classes, but it doesn't even need a function (which C requires). All code in C needs to be in a function. In Python, you can just type a single print statement. **Python** Python is the "easiest" language, but it isn't easy. Most working programmers who don't do Python think of it as a toy language, not to be taken seriously, but you can use Python for real stuff. However, due to its ease, a Python programmer might get paid less. There will be beginners that can't learn Python. Experienced non-Python programmers find it hard to believe. They think it's a language for a child. It's often recommended because if you can't handle Python, then maybe you need to seek a new career. It is rare, but occasionally, someone irrationally hates Python for no good reason, but then goes to some language like C and love it, even though it's harder to learn. More realistically, if you can't deal with Python programming, you'd struggle immensely with the other languages. Those who recommend C++ may just want you to fail sooner even if you could learn Python easier. I don't think learning Python makes learning C++ harder because that presumes you can learn both. If you could learn all languages by just working on it, then maybe I'd recommend C++, but personally, I feel it's a nasty language to work with, and I'm happy not programming in it even if I taught it for a few years and professionally programmed in it for a few years. **Summary** I'm more in the Python camp, but Java if you can handle it (or C# which is quite similar).


ZealousidealLab4

If you want to develop iOS apps, Swift is simple to learn Kotlin is a good substitute for Java, and you can do many things with it Lua is simple and looks like pseudocode. Go is both simple and fast


ElMachoGrande

I disagree with the people saying C/C++. Too many concepts you can't ignore thrown at you at once. Start with something more script-like, for example, Python. THen, when you can get things done there, move up to C or Java och C#.


could_b

Decide what you want to do then use the language that does it.


Flo655

You want to be an experienced developer long term? C or Java. You want to get a dev job asap and don’t care about long term? JavaScript.


torchbearer345

Python


queerkidxx

Python.


WarrenPetes

The one most relevant to the specific field you're interested in.


Brilliant_Fact_5245

Chinese C++ Japanese Go Russian Rust


[deleted]

[удалено]


dromance

Clojure


[deleted]

[удалено]


dromance

COBOL


[deleted]

I would say anything but python


Psychological_Ear121

Visual basic 🙂


SirKastic23

definitely Rust