Я не думаю, что существует четкое разделение для понятия "возможностей" языка программирования, так как многие среды, такие как сборка мусора (Java) или сопоставление с образцом (Haskell), предоставляются средой выполнения. Поэтому я бы сказал, что язык программирования - грамматика - сам по себе не предоставляет никаких возможностей. Он просто определяет правила языка (синтаксис). Поскольку поведение определяется тем, как интерпретируется код (созданный грамматикой с соблюдением ее правил), особенности языка программирования являются семантическим аспектом.