Understanding-j provides a concise yet comprehensive introduction to the J programming language. It aims to quickly get beginners writing real programs by focusing on practical application and core concepts like arrays, verbs, adverbs, and conjunctions. The tutorial emphasizes J's inherent parallelism and tacit programming style, encouraging users to leverage its power for concise and efficient data manipulation. By working through examples and exercises, readers will develop a foundational understanding of J's unique approach to programming and problem-solving.
Kenneth Iverson's "Notation as a Tool of Thought" argues that concise, executable mathematical notation significantly amplifies cognitive abilities. He demonstrates how APL, a programming language designed around a powerful set of symbolic operators, facilitates clearer thinking and problem-solving. By allowing complex operations to be expressed succinctly, APL reduces cognitive load and fosters exploration of mathematical concepts. The paper presents examples of APL's effectiveness in diverse domains, showcasing its capacity to represent algorithms elegantly and efficiently. Iverson posits that appropriate notation empowers the user to manipulate ideas more readily, promoting deeper understanding and leading to novel insights that might otherwise remain inaccessible.
Hacker News users discuss Iverson's 1979 Turing Award lecture, focusing on the power and elegance of APL's notation. Several commenters highlight its influence on array programming in later languages like Python (NumPy) and J. Some debate APL's steep learning curve and cryptic symbols, contrasting it with more verbose languages. The conciseness of APL is both praised for enabling complex operations in a single line and criticized for its difficulty to read and debug. The discussion also touches upon the notation's ability to foster a different way of thinking about problems, reflecting Iverson's original point about notation as a tool of thought. A few commenters share personal anecdotes about learning and using APL, emphasizing its educational value and expressing regret at its decline in popularity.
Summary of Comments ( 0 )
https://news.ycombinator.com/item?id=43882118
HN commenters generally express appreciation for the resource, finding it a more accessible introduction to J than other available materials. Some highlight the tutorial's clear explanations of complex concepts like forks and hooks, while others praise the effective use of diagrams and the focus on practical application rather than just theory. A few users share their own experiences with J, noting its power and conciseness but also acknowledging its steep learning curve. One commenter suggests that the tutorial could benefit from interactive examples, while another points out the lack of discussion regarding J's integrated development environment.
The Hacker News post discussing the "Understanding-j" introduction to the J programming language has a modest number of comments, offering a mix of perspectives on the language and the guide itself.
Several commenters reflect on their past experiences with J, often expressing appreciation for its power and conciseness while acknowledging its steep learning curve. One user describes J as a language they "love to hate," highlighting the challenge of reading code even after writing it. Another commenter recalls their attempt to learn J and APL, finding the latter slightly more approachable due to its more standard keyboard layout. This sentiment is echoed by another user who humorously suggests the need for a specialized keyboard to truly utilize J effectively.
Some comments directly address the linked guide. One commenter appreciates the author's candid admission of J's unconventional nature and the time investment required to master it. The guide's focus on practical application rather than just syntax is also praised. Another user points out that the guide doesn't shy away from demonstrating complex operations early on, potentially overwhelming beginners.
The discussion also touches on the broader context of array-oriented programming and J's relationship to APL. One comment compares and contrasts J and APL, highlighting J's use of ASCII characters and its more developed tacit programming capabilities. The potential benefits of array-oriented programming for certain tasks are acknowledged, but the inherent difficulty of these languages for most programmers is also recognized.
A couple of commenters offer alternative resources for learning J, including the official J language website and NuVoc, a project focused on making array programming more accessible.
Finally, there's a brief thread discussing the practical applications of J, with suggestions ranging from data analysis and financial modeling to code golfing. One commenter humorously suggests that J's primary use case is "writing J interpreters in other languages."
Overall, the comments paint a picture of J as a powerful but challenging language, with the "Understanding-j" guide seen as a potentially valuable resource for those willing to put in the effort. The discussion doesn't offer a definitive conclusion on J's practicality or relevance, but provides a nuanced perspective on its strengths, weaknesses, and place within the broader programming landscape.