Well, I never learned the terminologies of first and second order logic but having hands-on training both in programming and linguistics (neither of which did I get formal training in for the theoretical side), when I finally *did* embark on a study of Philosophy and some bits of logic last year, it kind of second nature to me. New terms for concepts that I know are valid through practical experience. I've studied Turing and Goedel on and off through the years as I would progress in my interests and needs in programming or logic. I have a side interest in the theoretical with regards to mathematics and always a keen interest in linguistics, so things like hidden Markov models and grammars are also intuitive at this point. I was never much of a fan of OOP generally as I found it rather messy to deal with, but I use it when it's a necessity. I trained myself when I was little with BASIC and ways of boolean math and their effects on each other was one of the first things I tackled. OOP wasn't very difficult from there, even though it's conceptually different but to me, it's a change of what's being carried in the buckets and how the buckets relate to one another. In my mind, things flip and flip easily from true to false to true. I mentally have coins with black tops and white bottoms that are lined up and form arrays. As I go stepwise through algorithms they flip and flop like othello pieces. Sometimes they have labels attached when necessary. Sometimes they're stacked in 3D and can affect each other diagonally. Sometimes they stand on their sides as either choices need to be made or if there is uncertainties that are trapped within the system that just have to stay there until resolution - if they get resolved at all. IF/THEN, CASE, INPUT are all workarounds in these cases. I'm intrigued by embarking on the theoretical side of things because I've got the intuitions of it just fine. Even paradoxes are no issue. Every paradox is resolvable just by stepping outside of the system you're confined to. If you MUST resolve a paradox within a system, then you have to be very clever indeed, but even there, MOST seeming paradoxes _can_ be resolved. A few can't be. No system is robust enough to handle all conflict, whether it's boolean conflict (paradox), or other uncertainties. In some cases, absolute certainty is downright mythological in nature and one must step outside of the system for resolution. But this is my bias: for me, logic is a system, so that is why I compare it side-by-side with other systems.