Lambda the Ultimate Lisp Belongs Within the Family of Functional Languages, Which Implies an Application

Lambda the Ultimate Lisp Belongs Within the Family of Functional Languages, Which Implies an Application

Coding with Lisp Coding with Lisp ‘A hip, burgeoning free software community is currently pushing Lisp, arguably the oldest case for Lisp than coder and writer Paul Graham (see Hackers and complete theory of computation within Lisp, is a Painters, LU&D 42), whose own work with Viaweb is good testament rich seam to mine, with demanding papers on programming language in common use, to the fore as a next generation coding platform. Self- both to the power of Lisp as an expressive language and Lisp’s this subject furnished by the likes of Graham, relevance within enterprise level, large-scale projects. Graham’s essays Sussman and Guy Steele, another major player in confessed Lisp newbie, Martin Howse, presents the fi rst part of an accessible guide to the and books provide a singular practical and conceptual resource, the early life of Lisp, and co-inventor of the elegantly tying real world arguments within a neat conceptual intriguing Connection Machine. culture of this fl exible language, and practical implementations under GNU/Linux’ bundle, which is well wrapped up by his strong theoretical grounding and knowledge of the language. He speaks from experience, and MORE TO LISP THAN LISTS those who paraphrase Graham without his depth of understanding Extendibility here means both extending the Lisp will always sound a bit hollow. Nevertheless, Lisp’s features and language itself in a completely transparent advantages must be outlined, and these can readily be pinned down manner, thus building a domain specifi c both to a decent level of abstraction and to highly usable abstractions language for the application, and providing the themselves, such as closures and macros. It’s worth remembering that facility for others to readily extend and customise Lambda The Ultimate Lisp belongs within the family of functional languages, which implies an application. In the fi rst instance, the fi eld of equivalence between software and data allows The art of Lisp, or coding as philosophy for coding custom languages with powerful abstractions, and in the latter case, this form of what Graham calls bottom-up programming naturally results in extensible software, with GNU Emacs as prime example here. From this perspective, Lisp isn’t about writing applications, it’s about writing languages. And, given the growing complexity of both hardware and contemporary software systems, this heavily modular, high level approach to programming and systems architecture is seriously compelling. Indeed, pioneers Sussman and Abelson preface their essential SICP volume with clear indications Coder’s dream or of how to control complexity, through user’s nightmare? establishing conventional interfaces, and Symbolics Genera establishing new languages. environment was a And, alongside those who claim that Lisp is Lisp hacker’s unusable due to an arcane syntax which paradise, allowing multiplies parentheses, some would still maintain coders to dig deep that Lisp is slow, and argue thus that the need into Lisp hardware for speed has lost out in the battle with complexity. But, given that nearly all modern good points. To hijack Python guru, Tim Peter’s, words, “Good modularity, an essential requirement for Good languages aren’t random collections of languages aren’t random collections of interchangeable features: they large-scale, complex projects. Such have a philosophy and internal coherence that’s never profi tably abstractions, and features such as automatic interchangeable features: they have a philosophy isp has come in from the cold. After years enduring the icy confused with their surface features.” Understanding Lisp is a gradual memory management, courtesy of built-in Artifi cial Intelligence (AI) winter, a period in the late eighties process, and involves some degree of immersion in the history, garbage collection, readily enable new ways and internal coherence that’s never profi tably Lwhen Lisp was dumped by many thanks to associations with philosophy and culture of Lisp as well as a gentle involvement with of programming, and this is Lisp’s great confused with their surface features over-hyped AI research, and a frosty decade in academic obscurity, coding to further elucidate core concepts such as recursion and advantage. the open source community has dusted down this unique language, macros. Yet, Lisp, with an array of dialects, libraries and Sure, the semi-interpreted nature of Lisp, with functions able to be implementations compile during interpretation, and freshened her up with lemon odour. Or rather Lemonodor.com, a implementations is far from the easiest language to get up and tried and tested at the interactive REPL (Read Eval Print Loop) prompt, following a just-in-time model, or allow high profi le Web site which actively promotes and describes Lisp use running with, in contrast to Python, which obviously presents a one or so called top level, assists in rapid development, and, Graham specifi cally for interactive compilation, speed is and can readily be considered the Slashdot of the Lisp world, has stop shop. And although a clear conceptual understanding can be proffers amusing examples of improving server software on the fl y, rarely an issue. And the speed of prototyping or performed this service for the community. readily sought in printed works such as The Little Lisper or in Abelson but Lisp’s real advantage remains in its extensibility which can readily coding is a further issue which should also enter Like a proud mother, Lisp, probably the oldest language still in use and Sussman’s seminal Structure and Interpretation of Computer be seen as stemming from a core feature of the language; the fact the equation. With Lisp, at least one has greater today, can view her children and remark on how their best features all Programs (SICP), practical advice which would further support this that Lisp programs are expressed as Lisp data structures. Indeed, John options for exploration and prototyping, and, if stem from her genes or rather memes. Flexibility and speed of knowledge is sorely lacking within the community. As we’ll see, McCarthy, a key fi gure within AI and inventor and primary needs be, optimisations can be furnished later in development are her watchwords, and key enabling features of the certain initiatives are under way to resolve these issues, but aside from implementor of Lisp, remarks in an essay on the early history of Lisp, the day. Such notions regarding Lisp as sluggish language, such as run-time typing and an interactive approach to evangelising Lisp, an effort which is close to achieving its goals, more that “One can even conjecture that Lisp owes its survival specifi cally belong within an old-fashioned view of Lisp interpretation or compilation have been adopted by newer languages work does need to be done in this direction, and this short article to the fact that its programs are lists, which everyone, including me, which focuses on syntax and on lists, arguing such as Python. Yet, Python misses the killer core or inner beauty only aims to provide an overview for the intelligent and necessarily has regarded as a disadvantage.” Hacker, Pascal Constanza, argues that LISP stands for List Processing Language, which so many celebrate in Lisp. intrigued beginner. that this core feature makes of Lisp much more than just another and which corrals this powerful language within To approach this core takes more than simply enumerating Lisp’s No-one has been more instrumental in persuasively arguing the Turing complete language, and this notion, which embeds a an academic prison. The new view of Lisp is that, 50 LinuxUser & Developer LinuxUser & Developer 51 Coding with Lisp given automatic highlighting and indentation, and Sussman’s work. Indeed, in their heyday, these pioneers were parentheses and other syntactical issues churning out meta-circular evaluators for subsets and dialects of Lisp disappear. Lisp is a far more fl exible language at an alarming rate, and their work forms an important link between than the acronym would suggest. the more exciting aspects of mathematics, philosophy and computer science. Another valuable starting point here would be the common GETTING META assertion that the proof of Godel’s incompleteness theorem, which is A further consequence of the fl attening of essential to an understanding of AI, would have been easier if he had software and data as quite distinct animals, is invented Lisp fi rst, given Lisp’s predilection for the meta-circular. And that Lisp really does live in the land of the meta, just before any unthinking C coders chime in, a C compiler written in and that’s a place where a good few C, which can be used for bootstrapping, does not belong in the realm sophisticated coders and theorists like to hang of the metacircular which further specifi es that precise semantics must out. Douglas Hofstadter, in his seminal mathematical and meta-math work, Godel, Escher, Bach: An Eternal Golden Braid, provides Another consequence of the much vaunted many mind stimulating adventures at the meta- data/software equivalence, is the unusual level, and Lisp makes for a very natural fi t here. And yet another consequence of the much defi ning quality that Lisp can be written in itself not be defi ned in the evaluator. The common parallel is with looking up a word in the dictionary, and fi nding that the defi nition uses the original word. That is how things work with a Lisp written in Lisp; eval, which quite obviously evaluates expressions, is implemented by calling eval. In contrast, a C compiler must specify detailed and precise semantics for each and every construct, and take care of boring old parsing. The REPL defi nes all that is needed to build a Lisp interpreter; read an expression, evaluate it and then print the results.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    13 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us