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

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

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

1 ответов

36 просмотров

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта