Clojure is percieved as having an abundance of
(), the symbols that represent a list.
As Clojure is a LISP (List Processing) language then everything is written in the form of a list. This makes Clojure very powerful and also easier to read.
Using a list structure also demonstrates the data-centric nature of Clojure. Every item in the list has a value, with the first item evaluated by a function call.
The seemingly abundance of
() can be confusing until its realized there are fewer "special characters" in Clojure than other languages. Clojure aware editors support matching parens, adding a closed paren when typing an open paren, ensuring it is easy to write correctly formed Clojure.
Syntax differences are a trivial reason to avoid trying Clojure. Syntax aware editors significantly reduce typing by automatically closing parenthesis and eliminating errors due to missing delimiters (ie. no more errors due to missing ; in C-based languages)
Instead of having a mix of notations like in many other languages, Clojure uses pre-fix notation entirely.
In Clojure operators are applied uniformly and there is no room for ambiguity:
(+ 1 2 3 5 8 13 21) (+ 1 2 (- 4 1) 5 (* 2 4) 13 (/ 42 2)) (str "Clojure" " uses " "prefix notation")
In Java and other C-based languages you have to explicitly add operators everywhere and there can be a mixture of notations
(1 + 2 + 3 + 5 + 8 + 13 + 21); (1 + 2 + (- 4 1) + 5 + (* 2 4) + 13 + (/ 42 2)); StringBuffer mystring = new StringBuffer("C-based languages" + " mix " + "notation"); x+=1; x++; x--; x+=y; x-=y; x*=y; x/=y;