viernes, 19 de octubre de 2018


Language as the ultimate weapon.

This time, this entry will be a little different. In this case, we will talk about George Orwell's novel named 1984 and its impact that has when comparing to the actual world. 

Actually, languages are really important, that’s the way how humans communicate their ideas, and it’s really powerful. You can hide or unmask different things if you know how to use the properly words. In the novel, the language used in the book named "Newspeak", is controlled by the government, and the government use this with the objective to control people's language and their memories. In order to do this, the government make the people forget words that are not necessary, so the people get more and more ignorant and to be more manipulable in the way they think, talk and act.

With this said, this is an example of what could happen if the languages begin to disappear or to reduce. And actually, is what is happening nowadays in Mexico and in the world. Native languages are disappearing because there are few speakers of that language and/or their cultures are disappearing or changing into the mainly ones, so is very important, not for only spoken languages, also the programming languages. Is much better to learn and to create new ways to program, to just keep the well-known ones and eliminate the others. The way how any programmer solves the problems can improve if he/she look at the problem from other perspective and I think is true. When I program in C language or Java language I create lines of code in a way. But when I think about solutions in Lisp, I never think the other way. I search for another solution. That’s like a training to see things in other way and the importance to have the tools.




sábado, 13 de octubre de 2018

Roots of Lisp


This time will be about a Paul's Graham article  about John McCarthy and its list processing language that use lists of the data and code oof programs. As I said in a past program, this way of programming is more efficient than other languages. And in this point, he begins to talk why Lisp is important and efficient.

As the history of Lisp is given in the article, he mentions about the seven primitive operators, that are like the core of the language, because with that seven operators, you can create any function. They are quote, atom, eq, car, cdr, cons and cond.

Then, he starts to talk about functions and how they are composed (talking about order). And the example he gives is

 (lambda (p1 ... pn) e)

where "p's" are parameters and "e" an expression. 

And for now on, he gives a lot of expressions to show diffrerent ways of operators, to finally see, complex functions. And well I dont know if this is correct but the way I see Lisp use single operators to construct complex functions is like the phrase "divide and conquer", that is if you work with little pieces, in this case the operators, and then you join them, the result will be awesome

This is a new way to see this programming language, because is rare to see how a programming language works from its "core", and is very interesting to know that lisp works mainly with 7 operators, I had that idea more or less, and I think is important to know this to conclude this course of Clojure, Lisp. it is also relevant to say that this language is very efficient that other languages, but I think is harder to understand how it works, so it gives me more time to make an idea of how to make a program

sábado, 6 de octubre de 2018


the promises of functional programming

This time, this entry will talk about an article of Konrad Hinsen named as the title of this blog says. 

(This is the link of the article: Click here)

TO understand this, there is a little bit of history about functional programming and an explanation of how it works or how is different from traditional imperative programming.


The functional programming works by composing functions and a great difference from traditional languages is that there is not usage of variables.

An important thing Konrad said is about the usage of concurrent and parallel programming. Actually, as the computers get more and more powerful, the usage of this two is more important. But there is not always that easy, each one has their own problem. For the parallelization the difficulties are "identifying independent computations inside a program and coordinating them with the required communication operations" and for concurrency, as you work with different threads, you have to know how to synchronize them with "locks" (you stop other threads until each thread are not being used) in order to modified data items. Before, in another class, I’ve tried to use concurrency in C language, and it was not that difficult to coordinate all threads, but as the author said, if you miss something or if you do something wrong, errors will occur easily. So is very important to have this in mind when we are programming and to know which parts of the programs you can use them.

I think that is very important to learn how to use the parallelization and the concurrency because as we will have powerful machines, we need to take advantage of the processors we have, and use that methods to improve our codes, no matter which language you use, the implementation of them are included in traditional languages as Java or C, or in this case Clojure.

sábado, 22 de septiembre de 2018

Hi everyone, in this blog, this time I will talk about Rich Hickey. He participated in Software Engineering Radio, and he is the creator of a programming language named Clojure. That´s the language I´m learning in class. Rich explained that his language is another Lisp but better, why? Because Lisp was very     backward with recent and very important topics of the programming language of that years like classes, polymorphism, abstract interfaces, etc.

Clojure is a programming language that was launched on 2007 that bring to us some new features in his programming language, using the term of "give the client the same product but with a convenient difference that makes you better than your competitors", (more about this in a previous post). Rich Hickey explained to us that his programming language use JVM (java virtual machine) and that he also added to it some features as like persistent data structures.

Rich also explain to us the his main “clients” or users for his language, and he specifies that Clojure is directly directed to investigator and people who really want to think (I like his second reason =) ). And I agree with him because with my experience on the language I can say that is pretty different from the common languages, just for an example is the syntax of a conditional

In java

If(x = 10){

….

}

And in Clojure

(= x 10)


I think that use this language is a challenge for me, because I have to change my mind about the solutions of some problems. I cannot give the same solution as the ones that I have with java or C, but if they are the same, I have to translate them to a very different context. I´m really enjoying how new solutions came to my mind, it´s a good opportunity to train myself for future challenges.

sábado, 8 de septiembre de 2018

Revenge of the nerds

This post will be again programming language named Lisp, this time is a reading of Paul Graham.

So, in this reading, it is mentioned important things you have to take in mind before you create something, in this case an example of programming languages. The author says that if you want to create something new that already exists and if you want to sell, you are trying to have success because you believe that your invention has something that highlights between the others.

When you want to enter to the red oceans (ideas that already exists and that you want to fight against other companies for the clients), it is important that your product really satisfies the requirements and (this is the important part) to have something that makes the difference between your product and the competitor´s ideas. And that’s because if you create something that already exists, why the clients will buy something that your competitors already give them.

My point of that is to show why Lisp begin to grow when it was launched. When Lisp was created, it had nine ideas that marked the difference with the other programming languages. The author listed

Conditionals

Function type

Recursion

Dynamic typing

Garbage-collection

Programs composed of expressions

Symbol types

Notation for code using trees of symbols and constants

A language which you can compile while you can read, read while compiling and read at runtime.


Nowadays we have a lot of language that have some of the elements mentioned before, but when Lisp was launched, other languages didn´t had some or all of them. So it´s clear what Lisp´s creators made to mark the difference between other programming languages and Lisp. And this advice is not only for the creation of a new programming language, you can use it for anything where you have client competitors.

sábado, 1 de septiembre de 2018


Dick Gabriel on Lisp

When I saw, at the beginning of the course, how Lisp is and how it works, I thought that the language was very strange, because of the number of parenthesis that are needed in the lines of the code. But when I begin to work a little bit more with it, the parenthesis had their sense to be there.  I think that this language is very efficient in terms of time and complexity. And after reading the previous readings I´m beginning to believe that this language is very important, and that is a language that must be more known by the programmers around the world. 

With the speech of Rick, it is more evident or clearer, that this language is almost “indestructible”, at least that´s my opinion now that I´m beginning this course added to what I read and listened.

It’s important to mention that in the past, when Lisp was starting to be used, when the companies affront to develop the best quality code and one company used Lisp against the others that didn’t know the existence of Lisp, the ones who used other languages than Lisp always lose in terms of time and quality, and when the loser companies tried to find the way they hacked the system or the way they cheat on works, finally never know why they win with an unknown language that was weaker that conventional languages.

It´s important to know all the weapons you can use when you must work in any project, so you can use the better option based on the requirements of the work, so your enemies never surprised you.

 I think that Lisp can be used in many different cases, so programmers have to make the most of it. I hope to listen more about Lisp in the future as a strong -programming language.

sábado, 25 de agosto de 2018

Beating the averages

Beating the average is an article of a conference made on 2001 at Franz Developer Symposium, and is about the experiences of the programming language Lisp, when two programmers made a software that let the users build online stores. They called Viaweb.

 Is very interesting how the author speaks about Lisp as an excellent language to learn. When he is talking about his experience when he launched his startup, he explains that his company was the better in that moment, and there were about 30. Why? Because they used Lisp, a programming language that was used only for scientific research, so it was a strong weapon that nobody thought they were using. I learn with that, that is very important the time the projects take to deliver. The faster the cheaper. And with that, the author´s company was the leader at its moment. And he says that the speed of develop is very important when you are competing with others. An important advice if you want to start your own company. Although, when you are starting with a new company, you don’t need to copy what the other companies (in special de big ones) do. You need to find specific things that makes your company better than the others. And when the company is big enough, you can now copy the other ones. And at this moment, it is an estimate of growth of about ten percent by year.


To conclude, I think that the information given in this article is very important to take note for the future. Also as the author explains how Lisp is a great programming language, it makes me see this language with other eyes. But for now, as I´m learning how to program in Lisp and how is it, I´ll keep programming in Java.

Source

Graham, P. (April 2001). Beating the averages. Obtained in http://www.paulgraham.com/avg.html