Could someone explain the fundamental distinctions and core differences between object-oriented programming (OOP) and procedural programming (PP)? As a student learning software development, I often encounter discussions about these two major programming paradigms.