Войти
ФлеймФорумПрограммирование

Статическая типизация* - говно, и его уже не улучшить

Страницы: 1 2 Следующая »
#0
18:45, 3 сен. 2019
* в C++, Java и подражателях.

Так что начинаем сначала.
Делим типы на категории.
1. Интерфейс/трейт. Этот тип перечисляет операции, применимые к этому объекту.
Интерфейсы образуют направленный граф, где узлы - это интерфейсы (содержат имена и прототипы методов), а рёбра - реализации (методов).
Кроме того, один интерфейс может включать другой, перекладывая бремя реализации далее.
2. Структура. Этот тип перечисляет имена и типы переменных, входящих в состав объекта.
Структура может реализовать интерфейсы.
3. Бокс. Этот тип функционирует, как структура с одним полем, и предназначен для создания так называемых "ньютайпов".
Бокс может реализовать интерфейсы. Базовый объект, на основе которого создаётся бокс, недоступен для внешних пользователей.

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

Таким образом, в коде проводится явное разделение между поведением и представлением объекта.

Вообще, что-то подобное уже даже сделано в Расте, так что, по-видимому, это не такая уж и плохая идея.


#1
(Правка: 18:53) 18:52, 3 сен. 2019

Delfigamer

> Статическая типизация* - говно
+ Показать

> При наследовании класса
> сделано в Расте
В Rust завезли наследование? Вот это поворот!

#2
18:53, 3 сен. 2019

Мы вашу проблему не понимать.

#3
18:54, 3 сен. 2019

+1. Не хватает раздела с критикой старых подходов и раздела где описывается как легко эти проблемы решаются с новым.

#4
19:59, 3 сен. 2019
Изображение
#5
11:55, 4 сен. 2019

Прикольна.

+ Показать
#6
(Правка: 11:58) 11:57, 4 сен. 2019

Nazdorovye
> А почему говно-то?
Потому, что компьютеру насрать на то, чем считает программист адрес в памяти. А программисту абыдно!

#7
12:20, 4 сен. 2019

На самом деле, - это динамическая типизация говно, но её пытаются исправлять и придумывают всякие asm.js, чтобы ускорить тормоза.

#8
13:20, 4 сен. 2019

0iStalker
Быстрые тормоза тормозят быстро или быстрее тормозят?

#9
18:42, 4 сен. 2019

Nazdorovye
> Быстрые тормоза тормозят быстро или быстрее тормозят?
>

это как отрицательные темпы роста, только наоборот

#10
18:45, 4 сен. 2019

Так и холивара никакого не получится.

#11
18:48, 4 сен. 2019

emptiness_rain
Геймдев уже не торт!

#12
18:56, 4 сен. 2019

kipar
> Не хватает раздела с критикой старых подходов и раздела где описывается как
> легко эти проблемы решаются с новым.
см. треды девила )

#13
19:00, 4 сен. 2019

Zegalur
ну да, там то это есть, а тут явный закос под них но при этом этот пункт пропущен.

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

#14
5:07, 5 сен. 2019

Delfigamer
> Интерфейсы образуют направленный граф, где узлы - это интерфейсы (содержат
> имена и прототипы методов), а рёбра - реализации (методов).

Вот этого вообще не понял. Рёбра должны соединять узлы - но что вообще должно означать "метод do соединяет интерфейс Iface1 и Iface2"?
И так же не понял про ньютайпы - зачем они вообще нужны, почему не хватает самому сделать структуру с одним полем и какая задача решается?

Страницы: 1 2 Следующая »
ФлеймФорумПрограммирование