Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nelson-lang/nelson
The Nelson Programming Language
https://github.com/nelson-lang/nelson
cpp17 data-science data-structures interpreter mathematical-functions matlab matrix-functions nelson octave programming-language scientific-computing scilab
Last synced: about 17 hours ago
JSON representation
The Nelson Programming Language
- Host: GitHub
- URL: https://github.com/nelson-lang/nelson
- Owner: nelson-lang
- License: lgpl-3.0
- Created: 2016-12-25T18:34:28.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-05-17T19:05:10.000Z (8 months ago)
- Last Synced: 2024-05-17T19:12:05.105Z (8 months ago)
- Topics: cpp17, data-science, data-structures, interpreter, mathematical-functions, matlab, matrix-functions, nelson, octave, programming-language, scientific-computing, scilab
- Language: C++
- Homepage: https://nelson-lang.github.io/nelson-website/
- Size: 57.5 MB
- Stars: 86
- Watchers: 10
- Forks: 15
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG-0.1.x.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Citation: CITATION.cff
- Security: SECURITY.md
- Roadmap: ROADMAP-1.0.0.md
Awesome Lists containing this project
README
![Visitor Badge](https://visitor-badge.laobi.icu/badge?page_id=nelson-lang.nelson)
# π 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.
## π **Introduction**
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.
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.
![Nelson environment](https://github.com/nelson-lang/nelson-website/blob/master/images/Nelson-windows.png?raw=true)
## π οΈ **Features**
### Data Types Managed by Nelson
- **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.### Performance Enhancements
- **OpenMP and SIMD**: Utilizes parallel processing and vectorization for faster computations.
### Visualization & Interface
- **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.### Advanced Modules
- **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.### Data Formats & Interfacing
- **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.### Additional Capabilities
- **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.### Help & Testing Tools
- **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.### Profiling & Code Coverage
- **Profiler**: Built-in profiler to analyze and optimize code performance.
- **Code Coverage**: Measure the coverage of your tests to ensure thorough validation.### Cloud & Extensibility
- **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.## π₯ **Download**
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/nelson)
[Latest Windows Installer](https://github.com/nelson-lang/nelson/releases)
[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)
## π **Resources**
- **Homepage:**
- **GitBook:**
- **Documentation:**
- **Source code:**
- **Binaries:**
- **Docker:**
- **Gitter:**
- **YouTube:**
- **Twitter:**
- **LinkedIn:**## π **License**
Nelson is delivered under dual-license:
- [![License (GNU Lesser General Public License (LGPL) v3.0)]()](https://opensource.org/licenses/LGPL-3.0)
or
- [![License (GNU General Public License (GPL) v3.0)]()](https://opensource.org/licenses/GPL-3.0)
## π» **Supported Platforms**
Nelson is tested and supported on a wide range of platforms. **[Downloads](https://github.com/nelson-lang/nelson/releases)** options and **[continuous integration (CI)](https://github.com/nelson-lang/nelson/actions/workflows/ccpp.yml)** status are listed below:
| **Operating System** | **Architecture** | **CI** | **Binaries** |
| :------------------: | :----------------: | :----: | :----------: |
| **Windows 10, 11** | x86-64, i686 | β | β |
| **macOS Sequoia** | arm64 | β | |
| **macOS Sonoma** | arm64 | β | |
| **macOS Ventura** | x86-64 (64-bit) | β | |
| **Ubuntu 24.04** | x86-64 | β | β (Snap) |
| **Ubuntu 24.04** | arm64 (cobalt 100) | β | β (Snap) |
| **Ubuntu 22.04** | x86-64 | β | β (Snap) |
| **Ubuntu 20.04** | x86-64 | β | β (Snap) |
| **Fedora 40** | x86-64 | β | β (Snap) |
| **ArchLinux** | x86-64 | β | β (Snap) |
| **Raspbian** | ARM v8 (64-bit) | | |_Note: The continued support of some platforms may depend on community contributions._
Allan CORNET ([email protected])