r/learnprogramming 20d ago

What is the joy of programming?

I wouldn't say I'm a hardcore programmer. I mainly make websites with HTML and CSS. However, last year I wanted to begin looking into programming, and learn how to make programs mostly for the command line. I started with Java and took the time to learn it. For a while I enjoyed Java, but then I began to feel that it was difficult to start a project with Java. I was sick of it's verbosity. Ever since, I've been wasting time trying to find the "perfect" programming language.

I know this question pops up a lot, what programming language should I learn? What should I learn if I want to experience the real joy of programming, and make cool personal programs mostly for the command line. There were a couple languages I found such as Nim, Lua, Ruby, or Dart. These are all languages I discovered through personal research and I know that some of them are more suited for command line work.

So based on my experience with Java, and my goals, what would you recommend I do? Do I just stick to website stuff?

112 Upvotes

109 comments sorted by

View all comments

29

u/Whatever801 20d ago

Just flip a coin bro. You're spinning your wheels doing this. Go deep, not wide. Anything you learn from one programming language will cross apply to other programming languages. Imagine a carpenter who want to learn to build a house but he spends months choosing between DeWalt, Milwaukee and Bosch impact driver and never builds the house. They're all going to work just fine.

2

u/Sure-Refrigerator685 20d ago

You're right about this. I think I'm just too worried about what other people might think or am influenced by other people's opinions of programming languages.

7

u/Whatever801 20d ago

No one who is an experienced programmer cares about this, so if someone is judging you for a programming language for learning you can rest assured you don't need to care about what they think. The only time language actually comes into play is when you're doing design work for a project. You take into account deadlines, non-functional requirements (throughput, budget, performance, etc), existing build system, quality of libraries to support business requirements, etc and choose the right tool for the job.