Имеют ли теоретические темы информатики приложения для разработки в "реальном мире"? - PullRequest
17 голосов
/ 20 января 2009

Под «теоретическими темами информатики» я имею в виду такие вещи, как обычные против нерегулярных языков, лемма прокачки и грамматики.

Я знаком с реальными приложениями конечных автоматов и регулярных выражений, но такие темы, как эти, доставляют мне больше проблем, поскольку я не вижу никаких реальных приложений.

Ответы [ 3 ]

17 голосов
/ 20 января 2009

Эти вещи полезны, если вы хотите знать, бесполезно ли пытаться что-то сделать с помощью регулярных выражений. Например, знание того, что XML не является регулярным, полезно, если вам когда-нибудь приходит в голову идея проанализировать XML с помощью регулярных выражений. И если вы не знаете, что XML не является регулярным, лемма прокачки позволит вам доказать это тривиально. И еще есть компиляторы, где, если вы не знаете этого, вы обречены. Это зависит только от приложения.

9 голосов
/ 20 января 2009

Вот Взятие Стива Йегге о полезности компиляторов, суммированное как:

На самом деле, Compiler Construction, по моему собственному скромному и, вероятно, смущающему ошибочному мнению, является вторым по важности классом CS, который вы можете получить в программе информатики для бакалавров.

Грамматики необходимы для анализа рекурсивных структур, которые появляются в языках программирования, естественных языках и сложных структурах данных. Я полагаю, что некоторые программисты вообще не встречают их, но люди, которые пишут компиляторы, IDE, сериализацию и т. Д., Часто встречают их.

6 голосов
/ 22 января 2009

Как отметил Ювал Ф., грамматики имеют решающее значение для синтаксического анализа языка. Если вы посмотрите на генераторы синтаксических анализаторов, такие как ANTLR, то обнаружите, что структура грамматик удивительно похожа на то, что вы изучали в школе.

...