Looking for a language to learn
lmfao few of these answers seem particularly helpful. I'll give it a go.
So, @planetary problem with computer languages it's split into a spectrum of high and low level languages. The higher the level, the more layers of abstraction between the hardware. Your hardware is memory addresses in your CPUcache or ram; these are filled in with 1's and 0's.
Assembly is pretty much the lowest level programming language. In this language, you are basically giving raw instructions to the CPU to move to this address and read/write values etc. These instructions then map directly to machine code (ie, the code is "assembled"). Nobody really works with assembly anymore except for a specialized niche. Definitely not easy for beginners.
Then we have a slightly higher level language called C. C is great and was widely used bc you could now use a compiler, which takes C code and translates it into machine code. You no longer had to program for a specific CPU, you could now write in a generic language and run it through many different compilers.
Now both of these languages were procedural, meaning instructions were read line by line iteratively down the file to be executed. In comes a new paradigm, called object-oriented programming (OOP). This revolves around the concept of having entities associated with data that you can interact with and it self-manages the data. This is still the most popular paradigm today, so def worth reading up about. Anyways, with this shift in paradigm, C was improved upon with new features - called C++, updated and widely used to this day. Worth noting that all C code will still compile on modern C++ compilers since it's still the same language, tho the same wouldn't work backwards. Hence why we refer to them as C/C++.
I'd say C/C++ is not a bad language to start learning with, but it does have a big learning curve bc it forces you to learn what is really going on in a computer. However, many universities do use it to teach computer science.
Rust and Go are, at it's core, someone looking at C++ and going, "fuck that backwards compatibility shit, we can do better" and making a brand new language. But bc of this, they sit slightly higher up in level. Both are a bit more beginner friendly that C++ but are much less used in industry. Personally don't know anything about Rust but Go was basically Google saying "fuck C++, we're doing our own thing." It's mostly still Google using it but it's picking up mainstream adoption.
Further up the spectrum we have Java. Java is a bit higher level bc it completely forces you to use OOP and also has a garbage collector, meaning it pauses everything every once in a while to clear out memory values that aren't going in use anymore. It was designed to be used in large enterprise code-bases with thousands of files, which isn't that great for small beginner projects. Its syntax is also close enough to C/C++ that you could learn that as a beginner and comfortably switch to Java later on. There's also Scala, built on top of Java, that provides features for working with large datasets across a cluster of computers. Again, enterprise use, not beginner friendly.
Now Java came to be because Oracle decided they could make money if businesses adopted Java, so they kept marketing until they were mainstream. Microsoft saw that and wanted a piece of the pie, so they came up with their own (pretty much equivalent) language. But for marketing purposes they figured they could piggyback on the "C" name and that's how C# came to be.
Above that we have python, which is a language designed for scientific use. It came to be bc mathematicians, physicists, chemists, etc would often have a lot of use for computers to analyze data but didn't know much about computer engineering. Python abstracts all of that away so you're more dealing with a mental mathematical model of the data. It's actually not even a programming language anymore, it's a scripting language. Meaning, python doesn't generate a program that is then run by a machine; Python itself is a program (written in C/C++) that interprets your text file and executes the code. It's incredibly friendly to beginners, but you don't really get to learn how the underlying computer is working.
We also have javascript, which is kinda like python in that you don't have to understand how a computer works at all, but it's mainly used for front-end web development. Front-end, meaning client side code sent to the browser. It's used alongside css, which declares styling of various components in a webpage, and html, which declares the format of components on a webpage. It has nothing to do with Java and is called that for the same reason C# has C in it. There's also typescript, which is OOP enforced javascript, also a superset language. All these worth learning if you're interested in web dev.
I'd like to mention Haskell, which frankly I don't know much about, but it uses a different paradigm called functional programming. Basically, OOP is based off procedural programming which based off of the Turing Machine model of computing. Well, Alan Turing came up with that model but there was another dude Alonzo Church, who came up with another model called lambda calculus. The Church-Turing thesis shows that these models are both equivalently the most powerful model of computing, so naturally some clever nerd made a language to use lambda calculus in a programming language. Worth learning at some point to enhance your skills, but def not beginner friendly.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now