Revision history for Programming
Additions:
Page no longer used, please see [[HowToProgramming Programming Index]].
Deletions:
Additions:
Page no longer used, please see [[HowToProgramming How to Program]]
Deletions:
====Programming on Puppy Guide====
**Guide Tutorials**
~[[PuppySchool Puppy School]] - learn to program
~[[http://puppylinux.com/howto/programming.htm Programming on Puppylinux.com]]
~[[Compiling Compiling]]
**Tools**
~[[Bash Bash and Ash shells]]
~[[http://www.murga-linux.com/puppy/viewtopic.php?p=590114#590114 Shell Simple Intro thread]]
~[[Leafpad Leafpad text editor]]
**Language Comparison**
~[[ProgrammingLanguages Which programming language?]]
~[[http://www.techarena.in/guide/16768-how-start-programming-language-choose.htm Techarena - which programming language?]]
**Programming Languages and Environments**
~[[GenieProgramming Genie]]
~[[GtkDialog GtkDialog]]
~[[Python]]
~[[Qt]]
~[[ToolCommandLanguage Tcl/Tk]]
~[[ValaGenieintro Vala Genie]]
----
==Categories==
CategoryDevelopment
Additions:
**Language Comparison**
~[[ProgrammingLanguages Which programming language?]]
~[[http://www.techarena.in/guide/16768-how-start-programming-language-choose.htm Techarena - which programming language?]]
**Programming Languages and Environments**
~[[ProgrammingLanguages Which programming language?]]
~[[http://www.techarena.in/guide/16768-how-start-programming-language-choose.htm Techarena - which programming language?]]
**Programming Languages and Environments**
Deletions:
[[ProgrammingLanguages Which programming language?]]
[[http://www.techarena.in/guide/16768-how-start-programming-language-choose.htm Which programming language to choose]]
Additions:
~[[PuppySchool Puppy School]] - learn to program
~[[http://puppylinux.com/howto/programming.htm Programming on Puppylinux.com]]
~[[Compiling Compiling]]
~[[Bash Bash and Ash shells]]
~[[http://www.murga-linux.com/puppy/viewtopic.php?p=590114#590114 Shell Simple Intro thread]]
~[[Leafpad Leafpad text editor]]
~[[GenieProgramming Genie]]
~[[GtkDialog GtkDialog]]
~[[Python]]
~[[Qt]]
~[[ToolCommandLanguage Tcl/Tk]]
~[[ValaGenieintro Vala Genie]]
~[[http://puppylinux.com/howto/programming.htm Programming on Puppylinux.com]]
~[[Compiling Compiling]]
~[[Bash Bash and Ash shells]]
~[[http://www.murga-linux.com/puppy/viewtopic.php?p=590114#590114 Shell Simple Intro thread]]
~[[Leafpad Leafpad text editor]]
~[[GenieProgramming Genie]]
~[[GtkDialog GtkDialog]]
~[[Python]]
~[[Qt]]
~[[ToolCommandLanguage Tcl/Tk]]
~[[ValaGenieintro Vala Genie]]
Deletions:
[[http://puppylinux.com/howto/programming.htm Programming on Puppylinux.com]]
[[Compiling Compiling]]
[[Bash Bash and Ash shells]]
[[http://www.murga-linux.com/puppy/viewtopic.php?p=590114#590114 Shell Simple Intro thread]]
[[Leafpad Leafpad text editor]]
[[GenieProgramming Genie]]
[[GtkDialog GtkDialog]]
[[Python]]
[[Qt]]
[[ToolCommandLanguage Tcl/Tk]]
[[ValaGenieintro Vala Genie]]
Additions:
[[Bash Bash and Ash shells]]
Deletions:
Additions:
[[HomePage]] > [[ComponentHowTo Components and HowTos]] > [[HowToProgramming Programming]]
====Programming on Puppy Guide====
**Guide Tutorials**
[[PuppySchool Puppy School]] - learn to program
[[http://puppylinux.com/howto/programming.htm Programming on Puppylinux.com]]
[[Compiling Compiling]]
**Tools**
[[BashAsh Bash and Ash shells]]
[[http://www.murga-linux.com/puppy/viewtopic.php?p=590114#590114 Shell Simple Intro thread]]
[[Leafpad Leafpad text editor]]
==Programming Languages and Environments==
[[ProgrammingLanguages Which programming language?]]
[[GenieProgramming Genie]]
[[GtkDialog GtkDialog]]
[[Python]]
[[ToolCommandLanguage Tcl/Tk]]
[[ValaGenieintro Vala Genie]]
====Programming on Puppy Guide====
**Guide Tutorials**
[[PuppySchool Puppy School]] - learn to program
[[http://puppylinux.com/howto/programming.htm Programming on Puppylinux.com]]
[[Compiling Compiling]]
**Tools**
[[BashAsh Bash and Ash shells]]
[[http://www.murga-linux.com/puppy/viewtopic.php?p=590114#590114 Shell Simple Intro thread]]
[[Leafpad Leafpad text editor]]
==Programming Languages and Environments==
[[ProgrammingLanguages Which programming language?]]
[[GenieProgramming Genie]]
[[GtkDialog GtkDialog]]
[[Python]]
[[ToolCommandLanguage Tcl/Tk]]
[[ValaGenieintro Vala Genie]]
Deletions:
[[http://puppylinux.org/wikka/BashAsh Bash and Ash shells]] [[http://www.murga-linux.com/puppy/viewtopic.php?p=590114#590114 Simple intro]]
[[http://puppylinux.org/wikka/Compiling Compiling]]
[[http://puppylinux.org/wikka/GenieProgramming Genie]]
[[http://puppylinux.org/wikka/GtkDialog GtkDialog]]
[[http://puppylinux.org/wikka/Leafpad Leafpad editor]]
ProgrammingLanguages
[[http://puppylinux.org/wikka/Python Python]]
[[http://puppylinux.org/wikka/ToolCommandLanguage Tcl/Tk]]
[[http://puppylinux.org/wikka/ValaGenieintro Vala Genie]]
Additions:
[[http://puppylinux.org/wikka/BashAsh Bash and Ash shells]] [[http://www.murga-linux.com/puppy/viewtopic.php?p=590114#590114 Simple intro]]
[[http://puppylinux.org/wikka/GenieProgramming Genie]]
[[http://puppylinux.org/wikka/GtkDialog GtkDialog]]
[[http://puppylinux.org/wikka/Leafpad Leafpad editor]]
[[http://puppylinux.org/wikka/GenieProgramming Genie]]
[[http://puppylinux.org/wikka/GtkDialog GtkDialog]]
[[http://puppylinux.org/wikka/Leafpad Leafpad editor]]
Deletions:
[[http://puppylinux.org/wikka/GenieProgramming Genie]]
[[http://puppylinux.org/wikka/GtkDialog GtkDialog]]
[[http://puppylinux.org/wikka/Leafpad Leafpad editor]]
Additions:
ProgrammingLanguages
[[http://puppylinux.org/wikka/Python Python]]
[[Qt]]
[[http://puppylinux.org/wikka/Python Python]]
[[Qt]]
Deletions:
[[http://puppylinux.org/wikka/ProgrammingLanguages Languages]]
[[http://puppylinux.org/wikka/Python Python]]
[[http://puppylinux.org/wikka/Qt Qt]]
Additions:
http://puppylinux.com/howto/programming.htm
Deletions:
===This page contains links to programming tools and tutorials===
CategoryHowTo
CategoryPuppyDocumentation
Additions:
[[http://www.techarena.in/guide/16768-how-start-programming-language-choose.htm Which programming language to choose]]
Deletions:
Additions:
[[http://puppylinux.org/wikka/BashAsh Bash and Ash shells]]
[[http://puppylinux.org/wikka/Compiling Compiling]]
[[http://puppylinux.org/wikka/JavaInPuppy Java ]]
[[http://puppylinux.org/wikka/Qt Qt]]
[[http://puppylinux.org/wikka/ToolCommandLanguage Tcl/Tk]]
[[http://puppylinux.org/wikka/ValaGenieintro Vala Genie]]
==Categories==
[[http://puppylinux.org/wikka/Compiling Compiling]]
[[http://puppylinux.org/wikka/JavaInPuppy Java ]]
[[http://puppylinux.org/wikka/Qt Qt]]
[[http://puppylinux.org/wikka/ToolCommandLanguage Tcl/Tk]]
[[http://puppylinux.org/wikka/ValaGenieintro Vala Genie]]
==Categories==
Deletions:
[[http://puppylinux.org/wikka/JavaInPuppy Java ]]
[[http://puppylinux.org/wikka/Qt Qt]]
[[http://puppylinux.org/wikka/ToolCommandLanguage Tool Command]]
==Categories==
Additions:
===This page contains links to programming tools and tutorials===
[[http://puppylinux.org/wikka/BashAsh BashAsh]]
[[http://puppylinux.org/wikka/GenieProgramming Genie]]
[[http://puppylinux.org/wikka/GtkDialog GtkDialog]]
[[http://puppylinux.org/wikka/JavaInPuppy Java ]]
[[http://puppylinux.org/wikka/Leafpad Leafpad editor]]
[[http://puppylinux.org/wikka/ProgrammingLanguages Languages]]
[[http://puppylinux.org/wikka/Python Python]]
[[http://puppylinux.org/wikka/Qt Qt]]
[[http://puppylinux.org/wikka/ToolCommandLanguage Tool Command]]
CategoryAdditionalSoftware
CategoryHowTo
CategoryPuppyDocumentation
[[http://puppylinux.org/wikka/BashAsh BashAsh]]
[[http://puppylinux.org/wikka/GenieProgramming Genie]]
[[http://puppylinux.org/wikka/GtkDialog GtkDialog]]
[[http://puppylinux.org/wikka/JavaInPuppy Java ]]
[[http://puppylinux.org/wikka/Leafpad Leafpad editor]]
[[http://puppylinux.org/wikka/ProgrammingLanguages Languages]]
[[http://puppylinux.org/wikka/Python Python]]
[[http://puppylinux.org/wikka/Qt Qt]]
[[http://puppylinux.org/wikka/ToolCommandLanguage Tool Command]]
CategoryAdditionalSoftware
CategoryHowTo
CategoryPuppyDocumentation
Deletions:
Programming Languages are how people give instructions to the computer. For info see this [[http://en.wikipedia.org/wiki/Programming_language wikipedia article]].
Puppy has a few built-in, and more can be added
===={{color text="Overview of Languages included in Puppy" c="black"}}====
~- 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.
===={{color text="Different Types of Languages" c="black"}}====
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)
===={{color text="Common Languages" c="black"}}====
~- 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.
===={{color text="Other Languages" c="black"}}====
~- ""LuaProgramming MurgaLua"" - Based on ""LuaProgramming Lua"", [[http://en.wikipedia.org/wiki/Lua_programming_language Overview of Lua on wikipedia]]
~ Puppy will use Murga Lua starting in 2.16 and may include a new [[http://murga-linux.com/puppy/viewtopic.php?t=15931 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 [[http://en.wikipedia.org/wiki/Freebasic wikipedia link]]
===={{color text="Examples of Programming Languages (mostly in Puppy)" c="black"}}====
**PuppyBASIC** - ""PuppyBackground"", ""PBcdripper"", ""Puppysearch"", ""PBrename""
**""TclTk"" ""Tcl/tk""** - ""Tkdvd"", ""Pvolume"", ""TKmines"", ""TKdiff""
**Perl** program using Gtk: http://www.murga.org/~puppy/viewtopic.php?t=3755
**Java** - [[http://murga-linux.com/puppy/viewtopic.php?search_id=336947195&t=2855 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 bash-shell]].
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
===={{color text="Contributing to Puppy" c="black"}}====
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.
[[http://murga-linux.com/puppy/viewtopic.php?search_id=1045453066&t=16258 forum link]] - [[http://bbqsrc.org/mantis/ link to bugtracker]]
~ Note: If you just want to view the bugs, you can login as login:guest password:guest
===={{color text="Getting Started Actually Programming in Puppy" c="black"}}====
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.