Red (programming language)
| Red | |
|---|---|
![]() Red Logo: a stylized rectangular Tower of Hanoi | |
| Paradigm | Multi-paradigm: imperative, functional, symbolic |
| Family | Rebol |
| Designed by | Nenad Rakočević[1] |
| Developer | Nenad Rakočević |
| First appeared | February 2011 |
| Stable release | |
| Implementation language | Rebol, Red |
| Platform | ARM, x86 |
| OS | Unix-like: Android, Linux, macOS; Windows |
| License | BSD 3-clause, Boost |
| Filename extensions | .red, .reds |
| Website | www |
| Influenced by | |
| Rebol, Lisp, Scala, Lua | |
Red is a programming language designed to overcome the limits of the programming language Rebol.[3] Red was introduced in 2011 by Nenad Rakočević,[4] and is both an imperative and functional programming language. Its syntax and general usage overlaps that of the interpreted Rebol language.[5]
The implementation choices of Red intend to create a full stack programming language:[4][6] Red can be used for extremely high-level programming (domain-specific languages (DSLs) and graphical user interfaces (GUIs) and low-level programming (operating systems and device drivers). Key to the approach is that the language has two parts: Red/System and Red.[7]
- Red/System is similar to C, but packaged into a Rebol lexical structure – for example, one would write
if x > y [print "Hello"]instead ofif (x > y) {printf("Hello\n");}. - Red is a homoiconic language, which is capable of metaprogramming with Rebol-like semantics.[3][8] Red's runtime library is written in Red/System, and uses a hybrid approach: it compiles what it can deduce statically and uses an embedded interpreter otherwise. The project roadmap includes a just-in-time compiler for cases in between, but this has not yet been implemented.
Red seeks to remain independent of any other toolchain; it does its own code generation.[3] It is therefore possible to cross-compile[6] Red programs from any platform it supports to any other, via a command-line switch. Both Red and Red/System are distributed as open-source software under the BSD 3-clause (modified) license. The runtime library is distributed under the more permissive Boost Software License.
As of version 0.6.4 Red includes a garbage collector "the Simple GC".[9]
Introduction
Red was introduced in the Netherlands in February 2011 at the Rebol & Boron conference[10] by its author Nenad Rakočević. In September 2011, the Red programming language was presented to a larger audience during the Software Freedom Day 2011.[11][12] Rakočević is a long-time Rebol developer known as the creator of the Cheyenne HTTP server.[13]
Features
Red's syntax and semantics are very close to those of Rebol.[4][14] Like Rebol, it strongly supports metaprogramming and domain-specific languages (DSLs) and is therefore an efficient tool for dialecting (creating embedded DSLs). Red includes a dialect named Red/System, a C-level language which provides systems programming facilities.[7] Red is easy to integrate with other tools and languages as a dynamic-link library (DLL) (libRed) and very lightweight (around 1 MB). It is also able to cross-compile to various platforms (see #Cross compiling section below) and create packages for platforms that require them (e.g., .APK on Android).[7] Red also includes a fully reactive cross-platform GUI system based on an underlying reactive dataflow engine, a 2D drawing dialect comparable to SVG, compile-time and runtime macro support, and more than 40 standard datatypes.
Goals
The following is the list of Red's Goals as presented on the Software Freedom Day 2011:[11][12]
- Simplicity ("An IDE should not be necessary to write code.")
- Compactness ("Being highly expressive maximizes productivity.")
- Speed ("If too slow, it cannot be general-purpose enough.")
- Be "Green", Have a Small Footprint ("Because resources are not limitless.")
- Ubiquity ("Spread everywhere.")
- Portability, Write once run everywhere ("That's the least expected from a programming language.")
- Flexibility ("Not best but good fit for any task!")
Commercial applications
The following commercial applications are currently developed on Red:
Development
Red's development is planned to be in two phases:
- Initial phase: Red and Red/System compilers written in Rebol 2
- Bootstrap phase: Red and Red/System compilers complemented by a Red just-in-time compilation (JIT) compiler, all written in Red.
Cross compiling
As of 2018[update], supported cross-compiling targets include:[4]
- DOS: Windows, x86, console (and GUI) applications
- Windows: Windows, x86, GUI applications
- Linux: Linux, x86
- Linux-ARM: Linux, ARMv5, armel (soft-float)
- Raspberry Pi: Linux, ARMv5, armhf (hard-float)
- FreeBSD: x86
- Darwin: macOS Intel, console (and GUI) applications
- Android: Android, ARMv5
- Android-x86: Android, x86
(As of 2018[update], Red applications are 32-bit. Plans are to move to 64-bit in future.[4])
See also
- Comparison of programming languages
- History of programming languages
- List of programming languages
- List of programming languages by type
References
- ^ "Creator of Red". GitHub.
- ^ "Red's improvements". red-lang. Retrieved April 1, 2025.
- ^ a b c "Getting Started with GUI Programming using Red Language". Studytonight. Retrieved September 17, 2021.
- ^ a b c d e Balbaert 2018.
- ^ "Interview with Nenad Rakocevic about Red, a Rebol inspired programming language". Not a Monad Tutorial. 28 August 2015. Archived from the original on 23 March 2023. Retrieved August 28, 2015.
- ^ a b "6 Unusual & Groundbreaking Programming Languages to Learn in 2023". makeuseof.com. 18 October 2023.
- ^ a b c Lucas, Mathis (21 July 2023). "Red: an imperative and functional programming language that is also a "full battery" language". Developpez.com. Retrieved 16 January 2023.
- ^ Sasu, Alexandru (22 November 2018). "Review of Red". Softpedia. Retrieved February 21, 2024.
- ^ lucindamichele. "0.6.4 Simple GC and Pure Red GUI Console". Retrieved 2018-12-16.
The main feature for 0.6.4 is what we call the Simple GC (Garbage Collector). A more advanced GC is planned for the future
- ^ « New Red Programming Language Gets Syllable Backend », osnews.com, May 2011.
- ^ a b « Red Programming Language: Red at Software Freedom Day 2011 », red-lang.org, September 14, 2011.
- ^ a b "Software Freedom Day 2011: Red programming language, a new REBOL dialect". YouTube. 16 September 2011. Retrieved 17 January 2023.
- ^ « What is Cheyenne? » Last referenced Nov 2017.
- ^ "The Dynamic Mapping Architecture". OhioLINK. December 2021.
- ^ «DiaGrammar», red-lang.org, March 2020.
- ^ «SmartXML», redata.dev.
Further reading
- Balbaert, Ivo (May 2018). Learn Red - Fundamentals of Red. Packt Publishing. ISBN 978-1789130706.
External links
- Official website

- Latest builds from official website
- Red on GitHub
- Redprogramming.com
- Helpin' Red Archived 2021-09-28 at the Wayback Machine
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
