Programming languages support under PINE64
#1
I am mostly interested in programming under ARM64 in Linux, so I am starting this thread here.

I want to gather peoples interests in different programming languages and the current state of them under ARM64. This includes the programming language itself, and the libraries. I am doing that because ARM64 is very new platform. And PINE64 is basically first generally available computer with ARM64. Previous ones were very expensive, so anything other than few languages needed to run some basic functions (C, C++, Python, Bash, Perl and PHP to run maybe a web server), was not really tested or easy to port without access to cheap hardware by developers.

This is both for my amusement, for showing the state of the platform, and maybe as a guide for other people what can be done with Pine.

Let me divide support into 3 categories or classes. If somebody have some experience about these languages/libraries under Pine64 or other ARM64 board, or under other systems (MacOS, Windows, Linux, FreeBSD) under normal PC (x86, amd64), and want to add something to the list, by testing it under PINE64, please post comments below.

1st class support (compilers and most libraries fully available upstream, and packaged into all major Linux distributions, works out of the box, and there is no major obstacles to use fully the language). This will also include most of the interpreted languages, with working interpreter. But remember that even interpreted languages often interact with C, C++ and host systems in many libraries (i.e. PHP libraries are often written in C, same with Python)
  • C (gcc and clang compilers)
  • C++ (gcc and clang compilers)
  • Go (gcgo compiler)
  • PHP
  • Python 2.x and 3.x
  • Perl 5
  • Ruby
  • JavaScript, Node.js - under V8, Chromium and Firefox
  • Unix shell scripting like Bash, ZSH, KSH, etc.
  • Erlang and Elixir (no HiPE support for aarch64, just arm and other archs, but interpreter works. LLVM backend in the works).
  • Scheme (multiple implementations works just fine. not tested native code compilers)
  • Java using OpenJDK environment (Tested OpenJRE9, but it older should work too, including OpenJDK too)
  • Ada (tested gnat-6 6.1.1)
  • Haskell (tested Glagow Haskell Compiler 7.10.3 with -fllvm backend)
  • OCaml (tested ocaml 4.02.3)
  • Fortran (tested gfortran-5 5.3.1)
  • Forth (tested gforth 0.7.3)
2nd class support (compilers partially working, some libraries maybe working, not fully tested, but there is a progress in making it run just fine). Some languages landed here because I didn't confirmed if they belong to 1st class fully. But probably half of them can be moved to 1st class category after proper confirmation of their status.
  • Rust - compiler should work (LLVM based), but core libraries are not yet ready
  • D 2.x (gdc compiler, ldc compiler maybe) - gdc compiler almost works, phobos almost ready
  • Groovy
  • Elm
  • Kotlin
  • C#, F#, etc under Mono virtual machine and its compilers
  • Haskell
  • OCaml
  • OpenCL
  • Clojure
  • Swift
  • Objective-C
  • PyPy
  • Lua, and LuaJIT
  • Lisp, ie. Common Lisp
  • Scala
  • Dart
  • Fortran (i.e. gfortran
  • Ada (i.e. gnat)
  • Jython
  • Octave
  • R
  • Nemerle
  • Pascal (i.e. Gnu Pascal)
  • Vala
3rd class support. Status unknown, no porting started, or the existing implementations are already limited in portability.
  • Eiffel
  • Visual Basic
  • Fortress
  • Delphi
  • Maple
  • Matlab
  • Mathematica
  • Sawzall
  • Oberon
  • Escher
  • Factor

I limited myself to languages I had some contact in the past, or are reasonably popular with big community. I explicitly excluded many esoteric languages (the ones made just for fun), even if they are in 1st or 2nd category, because they were not really done for practical purposes, and I do not want to pollute this list too much with them. I also explicitly excluded many languages that run in the web browser, with few minor exceptions like Dart and Elm, but in general, they are platform independent and do not even really run on the development host but in the clients browser. I included some, and they inclusion stats the status of the development, tools and compilers to Java or JavaScript target, not whatever you can run the programs in the browser correctly (but usually some support for execution would be also necessary for example to run tests). I also excluded very old languages, that nobody expect to be running even on modern PCs (like Algol variants, or Modula), or do have extremely small community or numbers of libraries available.

Anything more to add? Again, if you do have expirience with some of the above languages, and if you already tested them to work correctly, comment about moving the language to the proper category. (In example I feel that the Lua, Haskell and Ocaml might just work out of the box, same with Octave and R libraries. I just had no time to test anything in them yet). If you are under Debian, or Ubuntu, try installing provided packages, and see how things work, and report back. If so please provide distribution version, and version of the language tools and libraries you used for testing.


Changes: Moved Erlang and Elixir up. Moved Scheme up. Moved Haskell and Ocaml up. Moved Ada and Fortran up. Added comments to D and Rust.
#2
Hello,

I got a PINE with the idea in my mind that my 9 year old son could start learning programming. He starts learning English in the autumn so it is little difficult now. I thought I would start learning programming myself first, with PINE so I could get him started later on. Any ideas of suitable language and learmninig material etc.? I've done some Basic and Fortran during studies in the 90s
#3
Hi!

If your son doesn't have any experience with programming / code then perhaps something basic like scratch is a good place to start. I haven't tried installing scratch on the Pine64 - but I think it shouldn't be a problem. It's more of lego- building with code really, and introduces kids to the basic concepts.
But perhaps its best for him to get to grips with bash first? there are many of tutorials out there ...
After that, I believe that python is a go-to language these days Smile
Hope this helps
You can find me on IRC, Discord and Twitter


#4
actually he has played with Scratch and e.g. programmed himself a MS paint like painting editor. I believe Scratch needs Adobe Flash and that is why it did not work on the other computer I tried. Remix Mini, Android RemixOS.
I think I go for Python and try to find Finnish material first, thank you
#5
Hi,

My kids use Scratch too. There are a couple of versions. The web version does require Flash; however to @Luke's point, you can also install it in Linux in which case it is an older, non-flash version. My kids have used that and it works great.

Python is a good option too. The other option I like for new programmers is Turtle for Python. (https://docs.python.org/2/library/turtle.html) It runs great in a Linux desktop environment.
#6
Replying to the comment above on learning programming from Scratch, I'd like to say that it's a nice options in order to get to know a little more about coding itself indeed! Moreover, that would suit well not for children only, but for adults too, despite how cartoonish it looks  Big Grin To be blunt, that was one of the things I've started learning programming with in my late 20's. So I've decided to start with java, because they said this is the most easy-to-understand backend language, and I had pretty nice and full-detailed source to learn all the fundamentals of java https://explainjava.com/category/java/ So it turned out in a simple fashion for me. So, when it comes to learning coding with zero experience under your belt, it always would be nice to have one or two info sources to stand with
#7
Octave running on my UBPorts edition.

A couple of things:

1. I had to mount the filesystem.
2. There is no GUI, just the command-line, but matrix maths are working fine.
3. From command line, use Aptitude, not apt-get, and accept some library fall-backs (basically, say "no" to the fallback options, until Octave is no longer on the uninstalled list).
4. Working from command-line only, no GUI app, like the one on this PineBook, but it's very cool to have Octave on both my PinePhone and Pinebook Pro (and yes, I am using PinePhone as my daily driver, lord help me, but I love the thing).
5. Fantasize that Andrew Ng will be impressed with my sheer audicity and make a comment respecting my difficult life choices Smile


Possibly Related Threads…
Thread Author Replies Views Last Post
  Manjaro arm on pine64+ roel 2 6,602 10-19-2019, 05:13 AM
Last Post: roel
  Volumio for PINE64 Released mikelangeloz 11 26,804 03-22-2019, 09:25 AM
Last Post: llungster
  I2S Audio patches for Pine64+ uploaded to GitHub ramstadt 1 4,480 01-19-2019, 11:31 AM
Last Post: ramstadt
  Pine64: Minimal SDL config Max11 3 6,754 01-04-2019, 03:47 PM
Last Post: Max11
  Fedora 27 on Pine64 gregjo 18 38,982 01-02-2019, 10:42 PM
Last Post: heatfanjohn
  Official build procedure of ayufan pine64 r.tanaka 0 3,394 08-21-2018, 10:54 PM
Last Post: r.tanaka
  DKMS on kernel 3.10.107-pine64 obrienmd 5 9,756 06-21-2018, 05:45 PM
Last Post: evilbunny
  AXP803 Battery Charger Support xalius 14 27,095 12-22-2017, 08:59 AM
Last Post: Velociraptor
  Gentoo for pine64 - longsleep kernel incoherent 0 3,924 12-09-2017, 08:14 AM
Last Post: incoherent
  Fedora Running On Pine64! cztian 26 42,269 10-26-2017, 05:51 PM
Last Post: gregjo

Forum Jump:


Users browsing this thread: 2 Guest(s)