Jump to content

Looking for a language to learn

planetary problem
Go to solution Solved by Raytsou,

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.

i think this is the right forum but if its not, sorry moderators!

so anyway some context, i have near 0 knowledge of any coding language (or coding in general) other than python (which i have to learn for school AI classes) and will be doing this more or less to be occupied during my summer break or as a hobby. the original language i had in mind was C++ but then decided to ask on the forums before doing anything. i have nothing particular i plan to do after learning but may make some simple android apps for myself.

Link to comment
Share on other sites

Link to post
Share on other sites

Learn the Real Man's(tm) language:

Assembly

NOTE: I no longer frequent this site. If you really need help, PM/DM me and my e.mail will alert me. 

Link to comment
Share on other sites

Link to post
Share on other sites

23 minutes ago, Radium_Angel said:

Assembly

i have never heard of this but researching it, it seems like a good option given my phone has only 2 GB ram 

 

11 minutes ago, AidanDaDoolphin said:

python

javascript

SQL

 

python is a no for me honestly but will look into others, never heard of SQL

 

also, what is the difference between C, C++ and C# ? and why is python so popular?

Link to comment
Share on other sites

Link to post
Share on other sites

13 minutes ago, planetary problem said:

and why is python so popular?

Easy to write, that's about it

                          Ryzen 5800X3D(Because who doesn't like a phat stack of cache?) GPU - 7700Xt

                                                           X470 Strix f gaming, 32GB Corsair vengeance, WD Blue 500GB NVME-WD Blue2TB HDD, 700watts EVGA Br

 ~Extra L3 cache is exciting, every time you load up a new game or program you never know what your going to get, will it perform like a 5700x or are we beating the 14900k today? 😅~

Link to comment
Share on other sites

Link to post
Share on other sites

15 minutes ago, planetary problem said:

i have never heard of this but researching it, it seems like a good option given my phone has only 2 GB ram 

I was joking. It's the language you learned back in mainframe days if you wanted to code to the bare metal for maximum performance.

Assembly is a nightmare to learn.

NOTE: I no longer frequent this site. If you really need help, PM/DM me and my e.mail will alert me. 

Link to comment
Share on other sites

Link to post
Share on other sites

bash/sh (linux/mac) or batch/powershell (windows) -> python (linux/mac) or AutoIt (windows) -> Any C language -> Rust

PLEASE QUOTE ME IF YOU ARE REPLYING TO ME

Desktop Build: Ryzen 7 2700X @ 4.0GHz, AsRock Fatal1ty X370 Professional Gaming, 48GB Corsair DDR4 @ 3000MHz, RX5700 XT 8GB Sapphire Nitro+, Benq XL2730 1440p 144Hz FS

Retro Build: Intel Pentium III @ 500 MHz, Dell Optiplex G1 Full AT Tower, 768MB SDRAM @ 133MHz, Integrated Graphics, Generic 1024x768 60Hz Monitor


 

Link to comment
Share on other sites

Link to post
Share on other sites

16 minutes ago, Radium_Angel said:

Assembly is a nightmare to learn

as i said, i have 0 knowledge about coding RN but i have 3 years to learn so it shouldn't be a problem but i don't want to learn a out dated language. if i learn a language i want to at least be useful for my CV

 

5 minutes ago, rcmaehl said:

bash/sh (linux/mac) or batch/powershell (windows) -> python (linux/mac) or AutoIt (windows) -> Any C language -> Rust

i have no clue of what u just said

 

BTW, im using this site TIOBE Index - TIOBE

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, planetary problem said:

i have no clue of what u just said

Choose one from the first section depending on what OS you're on. Once you've gotten a hang of it, choose one from the second section, and so on.

PLEASE QUOTE ME IF YOU ARE REPLYING TO ME

Desktop Build: Ryzen 7 2700X @ 4.0GHz, AsRock Fatal1ty X370 Professional Gaming, 48GB Corsair DDR4 @ 3000MHz, RX5700 XT 8GB Sapphire Nitro+, Benq XL2730 1440p 144Hz FS

Retro Build: Intel Pentium III @ 500 MHz, Dell Optiplex G1 Full AT Tower, 768MB SDRAM @ 133MHz, Integrated Graphics, Generic 1024x768 60Hz Monitor


 

Link to comment
Share on other sites

Link to post
Share on other sites

7 minutes ago, planetary problem said:

but i don't want to learn a out dated language.

It's not technically outdated, insofar as not really used much, because the performance hit from having the high-level language convert back down to assembly, isn't an issue any more with modern powerful systems.

NOTE: I no longer frequent this site. If you really need help, PM/DM me and my e.mail will alert me. 

Link to comment
Share on other sites

Link to post
Share on other sites

so far this thread has made me more confused than help me but it did lead me to discover Koltin which i s looking to be a good option. my current plan is to try out C++, C# and Koltin and see what language comes to me the easiest and then go ahead with that. any suggestions?

Link to comment
Share on other sites

Link to post
Share on other sites

Dart, awesome language. Javascript, python and php are good too

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

16 hours ago, Sakuriru said:

Rust.

looks like a good option but this is the first language I'm going to properly learn and the steep learning curve will just make me frustrated. will check out though.

 

in all seriousness i hoped to get a more straight forward answer but it seems like the best path is to try different languages. will consider C++, rust, dart, JavaScript, Koltin

Link to comment
Share on other sites

Link to post
Share on other sites

While you technically can do anything with most of the languages, they all have their strengths and weaknesses.

What do you want to make? What fields interests you? Where do you see yourself working in the future?

Any C-style languages is good on the CV.

 

Kotlin, Java, Dart and C# are great if you want to make apps, thought you can make alot more with them (the two latter also makes it easy to make iPhone apps if you're already making Android apps with them)

Javascript with e.g. React Native is also a decent alternative to make apps.

 

Personally, I've always felt that having a reason and/or idea to work on keeps me motivated to continue learning anything new.

Link to comment
Share on other sites

Link to post
Share on other sites

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.

This is a signature.

Link to comment
Share on other sites

Link to post
Share on other sites

10 hours ago, Raytsou said:

lmfao few of these answers seem particularly helpful. I'll give it a go

THANK YOU i was struggling to see what tf all these languages were about! so the way i understand it, the lower the language level, the more directly the user "talks" with the hardware and thus less translation levels are used. this really helped me out. i think i will give C++ the most seriousness because i think it being a low-level language does have some benefits for me as im also trying to understand the core workings of a computer (got this "inspiration" to do that because of the Minecraft computer "CHUNGUS 2". its pretty darn fast for a computer made with Redstone) will still look at Java, Koltin and rust

Link to comment
Share on other sites

Link to post
Share on other sites

keep in mind companies have to hire people that are able to maintain and add features to existing code, so these are most likely what theyre looking for: C/C++, Java, Javascript/Typescript, C#

 

that said if i was looking to just learn something for myself, i would choose Rust

MSI GX660 + i7 920XM @ 2.8GHz + GTX 970M + Samsung SSD 830 256GB

Link to comment
Share on other sites

Link to post
Share on other sites

14 hours ago, Neftex said:

keep in mind companies have to hire people that are able to maintain and add features to existing code, so these are most likely what theyre looking for: C/C++, Java, Javascript/Typescript, C#

 

that said if i was looking to just learn something for myself, i would choose Rust

These companies will eventually need to rewrite their applications at some point. Much of the banking mainframe still run on COLBO programmed apps made back in the 1900s and nowadays most of these colbo devs have long since retired, and for some more than retired. It is as much a strong case for companies and industries to adjust to the shift in technology and skills/talents as it is for workers to adjust to the demand of the industries and employers. Likely in the future, if they are to make changes to these legacies system, it may come to a point that a future software architects would tell them it is actually cheaper to rewrite them from scratch than it is to maintain them 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

12 hours ago, wasab said:

These companies will eventually need to rewrite their applications at some point. Much of the banking mainframe still run on COLBO programmed apps made back in the 1900s and nowadays most of these colbo devs have long since retired, and for some more than retired. It is as much a strong case for companies and industries to adjust to the shift in technology and skills/talents as it is for workers to adjust to the demand of the industries and employers. Likely in the future, if they are to make changes to these legacies system, it may come to a point that a future software architects would tell them it is actually cheaper to rewrite them from scratch than it is to maintain them 

rewriting doesnt necessarily mean using new/different language. companies will want to save money which means choosing language where they can hire skilled people for less money or have their current employees do it

MSI GX660 + i7 920XM @ 2.8GHz + GTX 970M + Samsung SSD 830 256GB

Link to comment
Share on other sites

Link to post
Share on other sites

12 hours ago, Neftex said:

rewriting doesnt necessarily mean using new/different language. companies will want to save money which means choosing language where they can hire skilled people for less money or have their current employees do it

There are few c/c++ dev and even far less cobol dev compare to js, python, or java. You can train your current dev to do cobol but you can't trained good ones. These only comes after years of experiences and good ones with years of experiences are all retired or hit the grave at this point. This means the the few good ones command a top premium in the labor market and thus expensive. Expensive + lack of talents is a worse case double wammy for any employers.

Btw, the only reason cobol is still used is mostly due to IBM lobbying otherwise governments and banks would've ditch cobol a long time ago. 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

21 hours ago, Sakuriru said:

Microsoft is already rewriting Windows in Rust.

The whole GDI+ is already converted if i remember correctly. So C# winforms or C++ GUI should already be running off Rust

Link to comment
Share on other sites

Link to post
Share on other sites

As a mainly C++ developer, I hate the expression "C/C++". Modern C++ is wildly different, and if you're compiling C code with a C++ compiler, it's still just C code. (By the way, not all C code compiles as C++.)

 

If you want to learn modern C++, there are books, and the C++ Core Guidelines will help with best practices. Lots of C++ tutorials teach techniques that are best case outdated, but more commonly were always wrong. For example: `using namespace` is one wrong practice present in most C++ hello worlds.

 

Rust is probably a better starting point, because if enforces things that are only "best practices"/guidelines in modern C++, so you can't compile terrible code. I suggest statically and strongly typed languages, because they prevent lots of errors early, at compile time, and you're going to make lots of mistakes while learning. This disqualifies C, JavaScript, PHP, Python. 

Link to comment
Share on other sites

Link to post
Share on other sites

18 hours ago, szaszm said:

I suggest statically and strongly typed languages (...). This disqualifies C, JavaScript, PHP, Python. 

 

Depending on your compiler, it is possible to catch type mistakes during compile time in C.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×