[[HomePage]] > [[ComponentHowTo Components and HowTos]] > [[HowToProgramming Programming]] ====Which Programming Language?==== ==So what is a programming language anyway== ~[[http://en.wikipedia.org/wiki/Programming_language Programming Languages]] are how people give instructions to the computer. 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 ~- Bash Shell Scripting - Is used extensively in Puppy. -- other languages in Puppy devx.sfs are Bacon, [[CPlusPlus C++]], Vala and Genie ~- Note: Puppy can run programs made with these languages, but to write with them you may need other files. ==={{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, [[CPlusPlus C++]], Fortran and compiled BASIC's) [[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 and programs. (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). ~- [[CPlusPlus C++]] is very common for programs using the QT toolkit (the KDE equivalent of the ""Win32"" API). ~C and [[CPlusPlus 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 used Murga Lua starting in 2.16 for a few versions to include a potential [[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). ~~- Lua makes it easy to create rich applications easily (preferably with a GUI builder) ~~- Lua can deploy to both Linux and Windows with no changes to the code. ~~- Lua isn't a completely cryptic and propriety language. ~- ""TclTk"" ""Tcl/Tk"" - used in several Puppy's for The drive mounter MUT. ~- Freebasic is an open source BASIC compiler [[http://en.wikipedia.org/wiki/Freebasic wikipedia link]] but has been replaced with Bacon ==={{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 commonly used in Puppy but there are some nice applications which would work. **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 formal method to contribute code to Puppy. If you want to contribute code just make a post on the forum. ==={{color text="Getting Started Actually Programming in Puppy" c="black"}}=== If you want to program in C then you will need devx_.sfs in just click on GNU compiler devx in Puppy 5.3.1 Slickpet 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 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 web browser 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/ which is in the devx 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/ ---- ==Categories== CategoryDevelopment