Difference between revisions of "Raspberry Pi Programming"

From eLinux.org
Jump to: navigation, search
m (Tested on RPi)
(s/Nimrod/Nim/)
 
(14 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 
{{Template:RPi_Software}}
 
{{Template:RPi_Software}}
  
 
+
==Programming languages, IDEs, etc.==
 
 
==Programming languages, IDEs, etc==
 
  
 
===Tested on Alpha board===
 
===Tested on Alpha board===
Line 14: Line 12:
 
* Mono (C#)
 
* Mono (C#)
 
* OCaml
 
* OCaml
* NodeJS 0.6.18 (Javascript)
+
* Node.js 0.6.18 (JavaScript)
 
* Perl
 
* Perl
 
* Python <ref>http://ntoll.org/article/baking-with-raspberrypipy</ref>
 
* Python <ref>http://ntoll.org/article/baking-with-raspberrypipy</ref>
 
* Ruby 1.9.2 (KidsRuby)
 
* Ruby 1.9.2 (KidsRuby)
 
* Scala
 
* Scala
* [http://nimrod-code.org/ Nimrod]
+
* [http://nim-lang.org/ Nim]
 
* [http://freecode.com/projects/tinybc Tiny BASIC for Curses]
 
* [http://freecode.com/projects/tinybc Tiny BASIC for Curses]
  
===Tested on RPi===
+
===Tested on Raspberry Pi===
  
 
* [[CSharp_on_RPi|C#]]
 
* [[CSharp_on_RPi|C#]]
 +
* [[CodeBlocks]]
 +
* [[Erlang]]
 +
* [[Forth]]
 
* [http://xxicc.org GalaxC programming language and XXICC "Chicken Coop" environment] (works in progress)
 
* [http://xxicc.org GalaxC programming language and XXICC "Chicken Coop" environment] (works in progress)
 
* [[Go_on_RPi|Go]]
 
* [[Go_on_RPi|Go]]
 
* Java
 
* Java
**  [[How to set up java]] and add access to the hardware
+
**  [[How to set up Java]] and add access to the hardware
 
** gcj - for Java code compilation,
 
** gcj - for Java code compilation,
 
** depending on ''floatness'', Oracle JVM may or may not be available. For now, only soft-float JVM is available. See [http://www.oracle.com/technetwork/articles/java/raspberrypi-1704896.html here] for thorough description.
 
** depending on ''floatness'', Oracle JVM may or may not be available. For now, only soft-float JVM is available. See [http://www.oracle.com/technetwork/articles/java/raspberrypi-1704896.html here] for thorough description.
 
** Groovy (requires Java)
 
** Groovy (requires Java)
 
** Other JVMs are compared [http://www.raspberrypi.org/phpBB3/viewtopic.php?f=34&t=15639 here].
 
** Other JVMs are compared [http://www.raspberrypi.org/phpBB3/viewtopic.php?f=34&t=15639 here].
* Javascript via [[Node.js on RPi|Node.js]]
+
* JavaScript via [[Node.js on RPi|Node.js]]
 
* Pascal
 
* Pascal
 
** [[Free Pascal on RPi|Free Pascal Compiler / Object Pascal language]]
 
** [[Free Pascal on RPi|Free Pascal Compiler / Object Pascal language]]
Line 41: Line 42:
 
* Regina Rexx <ref>http://www.rexx.org/</ref>
 
* Regina Rexx <ref>http://www.rexx.org/</ref>
 
* [[Scratch_on_RPi|Scratch]]
 
* [[Scratch_on_RPi|Scratch]]
 +
* Tcl/Tk
  
 
===Expected to work===
 
===Expected to work===
 
* Eclipse
 
* Eclipse
* Tcl/Tk
 
 
* (maybe) BoaConstructor
 
* (maybe) BoaConstructor
 
* Anjuta for C/C++
 
* Anjuta for C/C++
 
* Dev-C++
 
* Dev-C++
* CodeBlocks
 
 
* [http://www.lua.org/ Lua]
 
* [http://www.lua.org/ Lua]
 
* [http://www.bbcbasic.co.uk/bbcbasic.html BBC BASIC]
 
* [http://www.bbcbasic.co.uk/bbcbasic.html BBC BASIC]
Line 56: Line 56:
 
* [http://www.squeak.org/ Squeak implementation of Smalltalk]
 
* [http://www.squeak.org/ Squeak implementation of Smalltalk]
 
* [http://processing.org/ Processing]
 
* [http://processing.org/ Processing]
* Other BASIC variants common to Debian/Ubuntu/Fedora etc. are all likely to work fine, including:
+
* Other BASIC variants common to Debian, Ubuntu, Fedora, etc. are all likely to work fine, including:
 
** [http://http://basic256.org basic256] - educational BASIC programming environment for children  
 
** [http://http://basic256.org basic256] - educational BASIC programming environment for children  
 
** [http://www.bwbasic.at/tutorial.htm bwbasic] - Bywater BASIC Interpreter  
 
** [http://www.bwbasic.at/tutorial.htm bwbasic] - Bywater BASIC Interpreter  
Line 65: Line 65:
  
 
==Graphical Programming==
 
==Graphical Programming==
* [http://gambas.sourceforge.net/ Gambas] - possibly a good choice; easy like old visual basic
+
* [http://www.xojo.com Xojo] - Create desktop, web and console apps for Pi. Not free and does not run on the Pi itself, but super-easy to use.
 +
* [http://gambas.sourceforge.net/ Gambas] - possibly a good choice; easy like old Visual Basic
 
* [http://scratch.mit.edu/ Scratch]
 
* [http://scratch.mit.edu/ Scratch]
 
* [http://www.alice.org/ Alice]
 
* [http://www.alice.org/ Alice]
Line 73: Line 74:
 
* [http://primerlabs.com/codehero PrimerLabs CodeHero]
 
* [http://primerlabs.com/codehero PrimerLabs CodeHero]
 
* [http://www.lazarus.freepascal.org Lazarus] I was working on LaZor'''OS4'''Pi a while back to provide a on-device IDE but I'm stuck with only a VGA monitor + chroot. Will pick it back up asap for it is a great combination. (Used: Fedora, [http://razor-qt.org/ Razor-QT desktop] and Lazarus-QT+FreePascal. 2nd attempt => [http://funtoo.org Funtoo])  
 
* [http://www.lazarus.freepascal.org Lazarus] I was working on LaZor'''OS4'''Pi a while back to provide a on-device IDE but I'm stuck with only a VGA monitor + chroot. Will pick it back up asap for it is a great combination. (Used: Fedora, [http://razor-qt.org/ Razor-QT desktop] and Lazarus-QT+FreePascal. 2nd attempt => [http://funtoo.org Funtoo])  
* [http://code.google.com/p/yad YAD] 'Yet Another Dialog' for fast GUI scripting in BASH.
+
* [http://code.google.com/p/yad YAD] 'Yet Another Dialog' for fast GUI scripting in Bash.
* [https://sites.google.com/site/easybashgui EasyBashGui] Want to keep it fast and simple than this is your tool. Goes even faster with the code snippets from Komodo Edit + BASH Menu plugin.
+
* [https://sites.google.com/site/easybashgui EasyBashGui] Want to keep it fast and simple than this is your tool. Goes even faster with the code snippets from Komodo Edit + Bash Menu plugin.
 
* [http://bluegriffon.org BlueGriffon] is a very slick WYSIWYG editor for HTML5.
 
* [http://bluegriffon.org BlueGriffon] is a very slick WYSIWYG editor for HTML5.
* [http://fpgui.sourceforge.net fpGUI Toolkit] has been tested and fully working on the RPi. fpGUI is a custom drawn, full featured, cross-platform GUI toolkit that has been in development since 2006. fpGUI can be use for Desktop or Embedded environments, and is suitable for commercial and open source projects. Implemented 100% in Object Pascal, and producing small executables and very low library dependency (just the standard X11 - no Qt or GTK etc required). For a very quick setup of the Free Pascal Compiler & fpGUI Toolkit, download the starter archive (3.5MB download) from http://www.turbocontrol.com/easyfpgui.htm. Unzip, and you are ready to go! fpGUI includes lots of ready made widgets, a documentation viewer (docview), a Visual GUI Forms Designer (uidesigner), and an IDE (maximus). The IDE is still in the very early stages of development, but any programmer editor could be used with fpGUI too.
+
* [http://fpgui.sourceforge.net fpGUI Toolkit] has been tested and fully working on the Raspberry Pi. fpGUI is a custom drawn, full featured, cross-platform GUI toolkit that has been in development since 2006. fpGUI can be use for Desktop or Embedded environments, and is suitable for commercial and open source projects. Implemented 100% in Object Pascal, and producing small executables and very low library dependency (just the standard X11 - no Qt or GTK, etc. required). For a very quick setup of the Free Pascal Compiler & fpGUI Toolkit, download the starter archive (3.5&nbsp;MB download) from http://www.turbocontrol.com/easyfpgui.htm. Unzip, and you are ready to go! fpGUI includes lots of ready made widgets, a documentation viewer (docview), a Visual GUI Forms Designer (uidesigner), and an IDE (maximus). The IDE is still in the very early stages of development, but any programmer editor could be used with fpGUI too.
* [https://github.com/rec/pi3d Pi3D hardware accelerated 3D (and 2D) for python] - still being improved but works now
+
* [https://github.com/rec/pi3d Pi3D hardware accelerated 3D (and 2D) for Python] - still being improved but works now
* [http://learn.adafruit.com/webide/overview Adafruit Learning System Raspberry Pi WebIDE] - allows programs to be written, compiled, and executed on the RPi via a web interface.
+
* [http://learn.adafruit.com/webide/overview Adafruit Learning System Raspberry Pi WebIDE] - allows programs to be written, compiled, and executed on the Raspberry Pi via a web interface.
 +
* [http://www.pridopia.co.uk/rs-pi-set-scratch.html Pridopia Scratch-RaspberryPi GPIO Driver] -- helping children / beginner programmers / hardware enthusiasts build up their skills by doing simple tasks with even easier commands / controls.
  
 
==Robotics==
 
==Robotics==
 
* [http://mindstorms.lego.com/en-us/Default.aspx Lego Mindstorms]
 
* [http://mindstorms.lego.com/en-us/Default.aspx Lego Mindstorms]
* [http://edu.kde.org/kturtle/ KTurtle] and other Logo/[http://en.wikipedia.org/wiki/Turtle_graphics turtle graphics] (The IO board supports motor drive outputs)
+
* [http://edu.kde.org/kturtle/ KTurtle] and other Logo/[http://en.wikipedia.org/wiki/Turtle_graphics turtle graphics] (The I/O board supports motor drive outputs)
  
 
==Would Be Great If These Worked==
 
==Would Be Great If These Worked==
 
* wvdial -- Dialer for Land-line, GSM, UMTS modems and other serial devices.
 
* wvdial -- Dialer for Land-line, GSM, UMTS modems and other serial devices.
 
* VHDL -- VHDL (VHSIC hardware description language) is a hardware description language used in electronic design automation to describe digital and mixed-signal systems such as field-programmable gate arrays and integrated circuits.
 
* VHDL -- VHDL (VHSIC hardware description language) is a hardware description language used in electronic design automation to describe digital and mixed-signal systems such as field-programmable gate arrays and integrated circuits.
* Verilog -- Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction.
+
* Verilog -- Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction. icarus verilog (iverilog) is available at http://iverilog.icarus.com/ or apt-get install iverilog
  
 
==Uncategorised==
 
==Uncategorised==

Latest revision as of 07:29, 23 October 2015

Back to the Hub.


Software & Distributions:

Software - an overview.

Distributions - operating systems and development environments for the Raspberry Pi.

Kernel Compilation - advice on compiling a kernel.

Performance - measures of the Raspberry Pi's performance.

Programming - programming languages that might be used on the Raspberry Pi.

Programming languages, IDEs, etc.

Tested on Alpha board

  • Clojure
  • gas (GNU assembler) [1]
  • gcc
  • g++
  • Interp
  • Mono (C#)
  • OCaml
  • Node.js 0.6.18 (JavaScript)
  • Perl
  • Python [2]
  • Ruby 1.9.2 (KidsRuby)
  • Scala
  • Nim
  • Tiny BASIC for Curses

Tested on Raspberry Pi

Expected to work

See also: RaspberryPiBoard/EducationalLinks for education-friendly languages.

Graphical Programming

  • Xojo - Create desktop, web and console apps for Pi. Not free and does not run on the Pi itself, but super-easy to use.
  • Gambas - possibly a good choice; easy like old Visual Basic
  • Scratch
  • Alice
  • Android App Inventor
  • Kodu
  • Star Logo
  • PrimerLabs CodeHero
  • Lazarus I was working on LaZorOS4Pi a while back to provide a on-device IDE but I'm stuck with only a VGA monitor + chroot. Will pick it back up asap for it is a great combination. (Used: Fedora, Razor-QT desktop and Lazarus-QT+FreePascal. 2nd attempt => Funtoo)
  • YAD 'Yet Another Dialog' for fast GUI scripting in Bash.
  • EasyBashGui Want to keep it fast and simple than this is your tool. Goes even faster with the code snippets from Komodo Edit + Bash Menu plugin.
  • BlueGriffon is a very slick WYSIWYG editor for HTML5.
  • fpGUI Toolkit has been tested and fully working on the Raspberry Pi. fpGUI is a custom drawn, full featured, cross-platform GUI toolkit that has been in development since 2006. fpGUI can be use for Desktop or Embedded environments, and is suitable for commercial and open source projects. Implemented 100% in Object Pascal, and producing small executables and very low library dependency (just the standard X11 - no Qt or GTK, etc. required). For a very quick setup of the Free Pascal Compiler & fpGUI Toolkit, download the starter archive (3.5 MB download) from http://www.turbocontrol.com/easyfpgui.htm. Unzip, and you are ready to go! fpGUI includes lots of ready made widgets, a documentation viewer (docview), a Visual GUI Forms Designer (uidesigner), and an IDE (maximus). The IDE is still in the very early stages of development, but any programmer editor could be used with fpGUI too.
  • Pi3D hardware accelerated 3D (and 2D) for Python - still being improved but works now
  • Adafruit Learning System Raspberry Pi WebIDE - allows programs to be written, compiled, and executed on the Raspberry Pi via a web interface.
  • Pridopia Scratch-RaspberryPi GPIO Driver -- helping children / beginner programmers / hardware enthusiasts build up their skills by doing simple tasks with even easier commands / controls.

Robotics

Would Be Great If These Worked

  • wvdial -- Dialer for Land-line, GSM, UMTS modems and other serial devices.
  • VHDL -- VHDL (VHSIC hardware description language) is a hardware description language used in electronic design automation to describe digital and mixed-signal systems such as field-programmable gate arrays and integrated circuits.
  • Verilog -- Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction. icarus verilog (iverilog) is available at http://iverilog.icarus.com/ or apt-get install iverilog

Uncategorised

See also Category:Education

References