About EK9

GitHub forks Twitter Follow

EK9 Language Development

Fork/Watch the development of the EK9 compiler on GitHub and for updates follow on twitter. There is also Blog on EK9 Language Design and Implementation. If you want a quick look at the internals of the compiler then look at the Javadoc. It's still work in progress, but you should be able to see how it is structured.

The EK9 Language Itself

If you are a developer with a Java, C#, Python, Javascript, Scala or Kotlin background you will be able to pick up EK9 quickly. Many of the ideas in those languages have been incorporated into EK9, but new ideas added in.

EK9 source is made available under the MIT opensource license.

Experienced developers will be probably thinking; "Show me the code; I'll be able to understand it and get going"; so there is a list of examples below.

Be aware there is some new syntax here that may look alien! You will need to give it time to grow on you, especially parameter passing. If you get stuck then look at sections structure, basics and then operators.

More about the language

The language has been designed for inexperienced developers to get started, but has features suitable for more experienced software engineers. It accomplishes this by providing a range of constructs from the very simple; through to advanced design patterns (built into the language itself).

It has been designed to make easy things; 'easy' and harder things; 'structured and coherent'. This approach has been taken to facilitate EK9 language use through a developers career, it is not just a teaching language.

The layout and syntax has been designed to incorporate visual flow and structure. It takes some ideas from existing languages, but also adds in ideas from 'cognitive research' on how humans process textual media.

Take a look in the introduction or the new starters section for the language rationale. Read the philosophy of EK9 if you want to understand why certain capabilities are or are not included.

Downloads

Once you've reviewed the examples below and think this might suit you, dust off your favourite editor and follow these instructions below.

  1. Go to the EK9 repository and download the compiler for either macOS, Linux or Windows (they are all free).
  2. There is a Textmate bundle that provides some highlighting depending on your preferred editor Eclipse and IntelliJ work quite well with his bundle.
  3. If you are interested in the compiler internals, there is Javadoc available
  4. There is also a vscode plugin EK9 for vscode GitHub
  5. Unpack the EK9 compiler (zip, tar.gz or dmg) in a directory of your choice (but no spaces in directories)
  6. Make sure you have a version of Java installed (at least Java 21) - suggest using Azul or Graalvm
  7. Make sure the directory you unpacked EK9 in is on your PATH
  8. Make sure the bin directory you unpacked Java in is on your PATH
  9. Create a new directory somewhere (no spaces in path) and paste the contents of the Hello World example into a file called helloworld.ek9
  10. From a command line prompt; type ek9 helloworld.ek9
  11. If your installation went OK and all your PATH was setup, you will see "Hello, World"
  12. That's it you're on your way to using EK9 for development.

EK9 detects source files that need compiling and then runs the one specified. For more details on the compiler read EK9 command line page.

Now the examples

The examples are embedded in these web pages and discuss how to code in EK9. Read around the edges of the examples if any part of the syntax is unclear. The examples start simple but get quite involved and detailed quite quickly. If you get stuck or confused then look at the previous examples in the list.

Less experienced developers should start on the early examples; the examples towards the middle and the end use more advanced software techniques.

There are areas of general IT, like regular expressions and web services that you may need to familiarise yourself with; before looking at how they are used in EK9.

Basic examples

Detailed examples

Whilst these example start of quite simply, they get progressively more abstract/sophisticated.

Fully worked examples