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

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

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

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

Сообщение shade » 16.05.2007 23:48:43

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

Вот попробовал написать об отличиях передачи аргументов по значению и по ссылке в контексте оптимизации кода. Получилось коряво, жду комментариев, отзывов, может кто-то подскажет как лучше выразить мысль..
:arrow: Часть 1. Любите ли вы const так как люблю его я? (черновик)
Последний раз редактировалось shade 19.05.2007 17:37:27, всего редактировалось 2 раз(а).
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Attid » 16.05.2007 23:58:15

неплохо =)
я его тоже люблю. может не так сильно конечно :lol:
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Alexander » 17.05.2007 00:30:06

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

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

И интересно как влияет на скорость передача параметров через
регистры.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 821
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение Sergei I. Gorelkin » 17.05.2007 02:49:54

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

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

2. В случае передачи по значению WideString в Windows - происходит копирование всей строки, потому что они не имеют счетчика ссылок. По этой причине они вообще на каждый чих копируются, блин... причем используется не fpc менеджер памяти (весьма шустрый), а системный.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение STAKANOV » 18.05.2007 00:54:02

Ожидается цикл статей?
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение shade » 18.05.2007 10:37:03

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

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

Сообщение shade » 19.05.2007 00:04:12

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

Сообщение shade » 19.05.2007 00:07:17

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

Сообщение shade » 19.05.2007 15:27:40

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


Вернуться в Free Pascal Compiler

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

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

Рейтинг@Mail.ru