Форум: "Потрепаться";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизПочему массивы не авторасширяемые? Найти похожие ветки
← →
Mx © (2005-05-24 14:35) [0]Всем, привет. Работодатель хочет, чтобы массивы в разрабатываемом языке были авторасширяемые, т.е. никаких SetLength"ов невызывается, все само "реалокейтится" когда индекс больше чем дозволено. Так вот подумал, а почему так не сделано ни в Delphi, ни в C++, да и в Basic"е, по-моему, тоже. Как по вашему, нужно ли реально такое действие или же авторасширяемость - это плохо?
← →
Alx2 © (2005-05-24 14:37) [1]Как неисчерпаемый кладезь неуловимых глюков - очень даже не плохо
← →
Danilka © (2005-05-24 14:38) [2][1] Alx2 © (24.05.05 14:37)
Почему? В скриптовых языках, например ЖабаСкрипте - "авторасширяемый" и никаких глюков. :)
← →
Digitman © (2005-05-24 14:39) [3]
> Работодатель хочет, чтобы массивы в разрабатываемом языке
> были авторасширяемые, т.е. никаких SetLength"ов невызывается,
> все само "реалокейтится" когда индекс больше чем дозволено
какая нахрен работодателю разница, что, где и как там "реалокейтится", "само" или "не само" ?)
если работодателя это так сношает, то он должен сам выбирать среду/язык программирования для тебя как для потенциального работника) .. а не лезть туда куда ему не след)..
← →
Gero © (2005-05-24 14:40) [4]Никто не мешает дописать нужную функциоанльность.
← →
DiamondShark © (2005-05-24 14:40) [5]
> какая нахрен работодателю разница
Ключевые слова: "в разрабатываемом языке"
← →
Anatoly Podgoretsky © (2005-05-24 14:41) [6]Никаких проблем, сделать классом с индексным свойством.
Плохо другое, то что расширяемые, а не мешало бы иметь и сжимаемые, в том числе и до нуля. Не вижу возможности сделать это через индексы.
← →
Mx © (2005-05-24 14:42) [7]
> Digitman ©
Не совсем понял, что ты имел ввиду???
Работодатель собственно будет сам писать на том языке, который щас разрабатывается. Просто мне очень неудобно сделать массивы именно такими, вот я и думаю можно ли найти объективную причину или заткнуться и "исполнять свой долг".
← →
Anatoly Podgoretsky © (2005-05-24 14:43) [8]А для языка это делается через compiler magic
← →
Mx © (2005-05-24 14:43) [9]
> Anatoly Podgoretsky ©
> сжимаемые
А вот это точняк! Вот в тему! Я об этом не подумал!
← →
MBo © (2005-05-24 14:43) [10]сделать это через индексируемые свойства класса - нетрудно, хотя работа будет чуть медленнее, чем с простыми массивами
← →
Alx2 © (2005-05-24 14:45) [11]>Danilka © (24.05.05 14:38)
Из того же разряда, откуда взялась строгая типизация, контроль диапазонов и прочая.
Классно будет обнаружить, что A[idx], при idx : shortint "расширится" до -127 при переполнении idx. Да и от случайных промахов страховка не лишняя. Особенно в отладке чужого кода.
Да, а почему бы индексы массива не сделать вещественными? Взял, и вставил елемент между 2 и 3, указав индекс 2.5 :)
← →
Mx © (2005-05-24 14:45) [12]Сделать легко с точки зрения прописывания пачки Realloc"ов. Но дело в том, что интерпретатор фактически не дифференцирует типы, у него есть их список и не более того, а так его придестя "учить" понимать, какие типы расширяемые, какие нет и т.п.
← →
-=XP=- © (2005-05-24 14:45) [13]Работодатель собственно будет сам писать на том языке, под ту операционную систему, на той платформе, которая щас разрабатывается.
P.S. (испуганно) Гилл Бейтс?
← →
Mx © (2005-05-24 14:49) [14]
> -=XP=- ©
А че такого? Я пишу скрипт, потом он будет его юзать для собственных целей.
← →
Danilka © (2005-05-24 14:54) [15][11] Alx2 © (24.05.05 14:45)
Ну, я думаю, расширяемость взад, в отрицательные значения не требуется и данное выражение: A[-127] можно легко интерпритировать как ошибку. :)
[14] Mx © (24.05.05 14:49)
Просто интересно, а чем не устраивают существующие скриптовые языки, в том числе и поставляемые вместе с операционной системой?
← →
Anatoly Podgoretsky © (2005-05-24 14:55) [16]Mx © (24.05.05 14:49) [14]
Задача реальная, в Дельфи даже половина это задачи сделана, проверка диапазонов в рантайм. Сводится к генерации дополнительного кода по проверки шраницы и корректировке в большую сторону. Кстати для строк это и сейчас делается, а строки по сути это динамический массив array of char, делается средствами языка.
Вот почему в большистве языков это не делается - это вопрос в разработчикам, наверно не считают нужным или опасным. То что такие языки есть можно не сомневаться, также как и насчет ассоциативных массивов.
← →
Digitman © (2005-05-24 14:57) [17]
> Mx © (24.05.05 14:42) [7]
>
> > Digitman ©
>
> Не совсем понял, что ты имел ввиду???
>
> Работодатель собственно будет сам писать на том языке, который
> щас разрабатывается
я, извини, сразу "не въехал" в факт того что тебя "заказали" как разработчика компилирующей и/или интерпретирующей среды.
← →
Mx © (2005-05-24 15:00) [18]Всем спасибо. Побеседую насчет экономии памяти, а там как скажут, так и напишу. :)
← →
Digitman © (2005-05-24 15:28) [19]
> Побеседую насчет экономии памяти
нехрена там и "беседовать" !
ТЗ есть ТЗ.
← →
raidan © (2005-05-24 15:32) [20]>Digitman © (24.05.05 15:28) [19]
ТЗ есть ТЗ если оно есть.
← →
TUser © (2005-05-24 16:34) [21]Полностью согласен с [1]. Авторасширяемые массивы удобны для написания небольих программ-скриптов, для этого есть perl. При написании же серьезных проектов часто встречается ситуация, когда вычисленных индекс в массиве (а они почти всегда вычисляемые) вычислен неправильно. Имея Delphi мы с большой вероятностью получим AV, а на perl"е - неправильный результат (и фиг поймем, что он неправильный). Поэтому perl с сабжевыми массивами удобен для написания программы в 100 строчек, где ошибку найти легко. Для написания проектов от 1000 строчек, тем более, если у нас там какие-то расчеты - не годится принципиально.
PS. Знаю как минимум одного человека, которого мне не удалось убедить в правильности этого мнения. Пишет на Си.
← →
имя (2005-05-24 17:08) [22]Удалено модератором
← →
Mx © (2005-05-24 17:16) [23]
> TUser ©
Вот именно поэтому и собираюсь "побеседовать", мне тоже кажется, что с надежностью будет напряг. Тем более, что планируется писать громадные проги на принципах, схожих с этим самым perl"ом.
> Digitman ©
> ТЗ есть ТЗ
Ну это уж резко: "ТЗ". Разработка идет по принципу "в споре рождается истина", правда я пока мало что смог оспорить, хе-хе
← →
имя (2005-05-24 17:23) [24]Удалено модератором
Примечание: Признавшись в своей слабости, человек становится сильнее. /О. Бальзак/ (AutoModerator)
← →
имя (2005-05-24 17:37) [25]Удалено модератором
Примечание: Умирают все, живут лишь некоторые. /Ю.Алкин/ (AutoModerator)
← →
TUser © (2005-05-24 17:48) [26]> Тем более, что планируется писать громадные проги на принципах, схожих с этим самым perl"ом.
В чем состоят эти принципы?
← →
GuAV © (2005-05-24 18:43) [27]
> Имея Delphi мы с большой вероятностью получим AV
не AV, а ERangeError !
Чтобы воспользоватся указанным преимуществом опция $R должна быть включена, иначе то же глюкодром.
← →
Axis_of_Evil © (2005-05-24 18:48) [28]2GuAV © (24.05.05 18:43) [27]
>> Имея Delphi мы с большой вероятностью получим AV
>не AV, а ERangeError !
>Чтобы воспользоватся указанным преимуществом опция $R должна
>быть включена, иначе то же глюкодром
а без $R случаем не AV? :>
← →
DiamondShark © (2005-05-24 18:52) [29]
> а без $R случаем не AV? :>
Не всегда. Только если повезёт.
И часто далеко от места ошибки.
← →
TUser © (2005-05-24 19:49) [30]Имхо, при включении $R мы получаем другие ошибки, однако отлаживать их не проще. Возможно, опыт у меня не правильный.
← →
Anatoly Podgoretsky © (2005-05-24 19:49) [31]Axis_of_Evil © (24.05.05 18:48) [28]
а без $R случаем не рулетка?
← →
TUser © (2005-05-24 19:52) [32]Вот-вот
← →
Mx © (2005-05-24 21:04) [33]
> TUser ©
> В чем состоят эти принципы?
Оо... В полном разврате с ООП!
← →
TUser © (2005-05-24 22:21) [34]Скажу так, ООП для мега-супер проектов не нужно. Да, perl"а с его авторасширяемымми массивами вполне хватает.
← →
VEG © (2005-05-25 00:50) [35]>Mx © (24.05.05 14:35)
В C++ тебе никто не мешает написать шаблон авторасширяемого массива ;)
← →
TUser © (2005-05-25 06:10) [36]Помню писАл на Delphi авторасширяемые массивы для разных типов данных. Ветку здесь заводил. Долго ругал Borland за отсутствие шаблонов.
← →
Mx © (2005-05-25 10:54) [37]
> VEG ©
> В C++ тебе никто не мешает написать шаблон авторасширяемого
> массива
И все же, это не на уровне языка.
> TUser © (25.05.05 06:10) [36]
> Долго ругал Borland за отсутствие шаблонов
Да уж, очень удобная вещица и вроде вполне реализуемая.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.042 c