Un compilador traduce un programa de un lenguaje de programación a otro, generalmente a código de máquina, mientras que un intérprete analiza y ejecuta programas de forma inmediata sin necesidad de traducción. Los lenguajes de alto nivel se expresan de forma cercana al lenguaje humano, mientras que los de bajo nivel usan instrucciones cercanas al hardware; los de medio nivel permiten un control intermedio. C es un lenguaje de propósito general de nivel medio-bajo que ofrece simplicidad y portabilidad