When comparing Scratch vs Elm, the Slant community recommends Scratch for most people. In the question“What is the best programming language to learn first?” Scratch is ranked 16th while Elm is ranked 18th. The most important reason people chose Scratch is:
Code is represented as [visual building blocks](http://www.instructables.com/id/How-to-use-Scratch/) that makes it easy to understand how a program is put together.
Ranked in these QuestionsQuestion Ranking
Code is represented as visual building blocks that makes it easy to understand how a program is put together.
Pro Easy to learn
Scratch is designed to teach computational thinking rather than focus on specific syntax. It was designed specifically to be easy to learn for anyone over the age of 8.
Pro Great starting point for kids
Scratch was developed specifically for kids ages 8 and up as an exciting way to introduce them to technology. It's designed to be easy to learn, but still provides good depth in computational thinking.
Pro No need to be able to type
Pro Can be used to create games
Pro Highly structured
The language is highly structured. Therefore, it gives you the essentials of how to think like a programmer and teaches you good programming practices from early on, so you could write clean, working and readable code in the future.
Pro No run-time exceptions
Lack of run-time exceptions makes it easy to produce large swathes of reliable front-end code without drowning in tests.
Pro Inferred static typing
ML static typing is great because it's always there, you just choose how explicit you want to be and how much you want the compiler to do.
Pro Designed around high-level front-end development
As Elm was designed as a front-end langauge, it has out of the box support for things like DOM-element creation, letting programmers focus on their application logic, rather than implementation details specific to the web.
Pro Great and simple way to learn Purely Functional Programming
You can try to apply some functional programming ideas in other languages that have an imperative basis, but you haven't seen the real power unless you tried it in the environment of purely functional programming. Elm is a simple language with great learning resources and easy graphical output, which makes it easy to explore the power of functional programming. Plus programming in Elm is very readable.
Pro Good documentation
Elm is gaining popularity, somewhat faster than many of the other solutions here. This translates to more code examples, more documentation, and more libraries.
Pro Growing community
Pro High-level Functional-Reactive Code
Build animations, games, and interactions with an incredibly small amount of terse, readable code.
Pro Super easy refactoring with very helpful compiler errors
In no other language you can refactor so easy without any worries, since the compiler will guide you through. It is like TDD but than compiler-error driven.
Pro Static module system
Elm uses easy to use modules.
import List import List as L import List exposing (..) import List exposing ( map, foldl ) import Maybe exposing ( Maybe ) import Maybe exposing ( Maybe(..) ) import Maybe exposing ( Maybe(Just) )
module MyModule exposing (foo, bar)
Pro Interactive Programming and Hot Swapping
Support for hot swapping and interactive programming is included.
Pro Missing Syntactic sugar
Easy to learn, most functions have only one way, not 5 alternatives where you must study where to best use what.
Pro Good tooling
All major editors have great support. With Atom for example, Elm plugins are available for linting, formatting, make/compiler support and Elmjutsu will simply overflow you with super useful functions, like navigate to referenced definition and show expression type.
Pro Batteries included
The Elm Architecture means you don't need to spend valuable time and effort choosing the right frameworks, state management libraries, or build tooling. It's all built in.
Pro Not quite Haskell semantics
Con Won't get you a job
Scratch is not a language used in the workplace. Instead it teaches computational thinking, helping to create a foundation to aid in learning other languages.
Con Does not teach you programming
Learning Scratch might help you if you have high difficulty with logical thinking. However, starting with a proper programming language, especially an easy one, will give you the benefits of starting with something like Scratch and everything else.
Con Lack of typeclasses
Elm doesn't have typeclasses which means some code needs to be duplicated. A fix in a function that needs typeclasses means all of the duplicates need to be fixed too.
Con Poor Windows support
Few if any of Elm's core contributors are Windows users and breaking bugs are sometimes left for weeks or months.
Con Adds an additional layer of abstraction
Some users claim that Elm adds an additional layer of abstraction, meaning that it is one more hurdle between the brain and the product.
Con Not database-friendly
It is lots of work to make a server or database your "one source of truth", as Elm makes you write endless JSON parse boilerplate to talk to the server.