указатели

Проектирование и разработка идеального средства программирования.

Модератор: Модераторы

Сообщение Bonart » 16.10.2007 09:14:40

alexs писал(а):но если мы запретим указатели, ещё какие нить стращные веши - например асемблернве вставики - как тогда реализовавывать библиотеки реализующие эти функции

Ассемблерные вставки вообще-то ухудшают эффективность кода на современных оптимизирующих компиляторах. Так что ну их нафиг.
alexs писал(а):ps. историю создания fpc я знаю

Дело не в истории, а в самой схеме.
alexs писал(а):как тогда реализовавывать библиотеки реализующие эти функции

Еще раз: точно так же, как и FPC и первый компилятор Паскаля: сперва минимальная версия на Си, асме или вообще машкодах, потом - раскрутка уже на родном. Новая версия библиотеки system реализуется с помощью прежней версии той же библиотеки.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение alexs » 16.10.2007 10:05:50

я не про раскрутку.
- ты предлагагаеш все спорные моменты (указатели и etc) (системная часть) вынести в отдельные библиотеки - так?
чем их компилировать? если сам компилятор не пропускает работу с указателями.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Bonart » 16.10.2007 11:21:16

alexs
alexs писал(а): если сам компилятор не пропускает работу с указателями.

"Голый" компилятор - не поддерживает. А компилятор вкупе с предыдущей версией той же библиотеки - уже поддерживает.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение alexs » 16.10.2007 12:56:22

Bonart писал(а):"Голый" компилятор - не поддерживает. А компилятор вкупе с предыдущей версией той же библиотеки

это как?
примерчик в студию
компилятор либо поддерживает, либо нет - ибо указатели это атомарный тип данных и он зависит от целевой платформы куда компилируем.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Bonart » 16.10.2007 14:10:39

alexs писал(а):компилятор либо поддерживает, либо нет

Есть такая штука - абстрактные типы данных. Такой тип задется набором операций над ним. Естественно, указатели - именно такой тип. И в честь чего он непременно должен поддерживаться компилятором только нативно?
Почитай хотя бы по Аде - там это все давно реализовано, причем в "паскалевском" стиле.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение alexs » 17.10.2007 11:35:14

говоря руским языком - просто добавляем перегрузку операторов на указатели и подержку операций с указателями выносится в отдельный модель из system.

честно говоря - не вижу разницы с нынешней ситуацией. по крайней мере простоты это не пренесёт - только головную боль.

ведь указатели не сакми по себе плохи - ими просто не умеют пользоваться.

а так, предложенный тобой метод - это всё равно что ввести ключик в параметрах компилятора, разрешающий указатели или запрещающий.

программеры будут просто подключать этот модуль - и точно также длеать те же самые ошибки что и в нынешней ситуации.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Deepthroat » 17.10.2007 23:49:08

а так, предложенный тобой метод - это всё равно что ввести ключик в параметрах компилятора, разрешающий указатели или запрещающий.

Кстати, хорошая идея.
Аватара пользователя
Deepthroat
постоялец
 
Сообщения: 144
Зарегистрирован: 06.09.2007 00:21:34
Откуда: Outer Heaven

Сообщение alexs » 18.10.2007 12:35:33

Deepthroat писал(а):Кстати, хорошая идея.

а зачем?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение ev » 18.10.2007 12:47:10

действительно, зачем это делать ключиком?
можно ведь просто не использовать указатели когда не надо ;)
ev
долгожитель
 
Сообщения: 1763
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение Bonart » 18.10.2007 12:50:06

ev писал(а):можно ведь просто не использовать указатели когда не надо

Именно. И за попытку их использовать в проекте "где не надо" компилятор будет давать по рукам.
alexs писал(а):программеры будут просто подключать этот модуль - и точно также длеать те же самые ошибки что и в нынешней ситуации.

"Просто подключать" получится только для личных проектов. В командных портабельных за такое будут бить по рукам причем сразу по факту использования модуля system.
alexs писал(а):честно говоря - не вижу разницы с нынешней ситуацией. по крайней мере простоты это не пренесёт - только головную боль.

В чем будет заключаться головная боль?
alexs писал(а):ведь указатели не сакми по себе плохи - ими просто не умеют пользоваться.

Для больших проектов - плохи однозначно. Львиная доля дырок в нынешних системах - плоды ошибок в работе с указателями, причем умеющих ими пользоваться программистов.
alexs писал(а):а так, предложенный тобой метод - это всё равно что ввести ключик в параметрах компилятора, разрешающий указатели или запрещающий.

Ключик компилятора в исходники как конструкцию языка не вставишь.
Последний раз редактировалось Bonart 18.10.2007 13:01:33, всего редактировалось 1 раз.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение Brainenjii » 18.10.2007 13:00:45

Тут же язык обсуждается, а не компилятор ^_^ А вообще, мне паскалевский (вернее даже дельфевский) вариант нравиЦЦо - указатели есть, но пользоваться ими необязательно... Ведь что-нибудь вроде того же TList'a с Integer'ами в качестве элементов без них ведь никак не сделать ?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Bonart » 18.10.2007 13:03:03

Brainenjii писал(а):Ведь что-нибудь вроде того же TList'a с Integer'ами в качестве элементов без них ведь никак не сделать ?

Сделать, причем легко. С помощью рекурсивных типов, например.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение alexs » 18.10.2007 13:28:45

Динамические массивы в помощь
SetLength - и впёред
+ обеспечен контроль типов
+ контроль границ

Bonart писал(а): Львиная доля дырок в нынешних системах - плоды ошибок в работе с указателями

Позвольте не согласиться
Львиная доля дырок в системах - это отсутвие контроля диапазона границ
и наиболее распространёные дырки на переполнение в стеке
динамическая память расположена произвольно - а стек - всё рядом - данные, адреса возвратов. поэтому стек и является наиболее уязвимым местом.

Bonart писал(а):В командных портабельных за такое будут бить по рукам причем сразу по факту использования модуля system

вобще мягко говоря бред
в команде сначала должен быть сформирован документ по принципам использования или не использования методик написания кода, использования модулей и это всё там обговоривается
то, как работает 99% команд программистов на создании софта - это не команда - а базар в наихудшайшем его проявлении.

но мы опять отклонились от обсуждения языка програмирования :D.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Bonart » 18.10.2007 15:20:17

alexs писал(а):Динамические массивы в помощь

Для динамических массивов указатели в явном виде не нужны.
alexs писал(а):Львиная доля дырок в системах - это отсутвие контроля диапазона границ

и наиболее распространёные дырки на переполнение в стеке

динамическая память расположена произвольно - а стек - всё рядом - данные, адреса возвратов. поэтому стек и является наиболее уязвимым местом.

Пожалуй да, вместо "дырка" лучше написать "баг". Для внедрения вредоносного кода ошибки на стеке куда удобнее, согласен.
alexs писал(а):в команде сначала должен быть сформирован документ по принципам использования или не использования методик написания кода, использования модулей и это всё там обговоривается

Правильно. И реализация "операций повышенной опасности" в отдельной библиотеке позволит легко следить за исполнением требований такого документа.
alexs писал(а):но мы опять отклонились от обсуждения языка програмирования

Ну так вернемся :) Зачем включать указатели в ядро языка, если есть успешно заменяющие их средства?
Я полагаю, что для обеспечения связи с конкретной платформой (ОС, СУБД, библиотеки с "неродными" для нашего языка интерфейсами, аппаратное обеспечение). Но такой задаче лучше соответствует выделение специальной библиотеки, а не расширение самого языка.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение alexs » 18.10.2007 15:50:37

Понимаеш - твой путь это не отказ от указателей - это просто перенос операций с указателями в другой модуль из содуля systems - и всё.
Для тех кто хочет использовать указатели - твой метод их не остановит.

Для командной разработки на основании оговорённого плана разработки абсолютно не важно, где именно находится код, реализующий указатели - там важно что в определённых случаях их можно использовать, а в определённых нельзя. И если нелья - то нельзя, не вожно где находится этот механизм.

Тут просто вопрос самодисциплины и всё.
А тема то поднималась в томразрезе что вобще в языке отказаться от использования указателей :-). На мой взгляд для языка широкого назначения подержка указателей необходима - а где она находится - это уже дело десятое.
Исторчески с паскалем сложиась так.

PS.
Написал посленюю фразу и задумался - указатели в паскаль сам Вирт ввёл - или это уже расширение борланда?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Пред.След.

Вернуться в Компилятор / язык программирования

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru