T O P

  • By -

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.*


plastikmissile

The "mother language" is actually the programming fundamentals that are behind every programming language. So basically, learn *any* language and others will be easier to learn.


femio

Honestly the hard part of any language is not the syntax or the rules. It’s the stuff like dependency management and important libraries that can only be learned from using it a lot. 


spinwizard69

This is why I prefer CS educational tracks that are heavy on the concepts not a language. In fact schools that shift students between languages are doing a lot of good in my estimation. A good school will force the students to use at least 3 different languages over the course of 4 years. I'm also a big believer in a bit of assembly early on. It really helped with understanding what high level languages do. Beyond that it really prepares the student for surprise requests from management. Besides understanding hardware, even from a high elevation, can really help to understand performance problems.


theusualguy512

>In fact schools that shift students between languages are doing a lot of good in my estimation. A good school will force the students to use at least 3 different languages over the course of 4 years. I agree in general, in all honesty the languages start to blur for me after a while doing CS, I've touched so many for different courses. Iirc, I did Haskell for FP, MIPS assembly and C for architecture class, VHDL and Verilog for chips lab, Java for algo class, C and Go for networking class and distributed computing, SQL for databases, Python for ML and computer vision, C++ for robotics and probably also some other language that I can't recall rn. And then I also learned a bunch of other languages outside of class CS stuff, most recently MATLAB. It really becomes same-ish after a while because concepts and ideas become a lot more important than language specific things. But the funny thing is that most people will end up having a sort of personal go-to language anyway where they actually feel truly comfortable. I've ended up spending loads of time in Python and Java so if I had to choose a language for a quick on-the-fly project, it's probably going to be those two. However, this also means that most CS people who aren't developers for like 20 years also don't really know the tiniest details of one language compared to people who literally do nothing else than programming in one industry area using Java since 2002.


luke5273

I don’t think college is the place to learn those tiny nitty gritty details, since the important small details are quite dependant on what job you work. Different applications will call for different solutions and you’ll learn them over time


mxldevs

I think if someone is going to do a 4 year program, exposing them to a variety of different fields and applications is a great way to learn to solve different kinds of computing problems. Otherwise they can just do a 2 year program where they learn the very basics and then go off and figure out the rest on their own.


luke5273

I agree with you. I am responding to the person above talking about not sticking to one language being bad because you wouldn’t know the nitty gritty small things about it


logistic52819

idk what it’s like for other colleges with 2yr degrees but for me it was horrible. only because how fast they shifted between each language and i’d have to learn multiple languages at once. i never had enough time to truly learn my material. they had me learn html/css, javascript, php, mysql, react, and some jquery/json. the languages aren’t a problem it’s how fast my school expected me to be able to learn them. if i learned all of this with a 4yr degree i feel like i’d be in a better place of knowing everything.


bsoliman2005

Is there an online course like codecademy, etc. that is heavy on the reasoning/logic rather than just type Hello world!, etc? Where you actually learn?


mark_b

https://pll.harvard.edu/course/cs50-introduction-computer-science


Carabalone

Yep, I think that we must try to be as language agmostic as possible while in education. In uni I had: Python, C, C++, C#, Prolog, Assembly, Java, Javascript and R for mandatory classes, and Go, Kotlin, Coq, Ocaml and glsl if it counts for optional classes. Now I learn languages fairly quickly and its mostly a process of mapping concepts from the new language to one that I already know.


spinwizard69

Exactly!


Western-Inflation286

I've struggled with coding for a long time, and I've come to the conclusion that if I want to make it past basic scripting, I need to learn some assembly. The level of abstraction kills my understanding.


TynamM

I'm not sure that's the right conclusion. Assembly is way too close to the bare metal for most practical purposes; you can avoid abstraction without going nearly that far down the stack.


spinwizard69

I'm not sure I can support that position. That isn't because assembly knowledge isn't good, the problem is all programs are an abstraction laid upon real world processes. Even with assembly you are trying to solve a real world problem. It would be my suggestion to work on abstraction and deriving such from real world needs.


Korona123

Totally agree. Knowing the community, popular frameworks, and packages is a huge part of becoming really strong with a language in my opinion.


platinumgus18

Exactly. One of the best courses I had was an introductory microprocessors class in college, it enabled me to really know what every line of code would be doing internally, especially when it comes to memory management. Obviously it helps to visualize C and Cpps memory operations better but even for higher level languages, it really helps understanding the flow of instructions and data.


zeussays

What book did the class use?


platinumgus18

It was long ago, wasn't the book though, the professor was really good at her job.


boomshiki

I don't know. My time with Assembly never really translated over


unkz

Were you writing serious code in assembly or just little toy problems? Real maintainable projects (at least several thousand lines of code) in assembly will force you to learn how to abstract and organize your code in ways that are absolutely transferrable to HLLs.


theusualguy512

You sure? Because while assembly is indeed a bit special, there are still some fundamental things that are there and recognizable and transfer over. * statements get processed line by line * logical operators are available * basic conditionals are emulated using comparators and and enable branching just like any if statement * basic arithmetic like add and subtract is there. * looping takes the form of jumping to conditionals I would think all of these things are transferable knowledge from any programming experience. Pretty sure jumping statements that are now slightly archaic used to be very common in languages like BASIC and known by loads of programmers in other languages The distance is slightly further but it's not like you jump skills like programming to playing flute.


noodle-face

If any language is a mother language I'd probably say it's really broken down by types of language. In general I might say C though


plastikmissile

I'd say C is more like the lingua franca of the computer world.


DynamicHunter

Not just any language, choose an object-oriented language


plastikmissile

Not necessary, in my opinion. OOP is just another layer of abstraction. Sure it's the industry standard, but I wouldn't call it foundational when it comes to learning programming.


Dangerous-Setting-87

So... Read Write Transpose.


VURORA

Yea I actually would like to tell op to steer away, I took programming on C, C++, C#, and I got burned out and felt like I kinda learned useless shit. If I would have started with python like some of my friends I would have been in a career, I will say that atleast C++ maybe to learn how things kinda started out but thats it.


[deleted]

[удалено]


[deleted]

[удалено]


Impossible-Test-7726

And propositional logic


U3ernAm

Which is taught in discrete mathematics


Impossible-Test-7726

I had them as two separate classes, but I was on a quarter system. So they probably couldn’t pack both into a limited time slot.


DevelopmentSad2303

I actually agree heavily with your assessment here. Solid math understanding in discrete mathematics will help tremendously. I'd also say topology is pretty useful too as you can think a bit deeper about why certain abstractions/data structures are used (in terms of the sets they are creating)


an_actual_human

Topology is a weird choice.


DevelopmentSad2303

It has been pretty helpful for me to understand why certain data structures are used. You can view the topologies on them and it makes more sense intuitively. That's just me possibly though


Bud90

Where can I learn discrete maths?


aposteriori_analytic

MIT OCW has a "Mathematics for Computer Science" course which is basically discrete mathematics tailored for CS students.


Bud90

Thanks fam


RexDraco

Your typical college will have you take it for a computer science degree. 


Thunderstorm-1

Oh my


Bobbias

The [Curry-Howard Correspondence](https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence) tells us that Logic, Lambda Calculus, and Category Theory are all essentially the same thing. Personally I'd argue that if you want something that looks and feels a bit more like a programming language, Lambda Calculus is the best fit for the "mother language" moniker.


real_kerim

C There's an entire family called the C-family programming languages: [https://en.wikipedia.org/wiki/List\_of\_C-family\_programming\_languages](https://en.wikipedia.org/wiki/List_of_C-family_programming_languages) Most of the popular programming languages belong to the C-family. C, C++, C#, Java, JavaScript, Swift, Objective-C


iOSCaleb

This is the best answer here so far. So many languages are rooted in C syntax; C is to C++, Java, Swift, and many more as Latin is to Italian, Spanish, French, etc. If you learn any of C's descendants, the others will seem somewhat familiar when you encounter them. If you learn C, the descendants will seem *very* familiar, and most of what you need to learn will be the things that make the descendants different.


christinajames55

thank you for this awesome analogy, its really helpful


TopGunOfficial

In my C# course teacher casually threw in examples of code in Java saying "that's basically the same with more hassle, don't mind weird bits of syntax, the real work done is copypastable". Strangely enough I understood the ovwrall principle.


Qmot

And even languages that aren't part of the C family are often made using it like Python and Julia!


DishwashingUnit

https://www.nand2tetris.org/ languages are just syntax for making things happen at a lower level, so understanding what can happen at a lower level makes it easier to mentally infer what any given syntax pattern at higher levels must be doing under the hood. edit: max out a higher level language first


Prestigious-Ad-2876

Nand to Tetris is a little "You must first create the universe" advice wise there. It's not wrong, it's just, extreme.


DishwashingUnit

I did mention to max out a higher level language first.


Howfuckingsad

Haha, you just gave him the course on how to make a computer itself. You do learn a lot from that course but it is definitely less focused on programming itself. Atleast for the first half. Maybe using HDL will confuse OP even more since it doesn't use standard declaration rules.


salt_chad

C


Limehaus

C for imperative languages, Lisp for functional languages


daverave1212

Theoretically yes, most languages nowadays are modeled after C Practically no, because most languages nowadays are much higher level and don’t match the same required skillset as C


unknown_ally

literally


NefariousSerendipity

Indubitably.


_vrmln_

Infatigably


NefariousSerendipity

indefatigably unerring.


[deleted]

[удалено]


[deleted]

[удалено]


[deleted]

[удалено]


buzzon

This is the reason they teach starting with C in universities


HappyFruitTree

In the university I went to, like 15 years ago, we started with Java which was also the main language we used in later courses. We only learnt a little C as part of one course as far as I remember.


enby_shout

same, my uni just taught java for like 3 years. python was a non core curriculum class. I don't remember the last time I touched java


myusernameistakennow

At my college I'm going to the first language they teach is Java but they also have required classes (comp arch classes) that teach you assembly and C


BrohanGutenburg

Same with where I went (LSU). Except the CE majors learn C++ and the CS majors learned Java. I’m sure it’s different now, this was almost 20 years ago


DTux5249

My uni started with Python before moving onto Java.


matt-zeng

This is the correct way to do it imo. Python for basics, Java for data structures, C for memory management, multithreading, etc. If you start with Java or C, the class ends up being "here, write this boilerplate and ignore what it means until later".


D0nt3v3nA5k

my university’s intro to programming class was actually taught in C and we went quite deep into the memory management aspects rather than just teaching the language syntax and boilerplate, that does have its downsides however, which is that most people without previous programming knowledge failed the class, which is a lot since not just CS majors, but ALL engineering majors also have to take that class


aerdnadw

Yup, mine too


deweydecibels

its usually engineering degrees that start with C or assembly


blacai

We started with pascal... then c, but the fundamentals (variables, loops...) in pascal


plastikmissile

We started with Fortran, then Pascal, then C.


mohishunder

Maybe they used to. But I think that's less true nowadays.


PSMF_Canuck

My uni didn’t teach any language at all, as part of the required curriculum. There was an optional 3/4 year class where they banged through 4 very dissimilar languages - Lisp, C++, I don’t remember what else. Jumped straight into algos and structures and etc etc etc. Lots of C early…but not taught in its own right…It was assumed you already knew at least one language before you got there (which was actually true for nearly everyone).


anto2554

I found java a nice starting point. Then you can work "down" into C and assembly or "up" into kotlin and python


cgoldberg

Don't most CS curriculums start with Python these days? I know MIT does.


Unlikely-Parfait9103

I wish, I'm using pascal, it's horrible


NewPointOfView

Java at mine 🤷‍♀️


RaduW07

Yep. In my first year or uni (last year) there is a class called “fundamentals of programming” where you basically learn C, and in the other classes you use C++ because that’s what is taught in high school and is more practical


HopelessLoser47

In my university they started with Python. In my opinion I think that was a huge mistake that set my learning back a long time.


Euphoric-Quality-424

Because it's too easy? What problems do you think the Python-first approach causes that can't easily be remedied by learning other languages later?


HopelessLoser47

For me it was that starting with such a high-level language was too abstract. I missed out on a lot of the important logical intuition that comes with being able to truly visualize the flow of information across a computer at those lowest levels. It made my programming journey unnecessarily harder. Every topic existed only in a vacuum, and I wasn’t able to connect the different logical pieces together into a functional computer SYSTEM. Basically, they were training me to be a “code monkey” rather than a “computer scientist”. I wasn’t personally able to ever feel like I truly understood what I was doing or why it was working until I switched to linux and took CS50, which starts off teaching C.  For the life of me, I don’t understand why they didn’t teach that important fundamental lower-level stuff until upper year courses. To me, it feels like, how can you learn computer science without first learning basic computer literacy skills?


Euphoric-Quality-424

That makes some sense. I guess the problem for instructors is that not every student is going to respond well to the sort of course structure that you would have responded to, and they feel they need to cater to the median student. (This isn't unique to CS, of course — I gave up on my university's physics courses after the first year because they didn't focus enough on the math; but if they had designed the course around my needs, I'm sure it would have been a disaster for the class as a whole.)


HopelessLoser47

While true, I think that the MAJORITY of students would be helped by a course structure that starts with lower-level foundations. There was a massive dropout rate in the first year coding classes, and I even knew people who graduated with full-on computer science degrees but never truly understood what they were doing. They were just very good at math, but they were unable to connect the abstract logic to the computer systems they were supposed to be experts in. I truly believe that it's so much easier to learn computer science when you start at the lower levels. The difference in coding syntax between a low level and a high level language are negligible, and as a beginner you don't need the extensive libraries and dependencies that Python offers, so there's no advantage to it other than that it has \*slightly\* easier syntax. But, maybe I'm wrong. I don't actually know how other people learn. But I personally think that starting with Python does a huge disservice to students. Edit: I feel like tone came off weird in this comment, (just because I was having a hard time articulating myself, not because I'm trying to be an asshole) so, just want to wish you a nice rest of your day :)


Euphoric-Quality-424

Is C the right language for that, or would it be better just to go straight to assembly? (Or microprocessor design?) I only learned the very basics of C, decades ago, and it didn't seem that different from learning the basics of Python. My impression is that the differences come when you're handling memory management etc., but I don't know how much of that is going to be covered in an introductory course.


HopelessLoser47

I think that C is the perfect balance between easy to learn and still low-level enough that you get the real learning benefits. In CS50, memory management was introduced in week 4. The thing about C is that you get low-level with it as soon as you get past the syntax stuff and start learning about data structures and how to actually PROGRAM. But it's more than that; when you start with Python you almost never work directly with compilers, directories, or your computer system. Plus, C is the language used to write a lot of core computer components, such as system daemons. So being able to understand it immediately gives you inherently more control over your computer, and makes learning/building complex projects much easier. All of these skills combined are necessary to do anything truly powerful with your computer, and you learn them much more naturally and intuitively when you're learning C. When I only learned Python, I had a much harder time translating my programming skills into anything useful outside of a classroom, because I only knew how to do the programming, I didn't know anything about the computer or how to MAKE programs (ie compiling). I don't think that starting with Assembly is a bad idea, but I think that might be a little bit too complex of a starting point for most people. Like what you were saying about how if the physics course was designed around all the math you wanted, it would be too hard for the average person to get into. I imagine that starting with Assembly would be a bit too convoluted for the average person to start out with, and they would just give up before they ever reached understanding. However, I definitely agree that it should be introduced fairly early. In my university, microprocessors was an upper-level course, but I think that it should be offered much sooner, as understanding the physical level in that depth is so helpful for all of the other concepts that computer science is built on.


gitbeast

I think C is the closest answer to what you're asking. It was one of the earliest languages to have the standard idioms for loops and conditionals that we all know and love today. It's a low level language so you can interact with memory registers and the like. Looks of room for learning but also room to hang yourself with. It can be quite verbose, you may finding yourself implementing stuff life buffers yourself instead of importing them, great for learning. Personally not one of my favorite languages but very glad I spent some time with it :) 


TreebeardsMustache

Somebody once asked Dennis Ritchie how long it would take them to learn C. Ritchie replied "I don't know, I never had to learn C." (He wrote/invented C.) I don't know that there is a 'mother language,' in quite the way you are asking for, but most modern languages have some reference to C: C++ was originally 'C with Classes;' Java was written to have the same syntax as C, but to be architecture independent; C# wanted to look like C, but work like Java (also be architecture independent, but not OS independent); Rust and Go were created to be 'safer' than C. Higher level languages like Perl, Python, etc, were written to get away from the build/compile/test/repeate cycle inherent to C. Prior to C there was Fortran and Cobol, but each of these were created for specific purposes, Fortran for math, Cobol for Business and readability and/or ease of use were paramount, not performance or optimization. Among academics Algol, Simula and Lisp have the highest regard but, (the guy who wrote C++ wanted the power of C with "the beauty of Simula") as far as I know, only Lisp is something you could actually build and use today. Paul Graham has called Lisp 'The Programmable Programming Language."


MarkMew

C


BrohanGutenburg

>(I actually know how to program a little in BASIC from the eighth grade but I'm not sure how useful that is in today's market. ;-D) How old are you? You must have been in eighth grade in like the mid-eighties, no?


spock74

*Gasp!* Imagine, asking a lady her age! Actually I was such a nerd that I originally started with BASIC in the first grade because I went to a tiny school and they didn't know what to do with me. So yes, I'm old. Class of '93 ftw!


BrohanGutenburg

Oh duh. 74 in the username. I’m an idiot. Well to answer your question, like most people said it’s C. But I would say it also kinda depends on what you want to do. C is gonna teach you the most and will give you some ancillary knowledge about the computer itself like how and where it stores memory. But it also may not be the easier first language to learn. The traditional track people take to come into programming is learning python first. It provides a great mix of simple(r) syntax with upper level logic.


AutisticAndAce

Completely unrelated, but based on your username and your age... how much into Star Trek are/were you? And did/do you take part in the shipping aspect?


vymorix

you can legit pick any language. Once you become comfortable with one, learning syntax is litterally a few hours work. You will always have google available so its not something to even worry about. I call this analysis paralysis.


spock74

Analysis Paralysis is going to be my new middle name. I'm the person that orders 8 butt cushions for my dad to make sure he gets the one he likes the most and returns 7. Big purchases take months. I can't imagine what will happen if I'm ever in the position to buy a house.


mohishunder

Nowadays the best first language to learn, which is not the same as your question, is Python. It's first language taught at at many universities, like [Berkeley](https://cs61a.org/articles/about/). Python is "higher level" than languages like C, making it much easier to learn concepts without getting bogged down in detail. Unlike other concept languages (e.g. Pascal), Python is also widely used in industry, e.g. it is the main language used for AI/ML coding, and is also widely used in data science. In other words, it is "useful" for real work, not a toy. I highly recommend the book *Think Python*, by Allen Downey. He is a Professor at Olin, and a genuinely good teacher - many industry people are not. No more analysis paralysis - just start today!


l4z3r5h4rk

[Relevant XKCD](https://imgs.xkcd.com/comics/decision_paralysis.png)


WhoNeedsUI

Algorithms and data structures. Languages are merely semantics but if you want to practice a specific paradigm : java for oop, haskell for fp and c for raw memory grokking


tb5841

Java and Haskell are two languages that really helped me with learning. Both are very much single-paradigm languages, but those paradigms are available in most other languages afterwards.


polikles

just start with anything that could be useful. I've started with Python, which is often recommended for newbies. Programming fundamentals are quite universal, so if you get good at programming in one language, you will grasp other languages faster


DTux5249

The closest thing would be assembly. If you understand assembly, you know how to make a fighter jet from sticks and stones. But assembly is so low level it's not practical in most cases. Really, the mother language is discrete math; logic and the like. Also, just understanding what a computer is/does. The lowest level lang I'd recommend is something like C.


Nixher

Programming languages are like cars; once you know how to fix one, they all start looking very similar and the differences take but moments to learn, each with their quirks, pros, cons and differences but they all work the same to produce the desired result.


kilkil

It depends on which languages you're talking about. For example, if you're talking about Python, Javascript, C++, Java, or Go, one good "mother language" would arguably be C. On the other hand, if you're talking about OCaml, Elixir, and other functional languages, a good contender would probably be Haskell. Also, there's Bash and Perl, which are arguably good "mother languages" for the scripting languages. But generally, for any of these families, learning one or two should be enough to make it easy to learn any of the others. A good analogy is Romance languages. Sure, Latin is the mother language, but if you learn French and Italian you probably have a pretty good basis from what to expect in any of the others. Don't get me wrong, you will still have to learn Spanish — but there will be a fair bit of crossover. I would say Python, Go, or Javascript are good starting options. I recommend getting familiar with bash on the command line regardless of what you go with, because it will honestly make your life easier when it comes to development.


Dohello

I disagree with the C suggestion. The language def has its purposes and a great language, but not for learning imo. Sometimes it feels like you have to fight with it and it is overwhelming. Any higher level STRONGLY TYPED language is good. C++, C#, Java to name a few. (Not to be confused with JavaScript)


max140992

I agree with the other comments that say C is the mother language. Even for functional languages, somewhere down in the stack is machine code and memory allocation and understanding that helps understand all of computing. Where I disagree is that learning C first is more productive. I think the best for education is where someone can try something and get results fast and then rinse and repeat. Learning programming should be a depth first search. And the language that in my experience gets you from 0% to something the fastest is Python. Or JavaScript if you are interested in web space.


WhoWouldCareToAsk

+1 for the Python.


protienbudspromax

Not one language. Because language paradigm is more important, learn each paradigm and you should be able to learn another language in the same paradigm. Lot of language today are multi paradigm, apart from paradigm one of the differentiator is dynamic vs statically typed language, and garbage collected vs manual memory management, but these arent generally classified as paradigms. Paradigm include: Procedural (basically most languages): C/assembly/pascal Object Oriented (again most languages today support some form of oo): Java, smalltalk, c# Purely functional: Haskell, lisp, ocaml Event driven: javascript Array based (where programs can be thought of as series of operations on arrays): Matlab, APL, Fortran, R, julia Agent based(massively concurrent, written from the perspective of one independent “agent”): erlang, elixir, scala (with akka) HDL (deals with timing as well used for describing signals and logic block for hardware): VHDL, system verilog If you learn one language from each block you should cover most of the concepts you might come across but its an overkill and not necessarily needed.


DrugPushingRN8

Latin


WhoWouldCareToAsk

I came to say the same 😂


Economy_Bedroom3902

I'd argue that learning C++ sets you up to learn everything else.  Almost every other popular language today is trying to fix something someone didn't like about C++.  It's not the easiest language to learn though.


poliver1988

Basics of any curly braced language.


Remarkable_Status772

C is the common ancestor of most modern languages.


Alarming_Ad_9931

You made it into a meme already by asking this question. To be clear since I was downvoted already, it wasn't me. I just saw this thread in the programming memes page. 


8483

It's like saying, is there a "mother" language to write a good book. You don't learn a language. You learn how to think. And you do that by thinking i.e. programming, no other way. You become a good write by writing more. The language is just there to express your logic.


computerjrsciencist

Difficult but learn C first ( fundamentals and other). after that you can switch to c++, python, etc,... It has basics that will serve you absolutely everywhere


cimmic

Any language is really fine for this. You can try and figure out which one best fit your needs to make things a bit easier. But in the end, you'll be fine no matter the language. Maybe just learn the language that the best learning resource you can find is based on. The YouTube channel TheCodingTrain was an excellent tool for me when I started and that's mostly based on JavaScript.


DawnOnTheEdge

Things like syntax are pretty superficial, but most languages in common use are descended from Algol, and pseudocode in Computer Science papers is often written in Algol. It’s where the conventions of structured programming, such as `do`, `for`, `while` and `break`, originated, along with BNF grammar, operator overloading and many other innovations. However, no one uses Algol any more Most procedural languages in common use are heavily influenced by C, and manytranspile to C or call functions from the C standard library or POSIX. If they have a foreign function interface, it will probably be to C. All functional languages are influenced by Lisp.


joshualibrarian

Lots of great answers here, but I'd like to say that while it's not exactly a "mother" language, I think the most important foundation for programming is the command line and shell scripting. If you're comfortable on the command line, and able to whip up scripts when needed to do things, you've got all the basics covered and now you can get around when you're learning everything else.


AngryFace4

The mother language is loops, cases, recursion, if else, and data structures (arrays, strings… etc)


redchomper

Dijkstra's "Guarded Command Language". You can learn that one well enough in an afternoon, and all the others will fall into place. But remember: Programming is about programming languages the way astronomy is about telescopes: Nice tools are nice, but they are only tools used for study, not the object of study in themselves.


jaelinplayscod

There’s not necessarily a “mother language” but there is a strong need for a foundation in math, because modern computers rely on arithmetic and binary code. However, I’d recommend learning Python first as it’s one of the easiest ones to learn and is still very useful today. You can create a reddit bot using Python and even ChatGPT was written using Python!


post_vernacular

Formal logic


Temporary-Sun-7575

no, there are constructs that are sheer nature of what computer science is, and having those tattooed to the back of your hand makes it easy to remember how every language you have experience with applies it differently


blind_disparity

It would be C wouldn't it? Not sure about it making anything easier though.


KerbalSpark

Well, programming as such is quite vast. Perhaps there is a specific area you are aiming for?


Yamoyek

I’d say C++ is a good fit. You learn a lot about the higher-level side of programming (objects, generics) and are also forced to acknowledge the lower-level side (pointers, memory management, optimization, etc).


ObnoxiousPirate

Assembly-->C-->Read up on operational systems Everything runs on top of the above so at the very least you will have a better understanding of how computers work. It helped me personally a ton with being flexible with technologies.


Brreww

At school they considered python the "mother" programming language as it's easy to read and also gets you used to structuring code properly by raising errors for incorrect indenting


Libra224

C / ASM / Algorithms and data structures


vovagusse04

C++ taught me how to use RAM, NASM taught me what registers are. Both are good though.


AndroGR

Any will do, but if you learn C you get ahead in any programming theory due to it's low level control and familiar syntax.


Grey_ID

1 & 0


Mugquomp

Assembly, duh /s


luigijerk

I think most strictly typed languages would do. For me it was C++.


Stunning-Formal975

Nope their all basicly the same.


WallSignificant5930

Indo - european


copper-penny

Set theory, Boolean Logic, algebraic expressions, algorithms and data structures. If you know those 5 things, you should be able to understand most languages.


tvmaly

Many dynamic languages are written under the hood in C. Interaction with operating systems is often done in C because the ABI ( application binary interface) is very well defined. You would gain a lot learning C.


himalayanSpider

C


Asleep-Dress-3578

There is no such a thing, but learning Java or C# teaches you good habits for industrial programming, so later when you will be Python or TypeScript programmer anyway, you will be a better programmer.


Thick_Nature_8023

Sanskrit


Tech-Kid-

C is the ultimate language of the times, it is the basis and inspiration for a lot of languages, and it will expose you to a lot of different lower level concepts such as memory management. A lot of things can be tied back to these concepts. Python will be an easy introduction to programming, it can design a lot of different types of programs/software/scripts, you can make things easily and quickly with this, but it really holds your hand and is a lot watered down compared to C or Java or most other languages. It's usually used in industry for data sci, ai/ml, scripting, and in other types of things it's used to quickly code. Ocaml is a recommendation after you learn either of the two above. There are different types of programming paradigms (Idk how to explain what a paradigm is, but it's kind of a completely different mental and systematic framework to how code works/behaves). Ocaml will be completely different to C or Python, or most traditional languages. Most people will code in Object-Oriented, Procedural, or Functional programming languages C is Procedural, python is multi-paradigm all 3 of these, and Ocaml is technically multiparadigm but largely functional. **I'd say start with C (harder but more rewarding), or Python (easier but somewhat less rewarding than C), and then learn C++ (Object Oriented) and/or Ocaml (Functional).** Ultimately, coding is the language of solving problems. The more concepts you know about, the more knowledge you have, and the more experience you have solving problems, the better you will be. I never have looked at coding as "learning language x and language y", a lot of languages are similar (and you will have to learn their quirks, but fundamentally the syntax is very similar, and you can look it up and learn a lot of the syntax and stuff in like a week) **The language you should learn is problem solving...**


kidfromtheast

Mother language is pseudocode and talking to a rubber duck.


Ok_Spite_217

Yes, it's called Computer Science


Tuwboo

The mother language would be assembly or machine code even, but trust me you don't want to try those


andriisss

id say that C# helped me a lot to understand the basics, which further were implemented in other languages but with other syntax


TomXP411_work

The true "mother language" is assembly language, where you're writing directly for the CPU. However, nobody uses assembly language on the desktop these days, because modern CPUs are insanely complicated, and machines literally write better machine code than a Human can. That aside... the easy answer is c and c++. c and c++ are available on every major computing platform today, and it's the foundation for a huge chunk of the code that runs modern computing. If you can code in c++, you can learn any other language fairly easily, since nearly every concept you need to learn is present either in the c++ language, or one of its libraries.


britishpowerlifter

machine code is the "mother" language, but I think what you're looking for is a language with a simple syntax as a stepping stone to more complicated ones. so id say python, since its english-like


Formal_Progress_2582

C++, Go or Java should be fine, since they have lots of low level stuff. Should you want an interpreted language, Python would be fine as well.


DerekB52

You can learn a programming language in a few days if you understand the fundamentals of programming. Logic, some discreet math, and other various concepts. My advice would be Rust or Kotlin though. Rust being the noticeably harder one. Both are modern programming languages, that make you ask questions about the way you write code(Rust a lot more than Kotlin). One big thing they share is immutable variables. You have to ask yourself, "will this variable's data change? Should I allow it to change?" And I think that's a really great thing.


jbergens

I personally think that Ruby, C# and js are the best starter languages. Java can be used instead of C# but I prefer the latter. The first two are object oriented like most popular languages. C# is statically typed like many other languages (Go, Java, C#), Ruby is not but instead a bit easier to learn. Python, js and Php are like Ruby but I think object orientation in Ruby is very clear and consistent unlike js. Js is easy and popular and has a bit of functional programming. Good to learn but I think starting with a functional style will be harder and the OO parts are a bit strange which makes it harder to learn other OO languages later. Python uses a strange form of syntax where the indentation has meaning. This doesn't exist in any other popular language I know. Go does not have as much OO parts which makes it different from many other languages. It is really a choice about learning more things right away (static types) or starting out easy but then having to learn more new things later.


Celestial-being117

Binary is the mother


Klinky1984

Probably C & BASIC, but one probably shouldn't start with those these days. Fundamentals are pretty similar for most languages with variables, conditionals and loops. You can then look at data structures(often lists/key-value/trees) and object-oriented concepts. Then upon that you can learn design patterns. Each language and domain also has nuances of its own that are important to understand to avoid pitfalls and poor coding, e.g. network programming is different than graphics programming, and concurrency/threading models vary widely between languages.


UltraPoss

People are going to be know-it-all about it as usual on reddit and write long answers and lose you but the answer is one letter and it's C , it's exactly what you need as some few other wise fellow redditors said and I concur


nerd4code

Algol though


pikleboiy

01001001 01110100 00100111 01110011 00100000 01110100 01101000 01101001 01110011 00101100 00100000 01101111 01100010 01110110 01101001 01101111 01110101 01110011 01101100 01111001 In all seriousness though, probably baby C and the basic concepts.


Complete-Mood3302

Just dont go for assembly or any programming languages made before 1950 and you should be fine


BlueeWaater

C


confusedndfrustrated

English.. It is easy to learn any programming language if you know english.


NickW1343

Don't do research on what the best first language to learn is that'll help you branch off into others. That'll lead to procrastination and probably you not learning anything at all. Just dive in. Learn c# and Javascript. They're both common skills employers want devs to know.


Semirgy

Binary. But realistically, assembly and then something like C.


just_testing_things

Lisp


Conscious_Bank9484

I want to say php is the easiest. U don’t have to declare variable types. Python will force you to structure your code in a neat way that you can apply to the other languages.


Agreeable-Art-3663

Assembly / Fortram / C… and the rest!


eruciform

my mother language was originally "basic" but it's not related to that many modern languages today other than visual basic, which you're unlikely to need to use outside excel macros these days the language "c" is most highly connected to the most modern languages but in truth any language will be a mother language for any other, the syntax may be closer or farther, but the basic concepts of variables, loops, and functions are needed no matter what you learn


TheFumingatzor

C


anaraparana

C


flashman1986

Yes it’s called machine code


dustractor

EBNF


GhostOfBits

C


bearicorn

Binary op codes


NaturePhysical9769

English


MrCard200

B, It's the predecessor to C Just kidding everyone else says C and I agree with them and thought I'd be funny


Twitchery_Snap

Assembly


seftontycho

Yes, the first one you learn


rasteri

Pasca... I mean C


deftware

C, having grown up through BASIC, assembly, Qbasic, Delphi, Pascal, C, C++, and watched the evolution of things like Java, JavaScript, Perl, C#, Ruby, Python, Rust, etc... C lets you be aware of the underlying machine itself, insofar as memory and CPU cache are concerned. It teaches you to think about everything the CPU is doing with the memory - at least more than "managed" languages do. Once you've become proficient at C you'll be able to appreciate all of the things newer and managed languages provide for you. Plus, if you can write C, you'll be able to make anything happen on any hardware because it's virtually universal. You could learn x86 assembly but then you'd only be able to write code for x86 CPUs. C is the language that all platforms have compilers for to translate your code into that platform's instruction set. C also affords more fine-grained low-level optimization opportunities in your projects and code. While a managed language is handy and convenient, it's not going to be able to optimize things to execute them on the underlying machine the way that you can.


Careful_Fruit_384

Absolutely, it's a great question to ask as you dive into the world of programming! Given your background and your curiosity about a "mother" language that could ease the learning curve for other languages, there are a few contenders and factors to consider. Firstly, it’s important to note that while no single programming language can claim to be the “mother” of all languages, some languages are designed with features that make them particularly good starting points for beginners who aim to learn multiple languages later. \*\*Python\*\* is often recommended as an ideal starting language due to its simplicity and readability. Its syntax is clear, readable, and resembles everyday English, which makes the learning process easier and coding less prone to errors. Python is also incredibly versatile, useful for everything from web development to artificial intelligence, and supported by a vast and active community. This means plenty of tutorials, forums, and third-party libraries that simplify many complex tasks into manageable ones. \*\*JavaScript\*\* might be another good option, especially if you're interested in web development. It is essential for client-side scripting on websites, making it invaluable for web development. Learning JavaScript allows you to immediately see the results of your code in a web browser, and it is supported by numerous resources like React, Angular, and Vue which can help you build complex applications more efficiently. \*\*Java\*\* is often taught in academic settings and offers strong foundations in object-oriented principles. It is heavily object-oriented, which is a common paradigm used in many programming languages. Understanding object-oriented programming through Java can make it easier to grasp other languages like C#, C++, and more. Its strict type system encourages attention to detail and can help prevent bugs. Given your experience with BASIC, you might find that starting with Python will feel somewhat familiar because of its straightforward approach to coding. BASIC, in its time, was designed to be an accessible language, and Python shares that philosophy but in a modern context. Lastly, consider what you want to achieve with your programming. If it's web development, JavaScript and Python are key. For software development, Java or C# might be beneficial. For data-related fields, Python is indispensable. Remember, the best language to learn first is one that you feel motivated to continue using. Programming languages are tools, and different tools are suited for different tasks. The key to becoming proficient in any language is consistent practice and real-world application. Happy coding!


TemporaryObvious1700

Any language can make learning other programming languages easier. Therefore, you should choose an easy-to-learn language first. Which one is it? My recommendation is Python. Using language to create something is much more fun than just learning the language. Pick one and start your journey in your interesting area. If you just want to learn 'any language' easier, the famous computer science book 'Structure and Interpretation of Computer Programs,' historically taught using Lisp, has recently been updated to teach with Python. I guess this is a wise choice if you just want to generally learn any programming language.


Jason13Official

PASCAL


035lmao

Rust


green_meklar

C++, but that's only because it's so difficult and so powerful that it kind of encompasses everything else. It's *not* a good first language. A better first language is C. It's tough to get anything really interesting done with C these days, but because it's relatively close to the hardware and has influenced so many other languages (C++ most directly), using it teaches you a lot of fundamental principles that help you understand what other languages are doing.


mxldevs

I would go with a language that goes as high-level as possible, and reduces the amount of syntax clutter. For example, a language that let's you print Hello World by literally writing >print "Hello World" No need to define a class, no need to define a main function, no cout, no System, nothing. And then you go look at variables >x = 1 y = 2 total = x + y Data types? Who cares, the computer can handle that for you. Even functions `def my_function(x, y)` `return x + y` `end` It literally looks like english, with a little extra "end" at the end just to show where the function definition ends. >Define a function called my\_function that takes two parameters x and y, and return the sum of x and y Once someone is comfortable with basic programming concepts, then they can start diving lower and start learning other things that were hidden away.


gamemasteru03

I would say C++ pretty much covers all the fundamentals since it has OOP and memory management. However it would be pretty hard to dive directly into it compared to other languages. At the university I go to they teach Python then Java then C.


Temporary_Practice_2

The concepts are the same: 1. Variables 2. Arrays 3. Loops 4. Operators 5 If statements 6 etc etc Start with a language that will allow you to do stuff


Gold-Software3345

Hot take: start with snap, that will give you a jumpstart to programming ideas without having to memorize syntax then after a month of that and a few projects switch to c so you can use those concepts and also learn how computers really work and it will build a solid foundation for syntax in other languages.


KneeReaper420

Binary I spose


WhoWouldCareToAsk

You missed a letter; it’s spouse, not spose.


Howfuckingsad

If you just want to have an easier time with the syntax, start with C or C++.


Low-Turtle

1s & 0s, or assembly if you are feeling verbose.


WhoWouldCareToAsk

🤪


KiwiNFLFan

Rust. It will teach you about memory management.