Need advice about which tool to choose?Ask the StackShare community!
Common Lisp vs ES6: What are the differences?
Developers describe Common Lisp as "The modern, multi-paradigm, high-performance, compiled, ANSI-standardized descendant of the long-running family of Lisp programming languages". Lisp was originally created as a practical mathematical notation for computer programs, influenced by the notation of Alonzo Church's lambda calculus. It quickly became the favored programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, conditionals, higher-order functions, recursion, and the self-hosting compiler. [source: wikipedia]. On the other hand, ES6 is detailed as "The next version of JavaScript". Goals for ECMAScript 2015 include providing better support for large applications, library creation, and for use of ECMAScript as a compilation target for other languages. Some of its major enhancements include modules, class declarations, lexical block scoping, iterators and generators, promises for asynchronous programming, destructuring patterns, and proper tail calls.
Common Lisp and ES6 can be primarily classified as "Languages" tools.
"Flexibility" is the top reason why over 13 developers like Common Lisp, while over 98 developers mention "ES6 code is shorter than traditional JS" as the leading cause for choosing ES6.
ebay, Asana, and Intuit are some of the popular companies that use ES6, whereas Common Lisp is used by Real Softservice, NG Informática, and Platform Project. ES6 has a broader approval, being mentioned in 1440 company stacks & 1659 developers stacks; compared to Common Lisp, which is listed in 5 company stacks and 3 developer stacks.
This post is a bit of an obvious one, as we have a web application, we obviously need to have HTML
and CSS
in our stack. Though specifically though, we can talk a bit about backward compatibility and the specific approaches we want to enforce in our codebase.
HTML
: Not much explanation here, you have to interact with HTML for a web app. We will stick to the latest standard: HTML 5
.
CSS
: Again if we want to style any of our components within he web, we have to use to style it. Though we will be taking advantage of JSS
in our code base and try to minimize the # of CSS stylesheets and include all our styling within the components themselves. This leaves the codebase much cleaner and makes it easier to find styles!
Babel
: We understand that not every browser is able to support the cool new features of the latest node/JS features (such as redue, filter, etc) seen in ES6
. We will make sure to have the correct Babel
configuration o make our application backward compatible.
Material UI (MUI)
: We need to make our user interface as intuitive and pretty as possible within his MVP, and the UI framework used by Google will provide us with exactly that. MUI provides pretty much all the UI components you would need and allows heavy customization as well. Its vast # of demos will allow us to add components quickly and not get too hung up on making UI components.
We will be using the latest version of create-react-app
which bundles most of the above along many necessary frameworks (e.g. Jest for testing) to get started quickly.
For our front-end, React is chosen because it is easy to develop with due to its reusable components and state functions, in addition to a lot of community support. Because React is popular, it would be easy to hire for it here at our company MusiCore. Our team also has experience with React already. React can be written with ES6 and ES6 has a lot of popularity and versatility when it comes to creating classes and efficient functions. Node.js will be used as a runtime environment to compile the code. Node.js also has many different types of open-source packages that can help automate some of the tasks we want to do for the application. CSS 3 will be used to style components and is the standard for that.
Optimize-js
I will not describe this tool a lot here, because it's already good done by author on github
I just want to mention that this tool wrap up all immediately-invoked functions or likely-to-be-invoked functions in parentheses what is do a great optimization a JavaScript
file for faster initial execution and parsing (based on my experience).
The performance of application where I've introduced optimize-js
improved on 20% in a common (tested in Chrome
and IE11
).
- Clarification on Readme to the optimize-js
- Some of Nolan thoughts on the virtues of compile-time optimizations can be found in "Parens and Performance" – counterpost
Is it maintaining now? - Unfortunately, no (but feel free to send PR)
Pros of Common Lisp
- Flexibility24
- High-performance22
- Comfortable: garbage collection, closures, macros, REPL17
- Stable13
- Lisp12
- Code is data8
- Can integrate with C (via CFFI)6
- Multi paradigm6
- Lisp is fun5
- Macros4
- Easy Setup4
- Parentheses3
- Open source3
- Purelly functional3
- Elegant3
- DSLs1
- Multiple values1
- CLOS/MOP1
- Clean semantics1
- Will still be relevant 100 years from now1
- Still decades ahead of almost all programming languages1
- Best programming language1
- Simple syntax1
- Powerful1
- Generic functions1
- Can implement almost any feature as a library1
- Formal specification, multiple implementations1
Pros of ES6
- ES6 code is shorter than traditional JS109
- Module System Standardized52
- Extremly compact2
- Destructuring Assignment2
Sign up to add or upvote prosMake informed product decisions
Cons of Common Lisp
- Too many Parentheses4
- Standard did not evolve since 19943
- Small library ecosystem2
- No hygienic macros2
- Inadequate community infrastructure1
- Ultra-conservative community1
Cons of ES6
- Create Node.js1
- Suffers from baggage1