Entradas

Mostrando las entradas de febrero, 2019

What makes Lisp Lisp?

I found this last text repetitive and boring, I think I had understood where Lisp came from and almost everything there was to know about its story in the previous readings and podcasts. The only part of the reading I found interesting was the eval definition function where they showed you how to write the Lisp interpreter in Lisp. The thing with programming using a functional language is that is a complete flip of paradigm, when the data is also the code and you need to differentiate it using quotes. One of the difference I found in this reading regarding Lisp and Clojure is that in Lisp the empty list represents false and the atom t represents true where as in Clojure we have true to represent true and false or nil to represent false. Also, I noted the differences between the primitive functions in Clojure and in Lisp, where in Lisp they are called weird and in Clojure they have the name of what they do. This last I noted since the podcast about Lisp that explained why the functio

What is Clojure?

The podcast "Rich Hickey on Clojure" explains what made Rich Hickey consider the idea of creating a new programming language called Clojure, based on Lisp and running in the Java Virtual Machine. What I enjoyed the most of the podcast was the explanation of the immutable data structures because if you consider data to be immutable and consider a big program then you should worry for memory as everything would be kept in memory and this is not efficient. So, what makes Clojure efficient? It turns out the programming language uses Single Linked List and instead of creating an exact copy of an Array or Set but with a value change, it uses the Nodes of the Linked List just to add the new path of the changes. In other words, if A->B->C and you change B to D it create a new A to point D and D will point C, so you would have your two lists A->B->C and A'->D->C. This intelligent approach reduces redundancy and memory usage by recycling the parts of the structur

A real dive into LISP

The podcast Dick Gabriel on Lisp mentions a lot of the workarounds from this programming language, one of the most interesting aspect of the programming language is that it is very similar to the theoretical Turing Machine. The importance of Lisp is the promise that it makes to help in the research of artificial intelligence due to its functional approach to programming. This approach is what makes it really similar to the Turing Machine, because said machine is a mathematical representation of programming and functional programming is also a mathematical representation. Comparing Common Lisp with Clojure which is a Lisp dialect that we are learning, you soon realize that Lisp has not taken yet the world of programming because it is not a very obvious language, a lot of the mnemonics have to do with the assembly implementation of the language itself and not with the action that it makes in a higher level. I think this is one of the reasons why functional programming has not taken the