GetWiki
Clojure
ARTICLE SUBJECTS
being →
database →
ethics →
fiction →
history →
internet →
language →
linux →
logic →
method →
news →
policy →
purpose →
religion →
science →
software →
truth →
unix →
wiki →
ARTICLE TYPES
essay →
feed →
help →
system →
wiki →
ARTICLE ORIGINS
critical →
forked →
imported →
original →
Clojure
please note:
- the content below is remote from Wikipedia
- it has been imported raw for GetWiki
{{Short description|Dialect of the Lisp programming language on the Java platform}}- the content below is remote from Wikipedia
- it has been imported raw for GetWiki
factoids | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name | Clojure| logo = Clojure logo.svg| logo size = 120px
| Lisp (programming language)>Lisp| designer = Rich Hickey | {edih} | Garbage collection (computer science)>Garbage collection via a host (Java Virtual Machine | , Common Language Runtime>CLR, a JavaScript runtime such as V8 (JavaScript engine) | in case of ClojureScript or BEAM (Erlang virtual machine)>BEAM (see below)| dialects = ClojureScript, ClojureDart |
| }} | }} | Eclipse Public License>Eclipse Public | weblink}} |
History(File:Rich Hickey.jpg|thumb|Rich Hickey, creator of Clojure)Rich Hickey is the creator of the Clojure language. Before Clojure, he developed dotLisp, a similar project based on the .NET platform,WEB,weblink [ANN] dotLisp: A Lisp dialect for .Net, Hickey, Rich, 2002-10-16, Google.com, and three earlier attempts to provide interoperability between Lisp and Java: a Java foreign language interface for Common Lisp (jfli),WEB,weblink jfli, Hickey, Rich, 2013-04-15, SourceForge.net, A Foreign Object Interface for Lisp (FOIL),WEB,weblink foil: Foreign Object Interface for Lisp, Hickey, Rich, 2013-04-03, SourceForge.net, and a Lisp-friendly interface to Java Servlets (Lisplets).WEB,weblink Lisplets, Hickey, Rich, 2013-03-07, SourceForge.net, Hickey spent about two and a half years working on Clojure before releasing it publicly in October 2007,JOURNAL, Hickey, Rich, 2020-06-12, A history of Clojure, Proceedings of the ACM on Programming Languages, 4, HOPL, 1â46, 10.1145/3386321, 219603760, free, much of that time working exclusively on Clojure with no outside funding. At the end of this time, Hickey sent an email announcing the language to some friends in the Common Lisp community.Clojure's name, according to Hickey, is a word play on the programming concept "closure" incorporating the letters C, L, and J for C#, Lisp, and Java respectivelyâthree languages which had a major influence on Clojure's design.DesignRich Hickey developed Clojure because he wanted a modern Lisp for functional programming, symbiotic with the established Java platform, and designed for concurrency.WEB,weblink LinuxJournal.com, Economy Size Geek â Interview with Rich Hickey, Creator of Clojure, Elmendorf, Dirk, 2010-04-01, He has also stressed the importance of simplicity in programming language design and software architecture, advocating for loose coupling, polymorphism via protocols and type classes instead of inheritance, stateless functions that are namespaced instead of methods or replacing syntax with data.WEB, Simple Made Easy,weblink 2024-05-02, InfoQ, en, WEB, (iterate think thoughts): Advantages of Data Oriented Programming,weblink 2024-05-02, yogthos.net, WEB, talk-transcripts/Hickey_Rich/EffectivePrograms.md at master · matthiasn/talk-transcripts,weblink 2024-05-02, GitHub, en, Clojure's approach to state is characterized by the concept of identities, which are represented as a series of immutable states over time. Since states are immutable values, any number of workers can operate on them in parallel, and concurrency becomes a question of managing changes from one state to another. For this purpose, Clojure provides several mutable reference types, each having well-defined semantics for the transition between states.Clojure runs on the Java platform and as a result, integrates with Java and fully supports calling Java code from Clojure,WEB,weblink Clojure.org, Hosted on the JVM, 2019-07-07, and Clojure code can be called from Java, too.WEB,weblink Java Interop, Clojure.org, 2019-07-07, The community uses tools such as Clojure command-line interface (CLI) or Leiningen for project automation, providing support for Maven integration. These tools handle project package management and dependencies and are configured using Clojure syntax.As a Lisp dialect, Clojure supports functions as first-class objects, a readâevalâprint loop (REPL), and a macro system. Clojure's Lisp macro system is very similar to that of Common Lisp with the exception that Clojure's version of the backquote (termed "syntax quote") qualifies symbols with their namespace. This helps prevent unintended name capture, as binding to namespace-qualified names is forbidden. It is possible to force a capturing macro expansion, but it must be done explicitly. Clojure does not allow user-defined reader macros, but the reader supports a more constrained form of syntactic extension.WEB,weblink GitHub, edn, Hickey, Rich, 2019-07-07, Clojure supports multimethodsWEB,weblink Clojure.org, Multimethods and Hierarchies, 2019-07-07, and for interface-like abstractions has a protocolWEB,weblink Clojure.org, Protocols, 2019-07-07, based polymorphism and data type system using records,WEB,weblink Clojure.org, Datatypes: deftype, defrecord and reify, 2019-07-07, providing high-performance and dynamic polymorphism designed to avoid the expression problem.Clojure has support for lazy sequences and encourages the principle of immutability and persistent data structures. As a functional language, emphasis is placed on recursion and higher-order functions instead of side-effect-based looping. Automatic tail call optimization is not supported as the JVM does not support it natively;WEB,weblink Stewardship: the Sobering Parts, YouTube.com, Goetz, Brian, 2014-11-20, WEB,weblink Oracle.com, tail calls in the VM, Rose, John, 2007-07-12, WEB,weblink Java.net, Some languages need to be able to perform tail calls, Rose, John, 2009-02-11, it is possible to do so explicitly by using the recur keyword.WEB,weblink Clojure.org, Special Forms, 2019-07-07, For parallel and concurrent programming Clojure provides software transactional memory,WEB,weblink Clojure.org, Refs and Transactions, 2019-07-07, a reactive agent system, and channel-based concurrent programming.WEB,weblink Clojure.org, Clojure core.async Channels, Hickey, Rich, 2013-06-28, Clojure 1.7 introduced reader conditionals by allowing the embedding of Clojure, ClojureScript and ClojureCLR code in the same namespace. Transducers were added as a method for composing transformations. Transducers enable higher-order functions such as map and fold to generalize over any source of input data. While traditionally these functions operate on sequences, transducers allow them to work on channels and let the user define their own models for transduction.WEB,weblink YouTube.com, Transducers, Hickey, Rich, 2014-09-17, WEB,weblink Cognitect.com, Transducers are Coming, Hickey, Rich, 2014-08-06, WEB,weblink YouTube.com, Inside Transducers, Hickey, Rich, 2014-11-20,Extensible Data NotationExtensible Data Notation, or edn,WEB,weblink edn-format.org, Official EDN Spec, 2022-04-27, is a subset of the Clojure language intended as a data transfer format. It can be used to serialize and deserialize Clojure data structures, and Clojure itself uses a superset of edn to represent programs.edn is used in a similar way to JSON or XML, but has a relatively large list of built-in elements, shown here with examples:
Alternative platformsThe primary platform of Clojure is Java, but other target implementations exist. The most notable of these is ClojureScript,WEB,weblink ClojureScript.org, ClojureScript, 2019-07-06, which compiles to ECMAScript 3,WEB,weblink ClojureScript.org, ClojureScript â FAQ (for JavaScript developers), 2018-02-04, and ClojureCLR,WEB,weblink ClojureCLR, GitHub, 2012-06-28, a full port on the .NET platform, interoperable with its ecosystem.Other implementations of Clojure on different platforms include:
ToolsTooling for Clojure development has seen significant improvement over the years. The following is a list of some popular IDEs and text editors with plug-ins that add support for programming in Clojure:WEB,weblink Clojure.org, "State of Clojure 2019" Results, Miller, Alex, 2019-02-04,
DevelopmentThe development process is restricted to the Clojure core team, though issues are publicly visible at the Clojure JIRA project page.WEB,weblink Atlassian.net, Clojure, 2019-07-07, Anyone can ask questions or submit issues and ideas at ask.clojure.org.WEB,weblink Clojure Forum, 2020-03-20, clojure.org, If it's determined that a new issue warrants a JIRA ticket, a core team member will triage it and add it. JIRA issues are processed by a team of screeners and finally approved by Rich Hickey.WEB,weblink Open Source is Not About You, Hickey, Rich, 2018-11-26, GitHub, WEB,weblink Workflow, Clojure.org, 2019-07-07,ImpactWith continued interest in functional programming, Clojure's adoption by software developers using the Java platform has continued to increase. The language has also been recommended by software developers such as Brian Goetz,WEB,weblink Twitch.tv, Brian Goetz' favorite non-Java JVM language (Part 1 of 3), Goetz, Brian, 2020-05-24, WEB,weblink Twitch.tv, Brian Goetz' favorite non-Java JVM language (Part 2 of 3), Goetz, Brian, 2020-05-24, WEB,weblink Twitch.tv, Brian Goetz' favorite non-Java JVM language (Part 3 of 3), Goetz, Brian, 2020-05-24, Eric Evans,WEB,weblink YouTube.com, Modelling Time: Eric Evans: Domain-Driven Design Europe 2018, Evans, Eric, 2018-08-14, WEB,weblink Twitter.com, Eric Evans on Twitter, Evans, Eric, 2014-11-21, James Gosling,WEB,weblink YouTube.com, James Gosling meetup with London Java Community, 2016-10-11, Paul Graham,WEB,weblink Twitter.com, Paul Graham on Twitter, Graham, Paul, 2016-05-06, and Robert C. Martin.WEB,weblink CleanCoder.com, Why Clojure?, Martin, Robert, 2019-08-22, WEB,weblink Twitter.com, Unble Bob Martin on Twitter, Martin, Robert, 2018-11-29, WEB,weblink CleanCoders.com, Introduction To Functional Programming, Martin, Robert, 2018-08-01, WEB,weblink CleanCoder.com, Pragmatic Functional Programming, Martin, Robert, 2017-07-11, ThoughtWorks, while assessing functional programming languages for their Technology Radar,WEB,weblink Technology Radar: Frequently Asked Questions, ThoughtWorks.com, 2019-02-10, described Clojure as "a simple, elegant implementation of Lisp on the JVM" in 2010 and promoted its status to "ADOPT" in 2012.WEB,weblink Technology Radar: Clojure, ThoughtWorks.com, 2019-02-10, In the "JVM Ecosystem Report 2018" (which was claimed to be "the largest survey ever of Java developers"), that was prepared in collaboration by Snyk and Java Magazine, ranked Clojure as the 2nd most used programming language on the JVM for "main applications".WEB,weblink Snyk.io, JVM Ecosystem Report 2018, Maple, Simon, Binstock, Andrew, 2018-10-17, Clojure is used in industry by firmsWEB,weblink Clojure.org, Success Stories, 2018-10-27, such as Apple,WEB,weblink Twitter.com, Roman Liutikov on Twitter, Liutikov, Roman, 2017-12-17, WEB,weblink Apple.com, Jobs at Apple, 2019-07-06, Atlassian,WEB,weblink YouTube.com, Realtime Collaboration with Clojure, Borges, Leonardo, 2015-07-07, Funding Circle,WEB,weblink JUXT.pro, Clojure in London: Funding Circle â Lending some Clojure, Pither, Jon, 2016-10-04, Netflix,WEB,weblink TheNewStack.io, The New Stack Makers: Adrian Cockcroft on Sun, Netflix, Clojure, Go, Docker and More, Williams, Alex, 2014-08-03, Nubank,WEB,weblink Nubank adquire empresa norte-americana de tecnologia Cognitect, 23 July 2020, Puppet,WEB,weblink Puppet.com, A New Era of Application Services at Puppet Labs, Price, Chris, 2014-04-11, 2020-08-06, and WalmartWEB,weblink Cognitect.com, Walmart Runs Clojure at Scale, Phillips, Marc, 2015-07-14, as well as government agencies such as NASA.WEB,weblink GitHub, Common-Metadata-Repository, 2019-07-06, It has also been used for creative computing, including visual art, music, games, and poetry.WEB,weblink OReilly.com, Creative computing with Clojure, Meier, Carin, 2015-05-06, In the 2023 edition of Stack Overflow Developer Survey, Clojure was the fourth most admired in the category of programming and scripting languages, with 68.51% of the respondents who have worked with it last year saying they would like to continue using it. In the desired category, however it was marked as such by only 2.2% of the surveyed, whereas the highest scoring JavaScript was desired by 40.15% of the developers participating in the survey.WEB, Stack Overflow Developer Survey 2023,weblink 2024-05-02, Stack Overflow, en, It could possibly be attributed to limited professional opportunities for Clojure developers with just over 50 search results for "Clojure developer" at the U.S. section of Indeed, as of May 2024.WEB, 2024-05-02, "Clojure developer" search results at Indeed.com [Archived due to the mutability of the source],weblink 2024-05-02, Archive.is,Release history{| class="wikitable"! Version! Release date! Major features, improvements | |||
WEBSITE=BLOGSPOT.COM | LAST=HICKEY | DATE=2009-05-04, | First stable release | |||||||||||||
WEBSITE=BLOGSPOT.COM | LAST=HICKEY | DATE=2009-12-31, | Futures | |||||||||||||
WEBSITE=GOOGLE.COM | LAST=HICKEY | DATE=2010-08-19, | Protocols | |||||||||||||
WEBSITE=GOOGLE.COM | LAST=REDINGER | DATE=2011-09-23, | Enhanced primitive support | |||||||||||||
WEBSITE=GOOGLE.COM | LAST=DIPERT | DATE=2012-04-17, | Reader literals | |||||||||||||
WEBSITE=GOOGLE.COM | LAST=HALLOWAY | DATE=2013-03-01, | Reducers | |||||||||||||
WEBSITE=GOOGLE.COM | LAST=HALLOWAY | DATE=2013-03-10, | Fixing a memory leak | |||||||||||||
WEBSITE=GOOGLE.COM | LAST=MILLER | DATE=2014-03-25, |Java API, improved hashing algorithms | |||||||||||||
WEBSITE=CLOJURE.ORG | LAST=MILLER | DATE=2015-06-30, | Transducers, reader conditionals | |||||||||||||
WEBSITE=CLOJURE.ORG | LAST=MILLER | DATE=2016-01-19, | Additional string functions, direct linking, socket server | |||||||||||||
WEBSITE=CLOJURE.ORG | LAST=MILLER | DATE=2017-12-08, | Integration with spec, command-line tools | |||||||||||||
WEBSITE=CLOJURE.ORG | LAST=MILLER | DATE=2018-12-17, | Improved error reporting, Java compatibility | |||||||||||||
WEBSITE=CLOJURE.ORG | LAST=MILLER | DATE=2019-06-06, | Working around a Java performance regression and improving error reporting from clojure.main | |||||||||||||
WEBSITE=CLOJURE.ORG | LAST=MILLER | DATE=2021-01-26, | Java interoperability/compatibility improvements and other important language fixes | |||||||||||||
WEBSITE=CLOJURE.ORG | LAST=MILLER | DATE=2021-03-04, | prepl support for reader conditionals | |||||||||||||
WEBSITE=CLOJURE.ORG | LAST=MILLER | DATE=2022-03-22, | New syntax for keyword argument invocation, new clojure.math namespace, namespace aliasing without loading, and new helper functions added to clojure.core | |||||||||||||
WEBSITE=CLOJURE.ORG | LAST=MILLER | DATE=2022-04-05, | Rolling back unintended change in binary serialisation of objects of types clojure.lang.Keyword and clojure.lang.ArraySeq. | |||||||||||||
c |1.11.2}} | WEBSITE=CLOJURE.ORG | LAST=MILLER | DATE=2024-03-08, | Fix for CVE-2024-22871 Denial of Service vulnerability | ||||||||||||
{{Version | show=000100}} |
See also
References
{{Reflist|2}}Further reading
- BOOK, Dmitri, Sotnikov, 2020, Web Development with Clojure, Pragmatic Bookshelf, 3rd, 978-1-68050-682-2,weblink
- BOOK, Russ, Olsen, 2018, Getting Clojure, Pragmatic Bookshelf, 978-1-68050-300-5,weblink
- BOOK, Alex, Miller, Stuart, Halloway, Aaron, Bedra, 2018, Programming Clojure, Pragmatic Bookshelf, 3rd, 978-1-68050-246-6,weblink
- BOOK, Carin, Meier, 2015, Living Clojure: An introduction and training plan for developers, O'Reilly Media, 1st, 978-1-491-90904-1,weblink
- BOOK, Amit, Rathore, Francis, Avila, 2015, Clojure in Action, Manning Publications, 2nd, 978-1-61729-152-4,
- BOOK, Daniel, Higginbotham, 2015, Clojure for the Brave and True, No Starch Press, 978-1-59327-591-4,weblink
- BOOK, Julian, Gamble, 2015, Clojure Recipes, Pearson Publishing, 978-0-32192-773-6,weblink
- BOOK, Ben, Vandgrift, Alex, Miller, 2015, Clojure Applied, Pragmatic Bookshelf, 978-1-68050-074-5,weblink
- BOOK, Eric, Rochester, 2015, Clojure Data Analysis Cookbook, Packt Publishing, 2nd, 978-1-78439-029-7,weblink
- BOOK, Michael, Fogus, Chris, Houser, 2014, The Joy of Clojure, Manning Publications, 2nd, 978-1-617291-41-8,weblink 2018-11-05, 2018-10-23,weblink" title="web.archive.org/web/20181023083354weblink">weblink dead,
- BOOK, Ryan, Kelker, 2013, Clojure for Domain-specific Languages, Packt Publishing, 978-1-78216-650-4,weblink
- BOOK, Eric, Rochester, 2014, Mastering Clojure Data Analysis, Packt Publishing, 978-1-78328-413-9,weblink
- BOOK, Chas, Emerick, Brian, Carper, Christophe, Grand, April 19, 2012, Clojure Programming, O'Reilly Media, 978-1-4493-9470-7,weblink
- BOOK, Luke, VanderHart, Stuart, Sierra, June 7, 2010, Practical Clojure, Apress, 978-1-4302-7231-1,weblink
External links
- {{Official website}}
- content above as imported from Wikipedia
- "Clojure" does not exist on GetWiki (yet)
- time: 7:14am EDT - Sat, May 18 2024
- "Clojure" does not exist on GetWiki (yet)
- time: 7:14am EDT - Sat, May 18 2024
[ this remote article is provided by Wikipedia ]
LATEST EDITS [ see all ]
GETWIKI 23 MAY 2022
The Illusion of Choice
Culture
Culture
GETWIKI 09 JUL 2019
Eastern Philosophy
History of Philosophy
History of Philosophy
GETWIKI 09 MAY 2016
GetMeta:About
GetWiki
GetWiki
GETWIKI 18 OCT 2015
M.R.M. Parrott
Biographies
Biographies
GETWIKI 20 AUG 2014
GetMeta:News
GetWiki
GetWiki
© 2024 M.R.M. PARROTT | ALL RIGHTS RESERVED