Content deleted Content added
Jerryobject (talk | contribs) m Proper noun acronym > MOS:ALLCAPS. WP:LINK update-standardize. |
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 |
||
(8 intermediate revisions by 8 users not shown) | |||
Line 3:
| name = Racket
| logo = Racket-logo.svg
| logo size =
| screenshot = Drracket.png
| screenshot size = 250px
| screenshot caption = DrRacket on [[Linux]]
| paradigm = [[Multi-paradigm programming language|Multi-paradigm]]: [[Functional programming|functional]], [[Imperative programming|imperative]], [[Logic programming|logic]], [[Metaprogramming|meta]], [[Modular programming|modular]], [[Object-oriented programming|object-oriented]], [[Reflective programming|reflective]]
Line 22 ⟶ 23:
| license = [[MIT License|MIT]] or [[Apache License 2.0|Apache 2.0]]<ref>{{cite web|title=Completing Racket's relicensing effort|url=https://blog.racket-lang.org/2019/11/completing-racket-s-relicensing-effort.html|last1=Tobin-Hochstadt|first1=Sam|last2=Gerard|first2=Sage|last3=Dueck|first3=Joel|last4=Flatt|first4=Matthew|author-link4=Matthew Flatt|author5=Software Freedom Conservancy|author-link5=Software Freedom Conservancy|last6=Chestek|first6=Pamela|date=2019-11-15|access-date=2019-12-27}}</ref>
| file ext = .rkt<ref>{{cite web|title=DrRacket Files|quote=The standard file extension for a Racket program file is ".rkt". The extensions ".ss", ".scm", and ".sch" are also historically popular.|url=https://docs.racket-lang.org/drracket/drracket-files.html|access-date=21 July 2019}}</ref>
| website = {{
}}
'''Racket''' is a [[General-purpose programming language|general-purpose]], [[multi-paradigm programming language]]. The Racket language is a modern dialect of [[Lisp (programming language)|Lisp]] and a descendant of [[Scheme (programming language)|Scheme]]. It is designed as a platform for [[programming language theory|programming language design]] and implementation.<ref name="manifesto">{{cite journal |last1=Felleisen |first1=M. |last2=Findler |first2=R.B. |last3=Flatt |first3=M. |last4=Krishnamurthi |first4=S. |last5=Barzilay |first5=E. |last6=McCarthy |first6=J. |last7=Tobin-Hochstadt |first7=S. |title=The Racket Manifesto |journal=Proceedings of the First Summit on Advances in Programming Languages |date=2015 |pages=113–128 |url=https://www2.ccs.neu.edu/racket/pubs/manifesto.pdf}}</ref> In addition to the core Racket language, ''Racket'' is also used to refer to the family of programming languages<ref>{{cite web |title=Dialects of Racket and Scheme |url=http://docs.racket-lang.org/guide/dialects.html |access-date=2011-08-15}}</ref> and set of tools supporting development on and with Racket.<ref>{{cite web |title=Welcome to Racket |url=http://docs.racket-lang.org/guide/intro.html|access-date=2019-05-15}}</ref> Racket is also used for [[script (computing)|scripting]], [[computer science]] education, and research.▼
The Racket platform provides an implementation of the Racket language (including a [[runtime system]],<ref name="mred"/> libraries, and [[compiler]] supporting several compilation modes: machine code, machine-independent, interpreted, and JIT) along with the DrRacket [[integrated development environment]] (IDE) written in Racket.<ref name="drscheme"/> Racket is used by the [[ProgramByDesign]] outreach program, which aims to turn [[computer science]] into "an indispensable part of the [[liberal arts]] [[curriculum]]".<ref name="teachscheme">{{cite news| last1=Felleisen |last2=Findler |last3=Flatt |last4=Krishnamurthi |year=2004 |url=http://www.ccs.neu.edu/scheme/pubs/#cse2003-fffk |title=The TeachScheme! Project: Computing and Programming for Every Student|journal=Journal of Computer Science Education}}</ref><ref>{{cite web |url=http://programbydesign.org/overview |title=Overview |publisher=Program by Design |access-date=2011-08-17 |archive-date=2013-05-20 |archive-url=https://web.archive.org/web/20130520104718/http://www.programbydesign.org/overview |url-status=dead }}</ref>▼
▲The Racket language is a modern dialect of [[Lisp (programming language)|Lisp]] and a descendant of [[Scheme (programming language)|Scheme]]. It is designed as a platform for [[programming language theory|programming language design]] and implementation.<ref name="manifesto">{{cite journal |last1=Felleisen |first1=M. |last2=Findler |first2=R.B. |last3=Flatt |first3=M. |last4=Krishnamurthi |first4=S. |last5=Barzilay |first5=E. |last6=McCarthy |first6=J. |last7=Tobin-Hochstadt |first7=S. |title=The Racket Manifesto |journal=Proceedings of the First Summit on Advances in Programming Languages |date=2015 |pages=113–128 |url=https://www2.ccs.neu.edu/racket/pubs/manifesto.pdf}}</ref> In addition to the core Racket language, ''Racket'' is also used to refer to the family of programming languages<ref>{{cite web |title=Dialects of Racket and Scheme |url=http://docs.racket-lang.org/guide/dialects.html |access-date=2011-08-15}}</ref> and set of tools supporting development on and with Racket.<ref>{{cite web |title=Welcome to Racket |url=http://docs.racket-lang.org/guide/intro.html|access-date=2019-05-15}}</ref> Racket is also used for [[script (computing)|scripting]], [[computer science]] education, and research.
▲The Racket platform provides an implementation of the Racket language (including a [[runtime system]],<ref name="mred"/> libraries, and [[compiler]] supporting several compilation modes: machine code, machine-independent, interpreted, and JIT) along with the DrRacket [[integrated development environment]] (IDE) written in Racket.<ref name="drscheme"/> Racket is used by the [[ProgramByDesign]] outreach program, which aims to turn [[computer science]] into "an indispensable part of the [[liberal arts]] [[curriculum]]".<ref name="teachscheme">{{cite news| last1=Felleisen |last2=Findler |last3=Flatt |last4=Krishnamurthi |year=2004 |url=http://www.ccs.neu.edu/scheme/pubs/#cse2003-fffk |title=The TeachScheme! Project: Computing and Programming for Every Student|journal=Journal of Computer Science Education}}</ref><ref>{{cite web |url=http://programbydesign.org/overview |title=Overview |publisher=Program by Design |access-date=2011-08-17}}</ref>
The core Racket language is known for its extensive [[macro (computer science)|macro]] system which enables creating embedded and [[___domain-specific language]]s, language constructs such as [[class (computer programming)|classes]] or [[modular programming|modules]], and separate dialects of Racket with different [[semantics of programming languages|semantics]].<ref name="scheme-with-classes">{{cite conference
Line 56 ⟶ 55:
|year=2011
|url=http://www.ccs.neu.edu/scheme/pubs/pldi11-thacff.pdf}}
</ref><ref>{{Cite journal |doi=10.1145/3127323 |volume=61 |issue=3 |pages=62–71 |last1=Felleisen |first1=Matthias |last2=Findler |first2=Robert Bruce |last3=Flatt |first3=Matthew |last4=Krishnamurthi |first4=Shriram |last5=Barzilay |first5=Eli |last6=McCarthy |first6=Jay |last7=Tobin-Hochstadt |first7=Sam |title=A Programmable Programming Language |journal=Communications of the ACM |date=2018 |s2cid=3887010 |url=https://cacm.acm.org/magazines/2018/3/225475-a-programmable-programming-language/fulltext|url-access=subscription }}</ref>
The platform distribution is [[free and open-source software]] distributed under the [[Apache License|Apache 2.0]] and [[MIT license]]s.<ref name="racket-lgpl-license">{{cite web |title=Racket: Software License |url=http://download.racket-lang.org/license.html |access-date=2015-10-20}}</ref> Extensions and packages written by the community may be uploaded to Racket's [[package manager|package catalog]].
Line 63 ⟶ 62:
===Development===
[[Matthias Felleisen]] founded PLT Inc. in the mid 1990s, first as a research group, soon after as a project dedicated to producing [[pedagogic]] materials for novice programmers (lectures, exercises/projects, software). In January 1995, the group decided to develop a pedagogic programming environment based on [[Scheme (programming language)|Scheme]]. [[Matthew Flatt]] cobbled together MrEd, the original [[virtual machine]] for Racket, from libscheme,<ref name="libscheme">{{cite conference |url=https://www.usenix.org/legacy/publications/library/proceedings/vhll/benson.html |title=libscheme: Scheme as a C Library |last=Benson |first=Brent W. Jr. |date=26–28 October 1994 |publisher=USENIX Association |publication-place=Berkeley, CA |book-title=Proceedings of the USENIX Symposium on Very High Level Languages |pages=7–19 |___location=Santa Fe, NM |isbn=978-1880446652 |access-date=7 July 2013}}</ref> [[wxWidgets]], and a few other free systems.<ref name="gui-rebuild">{{cite web |title=Rebuilding Racket's Graphics Layer |access-date=2017-12-11|date=2010-12-08 |url=http://blog.racket-lang.org/2010/12/rebuilding-rackets-graphics-layer.html}}</ref> In the years that followed, a team including Flatt, [[Robert Bruce Findler|Robby Findler]], [[Shriram Krishnamurthi]], Cormac Flanagan, and many others produced DrScheme, a programming environment for novice Scheme programmers and a research environment for [[type system#Combining static and dynamic type checking|
In parallel, the team began conducting workshops for high school teachers, training them in program design and functional programming. Field tests with these teachers and their students provided essential clues for directing the development.
Line 111 ⟶ 110:
{{See also|Racket features#Language Extensions|l1=Racket language extensions}}
The features that most clearly distinguish Racket from other languages in the Lisp family are its integrated language [[Extensible programming|extensibility]] features that support building new [[Domain-specific languages|___domain-specific]] and [[General-purpose programming language|general-purpose]] languages. Racket's extensibility features are built into the module system to allow context-sensitive and module-level control over syntax.<ref name=
The module-level extensibility features are combined with a [[Scheme (programming language)|Scheme]]-like hygienic macro system, which provides more features than [[Lisp (programming language)|Lisp's]] s-expression manipulation system,<ref name=
The ''macro'' system in Racket has been used to construct entire language [[dialect (computing)|dialects]]. This includes Typed Racket, which is a gradually typed dialect of Racket that eases the migration from [[dynamically typed|untyped]] to typed code,<ref>{{cite conference |last1=Tobin-Hochstadt |first1=S. |last2=Felleisen |first2=M. |title=The Design and Implementation of Typed Scheme |book-title=Principles of Programming Languages |year=2008}}</ref> Lazy Racket—a dialect with [[lazy evaluation]],<ref>{{cite conference |last1=Barzilay |first1=E. |last2=Clements |first2=J. |title=Laziness Without All the Hard Work: Combining Lazy and Strict Languages for Teaching |book-title=Functional and Declarative Programming in Education |year=2005}}</ref> and Hackett, which combines Haskell and Racket.<ref name="Alexis Kings Blog">{{cite web | title=The Hackett Programming Language | website=Alexis King's Blog | url=https://lexi-lambda.github.io/hackett/ | access-date=16 June 2019}}</ref> The pedagogical programming language [[Pyret]] was originally implemented in Racket.<ref name="The Pyret Crew 2011">{{cite web | author=The Pyret Crew | title=The Pyret Code; or A Rationale for the Pyret Programming Language | website=Pyret | date=24 May 2011 | url=http://pyret.org/pyret-code/index.html | access-date=16 June 2019}}</ref><ref name="Index of / 2017">{{cite web | title=Programming and Programming Languages | website=Index of / | date=20 September 2017 | url=https://papl.cs.brown.edu/2017/ | access-date=16 June 2019}}</ref>
Line 215 ⟶ 214:
[[Category:Pedagogic integrated development environments]]
[[Category:Cross-platform free software]]
[[Category:Free
[[Category:Programming languages created in 1995]]
[[Category:Pattern matching programming languages]]
|