Revision [4328]
This is an old revision of Programming made by linuxcbon on 2009-11-17 01:09:39.
Programming With Puppy
So what is a programming langauage 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
- TclTk Tcl/Tk - Scipting Language with a GUI toolkit. Used for the drive mounter MUT (and others). LearnTclTk 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
- LuaProgramming MurgaLua - will be in Puppy 2.16 and greater.
- bash Shell Scripting - Is used extensively in Puppy. Here are some ShellScriptsExamples 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 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 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
- LuaProgramming MurgaLua - Based on LuaProgramming Lua, Overview of Lua on wikipedia
Puppy will use Murga Lua starting in 2.16 and may include a new control panel.
- LuaProgramming 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.
- TclTk 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, PBrenameTclTk 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.
examples: Network wizard, Pmount, Soxgui, Grafburn, Pfind, Pbackup
C with GTK1 - Gcrontab, Gtkfind, Gtksee, Dillo, SSH gui, Turma, uxplor, xpdq, Xproc.
http://www.murga.org/~puppy/viewtopic.php?t=11778
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
TclTk Tcl/Tk - You're pretty much alll set also. Check the TclTk 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.