lunes, 18 de abril de 2016

Comments on "Logic Programming through miniKanren"

Logic Programming is an interesting way to solving problems it’s based on the clojure core.logic namespace, it kind of solves the problems backwards, as described in the lecture, and it’s kind of like magic.

In logical programming you tell the program the basic rules of the problem and an initial state, and the program will find the solution to the problem without much work required from us.

When we code in logical programming, our goal is to match both sides of our expression to try and get a number of possible solutions. We can limit the number of solution provided by writing run followed by a number of maximum number of solution we want to get in return, if the number of solutions is less than the number we specified, we will just get that number. If we use the run* form, this means we will get all the possible solutions to the bounding of our condition. This can be dangerous if we have infinite number of possible solutions.

Expressions in logical programming don’t return true or false, instead, they return succeed or fail if the expression is able to bind our query to our goal.

Some other functions make it possible to bind queries to our goals in parallel ways which is similar to creating “parallel universes”.

Relationships can be created using this schema, creating databases it’s very simple and it will make solution solving very easy. When denoting relationships, an “o” must be added at the end of the name. Example “mothero”.

There are other ways to matching expression, a very useful way is using the matche pattern, which is a version of conde and makes this kind of code much more clear and concise.
Functions like map can be used in logical programming and work pretty much like they do in clojure and are used to match patterns.

There are other ways for matching patterns, such as using conde, condu, and condo, these types of conditionals work in parallel to try and match conditions to its bindings in a proper way.

Logical Programming is a very powerful tool, but can be mind-bending when trying to fully understand it.

martes, 29 de marzo de 2016

Comments on "Language as the “Ultimate Weapon” in Nineteen Eighty-Four"

Verbal language can be a very important part of people’s lives, I could imagine life without it, it is the people’s way to express what they think and to interchange thoughts and emotions.

Without language, society would definitely be very different to what we are used to. On the other hand, it can be used as a weapon, when trying to control huge volumes of people, by not allowing them to communicate in a proper way and not been able to express their feelings and opinions. This is the case in the novel “Nineteen Eighty-Four”, in which language is reduced to a minimum level of complexity in order for the government to have control over people and not allowing them to express their political opinions, and therefore preventing the people from rising up and ask for change. This is expresses in a similar and more profound way in the article “Language as the Ultimate weapon”.

If people aren't allowed to communicated their thought it can become very easy to establish a strict regime, in which whoever is in control of the language, can be in control of the whole population, such is the case of the book, in which an imaginary country lives in an authoritarian regime in which people are controlled and condemned if they thing in a more freely way.

Language is a tool that allows humans to think and act freely, as stated in the article by Jem BErkes, it is key for social evolution and social improvement, without it a path to progress is very far away.
Language is the basis of our society, without communication, societies could not work together to better themselves, therefore it can be a great weapon if someone has control over it.

Talking in the sense of how this can be relevant to a computer science student. It is key to understand and know, that computer languages are very different to our spoken language, and therefore it is a whole new world of abstract and complex instructions. We must be able to understand that there are several ways of communicating things, and a computer language can be an example of an alternative of communication.


It is very important to try and think like the language in order to properly understand it. By doing this we can involve ourselves deeper into it and to greater things.

Comments on "The triumph of the Nerds: Part III"

In the early 1970´s computer Enterprise Xerox, created an initiative designed to dominate the future of the computer and technology market. They had developed and built a computer called “Alto” that was very expensive to build and was never sold to the general public. This computer had a graphic interface that included what we all know today as the mouse, which could allow users to move a mouse which was a cursor on the screen and allowed the use to have a much more efficient navigation through the elements of the graphic interface.

This computer, also had connection to other computers by an Ethernet connection, which was very ahead of any of the competition. They were also the first company to allow to connect a printer to the computer and print the content of what was shown in the computer.

Steve Jobs saw all these features of the Alto computer and wanted to have something similar in his computers. The computer in which he introduced the Alto like technology was the Lisa computer, it was never a huge commercial success due to its high price. Later on the Macintosh was developed which was sold at a very competitive price which generated a huge competition with IBM.

The Macintosh was the first affordable computer with a GUI interface and made an association with Adobe, which was a company specialized in design and could allow users to print exactly what was in the screen, among other features. Apple decided to buy the 19% of Adobe, which turned out to be a great decision, since users found great advantages of using adobes products on apple computers. This lead to a huge success for Apple.

At the same time Microsoft say the same opportunity and decided to implement a GUI into their OS, which they eventually called windows. This generated a series of controversial arguments between Apple and Microsoft, in which Apple said Microsoft had stolen their look.


Microsoft became the leading software company in the world and Steve Jobs was left out Apple by making some wrong moves according to the Apple board.

miércoles, 16 de marzo de 2016

Comments on "Rich Hickey on Clojure"

Not very often we hear from the actual creator of a programming language, in this case we heard from Rich Hickley, the creator of the Clojure programming language.

In this podcast, Rich talks about the most important differences and advantages between Clojure and all the other LISP based programming languages, and what makes Clojure a unique solution thanks to its uncommon features, that make Clojure a great programming language, when trying to solve a particular problem.

One of the main characteristics that Rich mentions about Clojure, is that is a programming language, based on the Java Virtual Machine (JVM) that works in a dynamic way and has the JVM working as an intermediate between the program attributes, and its functions. This works great when we want to develop and optimize for parallel programming, it uses literals as lists and vector, which not many LISP programming language implement.

Clojure can be a great option when trying to solve a given problem, but it is not necessary the best option in every case, sometimes using other languages like Java, may be easier for the programmer to give a solution to a problem. Clojure is a declarative programming language, which can be a great source of learning if we are not familiar or we don’t have much practice using declarative programming languages.

Clojure allows the use of libraries which allow the developer to work in a more efficient way when using data structures, theses libraries are a set of collection, that allow the programmer to implement in an easier way certain functions that eventually will lead to a better quality and performance of the software delivered. Another great characteristic of Clojure, is that the data structures are immutable, which guaranties a better performance, since values must not be locked and this makes it useful when wanting to program in a parallel way.


Clojure is one of the best programming languages, when trying to learn to code, it will open the panorama and will enforce our programming experience.

miércoles, 2 de marzo de 2016

Comments on "The promises of functional programming"

There are many functional programming languages in the industry, Clojure, LISP are some examples of such languages. These type of programming languages can sometimes become very useful, when we want to solve a specific problem. Sometimes using a functional programming language may not be the best option for solving a problem. We must analyse the problem we want to solve before choosing a functional programming language.

Functional programming languages allow us to solve mathematical programs using threads, the evolution of technology, has limited the amount of resources available in a computer to solve and execute instructions, the new solution to this recently has been adding multiple cores to processor to make the processing capabilities of a computer much higher.

There are many difference between the imperative type of programming and the functional programming languages. One of the main difference is that functional programming languages have no variable types, such variables are immutable because there are bindings that can’t store values.
Another main difference is that functional programming languages don’t use loops, they are designed to use recursion in order to reduce the execution time for a given problem that demands a lot of resources.

Finally another difference, is that functional programming languages are composed by functions which will in every situation yield the same result to and specific output. This results in side effects that are produced by the program, in order to maintain the natural flow of a functional programming language.

Functional languages are very good options if we want to write programs that solve a problem using parallelism, since bindings are immutable, the race conditions can be avoided, which in a future will avoid the necessity of implementing locks that will result in the absence of deadlocks.

The negative side of using functional programming languages, is that they are not very commonly used and compilers don’t produce very effective parallel executable code.

martes, 23 de febrero de 2016

Comments on "The triumph of the Nerds Part II"

Bill Gates and his colleagues made Microsoft giant in the world of computers, this mainly because he was a visionary that had an ideal and the attitude to make this dream come true. A company like Microsoft didn’t become as huge as we know it today just from scratch, it had its key points and even luck. Bill Gates was lucky enough to make his idea and dream come true, even with other people competing against him and being under the shadow of a giant company like IBM was at the time.

When Bill Gates started Microsoft many people though it was impossible to overcome such an Enterprise as IBM was at the time, nobody could imagine that a startup company that had started at a student’s residence could be so powerful and even more powerful than the giants in power.

Of course, there were other competitors in the same race, which is the case of Apple, when Steve Jobs was developing a computer business, similar to what Bill Gates was trying to accomplish, the key difference between Bill Gates success compared to Steve Jobs, was that Bill Gates wasn’t trying to build a computer from scratch, as Steve Jobs was, Gates dedicated his time to develop the software that IBMs computers and all other computer manufacturers in the future will use to make such computers useful to everyone.

The most important moment and key factor of Bill Gates career as a startup company, was when he sold the right of using his operating system to IBM, but with an agreement that he could sell to whoever else he wanted, so when IBM started using Microsoft software it become a necessity for the other computer manufacturers and Microsoft became a company in power of the market and had control of how companies like IBM could grow.


This key factor made Bill Gates and Microsoft the most valuable company and today remains one of the most valuable companies of the world.

miércoles, 10 de febrero de 2016

Comments on "Revenge of the Nerds"

Many times, people don’t really know the difference between programming languages and just believe that the most popular languages are the best, this is clearly a case of ignorance. A programming language doesn’t make it a better programming language just because it has more funding than other languages, or some programming languages may be better for solving certain problems than other languages. In most of the cases people that are not in the computer development industry don’t understand and say the better language is the one they have heard the most. This happens a lot with Java, since Java is a well-known language in the media, because it is a recent and well-funded language. This doesn’t mean it’s the best language that is out there.

For example, Java was born to fix certain problems that C++ had, but this doesn’t necessarily mean that it’s a better language, in some cases each of them can be better for solving certain problems, and this goes on with all the different gamma of languages in the industry. The key is to know for what circumstances each language will become a better solution for a given problem.

Now talking about Lisp, even though Lisp is an old language it was one of the first languages of its kind, as a matter of fact, it was the first language to implement recursion and remains one of the most useful and effective language to evaluate mathematical expressions.

When thinking of small projects, sometimes the language used may not matter much, but in certain circumstances where the project demands a more specific way of solving the problem, taking some time to think and choose which the right language to use is may be the difference between a complex and a simple and effective implementation.


Using the right language for a certain problem may result in money saved in the development process. This is one of the many reasons we must be careful before choosing a language just because it has more popularity in the media, this may not always be a reliable source or is not adequate to the specific problem we may be trying to solve at the time.

martes, 2 de febrero de 2016

Comments on "Dick Gabriel on LISP"

LISP was one of the first programming languages ever to be created, it started with the idea to have a different approach to what programming languages should be, and how values should be entered as parameters into certain functions.

LISP receives a number of arguments which will eventually be used as parameters in other functions, this makes LISP a very efficient programming language, because the functions and the functionalities between then can be related, in other words, some functions become the data of the parameter for other functions, which results in a high performance and a better coding style.

The main advantage of LISP is that is language that can be evaluated by itself. Recursion is one of the strongest characteristics of LISP, which makes it able to evaluate infinitely its own functions by itself.

Although LISP is a great programming language, it hasn't received the credit it should and it’s not very commonly used in the industry, this is mainly because of its complexity, and because a lot of people find LISP a programming language very difficult to understand, some people say you have to be crazy to code in LISP.

Although LISP is not very commonly used and not a lot of people like it, this doesn't mean it hasn't been a transcendent language in the industry. Many other programming languages have evolved from LISP (LISP is one of the oldest programming languages that exist), like Java among others. A very important contribution the LISP programming language has left as a legacy is the Java Garbage Collector, which has a very important role in the computer and coding industry. So it’s not such a bad ending for LISP.

LISP is a very powerful tool as a programming language and its usage should be encouraged, even though it might not be a very easy language to use and learn, it certainly has a lot to offer and will help people improve their coding abilities.

martes, 26 de enero de 2016

Comments on "Beating the averages"

In the world of programming using computer languages that no one else uses creates a huge competitive advantage, is like if you learn Latin, Latin won’t really get you anything interesting, but it will open your mind and make you a better writer. The same happens with computer languages, and the article reviewed here is the language called LISP.

LISP as many critics say, is one the most interesting languages because it gives programmer a better panorama of the picture, if you know well how to code in LISP, this will help you and will make you a better programmer in the future, even if you don’t really use LISP in your daily basis.

Using LISP to develop applications can provide a huge competitiveness against big and already established companies, LISP programs are usually faster and more efficient, and at the end of the day, that’s what everyone wants, highly reliable and fast processing programs that are secure to use. This is LISP´s promise as an alternative for startup companies.

Translating this previous ideas into business strategy’s, this means that using a language that competitors are no familiar with, will make it more difficult for them or anybody else to try and copy your idea and make a competitive advantage over you. Besides LISP is a high reliable software language.

The answer of why to choose LISP is simple, LISP is the most powerful and simple language available, the syntax of LIPS (the one with many parenthesis) makes each element independent, and therefore easier logical instructions to process by the computer, this will result in a better performance software with less mistakes and a faster and modular development.


The main problem with LISP is that even though it a very efficient, simple and powerful language, not a lot of people understand it or get it quite, so this is why people should be encouraged to learn LISP and design better software.

lunes, 18 de enero de 2016

Semicolon Wars

Since the beginning of computer evolution and the creation of computer languages, it is believed, that there are more than the 6,912 verbal languages but in programming languages. This means that a computer language is created every week if we follow these suppositions.

The variety of computer languages is huge, there are all kind of languages for all kind of need and all kinds of users.

Computer languages vary mainly in type, in the way logical instructions are received by the computer to do what the programmer wants the software to do, there are 4 main types of computer languages types: Imperative, functional, object-oriented and declarative. Each one of them with its unique type and methodology of receiving instructions.

Each type of computer language has its advantages and disadvantages, but this depends on which use will the software have.

For example LISP is a functional program that works on mathematical expressions and interprets functions to accomplish things, many people say this is the best language that exists, but this is subjective relative to the people that use it.

Languages not only vary on type, they vary also on syntax, there are thousands of ways you can output "Hello World" in the many languages that exist out there, as there are also many ways to put comments and write documentations.

The best language depends on which use it will be given, and it´s up to each programmer to decide which language they like the most and feel more comfortable using for a certain purpose.

Determining the right language for a certain problem is a key point of performance for certain applications, but experience from the programmer is what determines which language to use, so by saying this I mean it´s difficult to say one language that is better that all of the other, but certainly there are some that are better than the rest but only time and experience can give us such criteria.

jueves, 14 de enero de 2016

The Triumph of the Nerds Part 1

In the documentary “The triumph of the nerds” we saw the chronological events that happened in the technological boom that made the first computers possible and eventually transform the world in what we know it.

The technological breakthroughs we have had in the past couple of decades are impressive, if we remember that not a long time ago, computers were the size of a room and were only for government or research use. The idea of having a computer at home for your own personal use was simply out of the picture.

In the mid 70´s a corporation named MITS, developed a computer that was the size of a box (ALTAIR), this was the first personal computer that was available for the general public at an affordable price, and it was a huge success. The problem with the ALTAIR, was that nobody seemed to really find a useful application for it, and most people didn’t relay know how to use it, or had very limited knowledge of how it worked. Still it was a success because geeks were fascinated with the idea of having a computer at home, this was just awesome.

Steve Jobs and his team were developing a software that could transform the ALTAIR into a useful device, this was a huge success, people started finding useful the idea of owning a personal computer, at the beginning mostly for games.

In parallel, a few visionaries like Steve Jobs and Stephen Wozniak saw an opportunity to create a computer that could be selled and become a business success and started developing the Apple II, this computer had technology from the ALTAIR and the race to become leader in the market started.

Having a computer at home had to have a more interesting purpose such as solving business problems, so a group of people started developing software that could have a business application and very quickly the demand of the Apple II was immense, this was a key factor that made Steve Jobs and Bill Gates so rich.



Now a days computers are such an important part of our lives, and it is difficult to imagine life without them, all of this possible thanks to a group of people that had the motivation to change the world as we know it, this is what we are aiming as future software engineers, to change the world and advance in a technological way to expand our boundaries and to things that at some point were thought impossible. 

This is Daniel Kevans

About me:

My name is Daniel Alexander Kevans, most people call me by my surname. I study Computer Systems Engineering and am currently enrolled in the 9th and last semester of my professional degree.

From the subject Programming Languages, I hope to get a better understanding of how computer languages work, and I hope I re-enforce my abilities as a programmer, since I´m not very good, mainly because I don't like it much, but I hope that with this subject I get a better understanding about the area and therefore like programming, I´m looking forward to get a bigger picture of what I already know, and have fun learning new stuff about computer science.

About my hobbies and interests, I usually go out a lot with my friends, I give much value to my social life and whenever I can, I take the time to go out and hang out with the people I like. I´m a huge fan of tennis, playing it and watching it on TV or live. I´ve recently been to some important tournaments where I got to see the real deal with the best players in the world.

I am a big fan of oldie rock, bands like the BeeGees, Queen, Led Zeppelin, Oasis among others. I am also a fan of electronic music, specifically Trance.

I am passionate about tennis, I am a fan of both watch it on TV or live, and I love playing, unfortunately I have very little time to do so, but whenever I have the chance I do.

I love technology, hence my inclination to study this, I love the extent of what can be done using technology and I wish I could contribute in some way in the future and be a part of the technological progress we obtain as a society.

I am not a huge lover of traditional reading, by this I mean books, that does not mean I do not inform my self. I turn to other sources of information to keep up, I read the news 3 times a day and I try to be aware of what happens in the country and the world. As well I read articles and do a lot of research about things of my interest.

My future plan is to find a permanent Job position in the United Kingdom which is my home country. I intend to continue at the company I work at the moment which is DELL, and I´m searching for job opportunities to start my professional life and grow in a personal way.

Regarding music, I've hardly found new things that are of my interest, so I keep up with the classic songs I do not dislike "fashionable" songs but I don't think they are a big deal.

That's all about me, great day.