Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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; ═══{ короткий указатель на дополнительную
═══════════&#9 552;══════════&#9552 ;═информацию о классе }
vtFieldTable: Word; ══{ короткий указатель на таблицу
═══════════&#9 552;══════════&#9552 ;═с информацией о полях класса }
vtMethodTable : Word; { короткий указатель на таблицу
═══════════&#9 552;══════════&#9552 ;═с информацией о методах класса}
vtDynamicTable: Word; { короткий указатель на таблицу
═══════════&#9 552;══════════&#9552 ;═динамических методов }
vtClassName: Word; ═══{ короткий указатель на строку с именем класса } vtInstSize: Word; ════{ размер экземпляра класса }
vtParent: Pointer; ═══{ указатель на класс-предок }
vtDefault: Pointеr; ══{ указатель на метод-обработчик сообщений Windows } vtNewInst: Pointer; ══{ указатель на метод, создающий новый
═══════════&#9 552;══════════&#9552 ;═экземпляр класса }
vtFreeInst: Pointer; ═{ указатель на метод, уничтожающий
═══════════&#9 552;══════════&#9552 ;═экземпляр класса }
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. Книжка не посвящена нюансам
> паскаля, паскал новички могут выучить по другим книжкам

Тогда после первого упоминания &laquo;if a = true&raquo; в книге можно написать, что можно писать и if a.

ЗЫ: а вообще, по-моему, нормальный практикум для новичков. Но перед печатью, ИМХО, стоило отдать книгу на вычитку.



Страницы: 1 2 3 4 5 6 7 8 9 
10 вся ветка

Форум: "Прочее";
Текущий архив: 2014.10.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.66 MB
Время: 0.034 c
2-1382614616
qwerty123
2013-10-24 15:36
2014.10.05
ListView


15-1393014602
Юрий
2014-02-22 00:30
2014.10.05
С днем рождения ! 22 февраля 2014 суббота


11-1254976050
imp
2009-10-08 08:27
2014.10.05
Неработает loMultiSelect в ListBox (KOL MCK)


2-1382690602
coder123
2013-10-25 12:43
2014.10.05
не видно свойства класса


8-1234686127
Зашибис
2009-02-15 11:22
2014.10.05
Потоковое видео с IP-камеры AVIOSYS 9060A-MP на форме D6





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский