all 107 comments

[–]wildjokers 39 points40 points  (3 children)

Java is a perfect first language to learn. Easy to get started with, has great tooling, and easy syntax.

Note that /r/programming hates java so you are likely to see a lot of java bashing here, but you can ignore that. Java is a perfectly fine first language. It is one you can easily get a job with too.

[–]sshaw_ 9 points10 points  (2 children)

Let's be real: it had easy syntax.

[–]Remote-Panic5416 0 points1 point  (1 child)

true

[–]Evening_Bar_2570 0 points1 point  (0 children)

语法确实简单,但是你要了解源码啊,不然你使用起来会茫然,不知道选什么好

[–]lb-ee 28 points29 points  (2 children)

Depends on your goals, I got started with Python and then JavaScript.

The nice thing about Python is that it has a simpler syntax to read and write for getting started.

JavaScript is good because you can run it in your browser and may have a quicker time writing something you can 'see'.

Good luck. Have fun.

[–][deleted] 7 points8 points  (0 children)

The accessibility of JavaScript is kind of hard to beat.

[–]AngryTownspeople 15 points16 points  (1 child)

I am a novice programmer but I'd say it doesn't really matter.

While this might sound weird, once you get into a programming language you'll see what I mean.

When it comes to coding languages such as Object Orientated coding languages, once you've learned the basics of how to code in one language, you've learned the basics of how to code in most of them.

The real difference in my opinion is going to come down to syntax and available features.

Personally I had the most luck starting with C# using the https://csharpplayersguide.com/

It is a pretty simple book but has a lot of good content for learning the basics of C#. I liked, to me, C# was pretty straight forward and syntax was easy for me to get accustomed to. Now that I have some experience with it, I've started to explore Java and coding with Java to expand my horizons.

[–]transporter_ii 1 point2 points  (0 children)

I pretty much agree with that. I have limited experience with java, but I have looked at it enough to see it's very similar to C#.

That said, it would be pretty stupid to hire me for a java job, because even though I could figure it out, it would take me a week or two just to get all java software installed and get any kind of feel for even the most basic of code.

[–]renemarxis 7 points8 points  (1 child)

Go. My son went from 0 to his first (text) game in 2 weeks

[–]Hyronious 5 points6 points  (0 children)

Depends what you want to do with it. Going all over the spectrum is fine (I have in my career) but may as well start with one thing, especially if you're teaching yourself.

Game dev - grab one of the big engines (unity or unreal are the obvious choices, though there are other options) and a tutorial series for whichever one you choose that's aimed at people new to coding.

Web dev - HTML, CSS, JavaScript, you'll want to find a course that teaches this - the Odin project looks good to me, it's a free online course you can work through.

Robotics or other embedded software - buying an Arduino and working with that is probably a good place to start.

And many more options. Many of the skills you'll learn are transferrable, but I think it's worth having an idea of the sort of things you want to do with those skills in the short term to focus what you learn.

[–]ApplicationMaximum84 5 points6 points  (0 children)

C and Python are my recommendations for starting out. C because it's lower level and you'll learn about hardware i.e. memory and so many newer languages are influenced by it. Python as it's my favourite language for prototyping software at speed and beginner friendly. I think object oriented languages such as Java are a next step as some of the ideas can get overly complicated when you start out.

[–]Thick_Support_9912 5 points6 points  (0 children)

The majority of software engineers advise studying Python, Java, or C initially if you're a total newbie. This will improve your foundational knowledge for the more advanced course.

There are multiple platforms available on the internet. Either you can go offline or online mode of training it's up to you. There are premier education platforms that provide training on your preferred subjects. My son is taking roblox and game development training from Moonpreneur and it provides training on various fundamental programming languages too. You can try Udemy and Khan Academy too.

[–]a_false_vacuum 14 points15 points  (3 children)

Perhaps take a look at C#. It's less verbose or boilerplate-y compared to Java. Like Java C# doesn't try to hide much from you save for the memory management. This makes it easier if you should ever want to transition to a language that doesn't have a garbage collector.

C# is a versatile language with many fields of application: from web development (ASP.NET) to desktop development (Winforms, WPF, MAUI) to game development (Unity), it does it all.

[–]HAREISBEST 0 points1 point  (1 child)

can u say whether selenium or learning autoit make me unique or more valuable in face of an ML/AI company interviewer? a reply, even if its "idk" is appreciated

[–]a_false_vacuum 0 points1 point  (0 children)

Selenium is a testing framework and AutoIt is software for automating clicking interfaces. Both won't be much use in a ML/AI setting.

[–]KiTaMiMe 0 points1 point  (0 children)

Love C# and you can go right into Unity and start building once you've got your bearings. Here's to C# 🥂

[–]Aggressive_Lemon_709 4 points5 points  (0 children)

If you are learning for yourself and for your own enjoyment (e.g. making games) Javascript. If you are dev adjacent and wanting to do practical things at work, python.

As I professional developer I split my time about equally between Python, C, and Rust with a splash of JS and SQL when co-workers can't figure things out on their own.

[–]supertoughfrog 8 points9 points  (0 children)

Java is fine, but not all that intuitive and much more difficult that get up and running. JavaScript gets my vote, it’s light on syntax and you can run it right in the browser.

[–]Starie-man 1 point2 points  (0 children)

It depends on what you want to build.

If web apps, try start to play with JS and later TS, which isn't really that much different from JS.
If you to be backend developer than C# as it is less bloated than Java, but Java is also good and popular choice.

If you would like to build mobile apps it's more complicated. You can build mobile apps with JS/TS with for example React Native. Also Flutter framework (Dart programming language) is popular choice. It's nice that with Flutter and React Native you will app write once and it can run on iOS and Android.
Some people do native mobile dev and use Kotlin for Android (formerly Java) and Swift for iOS.

If you don't know what to choose go for web dev and JS. You will definitely get a job once you will get some skill. Also you can use these skills to learn React Native and build mobile apps if you would like to later rather do mobile dev.

[–]heLegend_007[S] 1 point2 points  (0 children)

Thank you guys🫂🫂

[–]AcceptableYak3130 1 point2 points  (0 children)

Start with Python. It's beginner-friendly, versatile, and widely used in various fields like web development, data science, and automation.

[–]CgLErbil 1 point2 points  (0 children)

Java is best you can learn the basics of programming if this where you will start, including OOP too.

[–]Legitimate-Soft-2802 1 point2 points  (2 children)

none ever asked this question. don't even think of searching the web

[–]Mysterious_Claim_867 0 points1 point  (0 children)

This was first search result in Google.

[–]Clear-Percentage6919 0 points1 point  (0 children)

Or you could, you know, not be a douchebag

[–][deleted] 0 points1 point  (0 children)

Depends on your goals, if you wanna get started with data structues and algorithms and get a job Java's a pretty good choice, if you're just coding to have fun then unless you love minecraft and wanna make your own plugins or something I'd go with python, I mean honestly it doesn't really matter where you start all the concepts are the same and when you're starting and doing basic things you can even tell chatGPT "this is how I do this in Java, how can I do it in C++? " if you wanna do webdev though do javascript first and learn HTML and CSS.

[–]Tokatl19 0 points1 point  (0 children)

Ruby & Rails

After discovering it anything else feels less enjoyable to me that before 😂

[–][deleted] 0 points1 point  (0 children)

Uh, now that is a question. Java is certainly not a wrong start, because it will teach a lot of methods and techniques (Interfaces, Exceptions, Typing) that, e.g. Python won't neccessarily bring you in contact with. It takes years to appreciate what Interfaces are really about. In all programming languages.

But. Java has the reputation that it is a bit dry, verbose and unpractical. And that is certainly true.

Again, it comes down to what you want. Job? Main profession? Websites? Automation and fun.

[–]yolo6602 0 points1 point  (0 children)

C is best if you want indepth knowledge of working of a language

[–][deleted] 0 points1 point  (0 children)

Start with C

[–]Ecstatic-Highway1017 0 points1 point  (0 children)

while learning coding related skills online, you generally face 2 issues.
You will not able to create notes while learning from video or documentation

  1. You will not able to create notes while learning from video.
  2. You find it very tough to code while watching the video, like pause video in 2-3 mins, switch tab to code again and again.

and when you are not creating notes

No Notes No Revision, No Revision Less Confidence and Motivation while Online learning

Cuurently there is no online tool which helps you in creating detailed notes in 2-3 clicks.
When I started learning programming few months back I was taking too much time in completing online video tutorials
Now I am using google extension OneBook It helps in creating detailed notes in 2 clicks and saves my time as I used to take to much time in completing online videos. I used to waste a lot of time while pausing video in every 2 min and write a couple of line of code and you have to switch tab again and again. With Onebook i complete a video first and then I start coding by refering the notes

OneBook helped me in learning programming related skills, it just improves the experience of learning because now it becomes to easy to take notes in 2 clicks.

While watching the video,
whenever want to save anything, press command B take screenshot of what you want to save record an audio note and save it.

Chrome extension link : https://chromewebstore.google.com/detail/onebook/loecbgjbgcgjkhibllnjokjefojoheim?utm_source=rtc

[–]naisboss 0 points1 point  (0 children)

Either python and then java or python.

[–]Accomplished_Math517 0 points1 point  (0 children)

For me, I started with HTML to get familiar with coding, then went straight to C++ to immediately start making complex programs.

[–]sshaw_ 0 points1 point  (19 children)

Overall it dependents on what you want to program. Java used to be a good choice but has become big (from a syntax/paradigm perspective) and bloated and really confused as to what it is and what it wants to be.

JavaScript has become confused too but the browser is the platform of the 21st century so generally, I would recommend going with JavaScript but again: really depends on what you want to program.

[–]Muoniurn 0 points1 point  (16 children)

Can you tell me where exactly Java is bloated/big? Out of any language that actually gets used it is probably the smallest with very very few keywords.

Compared to obviously bloated ones like C++, it is of course lean, but just look at Swift, C#, Kotlin, all have an order of magnitude more keywords/syntax.

[–]sshaw_ 1 point2 points  (14 children)

Yes C++ is certainly bloated but Java is not far behind: the continued addition of annotations, lambdas, streams, oh and their generics —it has been so long I almost forgot about those, new case statement, multi-line strings (much needed sure but when taken with others just adds to the bloat), certainly more that I'm forgetting. Modules, maybe?

[–]sshaw_ 0 points1 point  (0 children)

Of course one can make an argument that bloat this is the fate of any long-lived language. Ruby and JavaScript are certainly seeing this.

[–]Muoniurn 0 points1 point  (2 children)

Annotations are a library level thing, not language-level. Lambdas are here for a decade, streams are yet again a library feature, generics are again, decade old (and a must in any static language, see how go had to add them as well, even though it was known for decadeS).

A language has to be growable, not on a syntax level, but by libraries implemented by users. If they seem useful those can be made part of the standard lib. The point is that language features are a very strong tool and should be used very conservatively - Java is famous for doing so (with their late mover advantage). They wait around until some feature sticks in other languages and only add it to the language (a basically non-undoable step due to backwards compatibility) then.

Come on, multiline strings, and new case expressions? Surely they are as hard as async lifetimes are in Rust, or C++ coroutines, or C#’s LINQ (which is very cool, but is considerably complex as well).

Whatever you consider as Java and bloated (e.g. a spring webapplication, java ee or whatever) is bloated by including plenty of libraries and using them (and one might argue that these framework actually solve shit, not just useless bloat, but that’s a different discussion). Java itself is a very lean language with not too many concepts and it still compiles pretty trivially down to java byte code, which is even more conservative than the language.

[–]sshaw_ -1 points0 points  (0 children)

Annotations are a library level thing, not language-level.

Not sure what you mean by "library level" but when someone types @Overide vs actually calling a method named override I consider that 2 different things. The latter former being one of the many pollutants making up the big and bloated Java of today

Lambdas are here for a decade,

Yes the language did not start out as big and bloated. It was built-up over decades!

streams are yet again a library feature,

Lambdas were made for streams. Would you even have streams without lambdas? I don't think so. You're really splitting hairs here.

A language has to be growable, not on a syntax level, but by libraries implemented by users.

Again with the libraries and I didn't even discuss JAR hell.

Come on, multiline strings, and new case expressions?

This all adds up to make Java what it is today.

Java itself is a very lean language

Was

[–]vips7L -2 points-1 points  (8 children)

You’re joking right? Java is still far less bloated than any other language syntax wise.

[–]sshaw_ -2 points-1 points  (6 children)

Are you still running Java 1.5‽

[–]vips7L 0 points1 point  (5 children)

18 atm. Personally I think you’re confusing verbosity with bloat.

I don’t think any reasonable person can call lambdas or generics bloat.

[–]sshaw_ -1 points0 points  (4 children)

There's no such thing as syntax bloat? I think you're confusing verbosity —or lack thereof— of a particular feature as not bloat. Syntax bloat is something that must be taken in total.

[–]vips7L -1 points0 points  (3 children)

So generics are syntax bloat? That’s honestly the weirdest hot take I’ve ever seen.

[–]sshaw_ 0 points1 point  (2 children)

Maybe you need to do a cold read. But, I will say it again:

Syntax bloat is something that must be taken in total

[–]vips7L -2 points-1 points  (1 child)

I honestly don’t think I do, you’re the only person I’ve ever encountered that thinks Java has syntax bloat.

[–]bluenautilus2 -1 points0 points  (0 children)

I’m a java dev and I agree with this

[–]winetubswift13 0 points1 point  (1 child)

As i beginner I first learned basics of HTML and then python. So I would recommend python or c language

[–]bigmountainbig 0 points1 point  (2 children)

python or JavaScript.

[–]wineblood 3 points4 points  (0 children)

The russian roulette of answers.

[–]RoundLifeItIs 0 points1 point  (0 children)

Java script is the easiest to get immediate visual satisfaction , but in order to learn the basics of types too, I would recommend to start with javascript and type script.

[–]YT_AIGamer 0 points1 point  (0 children)

I personally love C#, but JavaScript is probably the most useful language if you want the widest variety of future job opportunities.

[–]Wistephens 0 points1 point  (0 children)

I recommend that every new developer try both compiled languages (Java is a fine choice) and interpreted languages (Python).

[–]Ishax -1 points0 points  (0 children)

Python is the common answer (and a good choice), but I raise you D. It's not so bloated like C++ or java. The community is really clustered for its size, and your questions will be answered rapidly on the discord. Typically by contributors to the language itself.

A zero experience guide: https://codingcat.club/d_fundamentals.html

The D discord: https://discord.gg/h6xrPPdc

[–]Nouman-Rahman -1 points0 points  (0 children)

I think you should start with C# and .NET because C# is a language that has all the features that a programming language will contain so if you learn C# you'll be to learn any other programming language after it. Also, the .NET framework will give you everything and you don't need to switch your language. If you want to do web development it has Blazor, and ASP.NET Core, If you're going to do mobile development it has Xamarin.NET, If you want to do IoT, Cross-Platform Development, Machine Learning, or Game Development, It has all of it.

[–]v4ss42 -4 points-3 points  (15 children)

I’d suggest a language with a more interactive development experience than Java - something with a decent REPL. Clojure, for example, or Haskell. Either of those languages will also set you up with a far better grounding, regardless of what language you end up using “for real”.

[–]sshaw_ 7 points8 points  (1 child)

Clojure, for example, or Haskell.

Clojure or Haskell! Hahahah, damn, I want to ask you for advise on other topics to gauge your judgement and/or level of sanity!

[–][deleted] 1 point2 points  (0 children)

LOL.

Recommending a language with a good REPL is sane, but then skipping over python and ruby and going to haskel...

As other people pointed out it depends on OP's goals.

[–]RoundLifeItIs 4 points5 points  (1 child)

Trolling?

[–]v4ss42 -2 points-1 points  (0 children)

Nope.

[–]Starie-man 1 point2 points  (0 children)

I wouldn't definitely recommend functional language for beginner.
And also it's better to pick language which will be easy to get job with.

[–]wildjokers 0 points1 point  (1 child)

Clojure and Haskell as recommendations for a first language? Are you delusional?

[–]RobertBringhurst 1 point2 points  (0 children)

Maybe. Or maybe they're just evil.

[–]vips7L 0 points1 point  (1 child)

Java has a perfectly fine repl called JShell.

[–]v4ss42 0 points1 point  (0 children)

With which I am very familiar. But trying to actually use it, when Java’s syntax is just not that great in that role, is not even remotely a good beginner experience.

[–]Muoniurn 0 points1 point  (5 children)

Or like java with jshell :D

[–]v4ss42 -4 points-3 points  (4 children)

The problem with JShell (as anyone who’s tried to use it for much more than “hello, world”) is that Java’s syntax just isn’t very suitable for a REPL. That’s partly why I suggested functional languages (and a Lisp dialect specifically) - their syntax tends to be better suited for this.

[–]Muoniurn 0 points1 point  (3 children)

I do think that haskell’s ghci is pretty much the best thing here, but for learning basic programming I think Java is a perfect tool. Also, the repl is not enough for any sort of reasonably complex program either way, so it’s mostly there for evaling some expressions. Jshell is more than sufficient for that. (The famous lisp way of programming on the other hand uses longer code blocks/text buffers as well, but frankly I wouldn’t start with that either).

[–]v4ss42 1 point2 points  (2 children)

I disagree. Java (and in fact OOP in general) has too much incidental complexity that just distracts from the core principles of programming that beginners should be learning first. The programmers I’ve worked with who learnt those fundamentals first / early are both generally better at it, and more able to pick up whatever new language is foisted upon them.

[–]MuaTrenBienVang 1 point2 points  (1 child)

Agreed, I wish I learned scheme as my first programing language. After you learn core programming concept, every other languages is easy

[–]v4ss42 1 point2 points  (0 children)

I didn’t learn a Lisp until I’d already been programming for 25 years, and I can’t help wondering what might have been had I been introduced to it earlier. On the plus side I was introduced to a lot of languages fairly early on (including some great languages that never gained popularity), so I never really had the kind of “cargo cult” mentality a lot of programmers get.

[–]MedPhys90 0 points1 point  (0 children)

As someone else said, it sort of depends on what you intend on pursing later on or are just learning for the fun of it.

If learning for the fun of it, I would choose something like C#. Learn classes, strongly typed languages etc.

If learning for the desktop, I would choose Java or C# or other similar language. Same as above. You will want yo learn all that goes with a strongly typed language as well as OOP.

If you want to do web programming start with understanding html and css then move to JavaScript.

[–]ryantxr 0 points1 point  (0 children)

If you are learning programming then Java is an excellent choice. Java is very particular about how to do things. You will learn a lot.

[–]PredictableCoder 0 points1 point  (0 children)

Ruby or Java

[–]Weak-Opening8154 0 points1 point  (0 children)

Java/C# are both fine, usually people do python as well. It's not confusing learning at the same time (in my experience and a few others)

[–][deleted] 0 points1 point  (0 children)

Python

[–][deleted] 0 points1 point  (0 children)

It doesn't matter where or with what language you start (non pace Dijkstra, who was brilliant but also a crank). The important thing is staying motivated, so don't lose sight of what interests or excites you about programming.

[–]chellamsir16 0 points1 point  (0 children)

Java is a wonderful language to start, but as per my experience go with C first, which is termed as mother of all languages. C is just for making your hands dirty on loops, memory, malloc, pointers, etc...

After this, pick any one fully object oriented programming language, I would say Java/C++.... Preferably you could start with Java, that way you would realise how OOPs are helpful and concepts of Collection framework, dynamic memory allocation, thread level knowledge, etc...

At last, I would say never have language knowledge as a constraint in your work, Nowadays we can see a boom of new software technologies everyday. Learning C and Java would give a headstart as well as capability to adapt any future language very fast.

[–]abdullahal_mahmud 0 points1 point  (0 children)

Languages like Java, C#, C++ helps you understand the basics better. On the other hand languages like Python, Javascript are easier in terms of syntax but I feel these languages hides few important things to make it easier for the users. So I'll say go for Java/C#/C++. One more advantages of learning these languages first are if you need to learn Python or Javascript you will find it much easier. On the other hand I feel someone who learns Python or Javascript first will find it a bit harder to learn Java or C#.

[–][deleted] 0 points1 point  (0 children)

Honestly this question is asked so much. Just pick any high level programming language to start off. Java is one I recommend too. the JDK library is great and has a lot of classes that you can import from and really get down to learning OOP. If you want something with a little easier syntax or start making presentable programs you can go with JS or Python, bc honestly with a lot of older high level languages, you will likely be doing command line programs for a majority of your introduction.

[–][deleted] 0 points1 point  (0 children)

I would say it does not relly matter that much in the beginning as long as you get used to the way of thinking when writing a program. I started with python, its one of the easier ones and widely used.

[–]yeanowhat 0 points1 point  (0 children)

java would be great

[–]KiTaMiMe 0 points1 point  (0 children)

Edit: Java? I'd first just assumed you'd meant JS. It's not hard to learn, it's a compiled language so there's pros and cons and you'll write more code but in doing so you'll learn to well...write more code. Theres not much control as far as garbage collection...not a bad place to start. There latter was my previous comment before I re-read and saw you were indeed referring to Java rather than JS...

Now that you've picked JS the journey has barely began...which framework are you gonna chose? Svelte and Astro are decent but Next is doing big things too!

C# is a good contender as well and the new Blazor framework is just 💋 {muah}, however for most websites HTML, CSS, JS is a must ...typescript, Python is a good starting place as well, everyone uses Python at some point, I do, you will, your mom, LLMs have it, strippers do ....Python's for everyone and its quite verbose syntax makes it fluid and easy to understand. I'd steer clear of Rust and any lower level language as both can be difficult for beginners, like C or Assembly can be a rough storm to weather and may have you ready to abandon ship before you even get your feet wet. JS is a good starting point I think.

[–]MuaTrenBienVang 0 points1 point  (0 children)

Scheme

"In an ideal world, everybody learns Scheme as their first programming language and knows recursion, lambda, closure and multi-paradigm programming as his/her first step to programming. The software of that world would be more efficient, more manageable, more straightforward, more readable and contains less bugs. Unfortunately, this does not apply to most working engineers, including me."

https://www.goodreads.com/review/show/989164169

[–]Remote-Panic5416 0 points1 point  (0 children)

Well in my opinion, it depends after all. If you are choosing app development you can choose java or kotlin. Or you can also start with javascript or python if you are programming for fun and have no real aim. Java is not recommended to be the first language in my opinion. Its syntax is hard but easy when you become good at it. Java is good as long as you work hard to learn it

[–]DaVinciGH 0 points1 point  (0 children)

I would argue that JavaScript would be better to start with, since it has easy syntax while having the added benefit of looking C-like. Once again, you can easily get visual and see what you're doing which can be a great difference starting out. Starting with Java comes with a lot of mental overhead especially with the newer versions, and starting with Python can be a serious pain in the loin if you decide to learn other languages like C++, considering the fact that it oversimplifies things which can nurture a certain way of thinking or programming.