О хранении данных в стеке, вместо заключения
Идеи о хранении объектов переменной длины в стеке одолевали автора этих строк давно.
|
Уолтер Брайт
|
Раньше этот стек виделся программным, т.к. не было ясности с реализацией на низком уровне.
Теперь же всё это видится достаточно элементарным и лежащим на поверхности.
Однако не понятно, почему такие решения не встречаются в языках программирования.
Возможно, недостаточно широк круг знакомых автору языков и компиляторов.
Но языки со статической типизацией из верхних строк рейтинга не размещают объекты и типы переменной длины в стеке.
А языки с динамической типизацией работают с «кучей» по определению.
Так почему стеком пренебрегают?
Почему с целого класса языков программирования не сняли «родовое проклятие»?
Можно понять, когда речь идёт о давно разработанном C: нужна обратная совместимость.
Языку C++ нужна обратная совместимость с C.
Но Уолтер Брайт, автор языка D, имел перед созданием этого языка многолетний опыт разработки компиляторов для C++.
Он мог внести в язык такие возможности.
Андерс Хейлсберг имел за плечами опыт создания Object Pascal и Delphi.
Да, той самой Delphi, визуальные компоненты которой по умолчанию размещаются в «куче».
Даже если они имеют фиксированный размер.
Но в разработанном Хейлсбергом C# проглядывают старые подходы.
Почему очевидные выгоды использования стека не прельстили столь уважаемых специалистов?
Это не поддаётся объяснению.
|
Андерс Хейлсберг
|
Почитайте ещё:
Опубликовано: 2014.07.27, последняя правка: 2018.10.29 15:59
Отзывы
✅ 2016/03/25 01:25, rst256 #0
С умеет. Давно и в ручную✅ 2016/05/12 10:47, utkin #1
Вы задаете вопрос в пустоту, риторически, в тоже время указываете авторов, кому адресуется вопрос. Вы не пробовали искать данных людей и задавать вопрос им? В свое время я работал в журнале «ПРОграммист» и имел опыт общения с известными людьми. Тогда была идея брать интервью у всяких известных ученых, инженеров и программистов. Так в последнем (или предпоследнем, не помню уже) выпуске мы взяли интервью у Мигеля де Икаса, разработчика mono и gnom. Переписку вел я, с использованием гугло-переводчика. Конечно, желающих дать интервью было мало, но многие отвечали на письмо, типа: «нет не могу, я занят» или «не имею такого желания» и т.д. Среди опрашиваемых был Гвидо Ван Россум, автор Питона, и Юкихиро Мацумото, автор Руби. Попробуйте уточнить вопросы напрямую у создателей.✅ 2016/05/12 11:40, Автор сайта #2
Как-то не приходило такое в голову. Наверное потому, что они для нас — небожители, к которым и подступиться страшно :) А тут ещё и языковый барьер. Представьте, я им задам вопрос: «А почему вы так не сделали?». Но они спросят: «А как?». И тогда для них надо будет перевести весь цикл статей. А это ещё дополнительная работа. Но кое-кто из отечественных небожителей это всё читал и посоветовал оформить на это патент.✅ 2016/05/12 12:47, utkin #3
Вот продумайте как задать вопросы. И задайте. Ну например, не почему Вы так не сделали, а почему Вы сделали ИМЕННО ТАК, а не иначе? Ну а насчет небожителей — обычные люди и корректно отвечают.✅ 2016/05/12 12:52, utkin #4
Ссылка на интервью: http://procoder.info/index.php/entry/intervyu-s-migelem-de-ikasa/
Обычный человек просто о себе.✅ 2016/05/12 14:14, Автор сайта #5
Было бы интересно бы интересно поговорить на такие темы с кем-то из наших, «равных» Брайту или Хейлсбергу. В каком-то приближении можно считать таковым Евгения Александровича Зуева. Но он не делал новых языков, он сделал C++, наиболее близкий к стандарту. Значит, ему нечего ответить, он же придерживался стандартов. А кому ещё у нас задать такой вопрос — я даже не знаю. Может быть, авторам книг по компиляции. Но они, скорее, теоретики. Даже не теоретики, а толкователи уже готовых теорий, своих теорий что-то у них не видно.
P.S. А журнал всё, каюк?✅ 2016/05/12 14:34, utkin #6
Задайте вопрос именно разработчикам.✅ 2016/05/12 18:27, utkin #7
Увы, да. По крайней мере в том виде, каким он был ранее✅ 2016/07/25 09:00, Michael #8
Если мне не изменяет память, компиляторы Алгол-60 хранили в куче только _own_ массивы переменной длины (own — аналог static в C). "Обычные массивы" с неизвестными заранее границами хранились в фрейме блока, примерно как в gcc. Им было проще: стандарт не заставлял их возвращать массивы из процедур-функций. Самое заковыристое для реализации в Алгол-60 — это передача параметров по имени и эти мутные _own_ массивы. Добавить свой отзыв
Написать автору можно на электронную почту mail(аt)compiler.su
|