What’s the Role of Developer Experience in Programming Languages Research?
blog.sigplan.org
blog.sigplan.org
Here is one of my preferred paper from that community on that exact problem https://ieeexplore.ieee.org/document/1363742
This is a great open ended question to uncover what really motivates someone rather than asking someone what feature(s) they use / care about.
If your goal is to get a new programming language adopted, you should be interviewing a very restricted set of users: originators of major open-source projects, technical founders of successful startups, early engineers on a new product, and freelancers. Those are the people who are in the position to choose a new language. They often choose the language for very mundane reasons, eg. "It was the only option available for iOS development", "I understood its documentation the best", "This library that solved 80% of my problem was only available in it", or "I'd used it on my previous hobby project and it worked out well." Everybody else is working within the technology choices set by this group, so their opinion doesn't matter (for adoption, at least; you can still try to optimize happiness with them).
This is talking about usability of the programming language - or of a language that incorporates whatever conclusions the research reaches. This matches something I've been thinking a lot lately, that software engineering is a different animal than computer science. If your PL advance is the greatest CS thing since sliced bread, but it isn't usable for actual programmers working to write programs, then... who cares?
The ergonomics of computer languages is not what computer scientists think it is. CS types complain about how stupid the field is to use languages that don't reflect the best CS research. The reality is, the CS researchers are too ignorant to grasp what actually makes languages useful in the field.
Programming is a design exercise and figuring out how to help humans think and explore design is something I think practitioners have more to say on than theorists. Or at least if not more to say, they certainly have more of a contribution to make in this space than we've seen so far. (disclaimer: I'm a practitioner without a CS degree working on a programming language)
BTW, I find the parens in Lisp to be hopeless even as a sighted person, and even spending considerable effort trying to format it to make it clear. It's one reason why I customized my text editor with a "matching paren" command, which is a life saver. (It also matches braces and square brackets, even #if/#ifdef/#ifndef/#else/#elif/#endif.)
Auto-indentation and parenthesis matching has been a standard feature of any decent programming editor for decades.
Vim matches parentheses and C #ifdef out-of-the box, and indents Lisp. It did all that very well in the year 2000 when I started in Lisp.
A parenhesis matching command (the % key) has been in Vi since the 1970's, and the same is true of the Lisp mode (:set lisp) that handles the bulk of the indentation semantics. When you load a .lisp file, Vim turns on Lisp mode. That ancient invention is what does the indentation.
Nobody spends "considerable effort" formatting Lisp. Not even buffoons like me who use a Vi derivative, and who are ridiculed by Emacs users.
Vim was vi at the time :-) and didn't have a Lisp mode at the time that I was aware of, and I haven't messed with Lisp since the 80's.
And yes, I still find Lisp difficult to read, regardless of how its formatted. Infix reads much better for me.
There was a bit of a learning curve, but actually the interface isn’t bad if the software is built for it.
When it’s not though, it’s absolutely agonizing.
That is - make valid syntax and its composition first class UX entities, rather than just a freeform stream of hopefully parseable text.
Strictly visually programming languages can be pretty tedious, but maybe some hybrid where symbols/names can be keyed in, but scoping elements such as a function definition, a module scope, and maybe a parenthetical would be added as an indivisible unit.
Please stick to your ivory towers unless you are really sure of who you are talking to.
Oh my, don't get me started on that. Usually it's not worth talking to maintainers who don't understand security implications. Either walk away and choose something else or maintain a fork with your fixes. This is usually the easiest. And trivial with git to automate.
But hiring penetration testers just to convince some moron that this bug is exploitable? Come on!