Template:Short description Template:Distinguish Template:Primary sources Template:Update

Snowball is a small string processing programming language designed for creating stemming algorithms for use in information retrieval.<ref name=Snowball-HomePage>"Snowball", Martin Porter, web page. Retrieved 2 September 2014.</ref>

The name Snowball was chosen as a tribute to the SNOBOL programming language, "with which it shares the concept of string patterns delivering signals that are used to control the flow of the program."<ref name=":0" /> The creator of Snowball, Dr. Martin Porter, "toyed with the idea of calling it 'strippergram,'" because it "effectively provides a 'suffix STRIPPER GRAMmar.'"<ref name=Snowball-HomePage/>

The Snowball compiler translates a Snowball script (an .sbl file) into program in thread-safe ANSI C, Java, Ada, C#, Go, Javascript, Object Pascal, Python or Rust.<ref name=":1">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref><ref name=":2">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> For ANSI C, each Snowball script produces a program file and corresponding header file (with .c and .h extensions).<ref name=":1" /> The Snowball compiler checks the consistency of its script, and this check was used to discover a typo in a seminal academic paper by Lovins which had remained undetected for 30 years.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

The basic datatypes handled by Snowball are strings of characters, signed integers, and boolean truth values, or more simply strings, integers and booleans. Snowball's characters are either 8-bit wide, or 16-bit, depending on the mode of use. In particular, both ASCII and 16-bit Unicode are supported.<ref name=":0" /> Like the SNOBOL programming language, the flow of control in Snowball is arranged by the implicit use of signals (each statement returns a true or false value), rather than the explicit use of constructs such as if, then, and break found in C and many other programming languages.<ref name=":0">"Snowball Manual", Martin Porter, web page. Retrieved 2 September 2014.</ref>

Though the original Snowball website maintained by Dr. Martin Porter and colleague Richard Boulton has been closed since 2014 following Dr. Porter’s retirement,<ref name="Snowball-HomePage" /><ref name=":2" /><ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> the site itself is still accessible, and the language continues to be developed as a community project on GitHub.<ref name="Snowball-HomePage" /><ref name=":2" /> Additionally, large projects like the Natural Language Toolkit (NLTK) for Python employ Snowball along with stemming algorithms designed by Dr. Porter and other contributors to the Snowball language.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref><ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

ReferencesEdit

Template:Reflist

External linksEdit


  1. REDIRECT Template:Prog-lang-stub

Template:R shell