3 ms·
Too many special characters. This is why I don't like Haskell. As a polyglot, it's really helpful to have a piece of syntax spell out what it does. Python is us
by tormeh 13y ago
Too many special characters. This is why I don't like Haskell. As a polyglot, it's really helpful to have a piece of syntax spell out what it does. Python is usually really good at this. I don't get how it can be so hard for language designers to learn this. Why use ":+" when you can use "append"? Now I have to google "Scala append" every time I start writing a new Scala program. Good job. But at least the Scala example uses "+", which is sort of understandable with lists. You can suspect that it has something to do with appending when reading code. What does ">>=" even mean? Or "(($){.R)"? WTF? I give up. I don't like languages that try to fight me.
- klibertp 13y agoStop trying to fight a language, then? Just learn those few unfamiliar constructs the language is build upon and start using it. Actually, in J there is not that much of what you need to learn, here is the full list: http://www.jsoftware.com/help/dictionary/vocabul.htm http://www.jsoftware.com/help/dictionary/vocabul.htm And here is a bit more involved explanation of what those words mean: http://www.jsoftware.com/jwiki/HenryRich?action=AttachFile&do=view&target=J602_RefCard_color_letter_current.pdf http://www.jsoftware.com/jwiki/HenryRich?action=AttachFile&d... If there is one thing I learned as a polyglot it's that language usage patterns differ and trying to use one language as if it was another is counterproductive. My advice is to learn more and practice more - at some point you'll start seeing higher-level patterns in language design and will be able to cope with many, now unfamiliar, features and design decisions.
- tormeh 13y agoI do see patterns in languages, it's just that the patterns are hidden below arbitrary nonsensical syntax that has to be relearned every single time I switch language. Some syntax, like Python's, is easier to remember and guess than other syntax. I conclude that Python's syntax is good and Haskell/J's syntax is bad. Basically, I want the languages I use and have to constantly relearn to have a syntax that is quick to pick up after having partly forgotten it for the nth time. That requires memorable and guessable names and keywords.
- avmich 13y agoI'd recommend reading Iverson's "Notation as a Tool of Thought" (http://www.jsoftware.com/papers/tot.htm http://www.jsoftware.com/papers/tot.htm) . Operator looks for APL - and then for J - were modelled after mathematical notation, which had to be extended somewhat towards computations. But can you imagine writing on a whiteboard, say, "samples_transposed" instead of A'? You definitely can use words instead of many symbols in J. I highly doubt though you want to do that for the core language. Much more productive - IMO - is to learn the vocabulary - which is very finite. Yes, I know it's a great show stopper for those considering learning J.
- unwind 13y agoOperators are probably written using special characters in order to provide a suitable level of terseness. I feel it really can make things more compact and easy to understand. Of course, I'm very much of a C programmer, and C is kind of good too at using operators in a terse manner. If C required foo >>= 4; to be written as foo = foo shift_right 4; then it just wouldn't be as nice and fun to program in. Even more so when using the pointer-dereferencing and pre/post-increment operators, or combinations.
- omaranto 13y agoAll of the symbols are optional in J, except for =. and =: which are used for assignment. If you don't like % for division you can define divide=: % and then only use divide. If you don't want to come up with your own names for all the built-in functions, you can just use the names suggested in the vocabulary (J's main help file). If you don't want to write all those definitions to give names to the built-in functions, there is already a module in the standard library that does it for you. If you do decide to program in J, however, I recommend you just learn the symbolic names, they're so much shorter and fun. :)