указатели

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

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

Сообщение zub » 12.10.2007 09:57:59

Deepthroat писал(а):По мне, так как раз наоборот - с указателями что-нибудь серьезное будешь писать долго и упорно, тратя уйму времени на отладку, вылавливание ошибок, устранение утечек. Повышаются требования к квалификации программиста, увеличивается время разработки и затраты на проект.

В прикладном программировании указатели не нужны. А вот в системном без них никак. Вопрос в том, для чего язык. Если двустволка для двух зайцев, то надо делать указатели.


с первым абзацем пожалуй соглашусь. а по второму - как без указателей сделать более менее сложную структуру данных? например граф?
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Сообщение Bonart » 12.10.2007 10:38:22

alexs писал(а):если ты мне скажеш что это не С/С++ - я тебе не поверю

На C/C++ делается движок (если не берется уже готовый). А все остальное (90% объема и более) пишется на LUA. Не веришь мне - спроси у гугля с яндексом :)
alexs писал(а):я тебе открою секрет - меня как програмиста вобще не должна инетересовать внутренне устройство типа pointer - я просто знаю что о он есть и всё - это как другие атомарные типы

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

Вообще-то в компилятор вшиты ВСЕ конструкции языка по определению.
Я как раз предлагаю указатели и прочую системщину с прямым доступом к железу вынести в библиотеку времени исполнения.
Каковая должна быть достаточно полной для реализации портабельных программ.
alexs писал(а):точно также нет особой нужды в посвседневном коде использовать Int16, Int32, Int64 - есть тип integer

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

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

Сообщение alexs » 12.10.2007 13:21:45

Bonart писал(а):На C/C++ делается движок

Это и есть игра - всё остальное интерйейс - а то что происходит перенос в нтерфейсную часть логики - ну это вобще нездоровая тенденция везде наблюдается: "давайте всё перепишем на интерпретаторах".
Bonart писал(а):Для системного программирования тебе НАДО знать его реализацию (целое или сегмент:смещение, например).

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

Bonart писал(а):Вообще-то в компилятор вшиты ВСЕ конструкции языка по определению.

В компилятор вшит синтаксис языка - а тпредлагаеш вшить и RTL.

Bonart писал(а):Ошибко-безопасных указателей не бывает

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

Сообщение Bonart » 12.10.2007 13:48:43

alexs
alexs писал(а):Это и есть игра - всё остальное интерйейс

Какой еще интерфейс? Вообще-то на LUA вся логика игрового мира - то, что и есть собственно игра. Замени движок без замены логики - игра от этого не изменится.
Факт остается фактом: 90% именно игрового кода - на LUA.
alexs писал(а):а то что происходит перенос в нтерфейсную часть логики - ну это вобще нездоровая тенденция везде наблюдается: "давайте всё перепишем на интерпретаторах".

Причем тут интерпретаторы? Плохо Си++ подходит для описания логики игрового мира - вот от него там и отказались. Хватает быстродействия интерпретатора - будут использовать интерпретаторы. Так можно логику базы данных на SQL "интерфейсом" обозвать.
alexs писал(а):В компилятор вшит синтаксис языка - а тпредлагаеш вшить и RTL.

И в какой же компилятор RTL НЕ вшита?
Синтаксический анализатор - лишь одна из частей компилятора.
Стандартные библиотеки - важнейшая часть языковой платформы, именно они дают практическую возможность писать большие портабельные проекты.
alexs писал(а):Вот именно я и писал что мне нужен указатель как таковой - я сечас мне приходится об этом думать потмучто операций с указателями нормальных нет - вот это надо дорабатывать.

Это каких же операций нет? Притом не зависящих от реализации...
В системном программировании указатель как атомарный тип даром не нужен - хоть на тот же Си посмотреть.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение Deepthroat » 12.10.2007 23:48:16

Только не на уровне языка, а на уровне стандартной библиотеки. Т.е. если надо писать с ориентацией на конкретную реализацию - пожалуйста, но указывать это придется явно. (библиотека System с типами Int16, Int32, Int64, Byte, процедурой memcopy и т.д и т.п.)

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

Сообщение alexs » 13.10.2007 00:11:16

Bonart писал(а):Хватает быстродействия интерпретатора - будут использовать интерпретаторы

Лучше купим сервер мощнее, докупим ПК на рабочие места новые, через год провдём по всему этому апгрейд ... знаем, проходили и не раз... имею перед глазами опыт печальный. Жена работает в крупной организции. При централизорванном переходе с заказного софта на централизованно написанный в головном офисе происходило именно это. На все вопросы в вышестоящую организации о целесообразности внеджрения этого софта было сказано - дешевле купить новые ПК чем заставить переписать програмеров софт. В итоге только в её офисе была произведена боле 30 ПК. Таких офисов по стране более 3000 (щас даже не знаю сколько точно) причём её офис один из маленьких. в узловых офисах закупили не хилую технику от оркла и IBM (цены были порядка 6-7 нулей).
Через 2 года всю технику пришлось апгрейдить по новой - перестала справляться с нагрузкой.
Старый софт написанный на чистом BC3+TV работал, и сейчас работает на этих же объёмах данных (в нём сморят историю).
Так что если вам говорят что труд програмистов дороже апгрейда - не верьте - это очень большой миф.
Bonart писал(а):И в какой же компилятор RTL НЕ вшита

FPC?
кроскомпиляцю никто не отменял

Bonart писал(а):Стандартные библиотеки - важнейшая часть языковой платформы

не смешивай понятия - тут разговор не о том вёлся.
ты предлагаеш отказаться от RTL в сторону переноса реализации её функций в сторону жёсткой прошивки в коде компилятора.
пример - клипер и т.д. - вроде и объекты были и фиг ты с ними нормально поработаеш (наследование) (кстати одна из причин почему я в 90 годы не стал с ним связываться).

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

Сообщение Bonart » 15.10.2007 07:36:22

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

То, что внутрикорпоративный софт пишут во всем мире "быстро и грязно" - мне хорошо известно. Только интерпретаторы здесь ни при чем - игроделы же их не используют в критичных для быстродействия местах (движок), зато используют там, где важна скорость написания, верификации и отладки. Там, где на C/C++ еще только сделали прототип, на Паскале уже вовсю добивают баги в бете, а на LUA - успешно сдают проект.
alexs писал(а):FPC?кроскомпиляцю никто не отменял

Без RTL оно бесполезно - получится код, принципиально неспособный к вводу-выводу.
alexs писал(а):ты предлагаеш отказаться от RTL

Читай внимательнее. Наоборот - я предлагал отказаться от реализации доступа к железу в самом языке, перенеся его в стандартную библиотеку! Не надо приписывать мне то, что я не писал.
Последний раз редактировалось Bonart 15.10.2007 10:48:04, всего редактировалось 1 раз.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение alexs » 15.10.2007 08:37:23

Bonart писал(а):Читай внимательнее. Наоборот - я предлагал отказаться от реализации доступа к железу в самом языке, перенеся его в стандартную библиотеку

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

Сообщение Bonart » 15.10.2007 11:09:32

alexs
alexs писал(а):а как ты эту библиотеку будеш компилировать?

Точно так же как и компилятор: cперва делается первичная болванка на асме или Си - потом раскрутка. И компилятор (по крайней мере генератор кода), естественно, сам будет использовать библиотеку system.
Попробуй представить, какие жирные зайцы убиваются!
Системщики получают указатели, машинные слова, адресную арифметику, прямой доступ к железу и т.д. и т.п.
Прикладники же получают гарантированно портабельный код (если в нем нет ссылок на библиотеку System).
Кстати, нечто похожее уже есть все в той же Аде.

PS: Надо бы машинно-зависимой библиотеке дать другое имя - а то ненужные ассоциации с паскалевским модулем System.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение alexs » 15.10.2007 12:09:37

чёт я не пойму (тупой наверное)
Т.е. ты предлагаеш на другом языке создать библиотеку - и её использовать просто
Bonart писал(а):Системщики получают указатели, машинные слова, адресную арифметику, прямой доступ к железу и т.д. и т.п.
Прикладники же получают гарантированно портабельный код (если в нем нет ссылок на библиотеку System).

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

Сообщение bw » 15.10.2007 12:16:31

> Т.е. ты предлагаеш на другом языке создать библиотеку - и её использовать просто
Похоже на то. Или можно создать инструментарий (неважно как и на чем), который позволил бы в "родной" среде выполнять подобные манипуляции с данными (по аналогии с ctypes в Python), но не делать такую возможность естественной в языке.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Сообщение Bonart » 15.10.2007 12:54:16

alexs писал(а):Т.е. ты предлагаеш на другом языке создать библиотеку - и её использовать просто

alexs писал(а):как эти два пути сочетаются в пределах одного компилятора? пример, как ты это пресдатвляеш, дай

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

Сообщение alexs » 15.10.2007 17:04:01

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

ps. историю создания fpc я знаю - ещё с версий 0.x.x за ним следил и сам собирал для себя
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Deepthroat » 16.10.2007 00:10:26

Например, так:
Код: Выделить всё
program asm_test;
  const s = 'xor eax, eax'#10 +
      'mov ebx, 0000ff00h'#10 +
      'add eax, ebx';
begin
  asm(s);
end.
Аватара пользователя
Deepthroat
постоялец
 
Сообщения: 144
Зарегистрирован: 06.09.2007 00:21:34
Откуда: Outer Heaven

Сообщение alexs » 16.10.2007 07:19:38

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

Пред.След.

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

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

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

Рейтинг@Mail.ru