185 похожих чатов

Ну.. в общем не спалось мне и почитал я всё,

что тут написали - на самом деле действительно дело с массивами в луа обстоит так-себе. Заявления о том, что там всё внутри как настоящий массив сложно проверить т.к. луа не умеет печатать свои массивы - это просто указатель на table, а что там внутри - хз. Можно к примеру выше добавить a[2] = nil и все принтилки, что я нашёл в интернете скажут, что у этого массива нет второго элемента т.е. там то, что Макс назвал дыркой (свечку над памятью VM не держал, но дело мутное) . А как массив будет реагировать на добавление новых элементов - видимо же расширяться? Значит это уже не просто массив, а типа слайс или аррейлист. Что ещё там скрыто интересного? table ведь может быть расширен, операторы перегружены т.е. по обращению по скобочкам может вызываться наша ф-я - а значит это уже не просто взятие элемента из памяти - это диспетчеризация, это вызов ф-и, короче... если там есть массив - то где-то очень глубоко.
Касаемо же самого концепта - дать абсолютно минимальный набор структур данных - вот тут уже точно скажу, что это бред. Структуры данных не просто так идут всегда вместе в книжках с алгоритмами т.к это суть одно и то-же - оптимальный способ оперирования данными, через структуру ли, или через действия над ними. Так вот, банить какую-то структуру данных - это то же, что банить алгоритмы - хз, что тут можно найти хорошего, это просто жёсткое ограничение выразительности и производительности. Знаю только одно разумное такое ограничение - иммутабильность, но и тут всё неоднозначно, и не просто так большинство языков до сих пор мутабельны. Если же речь только про простоту для программиста, мол в голове будет хорошо укладываться, можно будет сложные системы строить и не ошибаться - то это заблуждение. В Scheme тоже всё сведено до одних списков - много сложных систем на scheme видели? К тому-же на практике там всегда есть массивы - их добавляют те, кто делает реализацию, хоть их и нет в описании языка т.к. п*деть, как говорится - не мешки ворочать, и придумать язык с интересной идеей это совсем не то же самое, что потом на нём писать. Из таких "простых" языков, за счёт ограничения кол-ва используемых средств отмечу ещё брейнфак - так то проще уже некуда, но что-то проще от этого не стало. А дело всё вот в чём - есть такое понятие, как инварианты - ты видишь структуру данных и понимаешь, что в ней удовлетворяются какие-то обязательные условия, в ней не может что-угодно быть. И эти инварианты какраз делают систему проще, а когда массив - он же мапка, он же объект хз какого класса - проще от этого может быть только создателю языка (какая элегантная идея! и всего одно правило надо прописать в компиляторе!), но не пользователю языка.

1 ответов

22 просмотра

В Си++ "пришли с противоположного конца" - решили всё разнообразие структур данных (точнее - контейнерных) свести к одному (или похожему) интерфейсу и локационным типам, чтобы работать из одних и тех же "алгоритмов". В результате - опять "зоопарк" получился. Только теперь - из "описаний нюансов", оговорок, частных случаев и "особенностей"... "Нет счастия в жизни!"

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Карта сайта