DEV Community

Cover image for I learned Javascript, Ruby, Python and Java
Ngan Kim Khong
Ngan Kim Khong

Posted on • Edited on

I learned Javascript, Ruby, Python and Java

If anyone knows computer science history you probably know that in recent years, programmers now can write backend using Javascript, with NodeJs framework. So, why are we, the newbie programmers, even bother to learn other languages beside Javascript? We are new, we need it to be a little easy, but not so boring. We want to learn exciting things, and Javascript will let us create a complete app from the backend to the frontend. And once we know Javascript very well, converting to other languages isn't as challenge as it would be with other high-level language like Python or Ruby.
So, why spend time on other languages ?
I first learned Python. It's a beautiful language and I love it the most. All the indentations will save the most messy code writers. And then I moved to Ruby. Ruby is quite similar to Python. There are some differences between the two but, well, for learning purpose, they're quite easy to pick up. Perhaps the learning time was quick and I wouldn't say I know everything about Ruby and Python, but I have been learning Javascript for longer than all and still felt like I understand Javascript the least.

Javascript learning path was even worst than Java. Java is a strict language, it requires us to explain everything to it. Without the correct input, Java will not let you code.

Javascript will be really really free, it takes in any type of input, and return any type of data. Sometimes you need to know what it's returning, right? No, it won't let you know unless the definition is right in front of you. Javascript is just "messy" like that.
Also, there are more memes about how weird Javascript is than the rest of the language. What's the difference between NaN, null, undefined, empty array, empty object, oh well...

Java is great for Object Oriented Programming (OOP). You probably wonder what OOP is, I don't know either. I will need to learn in the future.

Top comments (30)

Collapse
 
perpetual_education profile image
perpetual . education • Edited

Java is great for Object Oriented Programming (OOP). You probably wonder what OOP is, I don't know either

How much of those languages did you learn? People often say "I learned x"- but it seem like people "get acquainted" with a language - and start using it.

With HTML, you can build a webpage.

Collapse
 
pra3t0r5 profile image
Pra3t0r5 • Edited

This.

You must go deeper.

Concepts like OOP, abstractions, persistence, patterns, good and bad practices, synchronicity (and more, much much more) are the true pillars of modern programming you should learn. A language is just a tool to express those concepts and their interactions.

Do not fall in this beginner "Tutorial Trap" of assuming you know how to program by just learning some language sintax and jumping to the next language, otherwise you might have a bad experience. (like many of us already had)

Most languages have a very marked roadmap of concepts and peculiarities to learn, and the awesome thing is that most of them share most of those concepts. Follow those roadmaps, try to pick one or two languages you find comfy with, and code whole projects with increasing layers of abstractions.

Over time you will realize that you are being able to face any project.

Collapse
 
nk2303 profile image
Ngan Kim Khong

Thank you for the kind words and encouragements. I really should focus on the fundamentals before moving forward too fast with new programming language! As if it always feel like I'm behind of the tech world :)

Collapse
 
perpetual_education profile image
perpetual . education
Thread Thread
 
pra3t0r5 profile image
Pra3t0r5

Amazing article!!

Thread Thread
 
nk2303 profile image
Ngan Kim Khong

It is!!! Learned so much from it

Collapse
 
nk2303 profile image
Ngan Kim Khong

Not much, I have to admit, I spent the most time with Javascript and still feel like I am just getting acquainted with it haha.

Collapse
 
bias profile image
Tobias Nickel

after reading this, I want to ask you all what you think of my quote about:

The differece between JS and Python:
In python people learn how to iterate a list, and it feels like they are data scientist. When people learn JS, they learn how to do single page PWA apps with dashboards, real-time interactivity, but they feel just like a noob.

Collapse
 
hemant profile image
Hemant Joshi

Opps...

I see the same environment near me, I head one of my friend saying saying.
Here is what he said😅..

I asked him what to learn Web Dev or Machine Learning?

Reply:
Web Dev can be learnt in 3 months and you can copy paste the code from Google so web dev is just easy and of no use, and Machine learning is all about the future and learn it, it takes years for people to do.

😂😂, I was scared and now I a web dev I see why people have this mentality?

A lot of people say this, because they have just worked with Portfolio etc.. and that is where they land after 3 months....

Developing a Real time app is what you can't relate with the statement above🥱, I am working with real time user app's which is real cool job.

Althought people say it's easy, they are the people who haven't been anywhere and have a false knowledge, which they are sharing in case to look cool.

......

I love Web Development.

Collapse
 
nk2303 profile image
Ngan Kim Khong • Edited

Oh yes. Python definitely made me felt like I knew everything and I could do everything (I'm not). Javascript made me cry.

Collapse
 
perpetual_education profile image
perpetual . education

well... that's hilarious.

iterating over a list is pretty similar in both languages though, right? - but one - can do it in real-time / in the browser.

Collapse
 
saberglow profile image
Wali Ullah

My journey has been a bit similar to you. Python, C, C++, Java, and now I'm "trying" to learn JS alongside HTML & CSS, and so far, it has been... not easy? The worst part for me is when I'm hopping between JS, HTML and CSS, and the syntax difference makes me wanna rage quit.

I guess the term I'm looking for is flexibility. I have yet a lot to discover about JS, but so far, I've found it's learning curve to be a bit too steep as compared to other languages I've learnt.

Collapse
 
nk2303 profile image
Ngan Kim Khong

Ah, Java, C, C++ before Javascript? I think you're brave !

Collapse
 
saberglow profile image
Wali Ullah

Hahaha nopes, that's just the way our curriculum was designed. C and then C++....But I'm happy about that because I can easily learn a new language without worrying too much about the basics...

Collapse
 
claudemuller profile image
LЦҜΞ FILΞЩДLҜΞЯ • Edited

It's great that you want to learn more than one language - that is what programming and Computer Science is about, but I would encourage you to look at each language independently and for what they offer and how they do things in "their own way".

JavaScript is not a messy language or inferior to other languages like a lot of people think. It is different - a dynamically typed, c-style, interpreted, prototypal language (and remember, it was written in 10 days!). Additionally, most people never learn about JS's roots and using/learning it the way the creator - Brendan Eich - created it. While it is important to see how languages differ and in doing so you remember/learn their quirks better as you see them in relation to another languages, I implore you to try and learn JS at a deeper level.

There are few devs out there who advocate and teach the real "JS way". Two of these gurus are Kyle Simpson and Eric Elliot. Eric is a Grandmaster and has a great course that he teaches online. It isn't free but well worth it if you can afford it, while Kyle (another GM) has the best JS resource I personally have ever read online for free! It really opened my eyes - github.com/getify/You-Dont-Know-JS. I would encourage you and anyone reading this to pore over those books and learn and use JS the way it was meant.

Beyond JS I would encourage everyone to first focus on basic concepts and to master those as a programming language is just a way to express those concepts. Don't think that statically typed languages (e.g. Java, Go, C etc.) are superior to dynamically typed languages (e.g. Python, JS, Ruby etc.), or vice-versa. Instead think of them as each allowing you to express solutions to problems using different concepts and styles.

Once you know the underpinning concepts of programming and computer science, you can learn any language! I don't say this to boast, but I know (pretty well, and can programme quite competently in) about 10-15 languages. My place of work hires polyglots - we all know at least 5 languages and all code different languages on different projects simultaneously. I recently learned Go and am now learning Scala for a big data project. But I can see how each language offers something different and allows one to solve problems in certain ways while making certain problems easier to deal with (and others more difficult and complex).

I personally prefer statically typed languages as I prefer the strictness and the fact that the IDE/code editor and compiler can check my work more thoroughly before it goes out into the wild. Additionally, it forces me to think about what I'm doing and how I'm using system resources. On top of all of that I would really suggest that everyone learns and writes (if you don't already) unit tests for all the languages they use from the get-go. Another tip is to make the debugger your best friend! It saves you from hours and days of pain - I'm speaking from many painful hours 😭

But above all else - have fun and learn 😍 every day it still feels like a punch to the head and heart when I realise all the things that one can do and make when you know a little bit about computers/electronics and programming!! My brother has just started on his road to becoming a software developer/engineer and comes from an engineering (machine engineering) background - so quite different, but as I was telling my wife yesterday - ANYONE can learn to programme!

Enjoy, learn, never give up and have fun! 😉

Collapse
 
nk2303 profile image
Ngan Kim Khong

That's so sweet 😍. How did you learn so many languages? Is your background computer science? How did you get all the CS fundamental concepts that helped build up your knowledge for learning new languages?

Collapse
 
claudemuller profile image
LЦҜΞ FILΞЩДLҜΞЯ

Thanks :) I was lucky to be exposed to computers at about the age of about 12 - I'm 37 now - so I've had many years' practice :) I learned by self-study and trial and error, although I always felt that I was missing something - but thats just my personality - to know every little detail. I've always been very curious about how things work and naturally want to know all there is to know about computers and thus, am never satisfied with what I know - including languages. And finally, I've decided to dedicate myself to getting a ComSci degree (multiple degrees is my goal).

Thread Thread
 
claudemuller profile image
LЦҜΞ FILΞЩДLҜΞЯ • Edited

Also to answer your question (sorry, I'm learning Dvorak, most of my brain power is going towards typing the letters, not necessarily what I'm saying, lol). I think just continue to learn from different resources and languages.

Also sign up at the following sites and learn and practice algorithms and data structures:

Also join here to learn from the masters for free at - exercism.io (again my profile is - exercism.io/profiles/LukeFilewalker - although I'm not a master like the mentors on this site)

And study and practice design patterns:

And above all else - code as much as you can!

(I would also suggest learning linux and the shell if you want to be better than most devs out there)

I hope this helps :) stay safe!

Collapse
 
perpetual_education profile image
perpetual . education

Not all languages expect user interfaces - but we really like this book: Exercises for Programmers: which is language agnostic: youtube.com/watch?v=YHEFuQdnXEE&fe...

Collapse
 
foxhound401 profile image
Phung Thien Phuc

A fellow javascript struggler here. Beautiful though. Have fun on your journey

Collapse
 
nk2303 profile image
Ngan Kim Khong

Awww, you as well!

Collapse
 
nguyentuan1696 profile image
Tuan Nguyen • Edited

Thanks for the awesome article ✌

JS is a great programming language, learn once and do many things. I am also trying to learn ruby to build a personal project 💪

Collapse
 
functional_js profile image
Functional Javascript • Edited

Good luck on your journey Ngan.

The toughest part about JavaScript is the tooling surrounding it.
Also knowing what NOT to use.

For example you hear about all the quirky stuff about JavaScript; the solution is to not use the quirky stuff, and to guard yourself against it.

Here is the list of JavaScript constructs I don't use....
dev.to/functional_js/what-subset-o...

Keep on truckin'!

Collapse
 
nk2303 profile image
Ngan Kim Khong

Thank you!! And that's a really interesting article.

Collapse
 
andreidascalu profile image
Andrei Dascalu

OOP is not a design pattern. Factory is a design pattern. Observer is a design pattern. Know the difference ;)

Collapse
 
nk2303 profile image
Ngan Kim Khong

Thank you !

Collapse
 
gwutama profile image
Galuh Utama

Thanks for sharing!

I code in Python, Java and JavaScript as well and I must say, I dislike JavaScript the most. I know I’m not alone.

Anyway, have fun learning!

Collapse
 
nk2303 profile image
Ngan Kim Khong

XD !!