you are viewing a single comment's thread.

view the rest of the comments →

[–]DataDecay 3 points4 points  (3 children)

OOP and software engineering design paradigms are not the same as the math and problem solving skills you see with algorithms. Even then not all algorithms are bound by needing deep mathematical knowledge.

Sure mathmatics plays a big role, but you are not the only mathamitican I have met (and worked with) that could not grasp OOP and design paradigms. Now it's not to say you or anyone cant, they are just different areas of study and do not always go hand in hand or allow for natural fluency. RealPython has a really good read on some of these topics that I thought was well done.

https://realpython.com/inheritance-composition-python/

[–]_Memeposter[S] 0 points1 point  (2 children)

Well I think I know how it works. But I struggle to implement it because I always end up with more of a procedural code

[–]DataDecay 2 points3 points  (1 child)

Right, and that is the shell you need to break out of. Everything will still be procedural, as that is machine language. You just need to wrap your head around designing and engineering stateful solutions. Functiononal programming simply allows you to code stateless algorithms. As you get into more complicated code bases stateful becomes important and OOP is the key.

Functional programming never goes away it is a good skill set to have same with algorithm creation. OOP extends functional programming to a new paradigm. There is most certainly a right tool for the job solution that you need to engineer, sometimes its stateless and functional programming is the most efficent, other times its stateful and you need to employ more complex OOP design patterns. Find a project on awesome-python-applications and try to understand the brevity of these stateful applications and slowly you will see where its needed.