Как программировать в Puppy

Puppy — маленький дистрибутив, но он предлагает широкий выбор языков программирования. По умолчанию Live-CD ничего не устанавливает для компиляции программ С или С++, однако, имеется дополнительный файл devx_xxx.sfs (где xxx — это номер версии Puppy, например, 210), который превращает Puppy в среду, полностью поддерживающую компиляцию С/С++ (также плюс компилятор FreeBASIC). Даже и без файла devx_xxx.sfs Live-CD содержит множество языков, включая обработку сценариев Ash/Bash, Tcl/Tk и PuppyBasic. Эта страница посвящена обзору программных возможностей Puppy…

Ash/Bash сценарии

Язык, уже полностью готовый к использованию в Puppy, это сценарий командной оболочки (command-shell scripting). Сценарий оболочек Unix/Linux существует испокон веков и ещё столько же будет существовать. Под «командной оболочкой» я понимаю пользовательский интерфейс, который вы используете при работе с командной строкой. Когда вы работаете под X (графическая оконная оболочка), командная строка находится в окне терминала, когда вы покидаете X, вы снова оказываетесь в командной строке.

Программа, которая запускается и взаимодействует с вами, называется командной оболочкой (command-shell), в Линуксе это обычно оболочка Bash. В Puppy у вас есть выбор между двумя оболочками, Bash и Ash.

Заметьте, что под X в окне терминала запускается Bash. Если вы выходите из X в командную строку, то запускается Ash. Для однозначного определения командной оболочки, с которой необходимо работать, в первой строке сценария следует поместить "#!/bin/bash" или "#!/bin/sh" (или "#!/bin/ash").

Сценарий оболочки (shell script) является настоящей программой, только он хранится в текстовом файле и не требует компиляции. Сценарии могут быть очень сложными, в Puppy их имеется большое количество.

Эта страничка — не учебник по разработке Ash/Bash сценариев — есть множество книг на эту тему, а также ссылок в Интернете. Парочку таких ссылок вы найдёте здесь: "Advanced Bash-Scripting Guide", "Bash Programming --- Introduction HOWTO".

Всё, что вам нужно для написания Ash/Bash сценариев, это текстовый редактор, в Puppy есть два консольных редактора, e2 и MP, и два GUI редактора, Geany и Leafpad. Geany и MP интересны тем, что могут подсвечивать синтаксис для Ash/Bash сценариев. (см. также ML ниже в разделе Tcl/Tk)

Получайте удовольствие, разрабатывая сценарии для Puppy!

В Puppy есть масса документации и инструментов, помогающих разрабатывать сценарии:

  • e2, mp, Geany, Leafpad — текстовые редакторы.
  • ash — командная оболочка, использующаяся в Puppy.
  • busybox — набор базовых Unix/Linux консольных приложений, которые могут быть использованы в сценариях.
  • xDialog — GTK GUI заготовки для сценариев.
  • xmessage — очень простые X11 GUI заготовки диалогов для сценариев.
  • xcut — консольное приложение для работы с буфером обмена (вырезать — вставить).
  • gtk-shell — очень гибкая, простая и маленькая GTK альтернатива предыдущим xmessage и Xdialog. Может показывать/редактировать файлы, показывать диалог выбора файла, принимать пользовательский текст, работать с кнопками выбора. Документации нет. Для справки просто наберите (в консоли) # gtk-shell -h.
  • gtkdialog3 — ещё одна альтернатива для gtk-shell, xmessage и Xdialog. gtkdialog — это GTK2 приложение, которое читает XML-файл, описывающий формат диалога и взаимодействие с пользователем, с его помощью можно создавать невероятно изощрённый GUI (графический пользовательский интерфейс). Впервые эта программа была представлена в Puppy 0.9.7. Я думаю, что gtkdialog венчает нашу подборку (pick of the branch)!

В настоящий момент в Puppy имеется две версии gtkdialog, это gtkdialog2 и gtkdialog3 — предпочтительней использовать последнюю версию, так как, скорее всего, она одна останется в Puppy — другими словами, всегда запускайте бинарник gtkdialog3.

Вот некоторые сценарии, использующиеся в Puppy:

/usr/sbin/pmount
/usr/sbin/timezone-set

Tcl/Tk

Tcl это интерпретируемый язык сценариев, подобный описанным выше Ash-сценариям, и с той же лёгкостью Tcl-программа может использоваться в качестве сценария командной оболочки. Однако, чем действительно Tcl выделяется, так это библиотекой Tk, которая превращает Tcl в полноценную программную среду с GUI (графическим пользовательским интерфейсом). Существует много дополнительных библиотек для Tcl, в Puppy на настоящий момент имеется

  • Tk (стандартная библиотека, обеспечивающая все базовые элементы управления (widgets)),
  • Img (Tcl/Tk работают только с gif-файлами, эта библиотека добавляет работу с jpeg, png и др.),
  • Combobox (сложный элемент с выпадающим списком),
  • BWidget (ещё несколько сложных элементов управления).

Всё это вы найдёте в каталоге /usr/lib.

Много приложений в Puppy (также и в PET-пакетах) написаны на Tcl/Tk, это Slidedraw, TkZip, CDTAR, XS, snamp, tkpppoe, phv, TkDVD и regexpviewer.

Так почему же Tcl? Почему не Perl или Java? Для меня лично имеются три причины: существует огромное количество доступных GUI приложений, Tcl/Tk действительно мал по размеру и это язык, который очень прост для изучения. Последняя причина чрезвычайно важна, так как благодаря этому я могу легко читать код, написанный другими людьми, чего не скажешь о языках, основанных на Си-синтаксисе, имеющих трудный для понимания код (C++, Java).

Ещё одна причина для принятия во внимание — поддержка. Tcl/Tk сообщество очень активно, на его сайтах имеются горы документации, учебников и примеров кода. Tcl/Tk широко распространён — он включён в каждый дистрибутив Unix и Linux. Также он доступен и в других операционных системах, таких как Windows и Mac.

Вот пара инструментов, имеющихся в Puppy и помогающих в Tcl/Tk программировании:

  • ml — консольный редактор MP и оконный редактор Beaver умеют подсвечивать синтаксис Tcl/Tk, однако у Puppy есть другой текстовый редактор, называемый ML, специально предназначенный для работы с Tcl/Tk. Он тоже умеет подсвечивать синтаксис, а ещё мгновенно переходить к тексту нужной процедуры (jump-to-procedure).
  • tkcon — это консоль, подобная эмулятору терминала rxvt, фактически делающая то же самое, но с дополнительными возможностями, рассчитанными на Tcl/Tk программирование — В ТЕКУЩЕЙ ВЕРСИИ PUPPY ОТСУТСТВУЕТ.

Я не размещал в Puppy документацию по Tcl/Tk. Поэтому либо раздобудьте хорошую книгу, либо изучайте онлайн-документацию в Интернете. Вот несколько ссылок по Tcl/Tk:

 
programming/howto-program.txt · Последние изменения: 01.03.2016 в 18:18 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki