sábado, 22 de septiembre de 2018

Rich Hickey on Clojure

Rich Hickey on Clojure

For this week's blog, we heard Rich Hickey's opinion on Clojure. He starts talking about Lisp and its importance in understanding programs as a data structure. Also, he talks about is huge potential as the ability to also compile programs as data structures is really useful. However, Hickey also gives some huge arguments of why he thinks Lisp is not so popular and is its own power. It may sound odd at first, but it does make sense. Since Lisp is a really powerful language, everybody has its own dialect or way to develop in that same language. Also, not everybody knows all its capabilities or uses them at its 100% so some functions/abilities become unused, unsupported and unfollowed.

Hickey also talks on how the creation of Clojure was a need to fix one of Lisp's biggest problems which was the communication with other languages. Thanks to this need and give Lisp this ability is why Clojure was created. Let's also remark that the alleged power of Lisp doesn't mean that is a language that can withstood a whole system and thus an integration with other languages is required. Clojure keeps all the functionality and power of Lisp without being restricted to only its library. This is why also Clojure brings the ability to compile and use a whole repository of Java libraries.

In conclusion, I think the article is redundant and states what many other articles about Lisp does and praises it as so. I did learn a couple of different things, but I do think is the same Lisp-fanboy praises.

sábado, 8 de septiembre de 2018

Revenge of the Nerds

Revenge of the Nerds
The author starts by comparing two statements, that all programming languages are pretty much equivalent and the opposite, some programming languages are better than others in solving some specific problems. Sometimes is simpler and more comfortable to think that programming languages are equivalent, however, it is a lie.

Lisp was never really designed to be a programming language, instead, as an effort to define an alternative to Turing Machine. Some time later, Steve Russell looked at the definition of eval  and realized the translation to machine language was actually a Lisp interpreter.

Lisp was made different by nine new ideas that were to 2002 still unique to Lisp. The most interesting and most important are the following. Functions are a data type and they can have a literal representation, can be stored in variables and passed as arguments. Lisp was the first one to support recursion. Symbol type variables that are pointers to strings in a hash table to test fast equality.

The are three main problems that can arise from using less common languages. Programs may not work well with programs written in other languages, Amount of libraries at our disposal. Amount of programmers familiar with the language. The importance of this problems varies on the amount of control there is over the whole system. If you have little to no control, then it is advised to stick to the common languages, else, you could create your own language if you want.


If you use a less powerful languages it is pretty much certain you will end up with a larger program. It is not specific how much shorter Lisp program would be, but against C there has been numbers that is 7-10x smaller. With all these information I just keep on thinking that functional languages should be the first approach of a person to computer programming.

sábado, 1 de septiembre de 2018

Dick Gabriel on Lisp

Dick Gabriel on Lisp
The podcast starts with an introduction of Dick Gabriel and the projects he has worked on. It talks a lot of how a functional language works and how is very easy to use data and functions very easily. He begins explaining how a functional programming works and how you can distinguish the functions from the actual data. To do so, you just quote before the parenthesis.

Dick Gabriel has also spoken a little bit about macros and its importance. What I basically understood from this part is that Macros are programs that create more programs. This part has left me a bit curious cause I have also heard from older classmates that this is the topic they consider the hardest. Until this point, I have never done this in any language. The closest I have been is writing ejs scripts that generate HTML. I also don't know in what type of situations this is needed which makes me even more curious.

Dick also talks about Lisp's interpreter. One of its main features is that is metacircular, which means that is a language able to evaluate itself. I am also not sure I heard this correctly but the eval function was actually developed in just one night instead of months as they have thought. Lisp is also important for its influence and inspiration to other languages such as Ruby. Lisp is also a language that is favored for Artificial Intelligence.

The podcast ends making a big statement that Lisp as a functional language may appear really hard to be implemented. However, it lies a huge development potential. If you wait till the end of the podcast, you may also hear a song called God wrote in Lisp which if you listen to carefully can definitely  give you a good laugh.