Most (but not all) people who have used lisp for significant projects find that they either like the parens or are simply neutral about them.
There are very few people I have heard from that have stuck through a significant project in lisp and came out hating the parens still.
From what I've observed of learners, people without lots of programming background seem to have no more problem with parens in lisps (in the broad sense -- mostly, I've seen this with Scheme and Racket) than with syntax features of various Algol-family (C, etc.) languages.
People with extensive experience in programming that is mostly restricted to Algol-family languages seem to be the people who are most put-off by lisps and their parens.
Which is to say, there are different kinds of newcomers.
Sure, but not all newcomers to lisp that are familiar with programming are people that whose programming experience is tightly tied to Algol-family languages. For me, Lisp wasn't any more unwelcoming than any other new languages when I encountered it well into my experience with programming, but a number of languages I encountered much earlier in my programming life (BASIC, Forth, Logo, x86 ASM, among others) weren't Algol-family languages.
One benefit of Lisp syntax is that it provides you visual information about relationships in the code, since it's structured as tree. The nesting tells you how functions relate to each other at a glance. It makes the code easily scannable, once you're used to reading it.
Another big advantage is that you can use a structural editor with Lisp. You don't actually manage parens by hand, the editor does it for you. You can see it in action here. https://cursive-ide.com/userguide/paredit.html
The syntax is actually one of the easiest ones to learn, because there is very little of it and it's very consistent. Just because it's not familiar, doesn't mean it's hard to learn.
I use Clojure at work and I regularly train co-op students. I haven't had a student who took longer than a couple of weeks to become productive with the language, or didn't love using it. However, most had a negative reaction to the syntax initially.
There's a substantial selection bias there in that people who have strongly negative feelings about parens have plenty of opportunities in the field to work with languages without them, so the only people likely to put up with them on significant projects are ones who feel positively, neutrally, or perhaps only weakly negatively about the feature from the start.
That said, I do think the complaints about that particular feature are overblown, much the way those about Python's particular whitespace handling are.
The only way to get around this is to spend enough time using the language so that you can build a new mental parser.
And besides, with proper indentation, it becomes easy to read and easier on the eyes.
(defn do_stuff
[coll]
(filter #(> % 10) (map Math/sqrt coll)))
Vs (defn do_stuff
[coll]
(filter #(> % 10)
(map Math/sqrt coll)
)
)
Even though this is the same code, if you are coming from a c-style background the latter is probably easier to read.For everyone else, what parenthesis are you talking about? I don't even see them.