Telegram Group & Telegram Channel
Статическая и динамическая типизация

@covalue в дискуссии на тему "статической и динамической типизации" (типовой дурацкий вопрос собеседования программистов, самые умные ещё добавляют "сильная vs слабая типизация") предложил глянуть пару статей: "Search of types" (Kell, 2014) и "Several types of types in programming languages" (S. Martini, 2016).

Сама пара координат для типизации, "статическая и динамическая" и "сильная и слабая", мягко говоря, не совершенна. В целом она придумана вроде как для описания существующих массовых прикладных языков (т.е. заведомо не берём Haskell или Lean, нам бы с Asm - C - Algol - Java - Python разобраться). Но, как видим выше, выкрутить её можно в любую сторону.

Сам уважаемый @covalue понимает это всё хозяйство в том смысле, что существует "административная", "машинная" и "логическая" функция типов.

Мне кажется зайти удобней с другой стороны.

Вот рассмотрим три инструкции:

1. x + y
2. print(x)
3. x.name = "Vasya"

В каждой из них, с точки зрения дизайнера языка, вызывается некая "перегруженная функция" (overloaded function):

1. +(x, y), а точнее integer_plus(x, y)
2. print(x.to_string), а точнее print_string(integer_to_string(x))
3. name_set(x, "Vasya"), а точнее person_name_set(x, "Vasya")

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

Для реализации этой задачи приходят к следующим вариантам решения:

1. Наделаем функций на все сочетания операндов, типа сложения чисел и строк ("слабая динамическая типизация"), как в JS или Perl.
2. Сделаем статический анализатор, который будет гарантировать, что для сокращённой синтаксической конструкции всегда будет возможность найти необходимый полный вариант ("сильная статическая типизация").
3. Найдём полную форму для сокращённой в момент исполнения кода, если не находится кидать ошибку ("сильная динамическая типизация").

Короче, в этом вопросе речь идёт как будто не про типы вовсе, а про диспетчеризацию перегруженных функций.



tg-me.com/metaprogramming/398
Create:
Last Update:

Статическая и динамическая типизация

@covalue в дискуссии на тему "статической и динамической типизации" (типовой дурацкий вопрос собеседования программистов, самые умные ещё добавляют "сильная vs слабая типизация") предложил глянуть пару статей: "Search of types" (Kell, 2014) и "Several types of types in programming languages" (S. Martini, 2016).

Сама пара координат для типизации, "статическая и динамическая" и "сильная и слабая", мягко говоря, не совершенна. В целом она придумана вроде как для описания существующих массовых прикладных языков (т.е. заведомо не берём Haskell или Lean, нам бы с Asm - C - Algol - Java - Python разобраться). Но, как видим выше, выкрутить её можно в любую сторону.

Сам уважаемый @covalue понимает это всё хозяйство в том смысле, что существует "административная", "машинная" и "логическая" функция типов.

Мне кажется зайти удобней с другой стороны.

Вот рассмотрим три инструкции:

1. x + y
2. print(x)
3. x.name = "Vasya"

В каждой из них, с точки зрения дизайнера языка, вызывается некая "перегруженная функция" (overloaded function):

1. +(x, y), а точнее integer_plus(x, y)
2. print(x.to_string), а точнее print_string(integer_to_string(x))
3. name_set(x, "Vasya"), а точнее person_name_set(x, "Vasya")

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

Для реализации этой задачи приходят к следующим вариантам решения:

1. Наделаем функций на все сочетания операндов, типа сложения чисел и строк ("слабая динамическая типизация"), как в JS или Perl.
2. Сделаем статический анализатор, который будет гарантировать, что для сокращённой синтаксической конструкции всегда будет возможность найти необходимый полный вариант ("сильная статическая типизация").
3. Найдём полную форму для сокращённой в момент исполнения кода, если не находится кидать ошибку ("сильная динамическая типизация").

Короче, в этом вопросе речь идёт как будто не про типы вовсе, а про диспетчеризацию перегруженных функций.

BY Metaprogramming


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/metaprogramming/398

View MORE
Open in Telegram


Metaprogramming Telegram | DID YOU KNOW?

Date: |

The messaging service and social-media platform owes creditors roughly $700 million by the end of April, according to people briefed on the company’s plans and loan documents viewed by The Wall Street Journal. At the same time, Telegram Group Inc. must cover rising equipment and bandwidth expenses because of its rapid growth, despite going years without attempting to generate revenue.

How To Find Channels On Telegram?

There are multiple ways you can search for Telegram channels. One of the methods is really logical and you should all know it by now. We’re talking about using Telegram’s native search option. Make sure to download Telegram from the official website or update it to the latest version, using this link. Once you’ve installed Telegram, you can simply open the app and use the search bar. Tap on the magnifier icon and search for a channel that might interest you (e.g. Marvel comics). Even though this is the easiest method for searching Telegram channels, it isn’t the best one. This method is limited because it shows you only a couple of results per search.

Metaprogramming from ru


Telegram Metaprogramming
FROM USA