4 ms·
J is essentially APL. I think the point is that J is functionally equivalent with many other languages, only differing in syntax but not in paradigm.
by IncRnd 5y ago
J is essentially APL. I think the point is that J is functionally equivalent with many other languages, only differing in syntax but not in paradigm.
- karmakaze 5y agoI would say that you have to think in a different style so would classify as a different paradigm and not just syntax.
- blacktriangle 5y agoGoing back to the original comment, the statement was that any experienced engineer could learn a language in a day. At risk of gatekeeping, I'd argue that by definition any experienced engineer would have some experience with an array based language like APL or MATLAB so that no, J does not qualify as a different paradigm.
- goatlover 5y agoI guess it depends on how much past experience they had with an array-based, stack-based, logic-based, pure functional or lisp family language, and how long ago that was. I can believe an experienced engineer can learn the basics of any language in a day. But being proficient and idiomatic is another matter.
- gcanyon 5y agoThe implication of the original comment was that any C-style language engineer could learn any C-style language in a day. I'd even argue that point, but it definitely doesn't get you J in a day, except that an supports most C-style syntax. So you can program in J like a C-programmer in a day. You definitely can't program like a J-programmer. And to say a competent engineer would already have array-language experience sidesteps the point.
- IncRnd 5y agoThe original comment said nothing about C-style languages. That must be something you read into their comment. Learning J is like learning Perl or regular expressions. Nobody really wants to engage in such an activity, but people do what they need to do. Depending on their level of experience, a person who understands imperative and declarative paradigms along with the language's execution model can absolutely learn J within a day, because it only differs in syntax from the existing languages.
- gcanyon 5y ago"This is at least part of the reason that reasonably strong engineers can learn a new programming language in under a day. The paradigms just aren’t that different." This literally says "the paradigms aren't that different." So if you accept that C and J are different paradigms, then because the paradigms aren't that different, a C programmer could pick up J in a day. What it doesn't say is that truly different paradigms take more than a day to learn competent programmers already understand all different paradigms. Perl is C-like. As I said elsewhere, J supports C-style syntax, so sure you can program J in C-style in a day. But that's not J. This is J: for. }.z do. b=. -. (i.n) e."1 ,. z +"1 _ ((-i.){:$z) */ _1 0 1 z=. ((+/"1 b)#z),.n|I.,b end. To a J programmer, that's not just clear, it's obvious. I'd like to meet the C-programmer who can learn to write and read that in a day. And also as I responded elsewhere, this is a blub language discussion: http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html
- IncRnd 5y agoYou are the only person who is talking about C. It is a leap to go from "experienced programmer" to "that means C-only programmer". You are using the term "programming paradigm" incorrectly. C is not a programming paradigm. The paradigm of C is that it is an imperative procedural language. In the strictest sense it is a functional language, since functions are first class citizens, but it is not really a functional language as used in practice, such as when discussing function application.
- gcanyon 5y agoJ is functionally equivalent with APL, and a few other related languages like K. In the end you can call anything "syntax," but I'd invite you to give it a try. If C is British English and Python is online-English, then J is Russian, or maybe even Mandarin.