Hacker News new | ask | show | jobs
by EdwardCoffin 3682 days ago
> I feel like there must be some diminishing returns on making a language too expressive, implicit, and/or convenient but I don't have any real evidence to prove such.

I think it is understood that the more expressive your language is, the more difficult it is to make tools for the language. For example, Common Lisp style (non-hygienic) macros are hard to support in a debugger (by which I mean, hard to allow the developer to step through their code as they wrote it, rather than stepping through the final expanded form). Dynamic dispatch makes it difficult for tools to provide who calls and which function does this call invoke (not impossible, with some forms of static typing, but more difficult in general).

1 comments

I think I agree with that idea. However I have also wondered if it is because more explicit/verbose languages take longer to physically write and thus the verbose pattern is sort of repeated through out. For example in Java it is typical to have ridiculously long spelled out variable/function names. While this is annoying to write it often makes maintenance slightly easier for a variety of hopefully obvious reasons.

It seems with really expressive languages you get programmers who will use extremely short variable/function names (Haskell being the extreme). Of course this could be just cultural (e.g. Haskell academia). That is it seems when the language gets easy people get lazy :) (this is probably a false assumption).

I'm not sure if its analogous but an extreme opposite of expressive language would be punch cards. My grandmother used to work on ancient computers and you would have to really think ahead what you wanted to do. Consequently lots and lots of documentation would be done.

I've programmed in a couple of languages that one might consider verbose: Java and Common Lisp. The normal tools for both of those provide some form of name-completion. In fact, in Emacs+SLIME, I can do something like this: "(ge-in-ru", hit tab, and have it completed to "(get-internal-run-time". In any case, I consider the typing-out of stuff like that to be a minor part of programming anyway.

Edit: fixed stupid grammatical mistake

I don't think symbol name length is usually what people are complaining about when they call a language verbose. It's usually closer to the number of symbols required to write a program, and CL usually does pretty well on that metric.