Форум: "Прочее";
Текущий архив: 2014.10.05;
Скачать: [xml.tar.bz2];
ВнизЯ Написал Книжку по Делфи, хотел бы узнать Ваше мнение и отзывы Найти похожие ветки
← →
Inovet © (2014-02-23 02:10) [40]> [36] big_djo © (23.02.14 01:50)
> кто Вам сказал, что нельзя использовать такой вариант?
> В стандарте паскаля об этом не говорится и не запрещается:
Много чего не запрещается и делается, я уж не буду уточнять что именно, но большинству (пока) это не подходит.
> [36] big_djo © (23.02.14 01:50)
> Inovet вы сконцентировали внимание на несущественных мелочах,
> а конструктивной критики именно от вас ноль
В книжке куда не ткни везде такие ляпы, но для Вас это несущественные мелочи. Но Вы, заметим, пытаетесь нести свет знания и навыков в массы, так могут ли при этом мелочи быть несущественными. Это на форуме ещё простительно на скорую руку или под настроение ляпуть что-то не то, и то в есть некие границы, хотябы внутренние, а у Вас книга, по крайней мере, предентующая на учебник. Серьёзней надо быть в таких действах.
← →
big_djo © (2014-02-23 02:19) [41]-->В книжке куда не ткни везде такие ляпы, но для Вас это
-->несущественные мелочи. Но Вы, заметим, пытаетесь нести свет знания
-->и навыков в массы, так могут ли при этом мелочи быть
-->несущественными.
Пока недостатки следующие:
1) Оформление кода и рисунков
2) мои вольности типа "Режим программирования" вместо "Редактор кода" или "шныряющее сообщение "
3) лишний halt, который выпилю
4) Некоторое неточное определение handle, на которое я дал пояснение, ссылкой
P.S. Недостатки буду фиксить в новом переиздании.
← →
big_djo © (2014-02-23 02:23) [42]--> Выбранная версия Delphi не актуальна.
А это уже чушь... Учиться можно почти по любой версии
← →
Германн © (2014-02-23 02:56) [43]
> P.S. Недостатки буду фиксить в новом переиздании.
Деревья пожалей. Нафига переиздавать макулатуру?
← →
Дмитрий СС (2014-02-23 03:15) [44]А что никто не вспомнил, что a и a=true не всегда эквивалентно? :)
← →
Плохиш © (2014-02-23 03:26) [45]Блииин, такое бурное обсуждение, решил почитать..
Представитель поколения пепси настукал макулатуру для поколения пепси. Желаю автору успехов набивании карманов баблом.
PS. Интересно, что за редакторы в этом издательстве, что такое опубликовали?
← →
й (2014-02-23 05:19) [46]...среда объектно-ориентированного программирования (ООП) Delphi...
Delphi - это RAD IDE, т.е. интегрированная среда для ускоренной разработки и отладки программ
а ООП - набор средств языка, среды оно касается довольно-таки опосредованно
На сегодняшний момент выпущена очередная версия Delphi c возможностью разрабатывать как стандартные windows-приложения, так и приложения с использованием относительно новой технологии .NET.
мы в 2005 году?!?
Также парактикум может выступать
офигеть! вы даже спеллчекером не пользуетесь?!?
на этом энтузиазм кончился, извините
если повезет, завтра одолею вторую страницу (а там - кто знает - может, и на третью раздухарюсь)
← →
Павиа (2014-02-23 09:41) [47]
> Здесь контекст текста подразумевает схожесть между терминами,
> дескриптор - описатель или разновидность указателя.
Во первых не подразумивается. Во вторых ваш источник не есть корректный.
Возьмите wikipedia посмотрите что такое handle, возьмите Марк Руссиновича Виноус для профессионалов. Да и вообще handle как раз предназначен для скрытия существующей структуры. И вообще предназначения хэндла как раз для отказа от ссылок и дескрипторов.
Так что вы не правы в корне.
← →
Inovet © (2014-02-23 10:11) [48]> [47] Павиа (23.02.14 09:41)
> Так что вы не правы в корне
Это "несущественные мелочи", главное - наваять чё-нить.
← →
Павиа (2014-02-23 10:31) [49]
> Это "несущественные мелочи", главное - наваять чё-нить.
Дык не только мелочи. Вся структура книги не имеет общего плана. Нет учебного процесса.
Книга напоминает справочник. Но так как справки там почти 0.
А примеры не имеют законченного вида. То вообще не понятно о чём книга.
Больше пользы будет если студенту дать компьютер и 1 час потыкать компоненты. И ещё 1 час посмотреть примеры идущие вместе с Delphi.
← →
big_djo © (2014-02-23 10:54) [50]-->Дык не только мелочи. Вся структура книги не имеет общего плана.
-->Нет учебного процесса.
-->Книга напоминает справочник. Но так как справки там почти 0.
Это чистейшей воды практикум без лишней воды, теории там минимум.
Студенты могут выполнить все работы за 3 недели, они очень быстро понимают как создавать простые приложения и знакомятся непосредственно с ООП.
-->Delphi - это RAD IDE, т.е. интегрированная среда для ускоренной
-->разработки и отладки программ....
можно сказать и так ,а можно сказать, что Delphi среда Объектно - ориентированного программирования, не вижу особой проблемы здесь..
← →
vuk © (2014-02-23 11:25) [51]Судя по ознакомительному варианту, очередная плохая книжка, к объектно-ориентированному программированию отношения имеет мало. Скорее батонокидательство для начинающих.
← →
DVM © (2014-02-23 11:28) [52]
> > Здесь контекст текста подразумевает схожесть между терминами,
>
> > дескриптор - описатель или разновидность указателя.
>
> Во первых не подразумивается. Во вторых ваш источник не
> есть корректный.
> Возьмите wikipedia посмотрите что такое handle, возьмите
> Марк Руссиновича Виноус для профессионалов. Да и вообще
> handle как раз предназначен для скрытия существующей структуры.
> И вообще предназначения хэндла как раз для отказа от ссылок
> и дескрипторов.
> Так что вы не правы в корне.
Хэндл с одинаковым успехом может быть указателем как на структуру так и объект, просто неким номером в некой таблице и т.д. Хэндл - это целое число с размерностью указателя. Так что непонятно о чем спор.
← →
DVM © (2014-02-23 11:35) [53]На мой взгляд, книга сыровата (сужу по одной главе).
По Delphi вообще мало книг толковых, большинство сводится к изучению палитры компонентов и т.д. Получается, что изучается не язык, не даже библиотеки классов, идущие с языком, а процесс визуального проектирования форм. А вот книг по языку, по внутренней кухне так сказать почти нет или очень мало.
Вот например, образец правильной книги по Delphi:
Рэй Лишнер. Delphi. Справочник.
http://www.ozon.ru/context/detail/id/120699/
приятно читать даже после 13 лет с момента выхода.
← →
Павиа (2014-02-23 11:55) [54]
> Хэндл с одинаковым успехом может быть указателем
Дык автор утверждает, что он не указатель.
← →
Павиа (2014-02-23 12:06) [55]
> Это чистейшей воды практикум без лишней воды, теории там
> минимум. Студенты могут выполнить все работы за 3 недели,
> они очень быстро понимают как создавать простые приложения
> и знакомятся непосредственно с ООП.
Методичка должна давать дополнительные знания, которые не вошли в теоретический курс. Иначе какой смысл в такой книге?
Данная книга не даёт практических навыков. А описать 100 раз как перетащить компонент.
← →
big_djo © (2014-02-23 12:18) [56]-->Дык автор утверждает, что он не указатель
Где я такое утверждал? цитату?
-->Данная книга не даёт практических навыков. А описать 100 раз как
-->перетащить компонент.
Там исключительно практические навыки. Строчка с фразой "переместите на форму те или иные компоненты.. " является частью конкретных заданий
← →
Вова (2014-02-23 12:20) [57]
> Щелкните по кнопке, и вы получите то, что запрограммировали.
Ммм..да! Чукча не читатель, чукча писатель.
← →
Inovet © (2014-02-23 12:49) [58]Ну, если студентам только ознакомиться, что бывает такое, да и забыть, то годится.
← →
brother © (2014-02-23 12:52) [59]Как курс молодого бойца пойдет, но не более... только стиль оформления кода нужно править...
← →
й (2014-02-23 13:26) [60]big_djo> можно сказать и так ,а можно сказать, что Delphi среда Объектно - ориентированного программирования, не вижу особой проблемы здесь..
В принципе можно ВСЁ, только зачем выдумывать свою собственную терминологию, когда есть общепринятая? Всем давно известно, что Delphi - это RAD IDE, осталось перевести это на русский.
И всё же моя придирка - справедлива. Среда не навязывает парадигм, программирование в ней в процедурном стиле абсолютно ничем не ограничено. Библиотека VCL - объектная, но она не является частью среды, а прилагается к ней и компилятору.
А ваши споры с очевидным свидетельствуют, что потребность самовыразиться (обязательно внести что-то от себя) для вас важнее уважения к нормам и традициям.
← →
й (2014-02-23 13:31) [61]стр. 6
Часто компонент называют еще и объектом.
До того, как объяснено, что чем является, не стоило говорить о том, как может кто-то что-то называть в неизвестном контексте.
Понятие "класс" является логической абстракцией, описывающей некоторый объект.
Малоинформативное высказывание, т.к. тут кругом одни логические абстракции.
Лучше сказать, что программный объект содержит данные о свойствах и состоянии конкретного внепрограммного объекта (например, для интерфейсного окна -
информацию о его размере, положении, цвете и т.д.), а класс содержит код, описывающий логику изменения этих состояний и то, что можно назвать
поведением объекта. Эта логика (код) - одна и та же как для конкретного объекта (окна), так и для всех объектов этого типа (класса).
Короче: данные - в объекте, код - в классе.
Фактически класс - это тип данных, определенный пользователем, а объект - его экземпляр.
Что значит "фактически"??? Это и ТЕОРЕТИЧЕСКИ так!
Для сравнения можно сказать, что класс - это форма для печенья, а объект - само печенье
Все аналогии хромают. Не лучше ли сказать, что класс очень похож на тип record (с объяснением отличий), а объект - просто переменная этого типа?
А то, что есть переменные и есть их типы и чем они отличаются, думаю, читающий должен был усвоить ранее.
(Про ссылочную природу объектных типов переменных (SizeOf(TObject) = 4), "кучу" (heap), где они реально хранятся,
особенности их присвоения друг другу, конструкторы и деструкторы, надеюсь, будет объяснено позже.
В любом случае для начала резонно обойтись без этого.)
Далее лучше всего было бы привести полный текст автоматически создаваемого модуля формы
(лучше - не совсем пустой, а после брошенной на форму кнопки и т.п.) и объяснить в нем КАЖДУЮ строчку.
Во многих случаях понятия "тип" и "класс" можно считать синонимами.
Зачем наводить этот туман, когда всё однозначно: класс является типом (т.е. его разновидностью), но не наоборот!
Можно сказать, что класс TForm является родительским для класса TForm1, который, в свою очередь, является его дочерним классом.
Термины "родительский" и "дочерний" (parent - child) общепринят в примении к окнам Windows (child привязан к parent и ограничен им) и аналогично к формам и компонентам VCL.
К классам чаще применяют другие термины - "предок" и "потомок"/"наследник"/"производный" (ancestor - derived).
Хотя parent"ом можно назвать ближайшего предка класса, а child"ом - ближайшего потомка.
Но для классов обычно значимы только факт родства и его направленность, а не близость.
Поэтому, чтобы избежать лишней многозачности, лучше, говоря о классах, ограничиться "предком" и "потомком"/"производным".
Хотя, конечно, ошибки тут нет.
Все компоненты в Delphi являются объектами
Есть классы компонентов, и есть экземпляры компонентов, не стоит их сваливать в одну кучу.
Чтобы не было путаницы, нужно очень осторожно употреблять одиночный термин "компонент",
лучше заменять его на "класс компонента" либо на "экземпляр компонента", где это уместно.
стр. 8
файл проекта (*.dpr), в котором хранится информация о проекте в целом и файл модуля (*.pas), в котором находится программный код.
В dpr - абсолютно такой же программный код!!! Но если ничего не менять - это только автоматически создаваемый код
загрузки "автоматически создаваемых" форм (выбираются в настройках проекта) и запуска основного цикла приложения.
Настройки проекта хранятся в .dof (для Delphi IDE) и .cfg (то же, но для DCC32, commandline compiler).
на этом мой бескорыстный порыв закончился
← →
big_djo © (2014-02-23 13:39) [62]--> А ваши споры с очевидным свидетельствуют, что потребность
--> самовыразиться (обязательно внести что-то от себя) для вас важнее
--> уважения к нормам и традициям.
Соглашусь. Более коректно будет написать что Delphi - это IDE RAD, с другой стороны у большинства людей Delphi ассоциацируется со средой ООП, пусть и не обязательно там юзать ООП для разработки чего -либо
← →
big_djo © (2014-02-23 13:53) [63]-->
"Лучше сказать, что программный объект содержит данные о свойствах и состоянии конкретного внепрограммного объекта (например, для интерфейсного окна -
информацию о его размере, положении, цвете и т.д.), а класс содержит код, описывающий логику изменения этих состояний и то, что можно назвать
поведением объекта. Эта логика (код) - одна и та же как для конкретного объекта (окна), так и для всех объектов этого типа (класса).
Короче: данные - в объекте, код - в классе."
Хорошее замечание, учту
-->Не лучше ли сказать, что класс очень похож на тип record (с
-->объяснением отличий), а объект - просто переменная этого типа?
В книжке есть это:
Задание 15.2.4 Покажем, как получить доступ к адресу виртуального метода в таблице виртуаль-ных методов VMT объекта, а также при этом кратко опишем формат хранения объекта в памяти.
Нужно хотя бы примерно представлять себе, как же хранится сам объект в оперативной памяти, иными словами – каков его формат.
Внутренний формат данных самого объекта напоминает формат данных записи (тип record). Поля объекта сохранены в порядке объявления в виде последовательности непрерывных переменных. Любые поля, унаследованные от базового класса, сохранены перед новыми полями, определенными в классе – наследнике, а первое 4-байтное поле каждого объекта содержит 32-разрядный указатель на виртуальную таблицу методов (VMT) класса, которая содержит адреса всех виртуальных методов класса, независимо от того, унаследованы ли они от класса-родителя либо перекрыты (заменены) в классе-наследнике
-->(Про ссылочную природу объектных типов переменных
-->(SizeOf(TObject) = 4), "кучу" (heap), где они реально хранятся,
-->особенности их присвоения друг другу, конструкторы и деструкторы, -->надеюсь, будет объяснено позже.
-->В любом случае для начала резонно обойтись без этого.)
Есть частично
-->на этом мой бескорыстный порыв закончился
спасибо за порыв), попробую извлечь из него пользу
← →
Inovet © (2014-02-23 14:03) [64]> [63] big_djo © (23.02.14 13:53)
> в виде последовательности непрерывных переменных
Это что за термин?
← →
clickmaker © (2014-02-23 14:22) [65]> [64] Inovet © (23.02.14 14:03)
> > [63] big_djo © (23.02.14 13:53)
> > в виде последовательности непрерывных переменных
это примерно тоже, что "на совещании присутствовал узкий круг ограниченных офицеров"
← →
Юрий Зотов © (2014-02-23 14:39) [66]> big_djo
Извините за прямоту (Вы же сами этого хотели?), но складывается впечатление, что Вы и сами-то не вполне понимаете, что такое программирование. Просто другая заточка мозгов.
Это не хорошо и не плохо. Она просто другая.
Хотелось бы ошибиться. И в связи с этим просьба - не могли бы Вы привести список Ваших реальных проектов? Программ, то есть.
← →
Юрий Зотов © (2014-02-23 14:49) [67]А бывают еще и переменные прерывные. А если серьезно, то еще бывает и выравнивание полей.
И в книжке для начинающих программеров надо писать как раз о выравнивании полей, а не о том, как по кнопочкам тыркать.
← →
turbouser © (2014-02-23 15:59) [68]Фленов v 2.0
← →
big_djo © (2014-02-23 19:21) [69]Насчет "непрервыной " выпилю, и в книге нет описания формата RTTI, даются упрощенные сведения, книга написана для новичков
← →
big_djo © (2014-02-23 20:37) [70]Суть замечаний я понял, думаю вопрос можно закрыть
← →
big_djo © (2014-02-23 20:37) [71]Удалено модератором
← →
Юрий Зотов © (2014-02-23 21:12) [72]А что такое "формат RTTI"?
← →
Inovet © (2014-02-23 21:15) [73]> [72] Юрий Зотов © (23.02.14 21:12)
Это ещё один самобытный термин.
← →
Юрий Зотов © (2014-02-23 21:23) [74]> Inovet © (23.02.14 21:15) [73]
Даже слишком самобытный. Поскольку RTTI есть собрание разнородных субстанций, которые общего формата не имеют.
Кажется, я все же не ошибся. Увы.
← →
big_djo © (2014-02-23 21:42) [75]-->А что такое "формат RTTI"?
здесь приведена данная структура относительно делфи, в моей книжке её нет
pRTTI = ^RTTI;
RTTI = record
vtTypeInfo : Word; ═══{ короткий указатель на дополнительную
═══════════	 552;═══════════ ;═информацию о классе }
vtFieldTable: Word; ══{ короткий указатель на таблицу
═══════════	 552;═══════════ ;═с информацией о полях класса }
vtMethodTable : Word; { короткий указатель на таблицу
═══════════	 552;═══════════ ;═с информацией о методах класса}
vtDynamicTable: Word; { короткий указатель на таблицу
═══════════	 552;═══════════ ;═динамических методов }
vtClassName: Word; ═══{ короткий указатель на строку с именем класса } vtInstSize: Word; ════{ размер экземпляра класса }
vtParent: Pointer; ═══{ указатель на класс-предок }
vtDefault: Pointеr; ══{ указатель на метод-обработчик сообщений Windows } vtNewInst: Pointer; ══{ указатель на метод, создающий новый
═══════════	 552;═══════════ ;═экземпляр класса }
vtFreeInst: Pointer; ═{ указатель на метод, уничтожающий
═══════════	 552;═══════════ ;═экземпляр класса }
vtDestroy : Pointer; ═{ указатель на деструктор }
end;
http://mf.grsu.by/UchProc/konspekt/delphi/ch06/ch09/ch02
← →
Юрий Зотов © (2014-02-23 21:55) [76]> big_djo © (23.02.14 21:42) [75]
> в моей книжке её нет
И хорошо, что нет. Потому что эта информация:
- не документирована, а потому неизвестно откуда взялась;
- безнадежно устарела, так как относится только к Delphi 1;
- на сегодня неверна по той же причине;
- неполная, так как к RTTI относится еще и многое другое.
← →
big_djo © (2014-02-23 22:35) [77]В последней версии Делфи плясать требуется от данной структуры:
TRttiContext = record
private
FContextToken: IInterface;
public
class function Create: TRttiContext; static;
procedure Free;
function GetType(ATypeInfo: Pointer): TRttiType; overload;
function GetType(AClass: TClass): TRttiType; overload;
function GetTypes: TArray<TRttiType>;
function FindType(const AQualifiedName: string): TRttiType;
function GetPackages: TArray<TRttiPackage>;
end;
Можно ли её считать форматом RTTI ?
← →
Юрий Зотов © (2014-02-23 22:40) [78]> big_djo © (23.02.14 22:35)
Полагаю, что эту структуру можно (и нужно) отнести к RTTI. Но к RTTI относится не только она.
И в Delphi 7 (о которой идет речь) такой структуры нет (точнее, что-то подобное может и есть, но не публикуется).
← →
clickmaker © (2014-02-24 09:24) [79]для Д7 можно отталкиваться от структуры TTypeInfo, хотя в целом поддержка RTTI там довольно сильно размазана по коду
← →
И. Павел © (2014-02-24 10:06) [80]Кажется, еще про это никто не писал:
color:=random(100000); // Придаем форме случайный цвет
...
if x mod 10 =0 then Shape1.Shape:=TShapeType(Random(6)+1);
Хотя бы про randomize упомяните.
> для новичка нормально так написать, пусть будет ясно что
> Drug сравнивается именно с true. Книжка не посвящена нюансам
> паскаля, паскал новички могут выучить по другим книжкам
Тогда после первого упоминания «if a = true» в книге можно написать, что можно писать и if a.
ЗЫ: а вообще, по-моему, нормальный практикум для новичков. Но перед печатью, ИМХО, стоило отдать книгу на вычитку.
Страницы: 1 2 3 4 5 6 7 8 9
10 вся ветка
Форум: "Прочее";
Текущий архив: 2014.10.05;
Скачать: [xml.tar.bz2];
Память: 0.66 MB
Время: 0.034 c