DEV Community

Which language to learn next..

VenatusDev on July 17, 2019

So far, I have learn HTML, some CSS and JS, and a good understanding of PHP. I feel like I need to learn some more complex languages, like C or Java, but I have no idea which to choose. Any tips?

Collapse
 
quinncuatro profile image
Henry Quinn

Better question - what do you want to do?

Sounds like you're going down a web path. Do you want to stick with web development? If you do, @tanguy's recommendation of C doesn't make a TON of sense.

Collapse
 
tanguyandreani profile image
Tanguy Andreani • Edited

I actually recommended Java

I believe the Java path is the best option

Collapse
 
quinncuatro profile image
Henry Quinn

Word. To be honest, I just skimmed your comment.

Still, though, if they want to go down a web path, I wouldn't necessarily recommend Java. I'd say something like Python or RoR.

They can still keep on their web path while learning a language they can utilize in their day to day.

Thread Thread
 
tanguyandreani profile image
Tanguy Andreani

Of course. I personally use Ruby/Sinatra for anything web related but I’m looking forward to using JRuby which is Ruby on the JVM.

Thread Thread
 
quinncuatro profile image
Henry Quinn • Edited

...JRuby which is Ruby on the JVM.

That actually sounds pretty neat.

However, if they're just trying to pick up a new language, it's a little harder to spin up a quick script with Java than it would be with Ruby. ;)

Thread Thread
 
tanguyandreani profile image
Tanguy Andreani

You’re right. It’s unrelated but I always try to not recommend Ruby as first language because as much as I love it it might be a little too magic for beginners.

Thread Thread
 
quinncuatro profile image
Henry Quinn

If they're semi functional in JS and PHP, Ruby is a great step forward. Michael Hartl's Ruby on Rails Tutorial is a GREAT way to start to understand modern MVC paradigms.

Thread Thread
 
tanguyandreani profile image
Tanguy Andreani

Yes, I always have the bad habit of transposing my own way of learning things onto other people.

The fact that @venatusdev was suggesting either C or Java led me to think that they wanted to dig into lower levels than PHP and Javascript.

I think we should wait until they give us more insights on where they’re headed to xD

Collapse
 
luke_matakitoga profile image
Luke Matakitoga

I'm the OP and you were right, a couple months ago I landed a Web Dev job :)

Collapse
 
tanguyandreani profile image
Tanguy Andreani

I personally chose C when I was in the same situation as your are right now. I don’t know Java, I don’t like its syntax but I know that it opens the path to Scala and JRuby which are two languages I would be ok learning and working with.

C is useful to me because I need to learn a bunch of low level stuff in order to get into developing programming languages and operating systems. If your goal is to develop fast and functional web apps, I believe the Java path is the best option. You can still learn about C later.

Also, you can choose to learn only the basics of C (for the moment). Especially how memory is allocated, how the stack works, structures, pointers stuff like that. It shouldn’t take too long and you can focus on Java.

Personally, I like to work with C and Ruby MRI.

Don’t hesitate to reach out if you have any questions.

Collapse
 
venatusdev profile image
VenatusDev

Ok, I like the idea of learning C to develop a programming language, so I might start with that. Thank you for the advice! ✨

Collapse
 
tanguyandreani profile image
Tanguy Andreani

Maybe I have a really bad English (and if that’s the case I want to apologies), but here is what I was trying to say:

Learning some C is interesting. (It’s always interesting.) But I believe you should focus on Java since it fits much more with your current background and will allow you to progressively move on to even better technologies.

This especially applies if you’re motivated to pursue a career in web development. (Or at least, something which requires programming at a higher level of abstraction than C.)

Thread Thread
 
tanguyandreani profile image
Tanguy Andreani

Now there are alternatives. You should start by stating what you’re trying to accomplish.

Collapse
 
simbo1905 profile image
Simon Massey • Edited

Rust. Totally. For the fourth year in a row its the most loved language in the stackoverflow annual survey insights.stackoverflow.com/survey/... that alone should be enough. It is as fast as C with no garbage collection yet is memory safe and has just added very high level features like async/await. The community are extremely friendly and open. Most languages have a benevolent dictator for life (BDFL) but Rust is truly community driven. It compiles down to native but you can also target web assembly so you can run it in a browser sandbox (only its so fast you can write a full 3D gaming engine).

Why do I say Rust that I have only experimented with over PHP, Java, Scala, Python, C, C++ and a bit if C# that I have have used professionally?

Well C and C++ are old systems programming languages with tons of baggage. Rust is a fresh systems programming language that eliminates memory bugs that are the scurge of C++. Rust is a recent leap ahead.

Java and C# are old school OOP languages. There is a good reason folks have moved onto Javascript, TypeScript, Scala, Kotlin and everything post that. Scala I love but its a JVM language and if your not upgrading from Java that means baggage.

Python is great but if you know JavaScript already then Python is very similar (loosely typed, garbage collected, runtime written in C/C++, has classes) whereas Rust is radically different (strongly typed, no classes but polymorphic, no garbage collector, no runtime).

Rust is also a challenge at first as its approach to memory management is compile time checks other languages don’t have. This means a step initial leaning curve of advanced concepts (and type sigs that are scary as hell at first!) The pay-off is that the compiler will tell you “nope” when you going to have a concurrency bug or memory error.

So if you’re looking to expand your mind, try something radically new, and a genuine breakthrough, that has an outstanding community, and that is very much loved by those who use it: choose Rust!

Collapse
 
simbo1905 profile image
Simon Massey

I forgot to mention PHP but if you know JavaScript you know Node so at best it would be a step sideways rather than a step forward into something different.

Collapse
 
stereobooster profile image
stereobooster • Edited

What do you want?

  • Do you want big salary? Learn C++ or Java/Scala/Kotlin.
  • Do you want to do AI or ML. Learn Python.
  • Do you want to do web dev? Learn TypeScript, NodeJS.
  • Do you want to learn functional thing? Haskell, OCaml and many others
  • Do you want something cool? Learn Pony

(not exhaustive list of languages, just one possible slice)

Collapse
 
ehimsi profile image
Himanshu Joshi

There are a lot of things that can be done in UI + PHP (~data visualization). I want to take some big name like AI or Data visualization. In that case either or both C/Java make sense.
Depending on use case you can also go for "go".

My views are on the basis of learning "what's most relevant these days".

Collapse
 
venatusdev profile image
VenatusDev

Nevermind I'm learning C++ XD

Collapse
 
vicoerv profile image
Vico

in my opinion. you can choose between php or java and then you can jump into c