Modern OOP is an antipattern.
Programming
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
OOP isn't an anti-pattern, but the way it's used in the enterprise Java world definitely is. And it's all based on a fundamental misunderstanding of what an interface is.
Elaborate
The fedora prevents them from typing fast enough.
From my understanding, anti OOP aficionados say too much energy is spent constructing the framework, often unnecessarily, instead of writing the code that needs to be done. I think they have some merit in their argument. It's easy to see both points of view.
I try to only write in easy language if I can. My favorite one is Lean4.
There's lots of this vs that discussion in this thread. IMO the most useful such distinction I've encountered is languages that encourage you to think about data vs languages that encourage you to think about transformations (of data). Excel and modern OOP are the former while haskell and digital signal processing are the latter.
Why is Go not a serious language? Programming backend stuff is great with it. Especially networking. Reading Go is not hard and in my opinion it is more easy to understand Go code you find from other programmers than Python. Companies are build on Go and people make a living from it. However you need to look into you local job market, where I live there are very few companies looking for Go developers. It is a serious language. But I don't know much about zig, I used it once for CGO.
Lmao. First, everyone is right. Go is serious. An Zig as well. And a bit niche.
Furthermore: Yes. Unless you like learning curves as steep as a brick wall... You should probably start with something beginner friendly.
And you should get some kind of book to learn it. That's easier and faster than poking around and learning things in random order.
As an adult, just skip the programming languages made for children. And skip the crazy ones like PHP. Go for something that is both useful and doesn't come with 5 bazillion things to learn at once, and as many exceptions to those rules.
When I first started programming I was constantly thinking the same thing: should I learn this or that language? Will it be useful or a waste of time?, etc but it really doesn't matter. Nearly every modern language has the same core principles of variables, constants, functions and data structures. Once you've gotten the hang of those ideas then switching languages is just a matter of learning the new syntax which isn't hard when you already know how it's going to work
Whoa, whoa. Data structures in C are not at all like in C++ or others because “data management” changes how the whole enchilada is cooked.
I learned with python and switched to rust when that started to piss me off. It'll be awhile until you know enough about why you want a different language for a task. Until then, python and JavaScript are totally fine; you may never even need to leave those ecosystems depending on what you want to do.
I get paid a whole lot to work solely in Deluge. which is the most painfully simple language ever. you want a join() built in? fuck you. sleep()? not allowed. you want a "for i in range()"? nope, they don't do that here.
simple languages are often the most used in production unless you're doing something highly specific that warrants a specific language.
A lot of basic principles remain the same from one language to another. Some have more features than other, some have slightly obtuse grammar, but as long as you stay in the same class of programming language, it can be a good learning experience. Learning from "simple" languages and building up was the way to go for a long while.
I'm not sure I'd call Zig or Go "easy" programming language though. Most languages you'll hear about these days are quite high level (even C++ and C got there over time). These days, I'm not sure where one would start from scratch. "scripting" languages are a good idea, since they are extremely easy to experiment with, and unless you start poking too much can't do any harm.
But basically, if you stay with imperative programming (most used languages are like this) 80-90% of the knowledge you'll get in one translate into another; there's no bad way to start.
I would suggest a different approach. Think about what you want to achieve with programming. Look at the languages which can be used to do this task. Choose one and try some tutorials, I recommend freecodecamp it helped me a lot.
I can't really comment on zig and go but I think they are pretty serious languages tbh.
i mean, you'll be able to write things in that language, which i'd say is somewhat useful 🤔
It's kinda like asking "is it worth doing long hikes before training to do 5km runs?", you probably don't need to go on hikes in order to start running, but it's less intimidating and if you then realize you're just not into running then you're still left with a useful skill.
Programming is a tool. Systems understanding is what has value. Pick a system you want to learn and actively build and fail consistently.
Repeated exposure to reality is the way to learn fast and gain confidence.
I don't think your plan to get more serious is pointed at the right end or means.
You don't point criticism at programming languages necessarily. Because, later you'll want to find an ecosystem best suited to achieve a specific task.
If a later task becomes a serious consideration, then you'll seriously consider the best placed language to complete that task. Consequent language quibbles might be path of the course.
For example, working on Android is only going to be effective through a handful of languages such as Java, Kotlin, C#, JavaScript, …
Breaking new ground with another language pointed at Android would be like climbing Mt Everest without all the usual equipment. Sure it's a challenge, but is it the challenge you want?
Learn any language that helps you learn, but that's only as a means to that (learning) end.
If you are learning because you are just interested in this, then I might say go with any language like C/Go where you have real datatypes you can work with.
C might be a good place to start for a little while where you can learn the fundamentals like data types, logic, etc.
Once armed with the fundamentals, you can really just go wherever you desire, look at and maybe try a few to see what you like.
I don't like complex languages. Why do i have to remember x100 for thing that a proper design from start would have accomplished? Some of the larger ones even have different keywords for basically the same task duplicated.
By that note, D seems decent.
Personally I'm in a similar situation with Nim-lang. I like the style and performance, it hits a spot for me that other languages do not*. I wouldn't call it "easy" though, as you still have to think about typing and other structure stuff (but not to the degree that you'd have to deal with for other languages). Being less popular of a language is probably the main issue here (there are many options for bindings, but you may find yourself waiting on something specific with smaller communities).
TBH I haven't used it as much as I should, having other issues. The last thing I did though (sweeper clone), I finished it and it made me feel better about my possibility of understanding complexities.
* I guess newer changes to Python and LUA might make a difference, though I still get the feeling those are not just-enable-to-be-reasonably-fast options.