{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Blog — George Mishurovsky: posts tagged OOP",
    "_rss_description": "A blog by George Mishurovsky — a senior software engineer with a medical degree. Drawing from both engineering and scientific thinking, he explores software, architecture, design, psychology, and product thinking.",
    "_rss_language": "en",
    "_itunes_email": "george@mishurovsky.com",
    "_itunes_categories_xml": "",
    "_itunes_image": "https:\/\/mishurovsky.com\/blog\/pictures\/userpic\/userpic-square@2x.jpg?1753619610",
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/mishurovsky.com\/blog\/?go=tags\/oop\/",
    "feed_url": "https:\/\/mishurovsky.com\/blog\/?go=tags%2Foop%2Fjson%2F",
    "icon": "https:\/\/mishurovsky.com\/blog\/pictures\/userpic\/userpic@2x.jpg?1753619610",
    "authors": [
        {
            "name": "George Mishurovsky",
            "url": "https:\/\/mishurovsky.com\/blog\/",
            "avatar": "https:\/\/mishurovsky.com\/blog\/pictures\/userpic\/userpic@2x.jpg?1753619610"
        }
    ],
    "items": [
        {
            "id": "13",
            "url": "https:\/\/mishurovsky.com\/blog\/?go=all\/book-review-the-object-oriented-way-christopher-okhravi\/",
            "title": "Book review: “The Object Oriented Way”, Christopher Okhravi",
            "content_html": "<div class=\"e2-text-picture\">\n<a href=\"https:\/\/leanpub.com\/the-object-oriented-way\/\" class=\"e2-text-picture-link\">\n<img src=\"https:\/\/mishurovsky.com\/blog\/pictures\/the-object-oriented-way@2x.png\" width=\"320\" height=\"414\" alt=\"\" \/>\n<\/a><\/div>\n<p>Last week I finished reading “The Object Oriented Way” by Christopher Okhravi. I was attracted to this book with occasional posts by the author on Youtube where he was discussing complex and interesting topics of OOP. His dives into use cases for composition vs. inheritance, composition patterns, and dependency inversion finally convinced me to buy a full copy. I was not disappointed!<\/p>\n<p>This book is like a Bible of OOP. It starts from the very foundational topics like syntax, declaration vs. assignment vs. initialization, number types, variable mutability and so on – written in a concise yet exhaustive manner.<\/p>\n<p>The story develops with detailed discussion of all the tools used in C# OOP, each chapter more advanced than the previous one. It culminates with very interesting discourse of Liskov Substitution Principle: covariance, contravariance, invariance, and the limitations C# has regarding pure logical object-oriented compatibility.<\/p>\n<p>The ending was somewhat unexpected. For me it turned a textbook into a wonderfully written story, with a narration gradually building cognitive tension towards beautiful complexity and then resolution with a new state, a level above the starting point. I will not spoil any details, though :)<\/p>\n<p><b>Whom this book is going to be useful:<\/b><\/p>\n<ul>\n<li>anybody who wants to learn C#<\/li>\n<li>junior devs to build a solid understanding of OOP toolchain<\/li>\n<li>middle-to-senior devs to fill in the gaps in OOP theory<\/li>\n<li>staff devs and above to master arguments for or against object-oriented approach in a particular module<\/li>\n<\/ul>\n<p><b>Verdict: 4.5 \/ 5 – essential.<\/b><br \/>\nConsider buying the full book. It is a worthy investment for most of OOP practitioners.<\/p>\n<p><i>I personally would love to see more detailed UML diagram section. They can be quite complex, and it would be cool to have a complete material on how to write expressive diagrams when planning OOP architecture.<\/i><\/p>\n",
            "date_published": "2025-09-22T15:53:41+02:00",
            "date_modified": "2025-09-22T15:53:09+02:00",
            "tags": [
                "bookshelf",
                "C#",
                "OOP"
            ],
            "image": "https:\/\/mishurovsky.com\/blog\/pictures\/the-object-oriented-way@2x.png",
            "_date_published_rfc2822": "Mon, 22 Sep 2025 15:53:41 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "13",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/mishurovsky.com\/blog\/pictures\/the-object-oriented-way@2x.png"
                ]
            }
        },
        {
            "id": "2",
            "url": "https:\/\/mishurovsky.com\/blog\/?go=all\/the-very-roots-of-oop\/",
            "title": "The Very Roots of Object-Oriented Programming",
            "content_html": "<p>An image below is the first historical mention of something resembling objects we use today in OOP.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/mishurovsky.com\/blog\/pictures\/plex@2x.png\" width=\"756\" height=\"498\" alt=\"\" \/>\n<div class=\"e2-text-caption\">An ancestor of all modern objects — plex. Rectangles represent data in memory. Yellow ones are pointers to other objects, green rectangles hold actual values, red rectangles are pointers to functions, and blue rectangles are flags that control program execution flow.<\/div>\n<\/div>\n<p>The author is Douglas T. Ross from MIT, who published this concept in a paper <a href=\"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/366199.366256\" class=\"nu\">“<u>A Generalized Technique for Symbol Manipulation and Numerical Calculation<\/u>”<\/a> in 1960! He called it a <i>plex<\/i>, a shorter form of <i>plexus<\/i>, meaning “an interwoven combination of parts in a structure; a network”.<\/p>\n<p>This solution was intended to solve problems for which commonly used linked list or tree structures were not sufficient enough. Each plex could hold both data and an arbitrary number of pointers, allowing it to represent complex object relationships — essentially, a network of interconnected elements. Pointers do not only point to other plexi, they could also point to functions. And, as these are not actual functions but pointers (which can potentially be changed during runtime), this means an invention of <i>virtual functions<\/i> as well. A truly fascinating stuff!<\/p>\n<p>I’ve learned this bit from <a href=\"https:\/\/www.youtube.com\/watch?v=wo84LFzx5nI\">a great talk of Casey Muratori at the Better Software conference<\/a> in which he digs into the history of OOP in C++. I highly recommend watching it in full.<\/p>\n",
            "date_published": "2025-07-29T21:00:24+02:00",
            "date_modified": "2025-07-29T20:59:06+02:00",
            "tags": [
                "history",
                "objects",
                "OOP",
                "talks"
            ],
            "image": "https:\/\/mishurovsky.com\/blog\/pictures\/plex@2x.png",
            "_date_published_rfc2822": "Tue, 29 Jul 2025 21:00:24 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "2",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": [
                    "https:\/\/mishurovsky.com\/blog\/pictures\/plex@2x.png"
                ]
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134e)"
}