Gosu (programming language)

From Wikipedia, the free encyclopedia
Gosu
Designed by Guidewire Software
Developer Guidewire Software
Stable release 0.10.2 (August 7, 2013 (2013-08-07))
Influenced by Java, Ruby, Python, Erlang, Haskell, C#
Implementation language Java, Gosu
Platform Java virtual machine
OS any JVM supported
License Apache License
Website gosu-lang.org

    Gosu is a general-purpose Java virtual machine-based programming language released under the Apache License 2.0.[1] This general-purpose programming language is used in some open-source software projects, including the web application framework Ronin and the build-tool Vark, as well as in Guidewire Software commercial products for the insurance industry.[1][2] The language is rooted in concepts from Java, C#, and ECMAScript, but borrows some constructs from Ruby and dynamic languages. Its most notable feature is its Open Type System API, which allows the language to be easily extended to provide compile-time checking for things that would typically be dynamically checked at runtime in many other languages.

    History

    Gosu began in 2002 as a scripting language called GScript at Guidewire Software. It was used to configure business logic in Guidewire's applications and was more of a simple rule definition language. In its original incarnation it followed ECMAScript guidelines. Guidewire enhanced the scripting language over the next 8 years, and released Gosu 0.7 beta to the community in November 2010. The 0.8 beta was released in December 2010, and 0.8.6 beta was released in mid-2011 with additional typeloaders, making Gosu capable of loading XML schema definition files (xsd's) and XML documents as native Gosu types. The latest version is 0.10.2, released on August 2013.

    Examples

    Fibonacci sequence:

    function fib(n : int) : int {
      if (n < 2) return n
      return fib(n-1) + fib(n-2)
    }
     
    print(fib(20))
    

    Blocks (closures or lambda functions):

    var list = {1, 2, 3}
    var result = list.where(\ elem -> elem >= 2)
    print(result)
    

    XML:

    /*
    Any XSD can be placed into a Gosu source directory, and types will automatically appear in the system that
    can be used to manipulate instance documents that conform to that schema. This example shows
    manipulation of a schema using the schema schema that ships with Gosu in the gw.xsd.w3c.xmlschema package.
    */
    var schema = new gw.xsd.w3c.xmlschema.Schema()
    schema.TargetNamespace = new java.net.URI( "urn:example.com" )
    schema.Element[0].Name = "root"
    schema.Element[0].ComplexType.Sequence.Element[0].Name = "child"
    schema.Element[0].ComplexType.Sequence.Element[0].Type = schema.$Namespace.qualify( "string" )
    schema.print()
    

    Notes

    References

    External links

    This article is issued from Wikipedia. The text is available under the Creative Commons Attribution/Share Alike; additional terms may apply for the media files.