Since you mention it, Python has worked itself into many computer science classes by building toolkits for other specific CL topics, in addition to Visual Python's 3D graphics toolkit. Many Computational Linguistics and NLP (Natural Language Processing) students have learned Python just to be able to use Python's Natural Language Toolkit (http://www.nltk.org). The Python community wrote the toolkit specifically to promote Python, as well as provide study aids for NLP CS classes.
The NLTK has lots of routines supporting Natural Language processing, with word frequency histograms, n-grams, stemmers, parts-of-speech tagging, classification, parsers, entity detection, lambda calculus, etc. The Python community has written a book on the NL toolkit (http://www.nltk.org/book) that does a fairly good job of teaching natural language processing by explaining the various functions, while simultaneously promoting Python. Many of these NL functions in the Python toolkit are fairly trivial exercises in J, often requiring just primitive J functions. Since many of the functions were originally expressed in mathematical notation in various technical papers, the translation of the algorithms to J would be more straightforward that the scalar Python approach. Also, the nature of J and array languages in general, lends themselves to ad hoc experimentation with the functions I expect that a companion doc or set of Wiki pages that replicated the functionality of the various NLTK Python routines in J, would open some eyes in the CS community to the power and flexibility of J, as well as attract some CS students to the language. Skip Cave Oleg Kobchenko wrote: > J has a number of ways to produce 3D graphics: the native OpenGL > support is very nicely integrated with the system; the labs and > demos showcase a higher-level cover API for frequently-used > operations (begin, end, lists, colors, etc.); there is turtle > graphics API (Brian Schott) for directional animation. These are > powerful and interesting PROGRAMMATIC tools. > > For those who prefer a DECLARATIVE way to describe things, clarity > and expressiveness are more important than power or completeness. > For 3D these have been languages that describe worlds, such as > VRML (and Web3D's X3D). It is very easy, with very little tool-specific > training, to both read and write the 3D definitions. > > Visual Python or VPython strikes a sweet spot by using an interpreted > language Python, and a declarative API for 3D scenes and motion. > > Intro with many examples: see how you can start figuring it > out instantly. > http://www.vpython.org/VPython_Intro.pdf > > Curve documentation: an example of one primitive. > http://vpython.org/contents/docs/visual/curve.html > > Contributed programs: many further examples in use (like Cherry Tree). > http://vpython.org/contents/contributed.html > > The source for this intuitive success is probably the instructive > origins of the toolkit for students with non-essential programming skills. > A tool created by non-programmers for non-programmers. > > For experienced programmers or 3D creators, such intuitive API > means productivity. It still allows focusing more on the 3D layout > rather than the implementation details. > > For J proud of its notation and consistent design, it would be > beneficial to continue to sharpen this tradition in frameworks. > > It seems the secret is in consistent use of small expressive paradigms. > For VPython the ingredients are: Python constructs; objects and > properties; named parameters; consistent simplified set of 3D API; > no mixing of layers (OpenGL is inaccessible directly); all 3D > objects are first-class (system primitives look the same as user-defined). > Use of plain English words instead of abbreviations and prefixes > is helpful too. > > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
