# Introduction
This is the Python version of **_EasyCoder_**, a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line.
The JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser, is at
Repository: [https://github.com/easycoder/easycoder.github.io](https://github.com/easycoder/easycoder.github.io)
Website: [https://easycoder.github.io](https://easycoder.github.io)
## Quick Start
Install **_EasyCoder_** in your Python environment:
```
pip install easycoder
```
Write a test script, 'hello.ecs', containing the following:
```
print `Hello, world!`
```
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:
```
EasyCoder version 5
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 5
Compiled Test: 5 lines (4 tokens) in 0 ms
Run Test
5-> Hello, world!
```
As you can guess from the above, the print command gives 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:
`benchmark.ecs` allows the performance of EasyCoder to be compared to other languages if a similar program is written for each one
`tests.ecs` is a test program containing many of the EasyCoder features
`fizzbuzz.ecs` is a simple programming challenge often given at job interviews
## Graphical programmming
**_EasyCoder_** is currently being extended to include a graphical programming environment. A single demo script `graphics-demo.ecs` is included in the `scripts` directory. To run it, first install the Python graphics library if it's not already present on your system. On Linux this is done with `sudo apt install python3-tk`. On Windows it's `pip install tk`. Then give the command `easycoder -g scripts/graphics-demo.ecs`.
As development progresses this demo script will be extended to include new features as they are added. **_EasyCoder_** graphics are handled by a library module, `ec_renderer` that can be used outside of the **_EasyCoder_** environment, in other Python programs.
## EasyCoder programming reference
The language comprises a general-purpose core package, which can be enhanced by plugins to provide special features on demand.
[The core package](doc/README.md)
## 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/05/1d/c8666067f354c36da968531252fabf282ebf4ae5b1e54c1bc3458e69dca3/easycoder-241218.1.tar.gz",
"platform": null,
"description": "# Introduction\nThis is the Python version of **_EasyCoder_**, a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line.\n\nThe JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser, is at\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\n## Quick Start\nInstall **_EasyCoder_** in your Python environment:\n```\npip install easycoder\n```\nWrite a test script, 'hello.ecs', containing the following:\n```\nprint `Hello, world!`\n```\nThis 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:\n\n```\nEasyCoder version 5\nCompiled <anon>: 1 lines (2 tokens) in 0 ms\nRun <anon>\n1-> Hello, world!\n```\nIt's conventional to add a program title to a script:\n\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\n```\nEasyCoder version 5\nCompiled Test: 5 lines (4 tokens) in 0 ms\nRun Test\n5-> Hello, world!\n```\nAs you can guess from the above, the print command gives 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`benchmark.ecs` allows the performance of EasyCoder to be compared to other languages if a similar program is written for each one \n`tests.ecs` is a test program containing many of the EasyCoder features \n`fizzbuzz.ecs` is a simple programming challenge often given at job interviews\n\n## Graphical programmming\n**_EasyCoder_** is currently being extended to include a graphical programming environment. A single demo script `graphics-demo.ecs` is included in the `scripts` directory. To run it, first install the Python graphics library if it's not already present on your system. On Linux this is done with `sudo apt install python3-tk`. On Windows it's `pip install tk`. Then give the command `easycoder -g scripts/graphics-demo.ecs`.\n\nAs development progresses this demo script will be extended to include new features as they are added. **_EasyCoder_** graphics are handled by a library module, `ec_renderer` that can be used outside of the **_EasyCoder_** environment, in other Python programs.\n\n## EasyCoder programming reference\n\nThe language comprises a general-purpose core package, which can be enhanced by plugins to provide special features on demand.\n\n[The core package](doc/README.md)\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": "241218.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": "eb866b612dffeef56e899f9d201bff891e07fe51968de68722fe0cae0c7a555d",
"md5": "73af356f760e79a5f8ca9f096cfada6b",
"sha256": "753b3f649beffee3f08585dd6f7c78b71470ef4002fbc51bb06a5b8dbfa96ed3"
},
"downloads": -1,
"filename": "easycoder-241218.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "73af356f760e79a5f8ca9f096cfada6b",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 30680,
"upload_time": "2024-12-18T22:04:56",
"upload_time_iso_8601": "2024-12-18T22:04:56.042376Z",
"url": "https://files.pythonhosted.org/packages/eb/86/6b612dffeef56e899f9d201bff891e07fe51968de68722fe0cae0c7a555d/easycoder-241218.1-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "051dc8666067f354c36da968531252fabf282ebf4ae5b1e54c1bc3458e69dca3",
"md5": "8e44324900bdfc95b7c6f2b505469852",
"sha256": "becfec17dcdd57e01200ec4c7faf2421ced7865c3a4772cf5031d2ba49b18e03"
},
"downloads": -1,
"filename": "easycoder-241218.1.tar.gz",
"has_sig": false,
"md5_digest": "8e44324900bdfc95b7c6f2b505469852",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2630203,
"upload_time": "2024-12-18T22:04:58",
"upload_time_iso_8601": "2024-12-18T22:04:58.630948Z",
"url": "https://files.pythonhosted.org/packages/05/1d/c8666067f354c36da968531252fabf282ebf4ae5b1e54c1bc3458e69dca3/easycoder-241218.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-18 22:04:58",
"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"
}