Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.039 c
14-1116928913
Stef
2005-05-24 14:01
2005.06.14
сжатие exe-файла


8-1109614208
Tirex
2005-02-28 21:10
2005.06.14
png с альфа каналом на кнопке toolbar а


14-1116788413
Qwertyk
2005-05-22 23:00
2005.06.14
Тотализаторы(попытка № 2 :) )


14-1116828613
palva
2005-05-23 10:10
2005.06.14
Программисты хулиганят не только на форумах


3-1115654086
xroot
2005-05-09 19:54
2005.06.14
Сортировка в DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский