Какой язык строго типизирован: Python или Prolog? - PullRequest
7 голосов
/ 07 мая 2010

Я новичок в Python и пролог. Насколько я понимаю, Python является строго типизированным языком. Пролог также является строго типизированным языком?

Ответы [ 4 ]

8 голосов
/ 07 мая 2010

Как и Python, Prolog выдаст вам ошибку типа, если вы попытаетесь добавить вещи, которые не являются целыми числами. Но это почти предел того, что Prolog сделает для вас. Не очень полезно говорить, что Пролог является или не является «строго типизированным» - я уже написал так много ответов на вопросы о «строго типизированных» и переписывал неправильные ответы других людей на вопросы о «строго типизированных», что я никогда хочу снова услышать слова. И все же где-то, кто-то в Интернете не прав .

Вот что полезно знать:

  • Типы Prolog и Python динамически типизированы, то есть программы не проверяются на «ошибки типа» до момента выполнения. Типичная «ошибка типа» в этом случае - это функция / метод (Python) или отношение (Prolog), применяемое к «неправильным» значениям. А Python обнаружит случаи, когда вы применяете что-то к неправильному числу аргументов.

  • В Python есть довольно много терминов (выражений), которые неправильно напечатаны, то есть будут отклонены во время выполнения из-за ошибок типа.

  • В Прологе почти каждый термин является корректным по определению. Например, пользовательский функтор может быть применен к любому списку терминов любой длины, и Prolog с радостью попытается интерпретировать его как правильно сформированное отношение. Если вы получаете «неправильное» количество аргументов в отношении, Prolog не воспринимает это как ошибку типа; это просто предполагает, что у вас есть два разных отношения с разными артериями с одним и тем же именем. (Является ли это поведение полезным, подлежит обсуждению, но именно так ведет себя Пролог.) Пролог немного строже со встроенными отношениями, такими как IS, как в

    X is Y + Z
    

Что правда и полезно знать, так это то, что в Prolog система динамических типов отклоняет очень мало терминов - намного меньше, чем система динамических типов Python. Если по этой причине вы решите называть Prolog «более слабым», а Python - «более сильным», вы можете сделать это, потому что термины «сильный» и «слабый» не имеют универсально согласованного технического значения. Но вам лучше подумать и сказать, что динамическая система типов Пролога принимает почти все отношения и термины, а также типизированные - в отличие от Python. Таким образом, вы будете сообщать, что на самом деле происходит.

5 голосов
/ 07 мая 2010

Python строго типизирован.

е:

"1" + 1

Повышает TypeError

Я полагаю, что Пролог не сильно напечатан.

2 голосов
/ 07 мая 2010

Пролог не строго типизированный язык.

ref: http://scom.hud.ac.uk/scomtlm/book/node187.html

0 голосов
/ 07 мая 2010

[...] Пролог также является строго типизированным языком?

нет

Нет

...