GAP, aka Groups, Algorithms and Programming, is an open source programming language created in 1986 by gap.

#281on PLDB | 38Years Old | 4kRepos |

Download source code:

`git clone https://github.com/gap-system/gap`

GAP (Groups, Algorithms and Programming) is a computer algebra system for computational discrete algebra with particular emphasis on computational group theory.. Read more on Wikipedia...

- Tags: programming language
- GAP is developed on GitHub and has 781 stars
- There are at least 3,760 GAP repos on GitHub
- Early development of GAP happened in RWTH Aachen University
- GAP is written in C, Assembly language, GDScript, XML, Bourne shell, M4, C++, Make, Markdown, Perl, Tex, Ada, C#, YAML, Python, HTML, Pascal, CMake, Vim script, JavaScript, Yacc, Lisp, Lex, SAS, FORTRAN 77, CSS, Ruby, CSV, Ini
- The Google BigQuery Public Dataset GitHub snapshot shows 4k users using GAP in 4k repos on GitHub
- There are 33 Project Euler users using GAP
- Explore GAP snippets on Rosetta Code
- GAP on HOPL
- Pygments supports syntax highlighting for GAP
- GitHub supports syntax highlighting for GAP
- gap-system.org was registered in 2000
- See also: (3 related languages) C, Unix, Sage

Example from Riju:

```
Print("Hello, world!\n");
```

Example from Linguist:

```
gap> START_TEST("Test of factor groups and natural homomorphisms");
gap> G:=HeisenbergPcpGroup(2);
Pcp-group with orders [ 0, 0, 0, 0, 0 ]
gap> H:=Subgroup(G,[G.2,G.3,G.4,G.5]);
gap> K:=G/H;
gap> NaturalHomomorphism(K);
gap> A:=Subgroup(H, [G.3]);
Pcp-group with orders [ 0 ]
gap> B:=Subgroup(Subgroup(G,[G.1,G.4,G.5]), [G.4]);
Pcp-group with orders [ 0 ]
gap> Normalizer(A,B);
Pcp-group with orders [ 0 ]
gap> # The following used to trigger the error "arguments must have a common parent group"
gap> Normalizer(B,A);
Pcp-group with orders [ 0 ]
gap> STOP_TEST( "factor.tst", 10000000);
```

Example from Wikipedia:

```
gap> G:=SmallGroup(8,1); # Set G to be a group of order 8.
<pc group of size 8 with 3 generators>
gap> i:=IsomorphismPermGroup(G); # Find an isomorphism from G to a group of permutations
<action isomorphism>
gap> Image(i,G); # The image of G under I - these are the generators of im G.
Group([ (1,5,3,7,2,6,4,8), (1,3,2,4)(5,7,6,8), (1,2)(3,4)(5,6)(7,8) ])
gap> Elements(Image(i,G)); # All the elements of im G.
[ (), (1,2)(3,4)(5,6)(7,8), (1,3,2,4)(5,7,6,8), (1,4,2,3)(5,8,6,7),
(1,5,3,7,2,6,4,8), (1,6,3,8,2,5,4,7), (1,7,4,5,2,8,3,6), (1,8,4,6,2,7,3,5) ]
```

Feature | Supported | Example | Token |
---|---|---|---|

Line Comments | ✓ | # A comment | # |

Comments | ✓ | ||

Semantic Indentation | X |