Цикл статей об Object Pascal

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Ответить
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Цикл статей об Object Pascal

Сообщение shade »

Предлагаю открыть серию статей о программировании на Object Pascal в которых рассматривать аспекты выходящие за рамки обычных учебников.

Вот попробовал написать об отличиях передачи аргументов по значению и по ссылке в контексте оптимизации кода. Получилось коряво, жду комментариев, отзывов, может кто-то подскажет как лучше выразить мысль..
:arrow: Часть 1. Любите ли вы const так как люблю его я? (черновик)
Последний раз редактировалось shade 19.05.2007 17:37:27, всего редактировалось 2 раза.
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

неплохо =)
я его тоже люблю. может не так сильно конечно :lol:
Аватара пользователя
Alexander
энтузиаст
Сообщения: 888
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

Здорово и актуально. Про out я вообще не знал.

А ещё, насчёт ускорения, вроде inline помогает.

И интересно как влияет на скорость передача параметров через
регистры.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Комментарии? Пожалуйста!

1. Не так давно я обсуждал этот вопрос с разработчиками - они утверждают, что ключевое слово const - это совсем не передача по ссылке, в отличие от var. Оно лишь говорит компилятору, что внутри функции аргумент изменяться не будет, поэтому локальную копию делать не надо. А сам аргумент передается так, как принято в целевой ОС. Разница появляется, когда аргумент - структура. В Windows и Linux, к счастью, принято структуры передавать по указателю. А в какой-то более экзотической системе, кажется они приводили пример Solaris на PowerPC, принято структуры запихивать в стек целиком (вот больная на голову, подумал я, узнав об этом).

2. В случае передачи по значению WideString в Windows - происходит копирование всей строки, потому что они не имеют счетчика ссылок. По этой причине они вообще на каждый чих копируются, блин... причем используется не fpc менеджер памяти (весьма шустрый), а системный.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

Ожидается цикл статей?
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

STAKANOV писал(а):Ожидается цикл статей?

Один я не потяну, а вот если кто-нибудь подключиться то будет хорошо.
Ну или покрайней мере подкиньте идеи для последующих частей, напишу черновик, по критикуем - исправим - выложим :wink:
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Немного поработал статьёй http://the1st.adygnet.ru/~ftp/pub/draft/advpascal1.doc
Решил расписать каждый случай отдельно
+ исправил не точность с выходными параметрами (out)
на параметры константы меня на сегодня не хватило - в статье выделил пару примечаний в которых я не уверен, пусть спецы выскажут свое мнение.
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Планируется еще две статьи из этого цикла на темы
Часть 2. Перегрузка операторов
Часть 3. Интерфейсы
Прошу пищи для мозгов в виде ссылок, пожеланий, комментариев ;)
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Дописал статью, если более замечаний нет, то буду готовить к публикации в соответствии с правилами. Ссылку см. выше.
Ответить