Страница 4 из 5
Добавлено: 16.10.2007 09:14:40
Bonart
alexs писал(а):но если мы запретим указатели, ещё какие нить стращные веши - например асемблернве вставики - как тогда реализовавывать библиотеки реализующие эти функции
Ассемблерные вставки вообще-то ухудшают эффективность кода на современных оптимизирующих компиляторах. Так что ну их нафиг.
alexs писал(а):ps. историю создания fpc я знаю
Дело не в истории, а в самой схеме.
alexs писал(а):как тогда реализовавывать библиотеки реализующие эти функции
Еще раз: точно так же, как и FPC и первый компилятор Паскаля: сперва минимальная версия на Си, асме или вообще машкодах, потом - раскрутка уже на родном. Новая версия библиотеки system реализуется с помощью прежней версии той же библиотеки.
Добавлено: 16.10.2007 10:05:50
alexs
я не про раскрутку.
- ты предлагагаеш все спорные моменты (указатели и etc) (системная часть) вынести в отдельные библиотеки - так?
чем их компилировать? если сам компилятор не пропускает работу с указателями.
Добавлено: 16.10.2007 11:21:16
Bonart
alexs
alexs писал(а): если сам компилятор не пропускает работу с указателями.
"Голый" компилятор - не поддерживает. А компилятор вкупе с предыдущей версией той же библиотеки - уже поддерживает.
Добавлено: 16.10.2007 12:56:22
alexs
Bonart писал(а):"Голый" компилятор - не поддерживает. А компилятор вкупе с предыдущей версией той же библиотеки
это как?
примерчик в студию
компилятор либо поддерживает, либо нет - ибо указатели это атомарный тип данных и он зависит от целевой платформы куда компилируем.
Добавлено: 16.10.2007 14:10:39
Bonart
alexs писал(а):компилятор либо поддерживает, либо нет
Есть такая штука - абстрактные типы данных. Такой тип задется набором операций над ним. Естественно, указатели - именно такой тип. И в честь чего он непременно должен поддерживаться компилятором только нативно?
Почитай хотя бы по Аде - там это все давно реализовано, причем в "паскалевском" стиле.
Добавлено: 17.10.2007 11:35:14
alexs
говоря руским языком - просто добавляем перегрузку операторов на указатели и подержку операций с указателями выносится в отдельный модель из system.
честно говоря - не вижу разницы с нынешней ситуацией. по крайней мере простоты это не пренесёт - только головную боль.
ведь указатели не сакми по себе плохи - ими просто не умеют пользоваться.
а так, предложенный тобой метод - это всё равно что ввести ключик в параметрах компилятора, разрешающий указатели или запрещающий.
программеры будут просто подключать этот модуль - и точно также длеать те же самые ошибки что и в нынешней ситуации.
Добавлено: 17.10.2007 23:49:08
Deepthroat
а так, предложенный тобой метод - это всё равно что ввести ключик в параметрах компилятора, разрешающий указатели или запрещающий.
Кстати, хорошая идея.
Добавлено: 18.10.2007 12:35:33
alexs
Deepthroat писал(а):Кстати, хорошая идея.
а зачем?
Добавлено: 18.10.2007 12:47:10
ev
действительно, зачем это делать ключиком?
можно ведь просто не использовать указатели когда не надо

Добавлено: 18.10.2007 12:50:06
Bonart
ev писал(а):можно ведь просто не использовать указатели когда не надо
Именно. И за попытку их использовать в проекте "где не надо" компилятор будет давать по рукам.
alexs писал(а):программеры будут просто подключать этот модуль - и точно также длеать те же самые ошибки что и в нынешней ситуации.
"Просто подключать" получится только для личных проектов. В командных портабельных за такое будут бить по рукам причем сразу по факту использования модуля system.
alexs писал(а):честно говоря - не вижу разницы с нынешней ситуацией. по крайней мере простоты это не пренесёт - только головную боль.
В чем будет заключаться головная боль?
alexs писал(а):ведь указатели не сакми по себе плохи - ими просто не умеют пользоваться.
Для больших проектов - плохи однозначно. Львиная доля дырок в нынешних системах - плоды ошибок в работе с указателями, причем умеющих ими пользоваться программистов.
alexs писал(а):а так, предложенный тобой метод - это всё равно что ввести ключик в параметрах компилятора, разрешающий указатели или запрещающий.
Ключик компилятора в исходники как конструкцию языка не вставишь.
Добавлено: 18.10.2007 13:00:45
Brainenjii
Тут же язык обсуждается, а не компилятор ^_^ А вообще, мне паскалевский (вернее даже дельфевский) вариант нравиЦЦо - указатели есть, но пользоваться ими необязательно... Ведь что-нибудь вроде того же TList'a с Integer'ами в качестве элементов без них ведь никак не сделать ?
Добавлено: 18.10.2007 13:03:03
Bonart
Brainenjii писал(а):Ведь что-нибудь вроде того же TList'a с Integer'ами в качестве элементов без них ведь никак не сделать ?
Сделать, причем легко. С помощью рекурсивных типов, например.
Добавлено: 18.10.2007 13:28:45
alexs
Динамические массивы в помощь
SetLength - и впёред
+ обеспечен контроль типов
+ контроль границ
Bonart писал(а): Львиная доля дырок в нынешних системах - плоды ошибок в работе с указателями
Позвольте не согласиться
Львиная доля дырок в системах - это отсутвие контроля диапазона границ
и наиболее распространёные дырки на переполнение в стеке
динамическая память расположена произвольно - а стек - всё рядом - данные, адреса возвратов. поэтому стек и является наиболее уязвимым местом.
Bonart писал(а):В командных портабельных за такое будут бить по рукам причем сразу по факту использования модуля system
вобще мягко говоря бред
в команде сначала должен быть сформирован документ по принципам использования или не использования методик написания кода, использования модулей и это всё там обговоривается
то, как работает 99% команд программистов на создании софта - это не команда - а базар в наихудшайшем его проявлении.
но мы опять отклонились от обсуждения языка програмирования

.
Добавлено: 18.10.2007 15:20:17
Bonart
alexs писал(а):Динамические массивы в помощь
Для динамических массивов указатели в явном виде не нужны.
alexs писал(а):Львиная доля дырок в системах - это отсутвие контроля диапазона границ
и наиболее распространёные дырки на переполнение в стеке
динамическая память расположена произвольно - а стек - всё рядом - данные, адреса возвратов. поэтому стек и является наиболее уязвимым местом.
Пожалуй да, вместо "дырка" лучше написать "баг". Для внедрения вредоносного кода ошибки на стеке куда удобнее, согласен.
alexs писал(а):в команде сначала должен быть сформирован документ по принципам использования или не использования методик написания кода, использования модулей и это всё там обговоривается
Правильно. И реализация "операций повышенной опасности" в отдельной библиотеке позволит легко следить за исполнением требований такого документа.
alexs писал(а):но мы опять отклонились от обсуждения языка програмирования
Ну так вернемся

Зачем включать указатели в ядро языка, если есть успешно заменяющие их средства?
Я полагаю, что для обеспечения связи с конкретной платформой (ОС, СУБД, библиотеки с "неродными" для нашего языка интерфейсами, аппаратное обеспечение). Но такой задаче лучше соответствует выделение специальной библиотеки, а не расширение самого языка.
Добавлено: 18.10.2007 15:50:37
alexs
Понимаеш - твой путь это не отказ от указателей - это просто перенос операций с указателями в другой модуль из содуля systems - и всё.
Для тех кто хочет использовать указатели - твой метод их не остановит.
Для командной разработки на основании оговорённого плана разработки абсолютно не важно, где именно находится код, реализующий указатели - там важно что в определённых случаях их можно использовать, а в определённых нельзя. И если нелья - то нельзя, не вожно где находится этот механизм.
Тут просто вопрос самодисциплины и всё.
А тема то поднималась в томразрезе что вобще в языке отказаться от использования указателей

. На мой взгляд для языка широкого назначения подержка указателей необходима - а где она находится - это уже дело десятое.
Исторчески с паскалем сложиась так.
PS.
Написал посленюю фразу и задумался - указатели в паскаль сам Вирт ввёл - или это уже расширение борланда?