Cog ist eine Software, die es ermöglicht, Teile von Textdateien zu generieren. Anders als bei Template-Engines, können Template- und Zieldateien identisch sein.
Cog wird am häufigsten zur Metaprogrammierung genutzt. Hierbei werden Teile bereits existierender Sourcecode-Dateien verändert. Im Vergleich zu einer vollen Transpilierung ergeben sich folgende Vorteile:
Die Teilerzeugung ist jedoch nicht auf Sourcecode von Programmiersprachen beschränkt. Geeignet ist jedes Textformat, welches eine Syntax für Kommentare anbietet, z.B. CSS, HTML (auch Supersets wie Markdown) und XML.
Cog ist in Python geschrieben. Der Generator-Code wird ebenfalls in Python programmiert.
Software, die Cog verwendet: c42f/tinyformat, hughperkins/clnn, hughperkins/EasyCL, hughperkins/Jinja2CppLight, hughperkins/luacpptemplater, intel/rapid-design-methods-for-developing-hardware-accelerators, InWorldz/sopmq, mavlink/mavros, Pydev, RoboComp