PDA

Просмотр полной версии : "Астрономия на персональном компьютере" + CD


Algen
16.12.2001, 20:40
Господа! Наконец-то, книга Монтенбрука и Пфлегера, "Астрономия на персональном компьютере" (http://shop.piter.com/book_about.phtml?id=978531800223&web_ok=), которую мы переводили (http://yaseu.da.ru/arc-book.html) и готовили к печати в течение всего года, ушла в типографию. Эта книга не только заменит астрономический календарь и ежегодник, но и даст основные знания из области сферической астрономии, небесной механики и методов обработки наблюдений. Прилагаемый CD содержит исходники всех, описанных в книге программ, их исполняемые версии для Windows и Linux, а также три базы: каталог положений и собственных движений на 400 тыс. звезд, зодиакальный каталог и каталог элементов орбит всех известных астероидов. В продаже книга должна появиться под Новый год. А на сайте ИД "Питер" уже сейчас можно ее заказать (http://shop.piter.com/book_about.phtml?id=978531800223&web_ok=). Тираж не слишком большой (не рискнули сразу много печатать), так что советую поторопиться. Стоимость вместе с CD - 130 руб. (возможны небольшие вариации с учетом стоимости доставки).

17.12.2001, 01:37
Это переиздание старой книги (у нас вышла в 93 году) или авторы ее полностью переработали?

Algen
17.12.2001, 14:37
Начнем с того, что это перевод четвертого издания книги, а в 1993 году переводилось первое издание. При каждом переиздании в книгу вносились добавления и поправки.

В последнем издании авторы полностью переработали программную сторону книги и добавили ряд новых содержательных вопросов. Вот выдержки из их собственного введния к книге:

"На фоне постепенного упадка языка программирования Паскаль мы решили прислушаться к часто высказывавшемуся пожеланию перевести наши программы на язык C++. Если не рассматривать такие системозависимые языки, как VisualBasic, то С и С++ являются на сегодня самыми популярными и повсеместно используемыми языками. ... Изменения в содержании книги вызваны (наряду с другими причинами) последовательным введением векторно-матричных обозначений, которые позволяют компактно и современно описывать любые преобразования координат. Соответствующие классы и операции C++ позволяют удобно преобразовывать эти обозначения в программный код."

"Глава, посвященная определению орбит по трем наблюдениям была дополнена описанием гауссова метода определения орбит, благодаря чему случаи, допускающие несколько решений теперь не составляют проблемы. Добавлена программа Phases, которая определяет даты возможных солнечных и лунных затмений, а также рассчитывает фазы Луны."

"Важное дополнение — это глава о вычислении возмущений. В ней описывается, как учесть возмущения со стороны планет при расчете движения астероидов и комет. Описанная в книге программа Numint позволяет вычислять их положения значительно точнее, чем раньше, что бывает очень важно при поиске предельно слабых объектов."

"В другой новой главе обсуждается вычисление физических эфемерид планет и Солнца, что восполняет существенный пробел в первом издании. Теперь любители астрономии получают в свое распоряжение средства для предвычисления вида планет, а также для упрощения последующей обработки своих наблюдений. Другие изменения касаются вычисления моментов восхода и захода планет и местных обстоятельств солнечных затмений."

17.12.2001, 20:08
"На фоне постепенного упадка языка программирования Паскаль мы решили прислушаться к часто высказывавшемуся пожеланию перевести наши программы на язык C++."

И что, оставили лищь эти программы? И выкинули Паскаль? Ничего более нелепого и придумать нельзя! Переработали на другой язык - так сохраните и старые варианты, ведь у людей могут быть программы и на Паскале.

Ну а про упадок Паскаля - типичное высокомерное высказывание приверженцев Си, не делающее им чести.

17.12.2001, 20:08
[ 17-12-2001: Сообщение редактировал: Anatoly ]

SF
17.12.2001, 21:39
2Algen:

А "ls -R" (содержимое) CD в конференцию нельзя забросить?

Algen
18.12.2001, 01:11
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения Anatoly:

И что, оставили лищь эти программы? И выкинули Паскаль? Ничего более нелепого и придумать нельзя! Переработали на другой язык - так сохраните и старые варианты, ведь у людей могут быть программы и на Паскале.
<HR></BLOCKQUOTE>

Старые версии программ на Паскале доступны на сайте издателmcndf Springer. Цитирую из того же предисловия: "Мы также советуем читателям посетить веб-сайт http://www.springer.de/phys/books/astropc/, где мы совместно с издателем размещаем полезную информацию, относящуюся к этой книге. В частности, вы найдете здесь исходные тексты программ на Паскале из предыдущей редакции "Астрономии на персональном компьютере", а также ссылки на полезные интернет-ресурсы. При необходимости здесь также будут размещаться исправленные и обновленные версии программ."

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quoteНу а про упадок Паскаля - типичное высокомерное высказывание приверженцев Си, не делающее им чести.

Я думаю, флейм здесь неуместен. Доминирование C++ в сегодняшем мире - свершившийся факт, даже если это кому-то (в действительности многим) не нравится. Объем ПО написанного на C++ намного больше, чем на Паскале и на любом другом языке. А Паскаль фактически занял ту самую нишу, которую ему предназначал его создатель Н.Вирт - он стал учебным языком программирования и языком для относительно небольших проектов. Можно не любить С++, но не признавать его нельзя.

Кстати, если быть объективным, то есть несколько причин, делающих Паскаль неудачным выбором для астрономического программирования (в отличие от C++ и Фортрана):

- у Паскаля нет современного общепринятого стандарта и работа по его созданию не ведется;

- в Паскале не было и нет средств управления точностью вычислений с плавающей точкой;

- Паскаль в меньшей степени чем C и гораздо хуже чем Фортран поддается оптимизации кода.

В стандартном Паскале нет огромного числа очень важных для астронома возможностей: работы с векторами и матрицами, форматного ввода-вывода, эффективной передачи параметров "по имени". В конкретных реализациях Паскаля есть многое из этого (а также объекты), но если этими возможностями пользоваться, то происходит жесткая привязка к конкретной платформе.

Кстати, в прошлых изданиях книги авторы были вынуждены оговаривать, какими компиляторами Паскаля надо пользоваться на тех двух платформах (PC и Atari), для которых годились их программы. Теперь выбор платформы ничем не ограничен. Конечно, минимальные модификации кода при переходе на другой компилятор/платформу могут потребоваться, но они строго локализованы и перечислены в приложении к книге.

Еще раз хочу подчеркнуть, что ни я, ни авторы книги не стоим на позиции "сишного снобизма". Просто надо реально смотреть на вещи.

[ 18-12-2001: Сообщение редактировал: Algen ]

Algen
18.12.2001, 01:19
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения SF:
А "ls -R" (содержимое) CD в конференцию нельзя забросить?[/B]<HR></BLOCKQUOTE>

ls -R не получится - у меня сейчас сидюка под рукой нет. Но вот описание CD из книжки:

\Win32\
Исполняемые программы (32-битные версии для Windows)
AOEcat.exe, Coco.exe, Comet.exe, Eclipse.exe, EclTimer.exe, Foto.exe, Gauss.exe, Luna.exe, Numint.exe, Occult.exe, Phases.exe, Phys.exe, Planpos.exe, Planrise.exe, PPMbin.exe, PPMcat.exe, Sunset.exe

\Linux\
Исполняемые программы (версии для Linux)
AOEcat, Coco, Comet, Eclipse, EclTimer, Foto, Gauss, Luna, Numint, Occult, Phases, Phys, Planpos, Planrise, PPMbin, PPMcat, Sunset
Unix-архивы файлов данных, исполняемых программ (только для Linux) и исходных текстов
apcedat.tar, apceexe.tar, apcesrc.tar (включая make-файле)

\Source\
Исходные тексты библиотечных модулей
AOEcat.cpp, APC_Cheb.cpp, APC_Cheb.h, APC_Const.h, APC_DE.cpp, APC_DE.h, APC_IO.cpp, APC_IO.h, APC_Kepler.cpp, APC_Kepler.h, APC_Math.cpp, APC_Math.h, APC_Moon.cpp, APC_Moon.h, APC_Phys.cpp, APC_Phys.h, APC_Planets.cpp, APC_Planets.h, APC_PrecNut.cpp, APC_PrecNut.h, APC_Spheric.cpp, APC_Spheric.h, APC_Sun.cpp, APC_Sun.h, APC_Time.cpp, APC_Time.h, APC_VecMat3D.cpp, APC_VecMat3D.h, Coco.cpp, Comet.cpp, Eclipse.cpp, EclTimer.cpp, Foto.cpp, Gauss.cpp, GNU_iomanip.h, Luna.cpp, Numint.cpp, Occult.cpp, Phases.cpp, Phys.cpp, Planpos.cpp, Planrise.cpp, PPMbin.cpp, PPMcat.cpp, Sunset.cpp

\Data\
Файлы с примерами исходных данных
Comet.dat, Foto.dat, Gauss.dat, Numint.dat, Occult.dat, Orkisz.dat, ZC.dat

База данных по элементам орбит астероидов и документация к ней
\Aoe\astorb.dat, \Aoe\astorb.html

Каталог положений и собственных движений звезд
\Ppm\PPM.dat, \Ppm\PPMbss.txt, \Ppm\PPMnorth.txt, \Ppm\PPMsouth.txt, \Ppm\PPMsupp.txt, \Ppm\ReadMe.txt, \Ppm\Win32\PPM.bin, \Ppm\Linux\PPM.bin

18.12.2001, 09:12
"В стандартном Паскале нет огромного числа очень важных для астронома возможностей: работы с векторами и матрицами, форматного ввода-вывода, эффективной передачи параметров "по имени"."

"Для астронома" все эти возможности есть, знаю по собственному опыту и опыту коллег.

О распространенности языка Си.
В интернете распространен английский язык, так что, русский нужно выбросить, как малораспространенный и перейти на английский?

Мне очень нравился подход создателей Фортрана (не знаю, продолжается ли это в современных версиях языка, от Фортрана я давно отказался в программировании астрономических задач): сохраняли все возможности первых версий языка, так как знали, что могут встретиться программы, в которых эти операторы использованы. Можно, конечно, было сказать, что нужно просто заменить соответствующие операторы на новые, но авторы Фортрана понимали, что программисты, писавшие программы, давно уже заняты другими делами, а исрользовать программы надо.

Вот это действительно забота о пользователях, а не пренебрежительное заявление приверженцев Си относительно Паскалая. Да пусть человек, если ему это удобно, программирует хоть на Бейсике, лишь бы программы были полезны ему или другим. Никогда не следует ограничивать людей в возможностях выбора, тем более, что программы на Паскале с этой книгой уже выходили.

Это не претензии к авторам перевода, скорее это пожелание на будущее: не следует ничего выкидывать, даже если это нечто не нравится автору. Добавлять и расширять - да, выкидывать - нет!

18.12.2001, 10:53
Хотелось бы поддержать Анатолия. Выбор среды разработки определяется стоящей задачей. Нисколько не умаляя возможности современных компиляторов С++, хотелось все же заметить, что основное назначение этого языка--поддержка создания больших (очень больших) структурированных программ, возможно группой разработчиков. И именно в таком масштабе можно в полной мере почувствовать его преимущества и что называется получать от этого удовольствие. А если речь идет о процедуре размером с полстранички, то кто будет городить огород со всеми этими виртуальными деструкторами, перегруженными операторами и прочими умными указателями? В книжных примерах главное--наглядность и читаемость, а перепрограммировать алгоритм по своему вкусу и на своем любимом языке это уже ваша работа.

Повторюсь: нельзя сказать, что то или иное средство прото "лучше". Надо всегда уточнять, для чего именно.

Algen
18.12.2001, 11:24
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитаты из сообщения Anatoly:
"Для астронома" все эти возможности есть, знаю по собственному опыту и опыту коллег.
<HR></BLOCKQUOTE>

Этого тезиса я не понял.

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quoteО распространенности языка Си. В интернете распространен английский язык, так что, русский нужно выбросить, как малораспространенный и перейти на английский?

Нет, это значит, что если хочешь, чтобы тебя поняли услышали как можно больше людей в мире - пользуйся английским. А если это неважно - то хоть клинописью.

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quoteМне очень нравился подход создателей Фортрана ... сохраняли все возможности первых версий языка, так как знали, что могут встретиться программы, в которых эти операторы использованы.

В Фортране это действительно было оправдано. Во-первых, с давних времен существовали хорошо прописанные стандарты языка. Во-вторых, на Фортране было (и есть) очень много фундаментальных наработок из области выч. методов. До первой половины 90-х по количеству написанного кода в мире лидировал Фортран, потом его обошел Си. Кстати, абсолютной совместимости снизу вверх все-таки не было даже у Фортрана; не даром у всех компиряторов есть ключик вроде -66.

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quoteВот это действительно забота о пользователях, а не пренебрежительное заявление приверженцев Си относительно Паскалая.

Я думал, что войны Си vs Паскаль, где приводились подобные аргументы отшумели 3-4 года назад. Если вдуматься, то ведь аргумент совершенно несостоятельный: вот новые версии Фортрана были совместимы со старыми, так почему же приверженцы Си не поддерживают совместимости с Паскалем?

С++ сохраняет высокую степень совместимости с Си (меньше, чем версии Фортрана, но неплохую). А предъявлять "приверженцам Си" претензии за снижение популярности Паскаля можно не более, чем американцам, за то что у них не столь популярен испанский язык, на котором говорил Колумб.

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quoteДа пусть человек, если ему это удобно, программирует хоть на Бейсике, лишь бы программы были полезны ему или другим.

Позвольте с Вами полностью согласиться. Ведь именно этим аргументом руководствовались авторы, переходя на С++.

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quoteне следует ничего выкидывать, даже если это нечто не нравится автору. Добавлять и расширять - да, выкидывать - нет!

Так ничего и не выкинуто. Паскальные программы доступны на сайте. Более того, они доступны свободно, даже книжку не надо покупать images/smiles/icon_smile.gif

Algen
18.12.2001, 11:43
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения Pietro:
Нельзя сказать, что то или иное средство прото "лучше". Надо всегда уточнять, для чего именно.<HR></BLOCKQUOTE>

Согласен. Авторы достаточо убедительно аргументировали, почему в случае их книги переход на С++ оправдан.

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quoteосновное назначение этого языка--поддержка создания больших (очень больших) структурированных программ, возможно группой разработчиков.

Это только одна из сфер, где C++ дает преимущества, но не единственная. Другой случай - программы, которые должны работать на разных платформах. Третий - библиотеки, которые могут без труда использоваться в других приложениях.

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quoteА если речь идет о процедуре размером с полстранички, то кто будет городить огород со всеми этими виртуальными деструкторами, перегруженными операторами и прочими умными указателями? В книжных примерах главное--наглядность и читаемость, а перепрограммировать алгоритм по своему вкусу и на своем любимом языке это уже ваша работа.

А вот здесь нужно пояснить суть программ, приводимых в книге.

Во-первых, большинство программ занимают заметно больше полстранички.

Во-вторых, авторы не злоупотребляют специальными конструкциями С++; в этой части их позиция очень грамотная и умеренная. Но в той мере, в которой они все-таки используются, они резко упрощают чтение и понимание программ (речь, прежде всего, про векторно-матричные операции и, в меньшей степени, про форматный вывод).

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

19.12.2001, 06:58
Во, опять - какой язык лучше! А не все ли равно, господа хорошие? Что на Паскале, что на Си можно написать любую программу.

Издатели книжки борются за тираж -> за денюжку. И использовать в современном издании Паскаль было бы по меньшей мере глупо - факт, на данный момент он гораздо менее популярен. Правда у Паскаля есть еще шансы - тот же самый Kylix к примеру. Вам что лучше - книжка с сишным программами или отсутствие таковой, но зато с программами паскалевскими? images/smiles/icon_biggrin.gif

И вообще - на вкус и цвет товарищей нет. А тут как раз дело вкуса. Я раньше на паскаль плевался как только мог (вот подумал - на чистый паскаль стоит продолжать плеваться images/smiles/icon_razz.gif), считал, что С - rulez и forever! А потом пришлось Delphi использовать, и ничего, нормально все. Ломки были, но не смертельные.

19.12.2001, 10:14
FBS--я как раз таки против языковых войн, если Вы читали внимательно.
Algen--ну в общем мы поняли друг друга, не видя книги трудно что-то говорить. У меня есть Astronomical Algorithms Мееуса (своего рода библия по этому предмету) и пособие по JPL-эфемеридам не помню кого, там в примерах никакого С, и я с этим согласен, не нужен он там. Я не соглашусь с Вами в одном--в книге все-таки не место готовым программам: на языках программирования там описываются *алгоритмы*, а не программы. Каждый программист все равно запрограммирует по-своему. Насчет векторных операций согласен, я не подумал, здесь Вы правы и С++ действительно удобен.

Algen
19.12.2001, 23:18
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения Pietro:
Я не соглашусь с Вами в одном--в книге все-таки не место готовым программам: на языках программирования там описываются *алгоритмы*, а не программы. Каждый программист все равно запрограммирует по-своему.<HR></BLOCKQUOTE>

Не будем забывать, что книга выпускается вместе с диском. Так что это не просто главы из теории, а рабочий инструмент. Из каких соображений следует ограничивать возможности этого инструмента (не рассматривать программы) мне не совсем понятно. Ведь большинство-то читателей как раз не будет писать программы сами, а воспользуются готовыми.

Зачем же заставлять людей повторять весьма трудоемкую (и главное труднопроверяемую) работу по кодированию вычислительных алгоритмов, когда можно освободить время для гораздо более полезной деятельности - например, для написания графического интерфейса или интерпретатора языка запросов астрономических эфемерид images/smiles/icon_smile.gif

Книга как раз тем и полезна, что не только дает теорию, но и объясняет, как пользоваться программами, на основе этой теории написанными. Причем под использованием авторы понимают не только непосредственный запуск программ для выполнения астрономических вычмслений, но также использование их кода для создания собственнх программ.

20.12.2001, 08:44
Переписали мы прогрммы на Паскале. Теперь понятно высказывание Algen: "Паскаль в меньшей степени чем C и гораздо хуже чем Фортран поддается оптимизации кода." Так неоптимально написанная программа просто не поддается оптимизации при компилировании, как бы ни гениален был создатель компилятора. Если от языка требовать исправлять программистские небрежности - то распространенность Си-подобных языков, вероятно, обусловлена тем, что авторам компиляторов удалось решить эту проблему: на этих языках, вероятно, можно создавать крайне неэффективные программы, а компилятор все исправит.

Что касается программ на Паскале, то они требуют доработки с точки зрения оптимального программирования. Если авторы программ на Си и Паскале одни и те же, то ... ???

[ 20-12-2001: Сообщение редактировал: Anatoly ]

Algen
20.12.2001, 14:49
Ну, что ж, Anatoly, не хотите по-хорошему, будем по-плохому (с) "Пятый элемент"

Начнем с разъяснения, что оптимизация в программировании бывает разная: алгоритмическая, глобальная, циклов, общих подвыражений, регистровая, машинно-зависимая (и это еще не все). На языках высокого уровня свободно можно заниматься только алгоритмической оптимизацией (например, использовать быструю сортировку вместо пузырька), ну, может быть, иногда - глобальной. Все остальные виды оптимизации должен выполнять компилятор, поскольку программист, работающий на ЯВУ, не может гибко управлять кодовыми конструкциями, которые генерирует компилятор. Можно, конечно, декомпилировать программу, узнать, как именно компилятор реализует ту или иную конструкцию, но это знание будет ограничено данным компилятором, работающим в данной ОС и на данном процессоре.

Не зная этих фактов, многие прикладные программисты изощряются в оптимизации своих программ и недооценивают возможности оптимизирующих компиляторов, ошибочно считая, что оптимизация кода служит для того, чтобы исправлять неоптимально написанные программы. В действительности это просто широко распространенное заблуждение и я сейчас попробую это пояснить.

Проще всего говорить о машинно-зависимой оптимизации. Как известно, все современные процессоры имеют многоуровневый кэш для данных и программ. Во многих из них есть элементы конвейерной архитектура. Оптимизирующий компилятор знает и учитывает такие параметры процессора, как размер кэша (это сказывается, например, на размерах циклов и использовании inline-подстановок), длительность выполнения разных операций (в тактах), возможность параллельного выполнения некоторых операций (например, обычных и с плавающей точкой). Такой компилятор знает, что некоторые операции (например, переходы) очищают конвейер, учитывает, что в некоторых случай возможна оптимизация за счет спекулятивного выполнения команд (еще до определения условия перехода за счет суперскалярной архитектуры процессора начинаются вычисления по обеим веткам условия, а потом лишняя отбрасывается).

Регистровая оптимизация тесно связана с оптимизацией общих подвыражений и циклов. Многие программисты думают, что код, в котором они вручную "оптимизировали" общие подвыражения (запихав их в переменные) или вытащили константные подвыражения из цикла будет работать лучше. На самом деле эти действия только затрудняют работу оптимизирующего компилятора, который мог бы разместить значения подвыражений на регистрах (вместо ячеек памяти) или сосчитать на этапе компиляции константу и встроить ее в код программы (вместо добывания ее из ячейки памяти).

Идея оптимизировать код на ЯВУ вручную в расчете, что от этого улучшится машинный код, тянется с 70-х годов, когда теория оптимизации кода была еще в зачаточном состоянии, а программы писались и оптимизировались под одну платформу. Совершенно невозможно целенаправленно влиять на машинно-зависимую оптимизацию, меняя конструкции ЯВУ. Более того, пытаясь действовать подобным образом, можно только помешать работе хорошего оптимизирующего компилятора.

Теперь вернемся к Паскалю. Он изначально создавался с тем расчетом, чтобы компилятор генерировал не машинный код, а некий универсальный P-код, который затем надлежит преобразовывать в машинный код. Идея здравая, т.к. сокращает затраты на реализацию компилятора. Но она практически убивает возможность оптимизации, т.к. к P-коде утрачена информация о структуре программ и взаимозависимости ее частей.

Для Фортрана изначально предлагался иной способ компиляции, позволяющий учитывать (хотя и не очень просто) взаимозависимости участков кода и их потребности в ресурсах (в первую очередь, в регистрах). Поэтому для Фортрана уже в конце 70-х были созданы великолепные оптимизирующие компиляторы.

Помню, как еще на ЕС ЭВМ я пытался соревноваться с оптимизирующим компирятором FORTRAN H в компактности и скорости программ. Так вот, он построил тестовый цикл на одну команду более компактно, чем я независимо написал на ассемблере. Я в дальнейшем принял во внимание использованный компилятором трюк с регистрами.

Современные процессоры имеют архитектуру и систему команд на порядок (если не на два) более сложную, чем ЕС ЭВМ. Поэтому легко может получиться, что конструкция, которая кажется оптимальной на ЯВУ в коде будет далеко не оптимальна. ЯВУ придуманы для того, чтобы на них записывать программы в стиле понятном и удобном для человека. Попытки оптимизации (кроме алгоритмической) идут вразрез с этой целью. К сожалению, не у всех компиляторов/языков есть/возможны хорошие оптимизаторы. В таком случае приходится заниматься шаманством. Только вот не надо это шаманство выдавать за высокий программистский класс. Это элементарная борьба с конструктивными недостатками используемых инструментов.

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

20.12.2001, 16:04
Algen, спасибо за разъяснение, некоторых вещей я не знал.

Что касается обсуждаемой программы, так тут много нелепостей с точки зрения элементарной логики.

Например, зачем все угловые величины сначала переводить в градусную меру, а затем использовать собственные процедуры взятия тригонометрических функций от градусной меры? Гораздо экономнее использовать не коэффициент перевода в градусы, а сразу в радианы и использовать стандартные функции языка. Вряд ли компилятор способен исправить такое.

Ну и жуткое количество мелких процедур из одного-двух операторов. Может компилятор и подставляет операторы таких процедур в тело программы, а если нет?

И так далее...

Исправление этих "излишеств" нисколько не уменьшило бы легкость понимания текста, зато позволило бы непосредственно использовать тексты без переделок для включения в эффективные программы. А сейчас перед использованием требуется "облагородить" тексты.

Algen
20.12.2001, 20:43
О! Здорово! Достигли взаимопонимания. А я уже морально готовился к длительной осаде images/smiles/icon_smile.gif

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения Anatoly:

Например, зачем все угловые величины сначала переводить в градусную меру, а затем использовать собственные процедуры взятия тригонометрических функций от градусной меры? Гораздо экономнее использовать не коэффициент перевода в градусы, а сразу в радианы и использовать стандартные функции языка. Вряд ли компилятор способен исправить такое.<HR></BLOCKQUOTE>

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

Хотя, не исключено, что для такого подхода были причины. Например, могла не устраивать точность реализации стандартных процедур в библиотеке компилятора. Ведь насколько я помню, в тех версиях Паскаля, которые были в ходу в 1991 году, когда вышло первое (немецкое) издание книги, величин с двойной точностью не было.

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quoteНу и жуткое количество мелких процедур из одного-двух операторов. Может компилятор и подставляет операторы таких процедур в тело программы, а если нет?

Вроде и с этим стало лучше, хотя С++ (и вообще ООП) как раз ориентирован на подобный стиль программирования.

Которкие процедуры при программировании обычно появляются на местах сшивки разных концептуальных моделей, использованных при проектировании системы. Взять, например, любую оконную библиотеку - там большинство методов представляют собой просто обращения к функциям API. Это классический пример стыка между ОО и не-ОО частями системы.

В вычислительных задачах подобные стыки (но уже другого типа) тоже встречаются. На этих местах всегда возникают маленькие процедурки-адептеры. Конечно, если их становится слишком много, это говорит о непроработанности архитектуры системы. Новое издание, по крайней мере, на мой взгляд, от подобного греха избавлено.

21.12.2001, 04:32
Давайте лучше дождемся, когда книга на руках будет. Вот тогда можно конкретно критиковать.

Да и не думаю я, что листинги настолько сложны и запутаны, что начинающему программисту в них будет невозможно разобраться и переделать на свой лад (читай - в паскаль перевести) - не тот случай.
Тем более, что эта книга первая в своем роде. Если бы был выбор, тогда можно было бы нос воротить и говорить "фи! пойду куплю другую"

Кстати, вроде и конвертеры есть такие. В Линуксе вроде точно видел пакет конвертера из паскаля в Си. Но это отдельный вопрос.

Ed_Vazhorov
05.01.2002, 14:20
Думаю, что человек, знакомый с каким-либо алгоритмическим языком с объектно-ориентированным подходом, легко поймет листинги программ как на Pascal, так и на C.
Лично мне сейчас интересно программирование для астрономии на CASL для PalmOS.
Думаю, стоит взять книгу и вопосы утрясти на месте с приверженцами C++.

tlgleonid
17.01.2002, 18:23
Уважаемые. К чему спор о языках программирования? Под Линукс klyx вообще понимет и паскаль и си одновременно. Я в свое время делал лапшу из модулей и библиотек написанных на паскале и на си. Включать алгоритмы в книгу на двух языках просто не имеет смысла. Ведь тогда или объем станет больше (и цена!) или информации станет меньше.

Меня волнует другое. Я Живу на Украине и у меня высокие шансы остаться вообще без книги. Никто не мог ли бы мне помочь? Я например бы мог выслать деньги за книгу+почтовый перевод+небольшое вознаграждение, если кто-то мне смог бы ее выслать.
ПОМИГИТЕ!

Algen
17.01.2002, 19:43
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения tlgleonid:
Я Живу на Украине и у меня высокие шансы остаться вообще без книги. Никто не мог ли бы мне помочь? Я например бы мог выслать деньги за книгу+почтовый перевод+небольшое вознаграждение, если кто-то мне смог бы ее выслать.
ПОМИГИТЕ!<HR></BLOCKQUOTE>

Книжку можно заказать на сайте издательства "Питер" (http://shop.piter.com). В том числе и с Украины. Правда, цена заметно подскочит. А еще можно обратиться в наши
фирменные магазины (http://shop.piter.com/sbit/?fil=firmshop) на Украине. Тут, впрочем, не могу сказать, поступила ли уже туда книжка и в каком количестве.

Timur
28.01.2002, 16:47
Сегодня купил книгу в "Библио-глобусе" за 224 рубля. Правда, на стилаже она была одна, но наверное еще выставят. Обложка очень стильная и качественная, а вот бумага маленько газетная. Что касается содержания - нужно ждать оценок экспертов...

tlgleonid
28.01.2002, 18:50
Купил наконец эту книгу в Киеве. Купил не с первой попытки, так как она быстро раскупается. Хотелось бы высказать мнение.
Внешний вид ее описал Тимур. Я же скажу пару слов о содержании.
Книга написана хорошим языком, выложены необходимые теории движения Луны и планет, а также информация для фотометрических расчетов. Однако для теории Земли, Луны и планет использованы устаревшие теории с низкой точностью (порядка 1-2 мекунд дуги). Не смотря на подробно описанную методику расчета движения астероидов, приведенные теории не позволят получить карты видимости покрытия. Полностью отсутствует какая либо информация по движению исскуственных спутников Земли. Ничего я не нашел и по спутникам других планет, а значит нет возможности разобраться с теорией движения Юпитеровых, Сатурновых и Марсианских Лун.
Нет данных для получения распространенной информации ( к примеру расчет уровнения времени).
На компакт-диске присутсвует только 100 Мб информации. Файл с элементами орбит астероидов дан на 2000 год (устаревший). Из звездныхъ каталогов присутсвует только каталог с 440000 звезд. Можно было бы поместить каталог Тихо или Тихо-2. (Они бы вместились).
В подкаталоге с элементами астероидов лежит html страничка, но рисунки в ней отсутсвуют, что делает часть ее загадочной.
На худой конец можно было бы выложить GSC (влезло бы) или дать ссылки, где искать дополнительные каталоги, которыми авторы советуют пользоватьмя.
В остальном книга удачна.
В конце есть список использованных функций, понятий и терминов, а также ссылки на другие источники.
Почитаю, может еще чего выскажу.

Alexey Pasechnik
30.01.2002, 14:24
Во-первых, если дополнить книгу всем тем, что вы написали, то это будет уже не небольшой справочник любителя астрономии, а 800-страничный фолиант профессионального наблюдателя.
Во-вторых, стоить он будет (особенно, если его напечатать на финском офсете) не 190, а все 500 рублей.
Вспомните, что говорил дед знаменитого философа и публициста, Федор Кузьмич Прутков:
«Однажды, когда ночь покрыла небеса невидимою своею епанчою, знаменитый французский философ Декарт, у ступенек домашней лестницы своей сидевший и на мрачный горизонт с превеликим вниманием смотрящий, – некий прохожий подступил к нему с вопросом: «Скажи, мудрец, сколько звёзд на сём небе?»
– Мерзавец! – Ответствовал сей, – никто необъятного обнять не может!
Сии, с превеликим огнём произнесённые, слова возымели на прохожего желаемое действие».
Возможно, если бы мы писали книгу сами, мы бы дополнили ее и более современными данными, и более точными программами, но как текст самой книги, так и содержание компакт-диска защищено лицензионными соглашениями с издательством Springer-Verlag и с авторами книги. Поэтому все претензии и пожелания по содержанию книги разумно направлять не издательству «Питер», а правообладателю (все ссылки можно получить поиском по названию «Astronomy on the Personal Computer» на сайте http://www.springer.de. Не забудьте выбрать английский язык на главной странице сайта).
Ну и последнее. Я еще раз хочу подчеркнуть, что эта книга была пробной. Ее могло бы и вообще не быть. И объем выбранной для издания книги и газетная бумага: все определялось необходимостью вписаться в выделенный нам бюджет. По крайней мере, удалось отстоять твердую обложку, что, на мой взгляд, важнее газетной бумаги. Теперь все будет зависеть от того, насколько успешными будут продажи этой книги. В случае успеха мы продолжим издание книг астрономического в частности, и физико-математического вообще направления.
Самое главное, что мне хотелось бы сейчас выяснить, это какую книгу издавать следующей. Это не может быть узкопрофессиональная книга. Эта книга должна быть интересна и доступна по цене наиболее широкому кругу читателей. Перед нами стоит задача возрождения физико-математической и астрономической литературы в стране, но сделать это можно, только начав с выпуска наиболее продаваемых книг.
С уважением, Алексей Пасечник, заместитель заведующего редакцией компьютерной литературы издательства «Питер».
mailto://a.pas@piter.com, http://www.piter.com, http://ru.internations.net/apas.

[ 30-01-2002: Сообщение редактировал: Alexey Pasechnik ]

Algen
31.01.2002, 21:12
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения tlgleonid:
Хотя конечно досадных опечаток в книге избежать не удалось. И причем есть ошибки в напечатанных текстах программ.<HR></BLOCKQUOTE>

Буду признателен за сообщения о замеченных опечатках (можно высылать на algen@mailru.com). Кто его знает, вдруг будет допечатка тиража или переиздание. Да и вообще хочется составить себе представление о том, насколько серьезные допущены промахи - как-никак первый раз выпускали книжку с таким количествовм формул. Кстати, происхождение ошибок в программах совсем непонятно - их брали прямо из файлов и меняли только переводили комментарии, да иногда переводы строк убивали.

tlgleonid
01.02.2002, 00:06
Я и не высказывал претензии к переводчикам книги. Книга сделана очень хороше: удачная обложка, в результате которой книга не портится. А в книге главное не бумага, а содержание. Я только хотел высказать, чего на мой взгляд, в книге не хватает. Хотя конечно досадных опечаток в книге избежать не удалось. И причем есть ошибки в напечатанных текстах программ.
А вообще за книгу большое спасибо. И желающих ее купить немало. Я уже писал, что пару раз приходил на книжный рынок, а мне говорили, что книга распродана и ждут новую партию. Несколько человек заинтересовалось ею на работе (не любителей астрономии).
Теперь о том, какие еще книги хотелось бы увидеть. В первую очередь хорошую книгу для наблюдателей астрономии. Что-то вроде путеводителя по красотам неба с поисковыми картами и описанием, в какой инструмент это можно увидеть. Подойдет и "Наблюдени в бинокуляр" и "Прогулки по небу с телескопом" и "365 ночей", "Объекты месье", "Объекты Гершеля". Такую книгу неплохо было бы перевести на русский и продавать ее там, где продают телескопы. Ведь людей, которые имеют бинокль или трубу очень много, а литература для них не издается. Вот и смотрят они только на Луну да на планеты.
Несколько упрощенный справочный вариант вышел в серии маленьких книг Все обо всем "Космос".

tlgleonid
01.02.2002, 15:45
Ну, например стр 57. Внизу страницы два фрагмента программы. В самом нижнем четвертая строка начинается так:
MiniMoon(MjdUT,HA,DEC);
а должно быть (как видно из предыдущего примера на этой странице чуть выше
MiniMoon(MjdUT,RA,DEC);

08.02.2002, 10:31
Ну вот и мне пришла. Из критических замечаний-- 1) почему формулы делали не в ТеХе? (а по-моему в Ворде???) 2) беда с пунктуацией: много ошибок с запятыми. 3) много опечаток даже на первый взгляд (я пока что бегло пролистал)
Из плюсов-- классная обложка, глава по определению орбит (этого даже у Мееуса нету).

Algen
08.02.2002, 14:07
Спасибо за отклик!
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения Pietro:
1) почему формулы делали не в ТеХе? (а по-моему в Ворде???)
<HR></BLOCKQUOTE>
Формулы набраны в Corel Ventura 8 - корпоративный стандарт. Переходить на TeX ради выпуска одной книги с формулами не было резона. Пришлось бы многое менять в технологическом цикле.

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>2) беда с пунктуацией: много ошибок с запятыми.
3) много опечаток даже на первый взгляд (я пока что бегло пролистал)
<HR></BLOCKQUOTE>

Если будет не лень составить список ошибок/опечаток (хотя бы некоторых), присылай на algen@piter.com.

08.02.2002, 15:53
Как правило, формулы, набранные не в ТеХ'е сразу бросаются в глаза своим непрофессиональным внешним видом, как и в этом случае. "Режут глаз", если хотите. Если издательство выпускает книги с формулами, наверное стоит задуматься о ТеХе. По поводу ошибок--пришлю что нашел.

Alexey Pasechnik
20.03.2002, 13:15
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения Pietro:
Если издательство выпускает книги с формулами, наверное стоит задуматься о ТеХе.<HR></BLOCKQUOTE>

Задумались. Вот именно сейчас нам нужны наборщики в TeX. Три недели ищу, не могу найти желающих. images/smiles/icon_confused.gif

20.03.2002, 14:52
Сочувствую! Я вот только что дописал свой дисер--в ТЕХе, разумеется. Работа одно удовольствие! С ужасом и содроганием вспоминаю M$ Equation Editor. Ну а вам желаю успехов, вообще это такая распространенная и популярная программа, что я удивляюсь вашим трудностям.

Alexey Pasechnik
02.04.2002, 19:16
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quoteНу а вам желаю успехов, вообще это такая распространенная и популярная программа, что я удивляюсь вашим трудностям.[/B]

Вот вы удивляетесь, а между прочим, с момент написания моего предыдущего сообщения о том, что нам нужны наборщики в TeX прошло уже почти две недели. Никто не откликнулся.

Fidel
12.10.2002, 09:13
По просьбе московского любителя астрономии Владимира Суворова публикую здесь вопрос:

"Удалось ли кому либо из тех, кто приобрел книгу скомпилировать исходники программ прилагающиеся на CD?"

Я так понял у Володи проблемы с этим делом. Компилятор выдает гору ошибок. Он использует, кажется Borland C++ 5,0.

Alexander Novikov
12.10.2002, 13:17
Ну ессесно.

Думаю, если книга современная, она рассчитана под MSVC. Это единственно правильный C++ компилятор (ну или еще intel c compiler, но это во-первых c, а не c++, а во вторых он жутко неудобен в использовании).

Alexey Pasechnik
14.10.2002, 14:35
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения anovikov:
Ну ессесно.

Думаю, если книга современная, она рассчитана под MSVC. Это единственно правильный C++ компилятор (ну или еще intel c compiler, но это во-первых c, а не c++, а во вторых он жутко неудобен в использовании).<HR></BLOCKQUOTE>

Скомпилировать программы проще всего с помощью GNU C/C++. Это свободно распространяемый компилятор, который перенесен практически на все пплатформы. Для Win32 см., например, http://www.bloodshed.net/devcpp.html. Полный дистритубив (вместе с IDE) занимает около 10 Мбайт.

Правильный Make-файл на прилагаемом к книге диске имеется (в каталоге исходных текстов для Linux -- не бойтесь: он работает и под Win32)

Однако и с Borland C++ проблема решается довольно легко. Вот, например, что написал по этому поводу Yaroslav Bilozor (Yaroslav.Bilozor@p12.f1.n6023.z2.fidonet.org) в конференции su.astronomy:


хочy в данном письме обобщить свой скpомный опыт по компиляции под windows
пpогpамм из книги с помощью компилятоpа Borland C++ 5.5 ( aka C++BUILDER
COMMAND LINE TOOLS).

Как вам известно, в данной книге для компиляции использyются MS Visual C++ и
gnu C++. Достаточно pасточительно ставить сотни мегабайт MSVC из-за желания
добавить/попpавить паpy стpок в пpогpамме, а gnu C++ хоть и есть под windows,
но imho не совсем yдобен для неподготовленного.

итак, пpистyпим.

1. скачиваем с www.borland.com (http://www.borland.com) дистpибyтив BCC55 - это пpимеpно 8 мегабайт. Пpи
желании можно также скачать апдейты - это еще паpy мегабайт. Т.е. час интеpнета
на 33600, это гоpаздо дешевле пиpатского компакт-диска с VC++. Более - это
легально images/smiles/icon_wink.gif

2. yстанавливаем его и вдyмчиво читаем readme.txt:

там сказано

From the bin directory of your installation:
a. Add "c:\Borland\Bcc55\bin"
to the existing path

b. Create a bcc32.cfg file which will set
the compiler options for the Include
and Lib paths (-I and -L switches to
compiler) by adding these lines:
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. Create an ilink32.cfg file which will set
the linker option for the Lib path by
adding this line:
-L"c:\Borland\Bcc55\lib"

замечание - эти два файла создаем в c:\Borland\Bcc55\bin\.

здесь все понятно. делаем, что пpосят.

3. Тепеpь начинается самое интеpесное. Hаша задача создать библиотекy
APC_LIB.lib.

копиpyем с компакт-диска от книги в какyю-нибyдь диpектоpию файлы APC_*.h и
APC_*.cpp.
в командной стpоке пишем

bcc32 -c apc_*.cpp

затем из полyченных объектных файлов собиpаем библиотекy:

tlib APC_LIB +apc_cheb.obj + apc_de.obj + apc_io.obj + apc_kepler.obj +
apc_math.obj + apc_moon.obj + apc_phys.obj + apc_planets.obj + apc_precnut.obj
+ apc_spheric.obj + apc_sun.obj + apc_time.obj + apc_vecmat3d.obj

Мы полyчили библиотекy apc_lib.lib. Тепеpь пеpенесем ее в
c:\Borland\Bcc55\lib\, а файлы apc*.h в c:\Borland\Bcc55\include\.

Тепеpь попpобyем скомпилиpовать пеpвyю пpогpаммy - COCO.

создаем каталог COCO. копиpyем в него coco.cpp.

пишем в комстpоке

bcc32 coco.cpp apc_lib.lib

и полyчаем coco.exe. =:-)

Все :-)

Fidel
16.10.2002, 14:40
Благодарю за помощь - распечатаю и отдам Володе - о результатах, получилось - не получилось, сообщу дополнительно.

Венедикт
05.06.2004, 14:45
У кого нибудь есть исходники на Паскале? В обмен могу выслать исходники на C++ с CD-ROMа.
По ссылке, указанной в книге и в сообщениях форумов, происходит редирект на книжный магазин Спрингер-Он-Лайн. Скачать дистрибутив BCC55 с borland.com также не удается, можно скачать 6-ю версию, но она занимает более 100 Mb, при нашей скорости закачки уйдёт около месяца, и уйма денег.

Sigma72
05.06.2004, 20:33
У меня есть архив с паскаль-исходниками от 3его английского издания. Куда?
Взамен ничего не надо - сишные у меня тоже есть images/smiles/icon_smile.gif

Венедикт
16.06.2004, 05:56
<blockquote>Цитата:<hr />Автор - SLACK:
Куда? <hr /></blockquote>Пожалуйста, на starson@rin.ru или starson@nm.ru