Бойко!

«Слабо типизированным я называю язык, в котором, грубо говоря, типы данных 
имеют небольшую роль.»

Теперь мы поняли друг друга!

Статья на Хабре описывает, как мне показалось, общепринятую терминологию по 
разновидностям типизации, в ней weak/strong typing переведены как слабая и 
сильная типизации, в скобках указаны синонимы «нестрогая» и «строгая». Поэтому 
я сначала недопонял Вашу мысль.

«Например, их мало и нельзя определять новые.»

Да, есть такое. Типы символов, как правило, фиксированы реализацией, и их 
немного. Как правило, типы в Рефале формулируются на уровне соглашений: 
структура объектных выражений описывается при помощи грамматики вроде БНФ или 
РБНФ, эта грамматика записывается в комментариях к программе.

Я когда-то разрабатывал мёртворождённый диалект Модульный Рефал, в нём у меня 
была ограниченная возможность определять новые типы. Метка типа описывалась при 
помощи ключевого слова $DATA, термы данного типа записывались в квадратных 
скобках, после открывающей скобки записывалась метка. Доступ к содержимому 
термов был доступен только из того модуля, где этот тип был описан — в других 
модулях такой терм можно было сопоставить только с t-переменной.

$MODULE SymTable;

$DATA Table;

/**
  <New> == t.SymTable
*/
$ENTRY New { = [Table] }

/**
  <Lookup t.SymTable e.Name>
    == Found e.Value
    == NotFound
*/
$ENTRY Lookup {
  [Table e.Table-B (e.Name (e.Value)) e.Table-E] e.Name = Found e.Value;
  [Table e.Table] e.Name = NotFound;
}

…

$END SymTable;

Я даже подумывал на основе этих «абстрактных типов данных» сделать ограниченное 
ООП с виртуальными функциями.


«Кстати, оно и неоднозначно, динамический Рефал или нет.  Например, если 
считать типами s., t. и e., то Рефал окажется статически типизированным: тип 
каждой переменной определён в тексте программы, т.е. статически.»

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


С уважением,
Александр Коновалов


-----Original Message-----
From: Boyko Bantchev boykobb_AT_gmail.com <refal@botik.ru> 
Sent: Monday, December 2, 2019 1:13 AM
To: refal@botik.ru
Subject: Re: Нужна ли "Ленинская простота" в Рефале?

> Распространённая терминологическая ошибка ........

Александр,

Представьте себе, мне хорошо известна разница между понятиями 
статическая/динамическая и строгая/нестрогая в отношении типизации в языках 
программирования. Однако я говорю не о нестрогой типизации, а о слабой. Слабо 
типизированным я называю язык, в котором, грубо говоря, типы данных имеют 
небольшую роль. Например, их мало и нельзя определять новые. Такой язык не 
обязательно нестрого типизированный.

> Ликбез по типизациям: https://habr.com/ru/post/161205/

Спасибо за заботу.  Адекватных источников, например книжек, хватит, я их читал 
и по мере сил стараюсь продолжать.

> А с тем, что Рефал — динамически типизированный, я не спорю.

Я и не утверждал то, с чем вы не спорите.
Кстати, оно и неоднозначно, динамический Рефал или нет.  Например, если считать 
типами s., t. и e., то Рефал окажется статически
типизированным: тип каждой переменной определён в тексте программы, т.е. 
статически.
  • RE:... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Eisymont Leonid verger-lk_AT_yandex . ru
      • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
        • ... Eisymont Leonid verger-lk_AT_yandex . ru
          • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Александр Гусев gusev_aleksandr_AT_mail . ru
            • ... Boyko Bantchev boykobb_AT_gmail . com
            • ... Sergei M. Abramov
            • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Boyko Bantchev boykobb_AT_gmail . com
            • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Boyko Bantchev boykobb_AT_gmail . com
            • ... Arkady Klimov arkady . klimov_AT_gmail . com
            • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Arkady Klimov arkady . klimov_AT_gmail . com
            • ... Александр Гусев gusev_aleksandr_AT_mail . ru
            • ... Boyko Bantchev boykobb_AT_gmail . com
            • ... Александр Гусев gusev_aleksandr_AT_mail . ru
            • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Александр Коновалов a . v . konovalov87_AT_mail . ru

Ответить