Что такое формальный язык программирования?

Что означает, что язык программирования является формальным языком программирования? И какие языки являются формальными языками программирования? А какие языки неформального программирования?

Я еще не нашел хорошего объяснения.

6 ответов


каждый язык программирования является формальным языком, так что мне не имеет смысла говорить о "формальном языке программирования".(Или кто-то знает Неофициальный Язык программирования?)

формальный язык-это язык с математически точными правилами построения. Или, точнее, это набор слов над некоторым алфавитом. Например, если взять алфавит, состоящий из букв a, b и c, формальный язык над этим алфавитом может быть набор {a, aa, aba, ca}. Конечно, такой язык был бы не очень полезен – дело в том, что с приличным набором правил построения вы можете создать такой язык, как C или PostScript.

Что касается "правил построения", они могут быть формальной грамматикой (см. грамматику для в CSS), регулярное выражение (см. великолепный regex для адресов электронной почты, определенных RFC 822), автомата или общего алгоритм.


если вы чувствуете, что вы не понимаете, что чуть-чуть больше, не отчаивайтесь, это не очень хорошее объяснение :-) есть много идей концепции формальных языков. Я бы посоветовал вам попробовать переварить Википедии и ищите больше учебников и книг. Это весело, и вы узнаете много нового о фоне компиляторов, регулярных выражений, машин Тьюринга и других чудес цифрового человечества.


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


Это выдержка из Википедия

"Джон К. Рейнольдс подчеркивает, что языки формальной спецификации-это такие же языки программирования, как и языки, предназначенные для выполнения. Он также утверждает, что текстовые и даже графические форматы ввода, влияющие на поведение компьютера, являются языками программирования, несмотря на то, что они обычно не являются Тьюринг-полными, и отмечает, что незнание концепций языка программирования является причиной многих недостатков в форматы ввода"


формальные языки-это языки, которые только и думают о правильности формы. Это означает, что достаточным и необходимым условием является соблюдение его правил. Пример правила:

например. Если мы определяем язык для десятичных чисел как {x / конечный набор цифр без ведущих нулей}. (проще говоря, десятичные знаки означают последовательность цифр.)

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

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

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


Это не "формальный язык" это формальный способ программирования: Википедия. Это должен быть не конкретный язык, а способ написания спецификации и проверки кода.


другие ответы относятся к определению формального языка программирования в соответствии с информатикой. Однако этот ответ связан с определением формального языка программирования в соответствии с социальной (подражательной) наукой.

по данным dictionary.com, одним из определений для "формального" является being in accordance with the usual requirements, customs, etc.; conventional.

формальный язык программирования-это язык программирования, который широко используется и принимается человеком, говорящим об этом. Таким образом, это домен и разговор конкретный. Возможно, лучший способ формулировки - "популярный", традиционный", "основной" или "широко принятый" язык программирования. Например, в бизнесе и промышленности это относится к SQL, Java, C#, C++, Python и PHP.

примерами неофициальных языков программирования являются SPL (язык программирования Шекспира),FORTRAN и CoffeeScript. Правильнее сказать, что один язык более условный и, следовательно, формальный, чем другой, чем это означает, что один язык является формальным, а другой-неформальным. Ведь Lisp будет очень неформальным языком программирования для создания веб-сайта, но очень формальным языком программирования для разработки исследований искусственного интеллекта.