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: |

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.

What Is Bitcoin?

Bitcoin is a decentralized digital currency that you can buy, sell and exchange directly, without an intermediary like a bank. Bitcoin’s creator, Satoshi Nakamoto, originally described the need for “an electronic payment system based on cryptographic proof instead of trust.” Each and every Bitcoin transaction that’s ever been made exists on a public ledger accessible to everyone, making transactions hard to reverse and difficult to fake. That’s by design: Core to their decentralized nature, Bitcoins aren’t backed by the government or any issuing institution, and there’s nothing to guarantee their value besides the proof baked in the heart of the system. “The reason why it’s worth money is simply because we, as people, decided it has value—same as gold,” says Anton Mozgovoy, co-founder & CEO of digital financial service company Holyheld.

Metaprogramming from ye


Telegram Metaprogramming
FROM USA