100 likes | 205 Views
Lighting Talk - Clo j ure. Presented by Julian Togashi & Ryan Lewis CPSC 476, CSUF. Objectives. We will briefly cover two areas: Define Clojure as a language (imperative languages v. functional languages) Perform a SWOT Analysis Strengths, Weaknesses, Opportunities and Threats.
E N D
Lighting Talk - Clojure Presented by Julian Togashi & Ryan Lewis CPSC 476, CSUF
Objectives • We will briefly cover two areas: • Define Clojure as a language • (imperative languages v. functional languages) • Perform a SWOT Analysis • Strengths, Weaknesses, Opportunities and Threats
What is Clojure? • Functional Programming Language • (a flavor of LISP) • State separated from Objects • (persistent data structures) • Robustly supports concurrency • (functions natively execute in transactions) • Built upon prevalent platform • (runs on JVM)
Imperative v. Declarative http://msdn.microsoft.com/en-us/library/bb669144.aspx
SWOT Analysis - Strengths • Targets JVM, CLR (Common Language Runtime, and Javascript • Compiles directly to JVMbytecode • Dynamic language - Polymorphism • Dialect of LISP • Immutable persistent data structures • Strong multithreaded design • Heterogeneous collections, return types • Identities (values emphasis) • Ideal for transactions • Uses REPL (Read, Execute, Print, Loop) • Can be embedded in a Java program • Can be used as a scripting language • Infix notation does not require precedence rules • Less configuration required than Java Apps • Lazy Sequences • Easily model infinite sequences • Java Interoperability
SWOT Analysis - Opportunities • Exciting ecosystem • Easily supports concurrent operations • General purpose programming • Native GAE support • AI development like NPCs and Expert Systems • Web applications • Mathematical systems • Responsive testing – updates easily deployed
SWOT Analysis - Weaknesses • Not currently interoperable with .Net • Syntactically different that traditional C++/Java programs • Slow Start Up from JVM (in particular command line) • No-tail recursion optimization
SWOT Analysis - Threats • Introduced in 2007 so relatively new • Infant community support • No classes / Functional Syntax • No object orientated support • IDE support is still relatively immature • Not currently common in client projects
References • http://clojure.org • http://www.infoq.com/articles/deadline-clojure-appengine • http://bloodredsun.com/wp-content/uploads/2011/10/5_major_jvm_langs_abs.png • http://www.catalysoft.com/articles/goodAboutClojure.html • http://www.infoq.com/news/2009/01/clojure-interview-halloway