background preloader

The Nature of Lisp

The Nature of Lisp
Monday, May 8, 2006 Introduction When I first stumbled into Lisp advocacy on various corners of the web I was already an experienced programmer. My initial attempt to learn Lisp came to a crashing halt as soon as I saw some sample code. The moment I regained my sight I communicated my frustrations to some members of the Lisp sect. For many months the Lisp advocates pressed on. The enlightenment came instantaneously. That very second I became a member of the Lisp cult. I gave the matter careful thought. I shared my ideas with fellow Lispers. XML Reloaded A thousand mile journey starts with a single step. Superficially XML is nothing more than a standardized syntax used to express arbitrary hierarchical data in human readable form. <todo name="housework"><item priority="high">Clean the house. What happens if we unleash our favorite XML parser on this to-do list? Let's take this a little further. Let's apply our corollary that any tree can easily be serialized into XML to this idea. Why XML?

I Miss Lisp My favorite language is Lisp. What happened? What I Miss About Lisp Simplicity A common complaint against Lisp is the parentheses. But a combination of curly braces, parentheses, brackets, periods and commas is simpler and more succinct? Elegance A related complaint is that Lisp is too strange and hard to understand. Simplicity lends itself to elegance. Flexibility The syntax makes possible a unique feature of Lisp, one that every satisfied Common Lisp user seems to appreciate - macros. After using Flavors, Object Lisp, C++ and Java, I still have to say the Common Lisp Object System is the best. Optimization A fallacy about Lisp is that it's slow. But it's really the best of both worlds. It's painful to watch Java follow in Lisp's footsteps and yet apparently not learn all its lessons. Culture Lisp had a cool culture. Why Didn't Lisp Become Java? A Hook Whether it was a brilliant marketing move or stroke of luck, the introduction of Java initially for browser applets was crucial. It Wasn't Free

Languages best suited for scientific computing? I work in a field where the standard for high-performance scientific computing is still Fortran (albeit Fortran 95 nowadays). The array-based nature of Fortran provides a relatively clean and intuitive syntax for solving the systems of equations often involved in numerical simulations. The simplicity of Fortran has also facilitated highly efficient Fortran compiler implementations. However I'm searching for a more modern and general purpose scientific computing language. I'm of the belief that the ideal language should also be functional and open-source. SAC lacks many desirable features for a general purpose programming language.Boo is one of the most promising new "main-stream" languages but multidimensional array operations are not a core feature (although it recently gained array slices). Any suggestions in my quest for a better language are welcome.

The Art of Lisp &amp; Writing Ignorance more frequently begets confidence than does knowledge. –Charles Darwin Lisp is the language of loveliness. With it a great programmer can make a beautiful, operating thing, a thing organically created and formed through the interaction of a programmer/artist and a medium of expression that happens to execute on a computer. Taught that programming—or the worse "developing software"—is like a routine engineering activity, many find difficulty seeing writing as a model or even a metaphor for programming. Writing is creative, it is self-expression, it is art, which is to say it isn't a science and unlike science and engineering, it isn't a serious activity. Artists make things and have always done so, gathering knowledge. As people need or want to do things with materials and the world, people with special skill take the fore and devise or discover how to manipulate the physical world to make those things. Not really. Perhaps mapmakers are liars, too. –Christopher Alexander

Languages best suited for scientific computing? I work in a field where the standard for high-performance scientific computing is still Fortran (albeit Fortran 95 nowadays). The array-based nature of Fortran provides a relatively clean and intuitive syntax for solving the systems of equations often involved in numerical simulations. The simplicity of Fortran has also facilitated highly efficient Fortran compiler implementations. However I'm searching for a more modern and general purpose scientific computing language. I'm of the belief that the ideal language should also be functional and open-source. SAC lacks many desirable features for a general purpose programming language.Boo is one of the most promising new "main-stream" languages but multidimensional array operations are not a core feature (although it recently gained array slices). Any suggestions in my quest for a better language are welcome.

Updating Elements Within Association Lists Customizing Emacs Muse – Part 2 Here are part 1 (Creating Squidoo Lenses With Emacs Muse) and part 3 (Emacs Muse Aliases). We all know what an association list is right? If you want to map keys to values, you’re going to use an assocation list. (defvar v '((GB "Great Britain") (UK "United Kingdom") (FR "France"))) (assoc 'GB v) will return the pair (GB "Great Britain"). They are used in a similar way to a hash in various scripting languages. You might remember that previously I advocated the use of regex transforms to correct the html after generation is complete. Assocation lists have a bunch of functions which operate on them, e.g. assoc and rassoc for looking things up and assq-delete-all for removing elements. (defun assoc-replace (seq values) "Replace an element within an association list where the cars match." This will allow me to replace both key and value within the association list at the same time. (defsubst kv (k v) `(,k (,k . And now I can fix the assocation list Like this:

How to Choose and Learn a New Programming Language | Micah Elliott They say you should learn a new programming language every year . I don’t necessarily agree, but it’s happening this year for me with R . Here are the steps I have found over the years to make it go smoothly. If you’re a perl, C++, or Java zealot, it’s been nice knowing you… Why Learn a New Language? You may disagree or have your own unrelated reasons, but addressing the why seems a necessary start for such a how post. You want to impress someone. Pursue a new domain. You want to expand your mind. You’re actually going to need to use the new language for real work. Get connected to a new community. Have something new to write about. Feed the hype machine. There’s got to be more reasons. How Long Should it Take? Depending on your background and the new language you’re targeting, you should plan to dedicate some significant time to learning it. Not that it took me very long to learn the feature set. Or you could side with Peter Norvig and devote 10 years to it: How To Actually Learn It

Research and Experience In the last couple of years, we have seen a growing interest in the Lisp programming language and its various dialects, including classic ones, like Common Lisp and Scheme, and also brand new ones, like Clojure and Qi. Several user group meetings, workshops and conferences have been organized with great success in recent years, especially in Europe, but also elsewhere. With the European Lisp Symposium, we aim to start a series of annual events that is especially suitable for novel research results, but also for insights and lessons learned from practical applications and education perspectives, all involving Lisp dialects. For this symposium, we have received 15 submissions, and after a careful review process, the program committee selected seven of them for presentation at the main track of the symposium.

Blog Archive » Ranking the popularity of programming langauges Posted: December 9th, 2010 | Author: drewconway | Filed under: outliers | Tags: languages, programming, visualization | 54 Comments How would you rank the popularity of a programming language? People often discuss which languages are the best, or which are on the rise, but how do we actually measure that? One way to do so is to count the number of projects using each language, and rank those with the most projects as being the most popular. Solution: measure both, and compare. This week John Myles White and I set out to gather data that measured both the number of projects using various languages, as well as their community sizes. The above chart shows the results of this data collection, where high rank values indicate greater popularity, i.e., the most popular languages on each dimension are in the upper-right of the chart. Metrics are highly correlated: perhaps unsurprisingly, we find that these ranks have a correlation of almost 0.8. Raw ranking data available here.

Dabbling With Generators Some time ago, I blogged about generators, and specifically mentioned the implementation here. I've since incorporated this into my production code, and every so often find a good use for it. Today, I believe, was one of those days. Bare with me for a moment - I'm going to try to describe the problem without mentioning any customer specific details. Assume that you've got a list of items you want to render on the screen, such as: (define data '(a b c d e f g) Laying out the data in sequence is trivial. a b c d e f g But, the client wanted to get fancy. a b c d _ _ e f _ _ _ g I already had the sequential approach implemented, so I just wanted to augment this with the ability to specify where the holes were. #lang scheme ;; We assume that you've put definition of define/y from ;; into ;; yield.ss (require ".. You can test this with the expression: (do-layout data layout) Overall, I like the solution above. The ugly to me is:

superbe article sur l'intéret de Lisp (code & données, macros) by bernadrian May 2

Related: