Has anyone tried incorporating concept design into program synthesis?

Hi all,

I’m Kimsia, a part-time masters student in Singapore Management University. I recently came across the book Essence of Software Design and also Kodless during my research into program synthesis. My day job is being a web developer writing software for enterprises to improve their financial reporting and analytics.

I found this by way of Concept design in three easy steps - by Daniel Jackson Gordon Brander’s newsletter.

I was wondering has anyone tried incorporating concept design into program synthesis?

Would it be fruitful to develop a company-specific ontology (or collection of concepts) and one meta-ontology (collection of meta-concepts that are more generic and less specific to usecases) most likely used by developers who work across different projects for different clients?

Yes, these are great directions and similar to ones we’re investigating at the Software Design Group. Regardless of the engine behind the program synthesis (these days the conversation might turn more towards LLMs), I think it’s important to develop a form of concept catalog to form the basis of derived applications. The nature of configuration and tuning a collection of concepts to be “more specific” to any particular project/client is a central discussion point, as this is where we’d need to make potential tradeoffs between the benefits of modularity (e.g. portability, extensibility) and applicability (i.e. able to run on a specific database setup).

Whether or not that forms ontologies is an interesting question - we’d like to imagine that the concepts themselves require very little modification if at all to apply in a given application, and that most of the combined behavior can be specified in the synchronizations. How much of the “specificity” presumed lies in the modifications to concepts, and how much of it seems like incidental complexity? Another way to approach the question might be to create a few example “ontologies” and investigate the parts that are project/client specific, and explore ways to either compartmentalize them, or factor them out as concepts.