# Introduction
**_EasyCoder_** is a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line and a graphics module is under construction. This version of the language is written in Python and it acts as a fairly thin wrapper around Python functions, giving fast compilation and good runtime performance for general applications.
<hr>
There is also a JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser. For this, please visit
Repository: [https://github.com/easycoder/easycoder.github.io](https://github.com/easycoder/easycoder.github.io)
Website: [https://easycoder.github.io](https://easycoder.github.io)
<hr>
## Quick Start
Install **_EasyCoder_** in your Python environment:
```
pip install requests pytz easycoder
```
Test the install by typing the command `easycoder`.
<hr>
On Linux, this will probably fail as the installer places the executable file in the `$HOME/.local/bin` directory. So give the command
```
export PATH=$HOME/.local/bin:$PATH
```
To make this change permanent, edit your `.profile` file, adding the following:
```
# set PATH so it includes user's private .local/bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
```
<hr>
Now write a test script, 'hello.ecs', containing the following:
```
print `Hello, world!`
```
(Note the backticks.) This is traditionally the first program to be written in virtually any language. To run it, use `easycoder hello.ecs`.
The output will look like this (the version number will differ):
```
EasyCoder version 250101.1
Compiled <anon>: 1 lines (2 tokens) in 0 ms
Run <anon>
1-> Hello, world!
```
It's conventional to add a program title to a script:
```
! Test script
script Test
print `Hello, world!`
```
The first line here is just a comment and has no effect on the running of the script. The second line gives the script a name, which is useful in debugging as it says which script was running. When run, the output is now
```
EasyCoder version 250101.1
Compiled Test: 3 lines (4 tokens) in 0 ms
Run Test
3-> Hello, world!
```
As you might guess from the above, the print command shows the line in the script it was called from. This is very useful in tracking down debugging print commands in large scripts.
Here in the repository is a folder called `scripts` containing some sample scripts:
`fizzbuzz.ecs` is a simple programming challenge often given at job interviews
`tests.ecs` is a test program containing many of the **_EasyCoder_** features
`benchmark.ecs` allows the performance of **_EasyCoder_** to be compared to other languages if a similar script is written for each one.
## Graphical programmming
**_EasyCoder_** includes a graphical programming environment that is in the early stages of development. Some demo scripts will be included in the `scripts` directory; these can be recognised by the extension`.ecg`. To run them, first install `tkinter`. On Linux this is done with
```
sudo apt install python3-tk
```
Next, install the Python `pySimpleGUI` graphics library; this is done with `pip install pysimplegui`. Then run your **_EasyCoder_** script using `easycoder {scriptname}.ecg`.
Graphical scripts look much like any other script but their file names must use the extension `.ecg` to signal to **_EasyCoder_** that it needs to load the graphics module. Non-graphical applications can use any extension but `.ecs` is recommended. This allows the **_EasyCoder_** application to be used wherever Python is installed, in either a command-line or a graphical environment, but graphics will of course not be available in the former.
Some demo graphical scripts will included in the `scripts` directory as development proceeds.
`gtest.ecg` contains sample code to demonstrate and test basic features.
## Significant features
- English-like syntax based on vocabulary rather than structure. Scripts can be read as English
- Comprehensive feature set
- Runs directly from source scripts. A fast compiler creates efficient intermediate code that runs immediately after compilation
- Low memory requirements
- Minimim dependency on other 3rd-party packages
- Built-in co-operative multitasking
- Dynamic loading of scripts on demand
- The language can be extended seamlessly using plugin function modules
- Plays well with any Python code
- Fully Open Source
## Programming reference
**_EasyCoder_** comprises a set of modules to handle tokenisation, compilation and runtime control. Syntax and grammar are defined by [packages](doc/README.md), of which there are currently two; the [core](doc/core/README.md) package, which implements a comprehensive set of command-line programming features, and and the [graphics](doc/graphics/README.md) package, which adds graphical features in a windowing environment.
## Extending the language
**_EasyCoder_** can be extended to add new functionality with the use of 'plugins'. These contain compiler and runtime modules for the added language features. **_EasyCoder_** can use the added keywords, values and conditions freely; the effect is completely seamless. There is an outline example in the `plugins` directory called `example.py`, which comprises a module called `Points` with new language syntax to deal with two-valued items such as coordinates. In the `scripts` directory there is `points.ecs`, which exercises the new functionality.
A plugin can act as a wrapper around any Python functionality that has a sensible API, thereby hiding its complexity. The only challenge is to devise an unambiguous syntax that doesn't clash with anything already existing in **_EasyCoder_**.
Raw data
{
"_id": null,
"home_page": null,
"name": "easycoder",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "compiler, scripting, prototyping, programming, coding, python, low code, hypertalk, computer language, learn to code",
"author": null,
"author_email": "Graham Trott <gtanyware@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/d7/10/b44a612195402b6f508d026549b5dbcd4266ffd381637027e157d8290aa4/easycoder-250216.1.tar.gz",
"platform": null,
"description": "# Introduction\n**_EasyCoder_** is a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line and a graphics module is under construction. This version of the language is written in Python and it acts as a fairly thin wrapper around Python functions, giving fast compilation and good runtime performance for general applications.\n<hr>\n\nThere is also a JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser. For this, please visit\n\nRepository: [https://github.com/easycoder/easycoder.github.io](https://github.com/easycoder/easycoder.github.io) \nWebsite: [https://easycoder.github.io](https://easycoder.github.io)\n<hr>\n\n## Quick Start\nInstall **_EasyCoder_** in your Python environment:\n```\npip install requests pytz easycoder\n```\n\nTest the install by typing the command `easycoder`.\n<hr>\nOn Linux, this will probably fail as the installer places the executable file in the `$HOME/.local/bin` directory. So give the command\n```\n export PATH=$HOME/.local/bin:$PATH\n```\n\nTo make this change permanent, edit your `.profile` file, adding the following:\n```\n# set PATH so it includes user's private .local/bin if it exists\nif [ -d \"$HOME/.local/bin\" ] ; then\n PATH=\"$HOME/.local/bin:$PATH\"\nfi\n```\n<hr>\n\nNow write a test script, 'hello.ecs', containing the following:\n```\nprint `Hello, world!`\n```\n(Note the backticks.) This is traditionally the first program to be written in virtually any language. To run it, use `easycoder hello.ecs`.\n\nThe output will look like this (the version number will differ):\n```\nEasyCoder version 250101.1\nCompiled <anon>: 1 lines (2 tokens) in 0 ms\nRun <anon>\n1-> Hello, world!\n```\n\nIt's conventional to add a program title to a script:\n```\n! Test script\n script Test\n print `Hello, world!`\n```\nThe first line here is just a comment and has no effect on the running of the script. The second line gives the script a name, which is useful in debugging as it says which script was running. When run, the output is now\n```\nEasyCoder version 250101.1\nCompiled Test: 3 lines (4 tokens) in 0 ms\nRun Test\n3-> Hello, world!\n```\n\nAs you might guess from the above, the print command shows the line in the script it was called from. This is very useful in tracking down debugging print commands in large scripts.\n\nHere in the repository is a folder called `scripts` containing some sample scripts:\n\n`fizzbuzz.ecs` is a simple programming challenge often given at job interviews \n`tests.ecs` is a test program containing many of the **_EasyCoder_** features \n`benchmark.ecs` allows the performance of **_EasyCoder_** to be compared to other languages if a similar script is written for each one.\n\n## Graphical programmming\n**_EasyCoder_** includes a graphical programming environment that is in the early stages of development. Some demo scripts will be included in the `scripts` directory; these can be recognised by the extension`.ecg`. To run them, first install `tkinter`. On Linux this is done with\n```\n sudo apt install python3-tk\n```\n\nNext, install the Python `pySimpleGUI` graphics library; this is done with `pip install pysimplegui`. Then run your **_EasyCoder_** script using `easycoder {scriptname}.ecg`.\n\nGraphical scripts look much like any other script but their file names must use the extension `.ecg` to signal to **_EasyCoder_** that it needs to load the graphics module. Non-graphical applications can use any extension but `.ecs` is recommended. This allows the **_EasyCoder_** application to be used wherever Python is installed, in either a command-line or a graphical environment, but graphics will of course not be available in the former.\n\nSome demo graphical scripts will included in the `scripts` directory as development proceeds.\n\n`gtest.ecg` contains sample code to demonstrate and test basic features.\n\n## Significant features\n\n - English-like syntax based on vocabulary rather than structure. Scripts can be read as English\n - Comprehensive feature set\n - Runs directly from source scripts. A fast compiler creates efficient intermediate code that runs immediately after compilation\n - Low memory requirements\n - Minimim dependency on other 3rd-party packages\n - Built-in co-operative multitasking\n - Dynamic loading of scripts on demand\n - The language can be extended seamlessly using plugin function modules\n - Plays well with any Python code\n - Fully Open Source\n\n## Programming reference\n\n**_EasyCoder_** comprises a set of modules to handle tokenisation, compilation and runtime control. Syntax and grammar are defined by [packages](doc/README.md), of which there are currently two; the [core](doc/core/README.md) package, which implements a comprehensive set of command-line programming features, and and the [graphics](doc/graphics/README.md) package, which adds graphical features in a windowing environment.\n\n## Extending the language\n\n**_EasyCoder_** can be extended to add new functionality with the use of 'plugins'. These contain compiler and runtime modules for the added language features. **_EasyCoder_** can use the added keywords, values and conditions freely; the effect is completely seamless. There is an outline example in the `plugins` directory called `example.py`, which comprises a module called `Points` with new language syntax to deal with two-valued items such as coordinates. In the `scripts` directory there is `points.ecs`, which exercises the new functionality.\n\nA plugin can act as a wrapper around any Python functionality that has a sensible API, thereby hiding its complexity. The only challenge is to devise an unambiguous syntax that doesn't clash with anything already existing in **_EasyCoder_**.\n",
"bugtrack_url": null,
"license": null,
"summary": "Rapid scripting in English",
"version": "250216.1",
"project_urls": {
"Home": "https://github.com/easycoder/easycoder-py"
},
"split_keywords": [
"compiler",
" scripting",
" prototyping",
" programming",
" coding",
" python",
" low code",
" hypertalk",
" computer language",
" learn to code"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a15b5a5e66a4609f63d1df9516fbb1d289610f1d9da468e89d96ee4c227439d9",
"md5": "8ec701272a3ea49d0e26ab6558d9b22a",
"sha256": "62482f889afb905e70b33c6fc716c79d95635fb3b8c9edd8011f61568af9d628"
},
"downloads": -1,
"filename": "easycoder-250216.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8ec701272a3ea49d0e26ab6558d9b22a",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 33379,
"upload_time": "2025-02-16T21:28:26",
"upload_time_iso_8601": "2025-02-16T21:28:26.559038Z",
"url": "https://files.pythonhosted.org/packages/a1/5b/5a5e66a4609f63d1df9516fbb1d289610f1d9da468e89d96ee4c227439d9/easycoder-250216.1-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d710b44a612195402b6f508d026549b5dbcd4266ffd381637027e157d8290aa4",
"md5": "4a1a75c799e2ba4b8ac5238db6cdd20c",
"sha256": "9e3d7b59ebf79fa0001e06e518ccb95f058f0613adc9ece807420a71efe848f6"
},
"downloads": -1,
"filename": "easycoder-250216.1.tar.gz",
"has_sig": false,
"md5_digest": "4a1a75c799e2ba4b8ac5238db6cdd20c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3247699,
"upload_time": "2025-02-16T21:28:30",
"upload_time_iso_8601": "2025-02-16T21:28:30.616139Z",
"url": "https://files.pythonhosted.org/packages/d7/10/b44a612195402b6f508d026549b5dbcd4266ffd381637027e157d8290aa4/easycoder-250216.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-16 21:28:30",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "easycoder",
"github_project": "easycoder-py",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "easycoder"
}