Skip to content

Commit

Permalink
Revisiting README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Nelson-numerical-software committed Oct 3, 2024
1 parent d619376 commit e2db505
Show file tree
Hide file tree
Showing 4 changed files with 228 additions and 191 deletions.
13 changes: 0 additions & 13 deletions .codacy.yml

This file was deleted.

205 changes: 96 additions & 109 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,137 +1,137 @@
![Nelson logo](https://github.com/nelson-lang/nelson/blob/master/resources/banner_nelson_small.png?raw=true)

![Visitor Badge](https://visitor-badge.laobi.icu/badge?page_id=nelson-lang.nelson)

[![Codacy Badge](https://app.codacy.com/project/badge/Grade/d5f82474da134d979b472fa5fbe7b5b9)](https://www.codacy.com/gh/nelson-lang/nelson/dashboard?utm_source=github.com&utm_medium=referral&utm_content=nelson-lang/nelson&utm_campaign=Badge_Grade)
[![CodeQL analysis (C/C++)](https://github.com/nelson-lang/nelson/actions/workflows/codeql-analysis-cpp.yml/badge.svg)](https://github.com/nelson-lang/nelson/actions/workflows/codeql-analysis-cpp.yml)[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/602/badge)](https://bestpractices.coreinfrastructure.org/projects/602)

[![Build Status](https://github.com/nelson-lang/nelson/workflows/C%2FC%2B%2B%20CI/badge.svg)](https://github.com/nelson-lang/nelson/workflows/C%2FC%2B%2B%20CI/badge.svg)

[![GitHub license](https://img.shields.io/badge/license-LGPL3.0-blue.svg)](https://github.com/nelson-lang/nelson/blob/master/lgpl-3.0.md)
[![CLA assistant](https://cla-assistant.io/readme/badge/nelson-lang/nelson)](https://cla-assistant.io/nelson-lang/nelson)
[![Open Hub](https://img.shields.io/badge/Open-Hub-blue.svg)](https://www.openhub.net/p/nelson-interpreter)
[![Weblate](https://img.shields.io/badge/Weblate--green.svg)](https://hosted.weblate.org/projects/nelson/)

[![Join the chat at https://gitter.im/nelson-lang/Lobby](https://badges.gitter.im/nelson-lang/Lobby.svg)](https://gitter.im/nelson-lang/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

Nelson is an array programming language providing a powerful open computing environment for
engineering and scientific applications using modern C/C++ libraries (Boost, Eigen, …)
and others state of art numerical libraries.

It has sophisticated data structures (including cell, struct, dictionary, table, linear systems, …),
an interpreter and a high level programming language.

Nelson has been developed to be an open/modular system where an user can define
these own data types and operations on these data types by using overload.

![Nelson environment](https://github.com/nelson-lang/nelson-website/blob/master/images/Nelson-windows.png?raw=true)

## Website dedicated to users

For more information go to [https://nelson-lang.github.io/nelson-website/](https://nelson-lang.github.io/nelson-website/).
<div align="center">
<a href="https://nelson-lang.github.io/nelson-website/" target="_blank">
<img src="https://github.com/nelson-lang/nelson/blob/master/resources/banner_nelson_small.png?raw=true" alt="Nelson Logo" width="210" height="142"></img>
</a>
</div>
<br>
<br>

<table>
<tr>
<td>
<a href="https://github.com/nelson-lang/nelson/actions/workflows/ccpp.yml"><img src='https://github.com/nelson-lang/nelson/workflows/C%2FC%2B%2B%20CI/badge.svg'/></a>
</td>
<td>
<a href="https://github.com/nelson-lang/nelson/actions/workflows/codeql-analysis-cpp.yml"><img src='https://github.com/nelson-lang/nelson/actions/workflows/codeql-analysis-cpp.yml/badge.svg'/></a>
</td>
<td>
<a href="https://bestpractices.coreinfrastructure.org/projects/602"><img src='https://bestpractices.coreinfrastructure.org/projects/602/badge'/></a>
</td>
</tr>
</table>

# The Nelson language

The main homepage for Nelson can be found at [https://nelson-lang.github.io/nelson-website/](https://nelson-lang.github.io/nelson-website/).

## Starring the repository

If you found this project useful, please consider [starring it on GitHub !!!](https://github.com/nelson-lang/nelson/stargazers) This allows me to see how many people are using my code, and motivates me to keep working to improve it.

## Download
## Introduction

[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/nelson)
Nelson is a powerful, open-source numerical computational language, developed to provide a comprehensive and intuitive environment for engineers, scientists, and students. With over 1,200 built-in functions, Nelson supports a wide range of tasks, from basic algebra to advanced numerical simulations.

[Latest Windows Installer](https://github.com/nelson-lang/nelson/releases)
Originally inspired by languages like MATLAB© and GNU Octave, Nelson offers users a lightweight yet feature-rich experience. It is designed to be easy to learn and use, with an emphasis on performance and flexibility.

[Get it from the Windows Package Manager](https://winstall.app/apps/NelsonNumericalSoftware.Nelson)

[Get it from the Chocolatey Package Manager](https://community.chocolatey.org/packages/nelson)
![Nelson environment](https://github.com/nelson-lang/nelson-website/blob/master/images/Nelson-windows.png?raw=true)

## Features

- Types managed by Nelson:

- double and double complex: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
- single and single complex: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
- logical: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
- character array (UNICODE supported).
- string array (UNICODE supported).
- integers 8, 16, 32, 64 signed and unsigned: scalar, vector, matrix 2D, N dimensions array.
- handle objects.
- anonymous functions,
- dictionary, table,
- all types can be overloaded.

- `OpenMP` and `SIMD` extensions used.

- 2D and 3D plotting with high-level plot commands.

- User Interface control.

- Desktop environment with history, file and workspace browser.

- Parallel Computing Module.

- Fast Fourrier Transformation functions based on FFTW and MKL wrapper.

- SLICOT (Subroutine Library in Systems and Control Theory) interfaces (optional).

- Control System module.
### Data Types Managed by Nelson

- Message Passing Interface (MPI): functions for parallel computing.
- **Double and Complex Double**: Supports scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
- **Single and Complex Single**: Includes scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
- **Logical**: Handles scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
- **Character Arrays**: Supports UNICODE characters.
- **String Arrays**: Fully supports UNICODE.
- **Integers**: 8, 16, 32, and 64-bit signed and unsigned scalars, vectors, 2D matrices, and N-dimensional arrays.
- **Handle Objects**: For object-oriented functionality.
- **Anonymous Functions**: Allows creation and manipulation of functions without names.
- **Data Structures**: Supports dictionaries and tables.
- **Overloading**: All types can be overloaded for custom behavior.

- JSON decode/encode data support.
### Performance Enhancements

- HDF5 high-level functions I/O,
- **OpenMP and SIMD**: Utilizes parallel processing and vectorization for faster computations.

- HDF5 used as default data file format (.nh5) load/save workspace,
### Visualization & Interface

- MAT-file compatible load/save workspace,
- **2D and 3D Plotting**: High-level commands for visualizations.
- **User Interface Controls**: Built-in controls for creating custom interfaces.
- **Desktop Environment**: Comes with history tracking, a file explorer, and workspace browser.

- Foreign Function Interface C/Fortran.
### Advanced Modules

- Interfacing C/C++ or Fortran with Nelson (build and load external code on the fly).
- **Parallel Computing**: Enables efficient use of multi-core processors.
- **Fast Fourier Transform (FFT)**: High-performance FFT functions based on FFTW and MKL.
- **SLICOT Interface**: Optional support for the Systems and Control Theory subroutine library.
- **Control System Module**: Tools for control theory and system design.
- **MPI (Message Passing Interface)**: Functions for distributed parallel computing.

- MEX C API compatibility.
### Data Formats & Interfacing

- Nelson Engine API for C (compatible with MEX Engine). Call Nelson from your C code as engine.
- **JSON Support**: Read and write JSON files.
- **HDF5 Functions**: High-level I/O functions, with HDF5 as the default file format for `.nh5` workspaces.
- **MAT-File Compatibility**: Load and save workspaces in MAT-file format.
- **Foreign Function Interface (FFI)**: Build and load C/Fortran code on the fly.
- **MEX C API Compatibility**: Interfacing with MEX-compatible C APIs.
- **Nelson Engine API**: Use Nelson as a backend engine within C code, compatible with the MEX Engine API.
- **Python Interfacing**: Call Python scripts and functions from Nelson.
- **RESTful API**: Enables Nelson to interact with web services.

- Call Python from Nelson.
### Additional Capabilities

- RESTful API web service.
- **Inter-Process Communication**: Communicate between Nelson processes.
- **QML Engine**: Use Qt’s QML framework to display and manipulate graphical content.
- **Component Object Model (COM)**: Interface with COM components, especially on Windows.
- **Excel File Support**: Write and read `.xlsx` files using COM on Windows.
- **Embedded Code Editor**: Integrated editor for Nelson scripts.

- Inter-process communication between Nelson's process.
### Help & Testing Tools

- The QML engine enables nelson programs to display and manipulate graphical content using Qt's QML framework.
- **Help Engine**: Generate and view help files in various formats like HTML, Markdown, PDF, or GitBook.
- **Test Engine**: Validate algorithms using built-in functions, with support for xUnit report export.

- Component Object Model (COM) client interface: binary-interface standard for software components on Windows.
### Profiling & Code Coverage

- Write/Read xlsx files on Windows using COM.
- **Profiler**: Built-in profiler to analyze and optimize code performance.
- **Code Coverage**: Measure the coverage of your tests to ensure thorough validation.

- Embedded Nelson code editor.
### Cloud & Extensibility

- Help engine:
- **Nelson Cloud**: Instant access to Nelson from any web browser via [Nelson Cloud](https://www.npmjs.com/package/nelson-cloud).
- **Module Skeleton**: Templates for extending Nelson:
- [Template with Macros and Builtins](https://github.com/nelson-lang/module_skeleton).
- [Basic Macros Template](https://github.com/nelson-lang/module_skeleton_basic).
- **Nelson Modules Manager (nmm)**: A package manager to install and manage extensions for Nelson.

Generate help files using Nelson dedicated functions.
View your generated help files as html, markdown, pdf, gitbook or directly in Nelson help viewer.

- Tests engine:

Validate your algorithm using Nelson dedicated functions.
Export the test results under the xUnit reports format.
## Download

- Profiling and Code coverage tools for Nelson's language:
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/nelson)

Nelson has a built-in profiler that is very useful to profile your code and find out what script or function is taking the most time.
[Latest Windows Installer](https://github.com/nelson-lang/nelson/releases)

- [Nelson cloud](https://www.npmjs.com/package/nelson-cloud):
Instant access to Nelson anywhere from an web browser.
[Get it from the Windows Package Manager](https://winstall.app/apps/NelsonNumericalSoftware.Nelson)

- Module skeleton to extend Nelson available here:
[Get it from the Chocolatey Package Manager](https://community.chocolatey.org/packages/nelson)

- [template macros and builtin](https://github.com/nelson-lang/module_skeleton),
- [basic template macros only](https://github.com/nelson-lang/module_skeleton_basic).
## Resources

- Nelson Modules Manager (nmm) : package manager for Nelson
- **Homepage:** <https://nelson-lang.github.io/nelson-website/>
- **GitBook:** <https://nelson-9.gitbook.io/nelson/>
- **Documentation:** <https://nelson-lang.github.io/nelson-website/help/en_US/>
- **Source code:** <https://github.com/nelson-lang/nelson>
- **Binaries:** <https://github.com/nelson-lang/nelson/releases>
- **Docker:** <https://hub.docker.com/r/nelsonsoftware/nelson/>
- **Gitter:** <https://gitter.im/nelson-lang/Lobby>
- **YouTube:** <https://www.youtube.com/channel/UCdZMnH0HC9XflNGAFFiRX9g>
- **Twitter:** <https://twitter.com/Nelson_software>
- **LinkedIn:** <https://www.linkedin.com/groups/13576150>

## Licenses
## License

Nelson is delivered under dual-license:

Expand All @@ -141,19 +141,6 @@ Nelson is delivered under dual-license:

- [![License (GNU General Public License (GPL) v3.0)](<https://img.shields.io/badge/license-GNU%20General%20Public%20License%20(GPL)%20v3.0-blue.svg?style=flat-square>)](https://opensource.org/licenses/GPL-3.0)

## Resources

- **Homepage:** <https://nelson-lang.github.io/nelson-website/>
- **Source code:** <https://github.com/nelson-lang/nelson>
- **Binaries:** <https://github.com/nelson-lang/nelson/releases>
- **Docker:** <https://hub.docker.com/r/nelsonsoftware/nelson/>
- **Documentation:** <https://nelson-lang.github.io/nelson-website/help/en_US/>
- **GitBook:**
<https://nelson-9.gitbook.io/nelson/>
- **Gitter:** <https://gitter.im/nelson-lang/Lobby>
- **YouTube:** <https://www.youtube.com/channel/UCdZMnH0HC9XflNGAFFiRX9g>
- **Twitter:** <https://twitter.com/Nelson_software>

## Tested and supported platforms

Systems with ✓ downloads are available on [downloads](https://github.com/nelson-lang/nelson/releases) page.
Expand Down
Loading

0 comments on commit e2db505

Please sign in to comment.