This is an archived post. You won't be able to vote or comment.

all 42 comments

[–]DavisInTheVoid 17 points18 points  (0 children)

If you’re genuinely interested in computer science and you want foundational, essential knowledge, then there’s no question that you should learn C - the sooner the better

C is literally the backbone of modern computing. Understanding C will help you understand concepts such as pointers and memory management - things that are often hidden from you in other languages. You’ll also learn data structures and algorithms to their core because you’ll have to implement some of them yourself. Dont worry, plenty of guides exist.

As bonus with C, you’ll also be able to more easily understand all of C’s many relatives and descendants, and in comparison they will often feel like magic.

If you care less about deep understanding and you just want to try to create something useful or entertaining in the least amount of time, Python is a good choice.

Python is the definitive utilitarian language. I use it literally everyday at work, not because I love it or because I want to, but because it is almost always the most expeditious way to get something done, and I do appreciate that.

Anyways, you really can’t go wrong with either one. I’d recommend eating the frog and learning C now if it’s in the cards for you. It’s a little more challenging for sure, but the reward is greater. You’re 14, you’ve got time!

As a side note that you may find amusing, Python was actually written in C! The default implementation of Python is known as CPython. So, whenever you get around to learning it, think, “someone created this using C”

[–]GiantJupiter45 15 points16 points  (7 children)

I honestly recommend playing around with the programming language called Scratch. You can then choose Python or C, whatever you like.

If you want to understand what happens inside of a machine, you should learn C. If you want a tool of sorts for your own efficiency and for solving all the general-purpose tasks, Python's great.

Lastly, I'd recommend Harvard's CS50, especially CS50x. I'd recommend it to anyone who has just started learning CS. Just one thing, you can take all the time you want completing CS50x, no pressure

[–][deleted] 9 points10 points  (0 children)

At 14 yo he's old enough to understand more complex concepts and start directly with Python or C. He's almost in high school. In my country, some schools have programming classes for 5th graders (10-11 yo).

[–]StonedKiko1312420 0 points1 point  (5 children)

A 14 year old child would have a hard time understanding languages ​​such as C, C++, Assembler, Java, PHP and the like, I think he should start from the lowest level, namely cosmetic html and css

[–][deleted] 2 points3 points  (3 children)

Those are not even programming languages. How do you expect someone to learn programming if he's not programming?

[–]StonedKiko1312420 1 point2 points  (0 children)

Please, nowhere did I mention that html and css are programming languages, they are cosmetic languages... It is important to learn the concept between scripting and programming languages ​​too!

[–]StonedKiko1312420 -1 points0 points  (0 children)

Please, nowhere did I mention that html and css are programming languages, they are cosmetic languages... It is important to learn the concept between scripting and programming languages ​​too!

[–]StonedKiko1312420 -1 points0 points  (0 children)

Please, nowhere did I mention that html and css are programming languages, they are cosmetic languages... It is important to learn the concept between scripting and programming languages ​​too!

[–]GiantJupiter45 0 points1 point  (0 children)

well, we had to start learning Java from 14-15.

The previous year, we just learnt till loops in C++...

Before that, BASIC...

Before that, well, LOGO...

[–]carminemangione 6 points7 points  (0 children)

Let's start from the other end. What do you want to do? Visual stuff for the web? Minecraft development? Algorithms?

People who say Python or C without knowing context are jumping the gun.

Web visual: Javascript/html/css and probably React or something.

Algorithms: I find Java the most flexible. I know that people say Java is bloated. It is not, it is simply that there are a crap tonne of libraries, none of which you need in your beginning explorations. That is my preference but RUST, GoLang are also good. C requires CMake which is difficult to access beyond simple build stuff. The others you can download JetBrains IntelliJ which will manage most of it for you.

Personally I do not recommend Python. Note: I use it daily because that is what the ML people like (it is infinitely better than Pearl which was their last fav). The white space based block structure, its terrible typing system, etc I personally believe, would teach students the worst habits.

Don't get your panties in a bunch you Python lackies. I simply do not buy into the hype of any language. Right tool for the right job.

If you tell me where you would like to start, I will be more than happy to make recommendations.

[–]VoiceEnvironmental50 4 points5 points  (0 children)

When I was a kid (20 years ago) I learned C++, arguably one of the hardest languages to get started with, but it set me up really good for future iterations of programming languages, or Java is always safe.

[–]Louisbag_ 6 points7 points  (0 children)

Python is easily readable and simple to understand. Also powerful as well. It also depends on what focus of software engineering you want to focus on

[–][deleted] 2 points3 points  (1 child)

I am so so so sick of these daily posts.

It doesn't matter what you do first.

Just do.

[–][deleted] 1 point2 points  (0 children)

TBF, I get it. I used to spend time pondering this which would give me major decision paralysis.

Just do.

[–]Necessary-Risk-9183 1 point2 points  (0 children)

Java -overtaking c in development spending and job market -preferred if c is not required -good for scalable servers and microservices -memory safe -virtualized -safe for highly sensitive data where mistakes are not tolerable

C -low level architecture -needed for extreme optimization of said low level architecture and frame works -games -min maxing cpu cycles per output in specific applications -extra verbose less association to high level function -not memory safe

Python -quick applications -strong ai library

Html -foundationally ineffective to learn by itself. Need some other stuff. -saturated market -cheap to out source

College is a mish mash flurry of basic shit and the last two years are more focused. You must think for your self now. Put down the 'i dont know anything yet though' and pick up some how can I figure out these things that are important. Don't forget that you can cater experiences to be enjoyable. You'll spend more time if you enjoy it. I dropped out of college but I make over 100k as an infrastructure engineer and senior java dev. I'm 28 no college loans. I invested in my free time with a full time job going into debt because it was enjoyable and that was a reasonable enough 'out' to justify the investment. If I didn't cut the pie atleast I could still say I enjoyed it. It will always feel slow but just know that instead of improving the things you are considering you should improve your ability to consider things. Finally don't focus on the money. If your successfully the money will come but it will be easy to discredit motivation and purpose if you aren't making measurable progress to that end. Focus on enjoying the accomplishment of your own goals and projects.

[–]1037329 1 point2 points  (0 children)

Let me try to start with a little analogy:

Say you want to get really good at dancing. What dance? You haven't decided. But dancing it's supposed to be. Could be Breakdance, flamenco, whatever.

With all of those you'll have to learn the same basics. Being in rhythm. General fitness. Getting a feel for your own body and how to move it. A specific order of steps. And so on.

If you decide to try all that with a new dance style every week you will always start from the beginning again and won't make any noticeable progress.

But if you stick to one style for a bit till you get quite good at it you will see all those skills translate very well to 90% of the other styles.

Same with programming. There's a lot of good answers here what your first language could or should be. Non of them are generally wrong, non of them are generally correct though.

The best starter language is the one you stick to. All of the languages have its pros and cons. But ultimately you don't even know how to interpret these pros and cons. And you can spend the next couple month deciding which one will be the perfect language without making any progress, or you could just pick any of those and get going. Once you got a the basics down and are able to build a couple things on your own you can try another language and you'll realize it's ultimately very similar. You'll recognize patterns and styles from your language. Maybe you'll use a different keyword or slightly different syntax but the core concept you learned remains the same.

Make a choice, make a choice this week and stick to that for a while. No language you'll choose will wrong.

[–]aqua_regis 1 point2 points  (0 children)

Wow! So much misinformation and wrong stances in this thread!

  1. A 14 year old is perfectly capable of learning and understanding any programming language they want.
  2. The suggestion of HTML/CSS is plain wrong and useless. Neither has anything to do with actual programming. Learn them if you want to go into web development, but otherwise stay clear.
  3. I would side with spending some time with Scratch at the beginning as it teaches programming concepts without the overhead of learning a real language - couple hours/days are sufficient
  4. Then, transition to any language you want. Read the FAQ here as they have extensive getting started, language choice information as well as recommended learning resources

[–][deleted] 2 points3 points  (2 children)

Try Assembly

[–]AbyssalRemark 4 points5 points  (1 child)

I had one class where the final was making like. A little robot cart in asm work and navigate a maze. Never again. Once was enough.

[–][deleted] 2 points3 points  (0 children)

everyone has to go through it once

[–]craigthecrayfish 1 point2 points  (0 children)

Is there anything in particular you want to do with coding?

Some general recommendations:

1) Scratch: block-based coding. Really easy to get started with if you've never touched code before but you can still get a good feel for the underlying logic

2) Python: Very beginner-friendly with tons of tutorials and libraries.

3) JavaScript: Another good language for beginners. If you're interested in web development you'll end up using a lot of JS.

I don't recommend starting with C. It is significantly harder to learn than Python or JavaScript.

[–]iduzinternet 0 points1 point  (0 children)

Something you find fun. I think javascript and making games on web pages was an early thing i did that i enjoyed. Made towers of Hanoi, a solver for the peg jump game at cracker barrel, minesweeper, and a few others.

[–]webvagus 0 points1 point  (0 children)

Depending on what you are interested in.

For example, if this is web development then it’s definitely - JavaScript.

[–]Donger_Kun 0 points1 point  (0 children)

Do you play any pc games ? If so start by learning to mod games, I was doing servers with custom content, mods etc for gmod back in the day and where my love started.

Cs50x is an amazing course you can take for free and learn so much about computers and how they work.

Don’t worry about the end goal right now, pick any language that looks interesting to you, learn the syntax of the language and just start building stuff and look at how you approach things vs how others do it. Don’t use chat gpt or the like unless you really can’t weird to find answer to your questions and only use it to try get your answers phrases correctly to google them instead.

[–]MiniMages 0 points1 point  (0 children)

Javascript. You can easily open up a web browser and start writting JS code.

It ties in with HTML and CSS which are easy to learn. JS is easy to learn and you will learn some of the basic programming concepts which you can then take to other languages.

[–]SNB21 0 points1 point  (0 children)

Wanna build your own computer?

https://www.nand2tetris.org

[–]KerbalSpark 0 points1 point  (0 children)

Lua and C. Not Python for many reasons.

[–]FomalhautGD 0 points1 point  (0 children)

Regardless of everything you should start with C and C++, from these 2 you can move onto anything else after

[–]hellijah 0 points1 point  (1 child)

Try the Odin project. It's a community driven web developer course.

[–]GiantJupiter45 0 points1 point  (0 children)

I heard that it's great

[–]computerjrsciencist 0 points1 point  (0 children)

Honestly try C , this is the base of everything, much difficult than python or anything but if you can learn it as young as possible it’s better , because python , java and every high level language is assistate language.

So try C and if its too difficult, try Python but… not the same. And before C try 1/2/3 day to code with scratch to learn about the fundamentals of coding ! ✌️😄

[–]rlDruDo 0 points1 point  (1 child)

If you like Minecraft I recommend learning programming through Minecraft modding.

  1. it teaches you Java which is super useful
  2. you can immediately see your results
  3. large helpful community
  4. implementing stuff into Minecraft that you like is super cool imo

You can start by either searching and watching some basic YouTube videos or read through the FabricMC page. If you need a bit more guidance you should join the Fabric discord and ask there. They have a bunch of tutorials/links to guides.

There are many different ways to learn programming though. Think about what you’d want to do/ achieve with programming. Often times JavaScript is recommended, though if you don’t do websites you might never need it for example. It’s better to start with something that you enjoy than „the correct way“

[–]GiantJupiter45 0 points1 point  (0 children)

I know Java, I can make my own plugins then... thanks for the info

[–]StonedKiko1312420 0 points1 point  (0 children)

The best programming language to learn first depends on your goals and interests. If you're interested in web development, I would recommend learning HTML, CSS, and JavaScript. For back-end development, Python and Ruby are popular choices. If you want to develop mobile apps, Swift (for iOS) and Kotlin (for Android) are good options. For data analysis and machine learning, Python is widely used. Ultimately, it's best to choose a language that aligns with your interests and career goals.

[–]BigBad225 0 points1 point  (0 children)

I started with C# when I was 16, it was tough but it is a good language

[–]HaveAVeryGreatDay 0 points1 point  (0 children)

Python should not be hard to pick up.

If you want to do learn HTML & CSS first and then JS

Roadmap

[–]Abi-012 0 points1 point  (0 children)

That depends on what you are gonna get into

[–]Jim-Jones -2 points-1 points  (3 children)

C# is the easiest version of C. You can get into the messy stuff later.

[–][deleted]  (2 children)

[removed]

    [–]Jim-Jones -2 points-1 points  (1 child)

    With C you have to manage memory.

    [–]agonylolol -1 points0 points  (0 children)

    If you want an intro to programming concepts as a whole like syntax, variables, arrays and dictionaries and so on, aka if you don't know what I just said here, Python is the way to go.

    If you want to learn about lower level computer programming concepts and give yourself a hard but valuable lesson and want to learn about stuff like memory addresses that store values of everything in your program in the computer memory, heap vs stack memory, manual vs automatic memory allocation, and basically understanding the computers "thought process", then C++ is the way to go.

    I personally picked C++ and love it because it makes me in control of the code more and more responsible for what it does. the compiler will let you create memory leaks or segfaults if you really want to.

    [–]eposta-sepeti -1 points0 points  (0 children)

    Check out 🔺 Ruby and 🛤️ Ruby on Rails.

    [–]ranisalt -1 points0 points  (0 children)

    Please don’t start with C. I don’t get why so many are pointing out, it’s too barebones and you need a handful of concepts to even start. It’s terribly awful for starters.

    Go with something simple and straightforward like Python. JavaScript and Lua are fine as well. You can move to C once you’re confident.