Programming With Puppy

So what is a programming language anyway?

Programming Languages are how people give instructions to the computer. For info see this wikipedia article∞.
Puppy has a few built-in, and more can be added

Overview of Languages included in Puppy

  • C - Many programs are written using C. Plus they don't need any interpreter
  • Tcl/Tk - Scipting Language with a GUI toolkit. Used for the drive mounter MUT (and others). Learn how to program in Tcl/Tk
  • PuppyBasic - also called WxBasicscript is a modified (and smaller) version of wxBasic with new functions for the Linux platform. PuppyBasic was written by Mark Ulrich
  • MurgaLua - will be in Puppy 2.16 and greater.
  • Shell Scripting - Is used extensively in Puppy. Here are some examples.
  • There may be some not listed here yet. (feel free to add them)
  • Note: Puppy can run programs made with these languages, but to write with them you may need other files. See compiling help.

Different Types of Languages

The code that a computer executes is binary, 0's and 1's. Humans have great difficulty creating such code directly so we use programming languages to create the binary code.
Assembler is a symbolic language humans use to represent each computer instruction, one at a time, which is translated into binary code.
Macro Assembler uses more powerful constructions that can generate multiple machine instructions from one line of code.
Interpreters are high-level languages that are translated and executed line-by-line. This is a quick way to develop a program, but the execution is not as efficient. (examples are Java, Ruby, and Python)
Compilers are high-level languages that are translated into computer code for later execution. (examples are C, C++, Fortran, BASIC) Compiling Help

The development process may be slower and more tedious, but this maximizes execution speed.

Shell Scripting Languages are not compiled and are a subset of Interpreted Languages. They are used throughout puppy for many tasks. (examples Bash, Ash)

Common Languages

  • C is very common for programs using the Gtk toolkit (the Gnome equivalent of the Win32 API).
  • C++ is very common for programs using the QT toolkit (the KDE equivalent of the Win32 API).
    C and C++ are the core languages used for writing Linux itself.
  • Python, Perl, Ruby, Java - are not used by Puppy but may be used by some applications. Including them in Puppy would make Puppy bloated.
  • Shell Scripting (Bash/ash) - Puppy uses the bash-shell for a lot of its scripting needs.

Other Languages

  • MurgaLua - Based on Lua, Overview of Lua on wikipedia
    Puppy will use Murga Lua starting in 2.16 and may include a new control panel∞.

    • MurgaLua is a scripting language that provides nice GUI's, Networking, Databases & XML in a small runtime (about 500k).
    • It makes it easy to create rich applications easily (preferably with a GUI builder)
    • It can deploy to both Linux and Windows with no changes to the code.
    • It isn't a completely cryptic and propriety language.
  • Tcl/Tk - used in puppy for The drive mounter MUT
  • Freebasic is an open source BASIC compiler wikipedia link

Examples of Programming Languages (mostly in Puppy)

PuppyBASIC - PuppyBackground, PBcdripper, Puppysearch, PBrename
Tcl/tk - Tkdvd, Pvolume, TKmines, TKdiff
Perl program using Gtk: http://www.murga.org/~puppy/viewtopic.php?t=3755
Java - jrisk.pup

  • java is not that common, but there are some nice applications already.

Shell Scripting - Puppy makes intensive usage of the scripting capabilities of the bash-shell.

examples: Network wizard, Pmount, Soxgui, Grafburn, Pfind, Pbackup

C with GTK1 - Gcrontab, Gtkfind, Gtksee, Dillo, SSH gui, Turma, uxplor, xpdq, Xproc.

Contributing to Puppy

Currently there is no formalized method to contribute code to Puppy. If you want to contribute code just make a post on the forum.
If you would like to help find bugs in Puppy, there is a Mantis bug tracker for Puppy. It is currently only semi-official to the best of my knowledge.
forum link∞ - link to bugtracker

Note: If you just want to view the bugs, you can login as login:guest password:guest

Getting Started Actually Programming in Puppy

If you want to program in C then you will need devx_214.sfs (if you are using Puppy2.14)
See Compiling for more info about setting up your environment.
PuppyBasic - you're pretty much all set, just check the PuppyBasic page for more help

see also WxBasicscript and WxBasic

Tcl/Tk - You're pretty much alll set also. Check the Tcl/Tk page for more help.

IDEs: (Integrated Development Environments)
KDE has Kdevelop
http://www.kdevelop.org/
Unfortunately, KDE is quite huge, so not by default in Puppy.
This might be a good alternative (no package yet):
http://women.kde.org/articles/tutorials/kdevelop3/
Qt Designer can use QT without the additional KDE libraries.
KDE is a desktop based on QT, but also requiring additional libraries.
An example for a QT application without KDE libraries is the webbrowser Opera.

A "classic" way to write programs for Puppy would be C / Gtk.
Tutorials see http://gtk.org
There also is a "visual" tool:
http://glade.gnome.org/
But we have no package for Puppy yet, as most of the programs made for Puppy are based on dialogs/scripts.
Also Glade might require a full Gnome installation (not sure though), while Puppy only uses the smaller Gtk subset.
Gnome is a desktop based on the Gtk libraries and many additional Gnome-libraries.
We only have a testversion of Gnome, it is too bloated to be seriously maintained by us.
http://www.murga.org/~puppy/viewtopic.php?t=9599&highlight=gnome

An enhanced editor/IDE without visual designer:
http://www.murga.org/~puppy/viewtopic.php?t=9077&highlight=mingw
http://www.murga.org/~puppy/viewtopic.php?t=4413

for a gui designer for tcl there's visual tcl:
http://vtcl.sourceforge.net/

Languages IN Puppy:

Linux Script (similar to MS Dos batch files - ash and bash) Widely used by GuestToo and Barry

TclTk - LearnTclTk

Tcl/tk (pronounced tickle and very powerful and mature)
XUL - built into Mozilla, may have potential for Puppy.



CategoryDevelopment