The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз языка программирования Rust 1.21"
Отправлено Ordu, 19-Окт-17 08:58 
> коментарий без единого слова "тип" ))

Ну это закономерный приём. Если оппонента смущает какое-то слово, надо пользоваться синонимами.

> с выше описанным - соглашусь, есть
> понятие свойства (свойства как элементов, так и самих множеств), а давайте
> уйдём в начало, зачем нужен тип и для чего Рассел ввёл
> это понятие (якобы во избежания найденный им же парадоксов (антиномий) в
> теории множеств). Советую прочитать соответствующий трёхтомник Рассела.

Почему лишь Рассела, а не сразу Декарта? Или даже лучше Сократа наверное почитать. Обязательно ведь взять какую-нибудь древность и читать её: чем раньше автор умер, тем больше он понимал в том, о чём писал, так ведь? И даже в том, о чём он не писал, он понимал лучше, надо только хорошенько поискать в его текстах, понимая его слова не прямо, а метафорически.

Кстати математики вполне себе одолели парадокс Рассела, зайдя к теории множеств несколько иначе. Там вся проблема была в неопределённом местоимении "все".

> пс: в программирование понятие "тип" сводится всего лишь к размеру занимаемой памяти.

Нет. Совершенно нет. Теория типов ушла очень далеко от идей Сократа. Не читай древних, читай современных авторов. Начни с википедии и двигайся дальше по ссылкам. Или возьми какой-нибудь язык отличный от ассемблера и посмотри там. Common Lisp, Haskell, rust или любой другой язык с продуманной типизацией. Не надо брать всякие там python, js и прочие. Научись писать программы на выбранном языке, а потом подумай каким целям служит понятие тип в этом языке. То есть, я на полном серьёзе тебе говорю, с самыми искренними интенциями: начни плясать от _цели_. Задайся вопросам: каким целям служит понятие типа в том или ином языке? Зачем программисты используют типы? Чего они достигают? Когда ты сформулируешь цели, подумай о том, как они достигаются. Когда ты это сделаешь, ты будешь смеяться над наивностью Рассела. Над Сократом, впрочем, посмеятся не удастся, потому что он говорил о типах в программировании совсем уж метафорически.

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

Даже с точки зрения размера это разные типы. Если мы сравним &str и String, то мы увидим, что &str -- это по сути указатель на кусок памяти плюс длина этого куска. То есть, грубо говоря, это 128 бит*. Если мы посмотрим на String, то это структура, которая содержит в себе указатель на кусок памяти (причём кусок памяти, который гарантированно находится в куче), затем 64 бита размера этого куска памяти, и ещё 64 бита в которых хранится длина строки. То есть даже с точки зрения размера -- это разные типы.

Но дело даже не в этом, дело в том, что код, который работает с String, не сможет работать с &str. Даже если как-то справиться с тем, что layout структур разный, то попытка перевыделить память под &str запросто может привести к попытке вызвать free на статической памяти, или на стеке, или на адресе, который указывает в середину блока, выделенного через malloc.

У &str и String есть различающиеся свойства -- &str занимает память, которую мы не можем освободить. Либо вообще не можем, либо в принципе можем, но &str не даёт нам достаточно информации о том, как это сделать. А если есть различающиеся свойства, то почему бы их не считать принадлежащими разным множествам/типам? И ведь это будет соответствовать тем целям, ради которых мы используем типы: это позволит компилятору проверять, что мы корректно работаем с данными, и не пытаемся вызывать free на куске памяти из стека.

*) реально я не уверен, что 128, может быть меньше -- ведь при большом желании, можно и длину, и указатель всунуть и в 64 бита -- я не читал ассемблерных дампов выхлопа из rustc, и сейчас просто гадаю о том, как оно может быть.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру