Hello John
At first, thanks again for sharing your ideas/knowledge and opening this discussion
It's always a pleasure to contact with people who are interested in improving programming & software development.
>> "In other words, you will ultimately write your code as a series of unit operations, even if you're working in a low-level language like assembly"
IMHO, I read this as just another description of Abstraction, Libraries & Packages.
>> "Is this the book you're referring too? I don't see a reference to chemical engineering."
I mentioned the book to refer to the concept. We need to have better understanding of programming
and software development (including design, coding, testing, changes & evolution, etc.)
And we could learn from other fields/domains. So, I see what you are doing is a try to apply this concept.
I don't disagree with the direction, but what is new?
When I watched your lecture, my goal is to learn from your something that I can apply.
What I mean while you are following a known concept/direction (bringing ideas from another field/domain), the result doesn't show something new/useful
that I don't know before and could change how I do my programming tasks in a different/better way.
>> "Agreed, but using mathematical equations to describe how an algorithm will perform on specific data and specific hardware is not something commonly done in the industry—at least not at the companies I’ve worked for"
1- Because (The Source Code itself) is the description
2- There is a difference between Mathematics & Software Development
According to my knowledge, Mathematics helps in theory, analysis, design, planning, etc. It's a thinking tool.
Software development is about implementation, reality, users, development teams, versions, evolution, testing, etc. It's a mix of Art/Science/Tech/Skill.
For example,
High income - lower cost = Profit (This is mathematics)
Knowing how to increase the income and reduce costs and what to do in the first place,
how to manage the company, employees, interact with customers, this is Business.
Software development is full of components/interactions/communications/etc. and is more complex than business (IMHO)
So, trying to say we will solve (software development) problems using Mathematics.
is like saying
(Software developments problems are already solved so we have mathematics that can handle everything) --> This is not the reality as I know it.
>> "Could you give me something to read that gives a good definition of COP?"
While as you discovered many resources mention OOP, the concept itself is very simple to understand/explain and is more general.
Author:
Prof. Dr. C. Szyperski
>> "I disagree that "the sky's the limit" in software"
This sentence means we have huge space of innovation at the level of what the software does and how it's implemented
>> "I'm curious. What made you change your mind?"
Because when we bring ideas from other fields to programming, we not only bring the good/useful
benefits provided by these ideas, we also, bring what is wrong/bad and sometimes we don't know
such things because the other field (original source of the idea) could miss such disadvantages due
to lower complexity. In programming, things could grow fast in a very dynamic and complex ways and
such scenarios bring new challenges and use-cases.
When you bring a new idea to programming, you will have some assumptions about programming that will let you
think that this idea is good and will solve problems, but a common mistake is (limited vision)
This limited vision could be based on thinking only about specific (particular domain) or (doing things in particular way)
but once people start applying the idea in different constraints, you will discover the truth!
So, the lesson learned is respecting the context in which ideas could be useful/good and propose ideas according to this context.
Greetings,
Mahmoud