DEV Community

Cover image for Best Languages to Learn How to Code

Best Languages to Learn How to Code

Lorenzo Pasqualis on September 30, 2017

This post was first published on CoderHood as Best Languages to Learn How to Code. CoderHood is a blog dedicated to the human dimension of software...
Collapse
 
eljayadobe profile image
Eljay-Adobe

Another platform ecosystem is .NET, which uses C#, VB.NET and F# programming languages. .NET is comparable to JVM. C# is comparable to Java. VB.NET is... well, we don't talk about VB.NET. F# is "OCaml for .NET", which is a functional-first FP language that can do OO too.

F# style of functional programming -- the OCaml style -- is different from Clojure or Scala or Haskell style. Different isn't a bad thing. It's just different.

Collapse
 
kspeakman profile image
Kasey Speakman

F# is the main reason I keep using .NET. I find it is well-balanced among the other FP languages you mentioned. In a world where I could pick and choose languages separately from platforms, I'd probably run F# on the JVM.

Collapse
 
damcosset profile image
Damien Cosset

As a Javascript developer who doesn't know deeply any other language, I think Javascript is the best language in the history of the universe. It is, by extension of the previous argument, the best language to learn how to code.

Warning: I do not have any arguments to support this claim outside of my limited understanding of Javascript nor am I willing to change my opinion in any way, shape or form.

Best regards.

Collapse
 
amencarini profile image
Alessandro Mencarini

Sorry, but I feel compelled to invoke Poe's law here. Is your comment sarcastic?

Collapse
 
damcosset profile image
Damien Cosset

Haha, yes it is. Damn, I should have done a better job. I thought the 'history of the universe' would have been enough. :)

goes back to study sarcasm

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

Ok. Thank you for your comment.

Collapse
 
bgadrian profile image
Adrian B.G.

Actually Scratch is the best language to learn programming. Being a visual programming language the student focus 100% on programming part, ignoring:

  • dev setup (IDE)
  • compilers/transpiler
  • syntax !! This is a huge breaker, they spend 15min because a missing semi colon
  • platform specifics (win vs mac vs linux), especially when you learn compilers
  • etc

I will write a blog post soon with more details.

Collapse
 
podenno profile image
Peter Denno • Edited

Yup. My kids started here. It is sort of agent-based & pub/sub, which makes for a nice transition to OO, I think. My 11 year old then moved to writing java plug-ins for minecraft with eclipse. No reason an adult could not start here.

Collapse
 
aghost7 profile image
Jonathan Boudreau

I think the main thing you need to worry about is the ecosystem and community when it comes to a good first language. Documentation will definitively play a major role if they actually want to build something out of their newly acquired skill eventually.

Collapse
 
podenno profile image
Peter Denno

Good point. I suggest Scratch first above. Tremendous IDE and community. For a second language I would look for a read-eval-print loop (clojure) or shell (python) and nice tools. See 4clojure.

Collapse
 
erebos-manannan profile image
Erebos Manannán

I would highly recommend getting started by trying a proper modern nice language instead of one of the ancient monsters that are super verbose and difficult to debug. Java and other JVM languages come with the extra baggage of the JVM, which is significant pain in the ass.

Python has excellent error handling and reporting, so when you make a mistake it will likely be easy to find out what it was by yourself, and google will definitely be very helpful. Python is overall the best option, language is easy, has a friendly community, very good options available to work on practically anything you can imagine from mobile apps, games, to websites and desktop applications.

Golang is similarly an easy language to work with, though has less options for integration. It's low level enough to teach you about some of the basics rather well, without being an absolute chore to work with like C/C++.

Rust also works for certain jobs really well, and while I've not had personal experience with it, I know several people whose opinion I believe - the programming model in it makes it easier to make better software with less headaches. From my understanding it also has a wide array of libraries available to do a lot of different things.

Sadly, if you want to focus on frontends, JavaScript is really the only option out there. It's an awful language and I hope it dies in a fire along with the design committee, but it still powers most of the web and many other frontends nowadays.

And lastly, C# is also a significantly improved language to the rest of the C-family. It also has a very wide array of options available for you on what you can do with it, games (e.g. Unity, and others), desktop applications, mobile apps (Xamarin), web applications, etc. .. just remember to stay with the "Mono" version of it and you will have relatively few big surprises (the version of Mono shipping with Unity I believe is still ancient, but an update is coming).

As a side-note, one should not discount the fun and practical value of learning to code using an existing game - many games support scripting via Lua, so Lua is a solid choice if you want to go for that. I remember having some of my most fun programming experiences as a kid when playing ZZT, and Quake because of how easy it was to modify them with their own programming languages.

Collapse
 
erebos-manannan profile image
Erebos Manannán

For the browser side there is starting to be some hope, Kotlin and Elm are starting to be somewhat useful on the frontend, however there are likely going to be almost no jobs at normal companies with those skills as the scene is dominated by JavaScript.

Collapse
 
subbramanil profile image
Subbu Lakshmanan

Thank you Lorenzo for sharing your knowledge & experience. Great post!!

I use Java (Android developer) at my work and javascript (Node.js & Angular.js for my personal projects). Occasionally I play with RaspberryPI & Sensors (mostly I use Node.js).

But I agree that using arduino will teach you the low level programming. Definitely would love to give it a try!!

Collapse
 
richjdsmith profile image
Rich Smith

While I don't use it much any longer, I honestly believe Ruby is a fantastic language for beginners. It's clear, concise and because of Rails, there are thousands of tutorials and information online.

Is it fast? Nope. But it's still a great place to start.

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

CPython does transform the Python code into bytecode and runs it, but it is still an interpreted language. You do not explicitly compile a Python source file into bytecode. It happens transparently for you at runtime. Java is not involved in the process.

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

Seconding the statement that Python is excellent for early learning and advanced coding alike!

However, I would have to disagree about Java - I've had to help countless interns unlearn so many terrible habits from that language before they can write good, clean code in other languages. C++ is by far a much better language in that category to learn: it provides enough abstractions and tools to make it easy to get started, but allows you to take more control as you're ready. (C++17 is looking to be the best version yet, I might add.)

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

Collapse
 
eljayadobe profile image
Eljay-Adobe

Pascal was designed by Niklaus Wirth. Object Pascal was design by Apple and Niklaus Wirth. Object Pascal was branded as "Delphi" by Borland. Which is still alive and well, and being sold by Embarcardo. Object Pascal is also still alive and well, being sold by RemObjects branded as Oxygene.

That being said...

I think Python 3 is the best language to learn to program these days.

Collapse
 
eddy_edward101 profile image
Sahil Edward Thapa

Clear and concise article. Nice.... Loved it!!

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

Thank you, Sahil!!

Collapse
 
pinksynth profile image
Sammy Taylor

Wonderfully informative article!

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

Thank you, Sammy!!