FOUNDER OF THE RACKET:
Matthias Felleisen is a German-American computer science professor and author. He grew up in Germany and immigrated to the US when he was 21 years old.
WHAT IS RACKET?
Racket is a general-purpose, multi-paradigm programming language based on the Scheme dialect of Lisp. It is designed as a platform for programming language design and implementation. In addition to the core Racket language, Racket is also used to refer to the family of programming languages and set of tools supporting development on and with Racket. Racket is also used for scripting, computer science education, and research.
FOUNDATION OF RACKET:
The Racket platform provides an implementation of the Racket language (including a runtime system, libraries, and JIT compiler) along with the DrRacket integrated development environment (IDE) written in Racket. Racket is used by the ProgramByDesign outreach program, which aims to turn computer science into "an indispensable part of the liberal arts curriculum".
The core Racket language is known for its extensive macro system which enables creating embedded and domain-specific languages, language constructs such as classes or modules, and separate dialects of Racket with different semantics.
Racket's core language includes macros, modules, lexical closures, tail calls, delimited continuations,] parameters (fluid variables), software contracts, green threads and OS threads, and more. The language also comes with primitives, such as event spaces and custodians, which control resource management and enables the language to act like an operating system for loading and managing other programs. Further extensions to the language are created with the powerful macro system, which together with the module system and custom parsers can control all aspects of a language. Most language constructs in Racket are implemented as macros in the base language. These include a mixin class system, a component (or module) system as expressive as opaque ascription in the ML module system, and pattern matching.
Further, the language features the first contract system for a higher-order programming language. Racket's contract system is inspired by the Design by Contract work for Eiffel and extends it to work for higher-order values such as first-class functions, objects, reference cells, and so on. For example, an object that is checked by a contract can be ensured to make contract checks when its methods are eventually invoked.
Racket includes both bytecode and JIT (JIT) compilers. The bytecode compiler produces an internal bytecode format run by the Racket virtual machine, and the JIT compiler translates bytecode to machine code at runtime.
Since 2004, the language has also shipped with PLaneT, a package manager that is integrated into the module system so that third-party libraries can be transparently imported and used. Also, PLaneT has a built-in versioning policy to prevent dependency hell.
The macrosystem in Racket has been used to construct entire language dialects. This includes Typed Racket, which is a gradually typed dialect of Racket that eases the migration from untyped to typed code,] Lazy Racket—a dialect with lazy evaluation, and Hackett, which combines Haskell and Racket. The pedagogical programming language Pyret was originally implemented in Racket
DrRACKET IDE:
DrRacket (formerly DrScheme) is widely used among introductory computer science courses that teach Scheme or Racket and is lauded for its simplicity and appeal to beginner programmers. The IDE was originally built for use with the TeachScheme! project (now ProgramByDesign), an outreach effort by Northeastern University and several affiliated universities for attracting high school students to computer science courses at the college level.
The editor provides highlighting for syntax and run-time errors, parenthesis matching, a debugger and an algebraic stepper. Its student-friendly features include support for multiple "language levels" (Beginning Student, Intermediate Student and so on). It also has integrated library support and sophisticated analysis tools for advanced programmers. Further, module-oriented programming is supported with the module browser, a contour view, integrated testing and coverage measurements, and refactoring support. It provides integrated, context-sensitive access to an extensive hyper-linked help system named "Help Desk".
RACKET:
After serving as a professor for 14 years in the Computer Science Department of Rice University, Felleisen is currently a Trustee Professor in the Khoury College of Computer Sciences at Northeastern University in Boston, Massachusetts. He received his PhD from Indiana University under the direction of Daniel P. Friedman.
Felleisen's interests include programming languages, including software tools, program design, the Design Recipe, software contracts, and many more. In the 1990s, Felleisen launched PLT and TeachScheme! (now ProgramByDesign and eventually giving rise to the Bootstrap project to teach program-design principles to beginners and to explore the use of Scheme to produce large systems. As part of this effort, he authored How to Design Programs (MIT Press, 2001) with Findler, Flatt, and Krishnamurthi.
For his dissertation, Felleisen developed small-step operational semantics for higher-order functional with imperative extensions (state, control). Part I of "Semantics Engineering with PLT Redex" is derived from his dissertation. Its most well-known application is for proof of type safety, worked out with his PhD student Andrew Wright.
FOLLOW US ON INSTAGRAM, FACEBOOK AND PINTEREST
DISCLAIMER
The information is provided by Tecquisition for general informational and educational purposes only and is not a substitute for professional legal advice. If you have any feedback, comments, requests for technical support or other inquiries, please mail us at tecqusition@gmail.com.
Comments