Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

Почему массивы не авторасширяемые?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.044 c
11-1099777588
Sewix
2004-11-07 00:46
2005.06.14
Какое событие изменение ширины столбцов в TKOLListView


14-1116859334
TAHAT
2005-05-23 18:42
2005.06.14
Существуют ли компоненты для работы с архивами 7Zip?


3-1115785989
erj
2005-05-11 08:33
2005.06.14
Удаление записи в RxMemoryDS


14-1117003571
Игорь Лан
2005-05-25 10:46
2005.06.14
Глюк коде-експлорера в Д5


3-1115778884
kaktus
2005-05-11 06:34
2005.06.14
Нужно соединить даннные из 2 таблиц в одну