Should I go with Python, Java or Ruby in 2018?

Chris Raven on January 02, 2018

I wanted to ask you all a question, as my first post on dev.to (If I may?). I'm a 25 year old Autistic newbie to the Programming forte, and love... [Read Full]
markdown guide
 

I would personally advise you to go with what you're comfortable with and good at. But starting out I found python easier to learn as a beginner

 

I definitely do love Python. Is it only good as a Scripting language though?

 

Python can be used in a wide range of things, it's used in data science, you can code GUI desktop applications, web development using one of its web micro-frameworks like Flask, or even a framework like Django, and of course my favourite, MACHINE LEARNING.

I have to admit, I had a hell of a lot more fun learning Python than I am learning Java.

I love Visual Studio Code and it's simplicity.

Personally, I reckon that if you genuinely feel you "love" a language (as you say you do with Python), then stick at that, at least in the short term. You'll get further learning a language you enjoy than by trying to slog through something you don't, at least in the first couple of years anyway.

You'll find learning your second language is much easier, so don't stress too much about learning "the right one" today.

IMO, at least. :)

 

It really depends upon what you want to do with it.

Python is good for data science/machine learning, prototyping stuff. Dynamic typing might bite you once you scale to a larger team.

Between Python and Ruby - I would choose Python. It's much better in many aspects and has a larger community of developers. And you are not losing much.

Java is a whole another beast. It is used by a number of enterprise(read big) organizations. There is a reason why Linkedin, Amazon, Google etc., use Java heavily. It scales from one machine to literally thousands of machines(distributed) with a rock solid runtime(JVM).

Some general pointers.

  • Python is probably the best language to learn programming.
  • If you are doing consultant work then I would recommend Python. Much less hassle to setup and maintain.
  • Python is actually as old as Java. So it's not exactly a modern one, but a language designed for a different purpose.
  • Static vs Dynamic typing (my own blog post)
  • Java as a language is getting modernized, but it's going pretty slowly. Remember that there are other languages on the JVM. Kotlin is one which I would recommend learning if you have any plans to get started with Android development.
 

+1 For Kotlin, especially from a professional point of view.
Kotlin is specifically designed to give Java users a language that's conceptually very similar, but has a decent share of modern language features. Being made by Jetbrains, the company behind IntelliJ Idea, you also get stellar editor support for free.
Since it's essentially a superset of Java, you'll be able to derive your Java Skills from learning Kotlin.

My personal go-to language on the JVM is Scala. Some of it's advanced features need to be handled with care but It allows to write a very practical mix of functional and object oriented code that keeps me most productive. It has excellent libraries and frameworks to tackle complex problems.

To tie that into your original question:
I would not recommend to pick up Java. While it introduced lambdas with Java 8, it suffers a lot of the need to be backwards compatible, and is progressing very slowly, as mentioned. There's a high chance that you will need to write Java code at some point, but with Kotlin and Scala, there is little reason why you should do that on your own time.

More than learning languages, I recommend picking up concepts. If you get the chance, pick up functional programming while you're still at university.

 

My personal favourite is Scala too. But its slightly complicated from a beginner's perspective. As you said, concepts are more important. I learnt Scala and when Kotlin came out I was already familiar with 90% of its features.

Java is moving slowly, but hey enterprise companies move a lot slower as well. They don't adapt to newer Java language features as they come out. You can be polyglot if you learn the concepts and with Java/Kotlin/Scala, it is a lot easier since they all target the JVM.

 

Instead of learning Java, just learn Kotlin (kotlinlang.org/). It's going to give you a lot more of the utility you've probably come to expect that will minimize a lot of the boilerplate Java has (compared to Ruby and Python), but it's statically typed, and it has amazingly natural built in support for things like delegation, null-safety, and the ability to write asynchronous code as if you were writing synchronous code (this is a big deal). It has support for things like first order functions and more. A lot of the features I'm writing about here will probably not mean much to you because they are pretty dense concepts, but a lot of the things beginners want to do will be tripped up by not having these things.
A lot of beginners will bypass increased safety of these things to increase developer throughput at the cost of maintenance (hard to find runtime bugs in dynamic languages). Dynamic languages (with the exclusion of metaprogramming) are often easier to teach people and learn on. Some of them, like null-safety, was introduced to make common things or improve safety simply because Java is like that old dependable buick (lots of important stuff runs on Java. Changing the language drastically too quickly would be wildly problematic, and a lot of features in Kotlin create somewhat of a paradigm shift in terms of language interaction and expression).

There's a huge benefit to working with a statically typed language, especially as an application gets more complex. will allow your IDE and/or compiler to find issues for you at compile time. In Intellij IDEA, the premier IDE for Kotlin (It's a language written by Jetbrains, the people behind Intellij IDEA), the IDE will literally show you where you have errors beyond just malformed statements.

You can always go back and learn Java, but if you have no intention of diving into Java programming for a profession, it's not necessary. Kotlin and Java are interoperable and will remain that way. This means you can use Java libraries and call them from Kotlin or vice versa.

Kotlin has both .kt files and .kts (Kotlin scripts!). You can use kscript (github.com/holgerbrandl/kscript) to ease writing kotlin scripts to be used as scripts for *nix in very little time. Kotlin is the Google approved/official language for Android now. It's got a top commercial IDE developer working on it (Jetbrains - same people who have built an IDE with a projectional editor for writing DSLs - MPS).

Kotlin compiles to JS, JVM, and more. This means if you don't have an interest in learning tons of Javascript to make web apps, you don't have to.

Kotlin has a big strong community. If you need help, you'll find it easily. That said, some of their language documentation miiiight leave you scratching your head a little. I recommend going through a kotlin koans project to work your way up through practical examples that help you build on your concepts. This way each thing you learn is connected to a tangible result you will understand, which you can then use to demystify some of the language-design centric documentation they have (don't worry, it's not like they just posted up grammars XD)

Disclosure
I am in no way affiliated with Kotlin.

What is my background? I've done Python programming in a professional environment. I even used Django with a host of other tech in building a real time, progressive, reactive web app (a realtime collaboration and status reporting google sheets like test case management software app).

I've done Kotlin programming as a part of working on an opengl/webgl cross-platform jvm desktop/mobile-web/desktop-web UI framework that is write once, runs anywhere using Kotlin's built in language support for what they call multiplatform modules (Acorn UI - github.com/polyforest/acornui).

 

Oh, also, there's a community edition of Intellij IDE so you don't have to sacrifice on ease (Open Source projects can use their commercial products for free if they qualify). The community editions (I would recommend Pycharm if you go with Python for sure, and a paid license is /very very/ affordable, though not necessary) are not as souped up as their commercial offerings, but are still fully featured IDEs (typically the paying editions have first level support for an expanded offering of frameworks, etc). I believe RubyMine (which I don't have personal experience with but shares some core features with the rest of the IDEs) doesn't have a community edition? But don't quote me on that.

 

Woah! That's one hell of a reply. Thank you so much :) I've been doing some work this semester at Uni in C++ and it's not that good imho, but Kotlin was something I was looking into :)

I"ll take all this into mind, thank you! :D

 

Welcome Chris!

I think you should use what makes you more comfortable. I have never professionally worked with Java so I'm going to jump to the other two.

I think either choice, be it Python or Ruby, it's not going to disappoint you. I use them every day and sometimes I even get syntax errors because I'm writing Ruby in a Python file or vice versa.

Although I have been using Ruby for quite a while I still think I am more proficient with Python.

For web development you can't go wrong either way. I would start with the most used frameworks for each language: Rails for Ruby and Django for Python.

There are so many resources you will definitely feel overwhelmed :-)

If you have specific questions ask away!

 

Not in the list but i think you can take a look at golang. One of the best programming language i've ever used.

 

Thanks for the comment! May I ask what you feel makes it the best?

 

Simplicity, documentation, strong stdlib, plenty of usefull lib/packages on github AND a one of the best community (with a lot of actions in favor of marginalised people : MOGAI, womens, etc...)

AND tooling, jesus I love Go tools (metalinter, goimports, fmt, ...).

 

Thank you for sharing great article related to Python vs java. I have shared some important points which help you to know python vs. java.

 
  1. Python or/and Ruby.
  2. Ruby or/and Python.
  3. You can explore more programmatic languages as you grow like Kotlin, Haskell, Erlang, Scala....
code of conduct - report abuse