Existing programming models tend to tightly interleave algorithm and optimization in HPC simulation codes. This requires scientists to become experts in both the simulated domain and the optimization process and makes the code difficult to maintain or port to new architectures. In this paper, we propose the INKS programming model that decouples these concerns with two distinct languages: INKSpia to express the simulation algorithm and INKSpso for optimizations. We define INKSpia and evaluate the feasibility of defining INKSpso with three test languages: INKSo/C++, INKSo/loop and INKSo/XMP. We evaluate the approach on synthetic benchmarks (NAS and heat equation) as well as on a more complex example (6D Vlasov–Poisson solver). Our evaluation demonstrates the soundness of the approach as it improves the separation of algorithmic and optimization concerns at no performance cost. We also identify a set of guidelines for the later full definition of the INKSpso language.