Источник: http://www.mycomp.com.ua/text/7142


N 26 (301) 29.06.2004

Окончание, начало ...

Пингвин на физмате

Владислав СВЕТЛИЧНЫЙ



Для повседневной работы мне требовалось что-либо очень мощное, поэтому я обратил внимание на две программы═- Octave ( http://www.octave.org) и Scilab ( http://scilabsoft.inria.fr).

Математические пакеты

Вначале об Octave. Эта программа работает в консольном интерактивном режиме, как и gnuplot (см.═первую часть статьи). Кстати, gnuplot прекрасно интегрирована в Octave═- как вы думаете, что означают команды gplot, gsplot, gset, gshow? Что мне очень понравилось, так это автодополнение функций и команд по клавише Tab═- насколько мне известно, немногие СКМ (средства компьютерной математики) могут этим похвастать. Разработчики также заявляют о совместимости с MathLab. Как я уже говорил, в программе можно строить графики функций, причем двумя способами═- в стиле gnuplot или MathLab. Если вы выбрали первый способ, не забывайте, что переменные в графиках функций должны быть предварительно описаны, также должна быть определена их область определения. Допустим, если вы хотите построить синусоиду командой gplot [-5:5] sin(x), то предварительно должны ввести x=-5:0.01:5. Фактически, этой командой создается массив чисел от -5 до 5 с шагом 0.01. Если же вы выбрали второй способ, настоятельно рекомендую прочитать доку к Octave либо к MathLab═:-). Пока что портит впечатление от программы все тот же консольный интерфейс, но это ?пока что?═- разработчики Octave обещают удобный GUI когда-нибудь в отдаленном светлом будущем.

Следующая рулезная программа═- Scilab(Рис. 1). Интерфейс хоть и иксовый (бибиотека═ Tk), но принцип работы с программой тот же: вы вводите команды═- Scilab выдает ответ. Первое, что меня прямо-таки восхитило в Scilab═- это прекрасно написанная документация, в которую включено великое множество различных примеров на все случаи применения программы, что не может не радовать. Во-первых, изучать программу на наглядных примерах намного легче, быстрее и интересней, чем читать скучные мануалы, как бы хорошо они ни были написаны. Во-вторых, хорошо написанный пример подвигает юзера на создание своих собственных творений точно так же, как и третий Unreal вдохновляет будущего Кармака или МакГи на написание первого ?Hello, world?, песня ?Валенки?═- будущего Эма на создание первого микса, а вирус MyDoom═- будущего Митника на ломание школьной сетки═:-).

Рис. 1.

Вернемся к Scilab. В этой программе очень хорошо реализована линейная алгебра, матричное исчисление, работа со статистическими функциями, а также графика и симуляция различных процессов. Что касается графики═- в отличие от Octave, Scilab использует собственный движок рендеринга графических данных( Рис. 2 ) (как вы уже знаете, Octave для этой цели использует gnuplot), который не так функционален, но значительно более удобен. Например, мышью можно приближать и отдалять изображение, а также вращать его. Опции сохранения графиков и экспорта в форматы GIF, PPM, XFIG и Postscript находятся в меню File, где и должны они быть. Эти же самые действия можно производить, вручную набирая необходимые команды, но даже в этом случае управление программой намного удобнее, чем в Octave и gnuplot.

Рис. 2.

Немного слов о симуляции. В состав Scilab входит Scicos═- одновременно редактор блочных диаграмм и фронт-энд для Scicosim (SCICOs SIMulation function). При помощи различных блоков и соединительных элементов можно запрограммировать любой процесс, а затем запустить его на симуляцию ( Simulate═> Run). На Рис.═3═- генератор чисел Фибоначчи в Scicos. Очень рекомендую зайти в примеры (кнопка Demos) и изучить все демки в разделе Scicos. Обратите внимание на пример Bouncing ball═- выглядит довольно эффектно.

Также Scilab поддерживает скрипты, возможно использование библиотеки Tk вкупе с языком═ Tcl. Но если признаться честно, у меня нет особенного желания учить этот язык, поэтому ничего определенного не могу сказать об этом.

Рис. 3.

Электроника

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

Для конструирования схем в период моего пользования ?Маздаем? я юзал замечательною CAD-систему EAGLE от компании Cadsoft. Когда же я перешел на Линукс, то долго не мог найти подходящую программу. Некоторое время я пользовался Oregano из дистрибутива Mandrake, но стоило мне встретить пакет gEDA/gaf (который, кстати, вошел в дистрибутив ASP═Linux═9.2), и я был сражен им наповал.

Итак, gEDA/gaf ( http://www.geda.seul.org)═- многофункциональный пакет, предназначенный для инженеров-электронщиков и включающий следующие программы: gschem, gnucap, gnetlist, gerbv и еще множество мелких утилит.

Gschem═- главная программа данного пакета, предназначенная для конструирования электронных схем. Включает в себя ОГРОМНЕЙШУЮ библиотеку элементов электронных схем (к сожалению, отечественные элементы в нее не входят═). Интерфейс программы хоть и в SDI-стиле (Ликбез: SDI (Simple Document Interface)═- приложение состоит из одного или нескольких равноправных окон; примеры═- GIMP, Delphi, Dia. Есть еще и MDI-интерфейс (Multi Document Interface)═- главное окно содержит в себе несколько дочерних, которые можно перемещать только в пределах главного; примеры═- KDevelop, Qt═Designer, Opera), но тем не менее очень удобен. Используемая библиотека виджетов═- GTK. Работа с программой интуитивна и проста═- вы добавляете в схему новые элементы ( Рис.═4═- так выглядит диалоговое окно выбора элементов; если ваш оконный менеджер позволяет, советую выбрать в свойствах этого диалога Поверх всех окон, чтобы не щелкать каждый раз на панели задач, когда вам нужно будет добавить новый элемент в схему) и соединяете их между собой проводниками. Для работы с программой очень желательно иметь трехкнопочную мышь, так как с помощью средней кнопки осуществляется перемещение отдельных элементов. При работе с gschem также большую роль играют ?горячие клавиши?, которые необходимо заучить. Впрочем, наличие третьей кнопки мыши и знание горячих клавиш требуется для работы со всеми без исключения CAD-программами, а также 3D-пакетами. На Рис.═5═- схема простейшего двухкаскадного УНЧ, выполненная мною в gschem.

Рис. 4. ═══ Рис. 5.

Несколько слов о консольных утилитах, которые являются ?довеском? к gschem. refdes_renum автоматически нумерует элементы схем, например резисторы═- R1, R2, R3, конденсаторы═- C1, C2, C3 и═т.д. Использование═- refdes_renum file.sch , где file.sch═- файл со схемой.

gnetlist- создает так называемые netlist-файлы. Служит для экспорта в форматы систем проектирования печатных плат, в том числе и в pcb, которая рассмотрена ниже.

gmk_sym, tragesym═- утилиты для создания собственных элементов схем. Вторая утилита, tragesym, более навороченная, более удобная для использования, вдобавок, написана на моем любимом языке программирования python═:-).

Для симуляции схем предназначена еще одна программа из пакета gEDA/gaf═- gnucap. Это уже консольная утилита, и для ее освоения понадобится прочитать документацию (я вас еще не достал этой документацией?) Среди ее фишек═- поддержка не только биполярных транзисторов, но и полевых═- JFET и MOSFET (это так американцы называют полевые транзисторы с изолированным затвором). Разработчики старались сделать свой продукт совместимым с симулятором SPICE, и сама концепция программы весьма напоминает этот самый SPICE. Несмотря на то, что об этой программе можно рассказывать очень долго, я не стану этого делать. Я могу подсказать только о том, что не всегда лежит на виду, и описать те проблемы, с которыми сам столкнулся.

Для проектирования печатных плат я использую программу pcb ( http://pcb.sourceforge.net, Рис.═6), основанную на библиотеке Tk. Обладает достаточно большой библиотекой различных деталей═- опять же, об отечественных можете благополучно позабыть. Может импортировать netlist-файлы, созданные в gnetlist. Больше мне о ней сказать нечего, работа с программой настолько интуитивна и проста, что для вас не составит особого труда разобраться с ней самим.

Рис. 6.

Другие CAD-системы

Начнем с QCad ( http://www.ribbonsoft.com, http://www.qcad.org). Когда-то мне говорили, что единственное достоинство этой программы═- это ее бесплатность═:-) (QCad═- это первая CAD, которая стала распространяться по GNU═GPL), но поработав некоторое время с QCad, я осознал, что это не так. Конечно, это вам не SolidWorks или КОМПАС, и даже не AutoCAD═- в QCad нет даже 3D-режима, только лишь 2D. Но... Попробуйте за полчаса научить полнейшего чайника по вопросам CAD-систем создавать чертежи в SolidWorks или, например, T-Flex. Что, не получается? То-то. А вот QCad, не в пример другим CAD, построена таким образом, что разобраться в ней сможет любой пользователь, умеющий включать компьютер и запускать KDE/ GNOME, XFce═etc., а также имеющий опыт работы с графическими редакторами вроде Paint'а. Вы говорите, QCad малофункционален? Извините, но профессиональные CAD-системы═- это то программное обеспечение, с помощью которого делаются деньги (и притом весьма большие), поэтому за их функциональность нужно платить. Если же у вас есть жгучее желание кому-то заплатить, вы можете приобрести у компании RibbonSoft коммерческого ?старшего брата? QCad═- программу CAM═Expert.

Еще несколько слов о QCad. Интерфейс программы основан на Qt, скриншот═- Рис.═7. Одна из функций, приближающих QCad к профессиональным CAD═- это возможность написания скриптов на Python'е. Я не буду сейчас сильно вдаваться в подробности, могу только сказать, что в скором времени я собираюсь сделать мини-цикл статей по программированию на Пайтоне.

Рис. 7.

К профессиональным CAD я отношу VariCAD ( http://www.varicad.org)═- насколько мне известно, одна из первых коммерческих CAD для Linux. VariCAD предоставляет возможность как двумерного черчения, так и трехмерного твердотельного моделирования. Сама программа мне почему-то очень напомнила AutoCAD. Интерфейс программы основан на Qt-библиотеке и кажется излишне нагроможденным по сравнению с тем же QCad (но это мое субъективное мнение). Естественно, описывать все возможности я не буду, поэтому лучше всего будет, если вы сами потрогаете все ручками, поработав с триальной версией программы. Она входит, например, в российский дистрибутив ASP Linux═9.2 Deluxe. Если же вам никак не хочется платить больше 200═гривен (а именно столько стоит этот дистро) только из-за одной программы, то на главном сайте программы вы найдете ссылки на rpm-пакеты, собранные для разных дистрибутивов, размер которых═- в пределах 10═Мб. Ну а если вы захотите купить VariCAD, то замечу. что цена на этот продукт═- одна из самых демократичных.

Это далеко не полный список CAD- и CAM-систем для Linux. В Linux были портированы такие программы как ANSYS (каждый, кто серьезно занимался 3D-проектированием или моделированием, обязательно слышал об этом великолепнейшем ПО), CADDA, Microstation и многие другие. Но о них я вам рассказывать не буду, потому как нам с вами для того, чтобы приобрести что-либо из вышеперечисленного софта, нужно либо работать эдак годиков десять, либо ограбить какой-либо из швейцарских банков═:-). Предвижу ваш вопрос═- фокусы с крэками здесь не проходят, и не надейтесь, потому как авторы CAD и CAM-систем к защите своего ПО от несанкционированного взлома подходят намного серьезнее, чем их коллеги из Microsoft.

Наконец, о сравнении физматовского и инженерного софта в Linux и в Винде. С одной стороны, налицо явная отсталость Scilab от Maple и Qcad от AutoCAD. Но с другой стороны, для Windows не так много бесплатного ?физматовского? софта, ну а о бесплатной и в то же время довольно неплохой CAD-системе (имеется в виду QCad) приходится только мечтать. Крупные коммерческие программы либо уже портированы в Linux, либо находятся в стадии портирования.


_ Выход _