HandHeld''''''s can be used to do programming - not just compiling on a desktop using eVC/eVB, Waba, etc, then installing on a HandHeld - but actually programming on them directly and running the code. When waiting at the airport, movie to start, doctors office, coffee shop, bus, etc, after checking email, surfing around for a while, writing notes, or playing games, eventually one feels like doing something relatively productive. The interpreters below allow this. First did it with a PalmPilot back in 1996 with a crude version of BASIC. It was amazing to be in the middle of nowhere and realize you were actually doing (albeit simple) programming and seeing it run. If all one has with them is a HandHeld it can be fun to do this. People might stare at why you are scribbling or tapping so intensely into your PDA, but why not take advantage of the time, given there are several interpreters in various languages? Your code can often be transferred back to a desktop environment and used in a "real" project with little modification, depending on which language you use. Often you just want to figure out a particular algorithm, function, or SpikeSolution. It is a great way to test ideas when you have nothing else to do and are away from a desktop or laptop. Examples: ** Palm *** OoEnvironmentForPalm *** QuartusForth *** LispMe (EmbeddingSchemeOnPalm) *** PalmPython *** PipPy (Python In Palm.Py) *** JavaOnThePalm *** PocketSmalltalk *** See also http://goanna.cs.rmit.edu.au/~winikoff/palm/dev.html#list *** HHL/VL (but looking for a better name) http://www.o--o.net/comp/hhlvl/ *** Plua (http://netpage.em.com.br/mmand/plua.htm) *** BasicLanguage *** TinyLogo *** PP Pascal Compiler (http://www.ppcompiler.org/) ** PocketPc (WindowsMobile OS on PersonalDigitalAssistant) *** Pocket GCC - http://pocketgcc.sourceforge.net/ *** Pocket CSharp - http://mifki.ru/pcsharp/index.html *** PocketC - http://www.orbworks.com/wince/ *** PocketScheme - http://www.mazama.net/scheme/pscheme.htm *** Prolog (Port of Swi) - http://www.rainer-keuchel.de/wince/swi-prolog.html *** PocketPython - http://www.murkworks.com/Research/Python/PocketPCPython/Overview *** PocketPerl - http://www.rainer-keuchel.de/wince/perlce.html *** PocketSvg - http://www.pocketsvg.com/ *** Java on PPC2002, how-to article - http://s91215199.onlinehome.us/zaurus/JavaOnPPC2002.html *** Also, PocketIE can do limited JScript/VBScript *** J (JayLanguage) www.jsoftware.com *** Haskell : Hugs98 on PPC - http://www.comp.nus.edu.sg/~luzm/ppchugs/ ** SmartPhone (WindowsMobile on a SmartPhone) *** do most of the PocketPc options stay the same? **** yes, other than not having a touch screen. ** SharpZaurus *** GCC - http://community.zaurus.com/projects/zgcc/ also http://zaurus.xavierxeon.de/devel/gcc/gcc_Zinstall.html *** Lisp - http://web.njit.edu/~rxt1077/clisp-maxima-zaurus.html *** Haskell - http://www.jackieoyeah.com/~kilpatjr/hugs-December_2001.ipk *** Scheme - http://www.alphageeksinc.com/tinyscheme/ *** Smalltalk (Squeak) - http://www.is.titech.ac.jp/~ohshima/squeak/zaurus/ *** Ruby - http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/46111 or http://sourceforge.jp/projects/zaurus-ja/ or http://equinoxe.dnsalias.org/PERSO/zruby.ipk (and others) *** Python - http://www.vanille.de/projects/python.spy *** Perl - http://www.cpan.org/ports/sharp/Perl_5.8.0_arm.ipk also http://humphrey.applitec.com/zaurus/feed/perl_5.6.1-7_arm.ipk *** Mono (C#) - http://www.eringal.com/zaurusmono/ *** Forth - ftp://ftp.taygeta.com/pub/Forth/Compilers/native/unix/Zaurus/zaurus-gforth-0.5.0.tar.gz *** Frink - http://futureboy.homeip.net/frinkdocs/ *** MySql - http://www.caulfei.demon.co.uk/zaurus/downloads/mysql_3.22.32-2_arm.ipk *** Java **** IBM's Jikes Compiler http://www.micronova.com/ZAURUS/zaurus_jikes.tar.gz **** Sun's J2ME/Personal Java/Personal Profile/Whatever They Call it Now: http://developer.java.sun.com/developer/earlyAccess/pp4zaurus/ **** If you grab the classes.zip archive from a JDK 1.1 release (http://java.sun.com/products/jdk/1.1/) you can use the pre-installed Jeode VM to run the included java tools like javac, jar, javadoc, javap, etc. They're all just Java classes. **** Note on using the pre-installed Jeode VM to compile: http://adorphuye.com/zaurus/java/faq.jsp?section=Miscellaneous&subsection=Onboard+Development **** Sun's tutorial "Java Programming on the Sharp Zaurus": http://wireless.java.sun.com/personal/articles/ztutorial/ ** AppleNewton *** NewtonScript - Newt: http://home.comcast.net/~saweyer/newton/newtdev.htm *** NSBasic - http://www.nsbasic.com/newton/ '''Toolkits for ProgrammingOnHandHelds''' BorlandCorp downloads at http://www.borland.com/downloads/mobile_sdks.html ---- '''PowerUsage aspects''' Power(energy) is a scarce commodity. And getting more critical as some addons (e.g. GPS) are power hungry. So programmers need to be extremely careful about any code that require any hardware component (including waking up the processor) to do work. See article on how WindowsMobile v5 (PocketPc) have switched to using persistent storage to conserve power (ref: http://blogs.msdn.com/windowsmobile/archive/2005/07/14/438991.aspx) * a previous version of WindowsMobile stops working when energy level is around half of full capacity * power considerations is the real limiting factor in amount of RAM available in WirelessDevices. ---- Also see DoesJavaWorkOnHandheldDevices. '' There are many HandHeld JavaVirtualMachine''''''s but none of them currently allow you to write java on the HandHeld itself and compile/interpret it straight away as far as I can tell. You have to create a class file on the desktop then download to the device. It should not be that difficult to write a RecursiveDescent Parser (could be generated from the JavaCompilerCompiler) for a subset of java to do so - could be written in any language. Or if there is an Eval() function in Java similar to JavaScript a Java desktop program could be made to read a text file on the device and interpret it. So far I have only gotten PersonalJava to work on a PocketPC as a free download all other versions (J2ME or JSDK) are commercial or fixed period trial''. Often, the java compiler (javac) is implemented as a java program itself. For example, sun.tools.javac.Main. I've been able to compile and run java programs on my SharpZaurus using this technique under both the Jeode evm (http://www.esmertec.com/products/products_jeode.shtm) and Sun's Personal Java cvm (http://developer.java.sun.com/developer/earlyAccess/pp4zaurus/). The latter is free, AFAIK. ---- I've often thought handhelds offer the chance to get away from clunky text-oriented programming languages and into something much more abstract and potentially cooler. Whereas on a conventional computer, it is easier to type than to draw, the reverse is true on most handhelds. I'd love to see a programming environment on a handheld where you program by doodling little flowcharts with boxes and arrows, rather than pecking out the letters for text languages. It should be much easier than typing, and perhaps might stimulate creativity in a way that text languages don't. Has anybody seen this concept implemented before? -- RickSamuels ''I tried a visio-like program on Windows CE 2 PocketPC couple years back. It was pretty slow and buggy. The processors are a challenge still they are getting better and faster with version 3/2002/2003, Palm OS 5, XScale. See also GraphicalProgrammingLanguage.'' ---- A simple way to program directly on newer Palms and PocketPcs without installing a lot of extra languages is to use JavaScript that comes with the browsers of these HandHeld''''''s. Make an html page that can eval() JavaScript from a text field (that you can edit - see end of JavaScript page), put it on a webserver (even one on a local network) go to it with the HandHeld''''''s browser, and bookmark it. It will stay in cache (assuming you don't set cache size to 0), and you can program JavaScript even object-oriented ie as in http://www.sitepoint.com/article/470 which is not available in PocketC or easily in LispMe) and run it from memory without having to re-connect (cancel if it tries to). I can do this with both my iPaq and Sony UX-50 out of the box (I also have Java, PocketC and LispMe but thought this was neat - the SimplestThingThatCouldPossiblyWork). ---- Frink (http://futureboy.homeip.net/frinkdocs/) is a calculating tool and programming language that is implemented in Java and will work on any JVM Version 1.1 or later. (Although not on some CLDC/MIDP profiles because it requires floating-point math and the BigInteger class.) It's an extremely practical calculator, tracking units of measure through calculations, so you can, say, add feet and meters, and get the right answer. In addition, it's a full-featured programming language with perl-like text manipulation, even object-oriented programming. It even has a Java introspection layer so you can call any Java code from a Frink program, and interface with any Java library you want to use. It can be rather slow to start up on an underpowered handheld, but by reducing the huge standard data file, you can run with less memory and less time. Since it's very easy to read data from HTTP or FTP in Frink, you can easily make little tools in Frink that gather information important to you (stock prices, weather, etc.) if you have a handheld with wireless capability. ---- Comments on Palm-based environments purely from point of view of really being able to develop on the Palm, not assuming any use of desktops. * LispMe (a SchemeLanguage interpreter) ** great onboard IDE and includes lot of GUI handling ** amazingly fast, close to Quartus ** forget paren-mania, what counts is the total amount of code you have to write and it is very compact (and parens are actually rather easy to write compared to some letter forms) ** full source to language and IDE included! ** integrated editor and combination of command history and multiple entry lines plus "eval selection" makes entry of code very easy ** requires binary resources for GUI forms ** language barrier is initial but it is so conceptually clean it is relatively easy to come back to (and LearningLispIsGoodForYourThinking) * QuartusForth ** bogged down with Tungsten compatibility problems going on for months and as they are toolchain-based problems (custom assembler) may not be resolved *** QuartusForth 2.0 is now fully PalmOs 5-6 and ARM compatible. ** has runtime alloc issues limiting OO, best to forget about it and just code idiomatic Forth ** requires you to switch to Memo editing all the time to edit code, interpreter is single line only with no recall *** 2.0 now has full command line history, cross-invokation even ** unique in that you can generate compiled apps on your Palm with it (using registered version) ** requires binary resources for GUI forms ** it's Forth - you may find the language barrier too hard unless you use the language regularly. As I live in a C++/Python/REALbasic/Objective-C world I find it too hard to go back to Forth * PipPy (Python In Palm.Py) ** fairly clean Python 1.5.2 but appears stalled for a couple of years ** UI copied from LispMe ** no GUI building * PocketSmalltalk ** not onboard ** I have strong doubts about the wordiness of Smalltalk on Palm * PocketC - not tried, don't fancy writing C on the Palm * Plua (http://groups.yahoo.com/group/plua/) ** very impressive, allows much GUI dev to occur without editing resources ** GUI has some limits (eg: only one menu) due to being dynamic ** make sure you get the downloads from the Yahoo groups site ** fastest to throw together a gui (see free 3rd-party GUI builder on the Yahoo group) ** Lua5-based version now in early beta which makes it much more OO ** best editing and source loading - DOC or Memo, integrated with free editor from PocketC ** compact C-like language is easy to learn if you know C, Python et al * BasicLanguage ** HandheldBasic (DeskTop development only) ** HotPaw Basic http://www.hotpaw.com/rhn/hotpaw/ ** SmallBasic http://smallbasic.sourceforge.net !Code-compatible on PalmOS, VTOS, Franklin's, Linux, Win32 and DOS. * LogoLanguage ** TinyLogo ** ''(haven't I seen another Logo for handhelds ?)'' Comparing speeds informally, I checked out a Doodle program built with some of the above, seeing how smoothly it managed to draw freehand lines tracking the mouse. On a IIIxe, the compiled Quartus program and LispMe's interpreted one were almost identical in smooth response. Plua did quite well but was noticeably lagging and TinyLogo rather sad and wanted me to wait for the turtle :-) AndyDent June 2004 ---- '''ProgrammingOnHandHelds QuickQuestions''' '''Q''' I need a quick update on BlackBerry. Is it only a Java based enduser environment? (If so, VbClassic, or even MicrosoftDotNet is ruled out as development environments). What competitors exist for this technology? Do the applications perform reasonably on current day (Aug04) handhelds? BTW, source of my query based on story at http://builder.com.com/5100-6387_14-5265422.html?tag=crm --dl ---- While programming on handhelds helps hone programming skills (at least enhances programming problem solving even if you don't have a full desk-top environment), sometimes I wonder what it would be like to have a suite of simulation programs for other computer-related tasks. Simulation of unix shells or windows, configuring routers. These might be some of the toy programs one could make when looking for programming "topics". Yes you can put all sorts of how-tos in a HandheldWiki to remember and refresh how to configure dns on bsd or how to setup a firewall on linux or vpn on win2000 server but isn't it more fun to make skeleton programs that behave sort of like the real thing. You can also put linux on ipaqs and such but what I am thinking is if you have a palm but need to work with various environments on the wider network then simulate them on the palm. It would not even involve real network programming, though you could do that too with many of the environments above. To paraphrase Sun then the handheld computer would "be" the network. ---- CategoryHandheld Is the information above all outdated? What current models are good for programmers?