Difference between revisions of "Sygnm"

From sygnm
Jump to: navigation, search
(Documentation)
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{lowercase}}
 
{{lowercase}}
 
__NOTOC__
 
__NOTOC__
sygnm is a general purpose computer algebra system, currently in pre-alpha state of development, which differs in several aspects from other current computer algebra systems. It is free software, licensed under the GNU AGPL.
+
sygnm (/ˈsiɡ.num/, short for '''sy'''mbolic computing and '''nu'''merical '''m'''athematics) is a general purpose computer algebra framework, which differs in several aspects from current computer algebra systems. It is free software, licensed under the GNU AGPL.
  
sygnm aims to:
+
The main features of sygnm are:
* build on existing open source technologies while keeping the whole system consistent
+
* It can be used as a '''library''' from several different programming languages (currently C++, Python, Ruby, Java), and it can also be used '''interactively''' in "calculator mode" through various user interfaces,
* be highly modular and extensible
+
* it does not invent it's own programming language; the core and mathematical packages are in '''C/C++''' and you can also access these from other higher level languages like '''Python''',
* be portable
+
* it's '''free''' and '''open source''',
* support parallellization
+
* it's '''modular'''; the core, the packages implementing all mathematical functionality and the user interfaces are clearly separated,
* focus solely on mathematics, not being a general purpose programming environment
+
* it's based on '''modern''' technologies,
* respect user rights and privacy
+
* it respects your '''privacy'''; no telemetry, data collection, licensing checks or forced updates; it makes no network connections at all unless such a package is loaded and the user explicitly requests so,
* be a good base for future development
+
* it has a dynamic "type system" which enables runtime '''generic programming''', based on typeclasses and function overloading,
== How is sygnm different? ==
+
* however this runtime "type system" is optional and it is possible to write '''fast''', specialized code without any runtime overhead.
* no new programming language to learn: sygnm can operate in a simplified interactive ("calculator") mode, or can be used as a library from existing languages (currently C++ and Python)
 
* implements a dynamic type system for runtime function overload resolution on top of C++, based on typeclasses and parametric polymorphism
 
* highly modular, divided to three main parts: core, packages and user interfaces
 
* unique  I/O architecture supporting multiple expression parsers, renderers and I/O interfaces with different syntaxes, which can be combined freely
 
* fully localizable, Unicode can be used everywhere in the sygnm system (even in function names and other identifiers)
 
  
== Download sygnm ==
+
== Downloads and current state of development ==
sygnm is currently in pre-alpha, there are no releases yet.
+
'''sygnm is currently in pre-alpha, there are no releases yet and the mathematical functionality is limited.'''
 
The source is available at https://git.sygnm.org.
 
The source is available at https://git.sygnm.org.
 
There is some documentation on how to [[Building sygnm from source|build]] and [[Using sygnm|run]] sygnm from source.
 
There is some documentation on how to [[Building sygnm from source|build]] and [[Using sygnm|run]] sygnm from source.
Line 25: Line 20:
 
== Documentation ==
 
== Documentation ==
  
* [[sygnm]]
+
* [[sygnm|sygnm (this page)]]
 
* User documentation
 
* User documentation
 
** [[Downloading and installing sygnm]]
 
** [[Downloading and installing sygnm]]
 +
** [[Tutorial: sygnm in 15 minutes]]
 
** [[Using sygnm]]
 
** [[Using sygnm]]
 +
** [[Tutorial: basic features]]
 
** [[Configuration]]
 
** [[Configuration]]
 
** [[Overview of sygnm architecture]]
 
** [[Overview of sygnm architecture]]
** [[The object system]]
 
** [[Types and function overloading]]
 
** [[Expression trees]]
 
 
** [[Packages]]
 
** [[Packages]]
** [[Creating sygnm packages]]
+
** [[Objects, types and function overloading]]
** [[Package file format specification]]
+
** [[Expression trees and evaluation]]
 +
** [[Tutorial: creating sygnm packages]]
 +
** [[Tutorial: sygnm C++ API]]
 +
** [[Tutorial: using the sygnm framework from other software]]
 +
** [[Package file format reference]]
 
* Developer documentation
 
* Developer documentation
 
** [[Building sygnm from source]]
 
** [[Building sygnm from source]]
 
** [[Developer manual]]
 
** [[Developer manual]]
** [[API overview]]
 
 
** [[Roadmap]]
 
** [[Roadmap]]
 +
** [[Wrappers]]
 +
** [[Removed or rejected features]]
 
* [[License]]
 
* [[License]]
 
* [[Credits]]
 
* [[Credits]]

Latest revision as of 15:54, 28 April 2018


sygnm (/ˈsiɡ.num/, short for symbolic computing and numerical mathematics) is a general purpose computer algebra framework, which differs in several aspects from current computer algebra systems. It is free software, licensed under the GNU AGPL.

The main features of sygnm are:

  • It can be used as a library from several different programming languages (currently C++, Python, Ruby, Java), and it can also be used interactively in "calculator mode" through various user interfaces,
  • it does not invent it's own programming language; the core and mathematical packages are in C/C++ and you can also access these from other higher level languages like Python,
  • it's free and open source,
  • it's modular; the core, the packages implementing all mathematical functionality and the user interfaces are clearly separated,
  • it's based on modern technologies,
  • it respects your privacy; no telemetry, data collection, licensing checks or forced updates; it makes no network connections at all unless such a package is loaded and the user explicitly requests so,
  • it has a dynamic "type system" which enables runtime generic programming, based on typeclasses and function overloading,
  • however this runtime "type system" is optional and it is possible to write fast, specialized code without any runtime overhead.

Downloads and current state of development

sygnm is currently in pre-alpha, there are no releases yet and the mathematical functionality is limited. The source is available at https://git.sygnm.org. There is some documentation on how to build and run sygnm from source.

Documentation