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

Source code:

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

#346on PLDB | 37Years Old | 4kRepos |

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...

- GAP website
- GAP Wikipedia page
- GAP is developed on GitHub and has 615 stars
- There are at least 3,760 GAP repos on GitHub
- GAP first developed in RWTH Aachen University
- file extensions for GAP include g, gap, gd, gi and tst
- GAP on Twitter
- 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 | Token | Example |
---|---|---|---|

Line Comments | âœ“ | # | # A comment |

Comments | âœ“ | ||

Semantic Indentation | X |