lunes, 18 de abril de 2016

Logic Programming

After having seen in class the topic of macros, I thought I could not exist something more difficult in Clojure but I realized that I was totally wrong when I read the chapter in the book and when the professor began to explain in class.

Logic programming is as defined in the book, a kind of puzzle where you have the final figure that they hope will be the result, but they do not give you a piece starter, a structure that can be useful to start or a clue. Only they tell you it does, with what works regularly  and with what not, and from there create the procedure.

Another aspect that I find difficult is the issue of variables, and now a new concept known as fresh variables is introduced. Fresh variables are created to store temporary values and is only used in logic programming, for functional programming we have let function, with which we have been working.

On the other hand we have the issue of command to compile the program because it is not the same. When we are using logic programming we use the run* command to compile our program and, this return us a set of solutions. It is also mentioned that q is the most popular name that is used to name logical variables in logic programming. The logical variables are free from the time they are created and until a value is assigned.

It's a bit complicated the issue of match between patterns of different types of programming. Maybe understand how it works the function is not complicated, rather the syntax is the difficult part, and more when work just like the functions that we have used in functional programming.

The book's title seems interesting, try to learn a language per week is somewhat complicated, or maybe others could take it as a challenge.

domingo, 27 de marzo de 2016

Triumph of the Nerds Part III: Great Artists Steal

All documentaries related to the history of Bill Gates and Steve Jobs, I've always found it very interesting and funny and this was no exception. During the video a lot of details were mentioned and it seems to me incredible that there can be many documentaries and in each of them different things are mentioned.

Both characters were a fundamental part in each of its businesses, yet it's amazing how Apple allowed the departure of Steve Jobs considering the great contributions he had given to the industry. However, after some time he returned to the company as a leader of a new project to finally become the owner of it.

Watching the documentary, I realized that Steve Jobs was a person who cared more about the way things looked, in this case put an emphasis on that computer interface was easy and user friendly. While on the other hand, Bill Gates focused on that things work in the best way regardless of the graphics and how difficult that was for the user use a computer.

While MAC computers were a revolution in the industry for the inclusion of graphics which facilitated navigation, I think the problem from my point of view that has APPLE is its price. Today we can see in any product launch, such as cell phones; the price for their products is actually exaggerated considering that there are others products in the market with the same features or even better, but I think we are facing a problem of current consumerism.

I can say that Microsoft is putting more emphasis on improving the interfaces of navigation for the user, but is neglecting other aspects that we consider some users more important. What we can't deny is the effectiveness of MAC products and its pretty and sophisticated design.


Language as the Ultimate Weapon

Why is the Nineteen Eighty-Four novel by George Orwell relevant to a student taking the Programming Language course?

After I finished reading the book and article, I ended convince me how powerful are the media, but I did not know was how powerful could be a language to the point of changing the way people think.

I think what we should consider relevant of book for us is,I do not see it as a near future to our society, but if like something that could happen us as a society and I mean the fact how the media and government handled information at yours convenience.

We have always heard (at least me) that young people are the future of the country and I'm agree to this, the problem is that not all understand to meaning of this. For me, be the future of the country means understand that we have the opportunity to have a career and when we practice our profession we have the option to help our society, or destroy it more.

A phrase that I liked of the article is one that says "Expanding the language is to expand the ability to think" (Myers) and from what I understood I dare to make a comparison with the programming languages. The more languages the person knows, has more tools to decide which language should you use it, since the person has knowledge between one to other language.

I believe that a good strategy to not become a Big Brother, is to share our knowledge. Often we listen to our family, address one issue, giving their point of view according to what they saw or heard in the media, maybe what we know is not much, but if we combine both views or belie to people, I think it is to do our bit.

I see the language as knowledge, and knowledge lets us know that 2 + 2 is different to 5.

martes, 15 de marzo de 2016

Rich Hickey on Clojure

In each podcast that we must listen for our activity, I like to performing an investigation to know more about the person that being interviewed, this time I had to investigate Rich Hickey and, to be honest, this was somewhat complicated because, there was not much information about him.

About how little I have found during my research it is that, Rich Hickey is the author of Clojure (as we all know is a very powerful and popular language in many projects of artificial intelligence). In addition Rich is Datomic designer, distributed database That has ACID transactions (Atomicity, Consistency, Isolation and Durability), joins, and a logical query language.

One feature that makes the language Lips so powerful is that it does not compile text, but rather compiles data structures that are created by users. Regularly, in most languages interpreters text are used as compilers, but this could be a bit cumbersome to the language and the users and subtract efficiency.

Another topic that was mentioned is metaprogramming, this concept refers to create programs that have the ability to write or manipulate other programs or themselves as data, or when they do during the time of compilation part of the work that should be doing during the time execution, allowing the developer spend less time developing the code.

Each language has its own syntax, and sometimes it is difficult to switch from one language to another constantly, but I think we have to be open minded and be aware of new options that present themselves. Perhaps some of the new language we not pleasant or easy to implement, but it never hurts to know something new.

In relation to our career, learning languages helps us not closing ourselves off to only one language, since we never know if a basic knowledge of a language can give us a better job or help us to solve a problem.

miércoles, 2 de marzo de 2016

The Promises of Functional Programming

This article talked of a topic that already had some prior knowledge, or at least to me it was a bit familiar because it has been mentioned in several articles and podcast. First, we must remember that when we schedule, we declare certain variables that will be useful throughout the program, these variables are retrieved by the processor from  the memory to later write the result back in a memory cell.

Functional programming is a paradigm that allows us to create programs, as close to reality, unlike imperative programming, which is used by most languages. Imperative programming refers to one in which the developer writes code that describes in detail the steps the team must perform to achieve the objective, focuses to the procedure.

One difference between the two types of programming is that imperative programming is easier to compile in machines that are sufficiently efficient, however, functional programming allows you to make easier and faster tests. Mathematica is a software that was developed using functional programming and is a very efficient software and used by many users.

Functional programming has no variables, the reason for this is explained in the article; when we talk about functions, we refer to a procedure that always returns the same value, however this is not always true in programming. For this reason the functions are not the indicated to change the values of variables that are recieved, this is the main reason why variables are not used in functional programing.

From my point of view not to use variables is something that can be a bit complicated for those who we are used to other languages where variables are used all the time, but once you realize the power of a functional programming, you can start to change your mind, leave the variables aside, at least for a moment.




sábado, 20 de febrero de 2016

Triumph of the Nerds Part II

The key growth of any company is think of the future. Technology is advancing too fast so if you have a company dedicated to technology with a good idea, you should look for improve the idea or, think of anything else, you never settle for something. This is what happened to IBM, a technology company that had to suffer to adapt to change and to be on par with the competition.

IBM employees had to find a quick solution if they wanted to stay alive in the market, Apple had launched its first laptops which were being successful in the marking. The solution was of an IBM employee, rather than manufacture the computer components, they buy them and in this way they could save production time and could have their product ready quickly.

IBM did not count that they were going to need a language and an operating system for their computers, so they decidet to contact to Bill Gates. Bill Gates was one of the few people who had a language to interpret the instructions of computers, such language was developed by him and then he developed his own operating system.

The IBM mistake was be overconfident, luckily they were able to stay in business and today are a strong company in the technology field. What this video made me think is that we must exploit all our ideas, I do not know if Bill Gates is right about that after  30 years of age the good ideas end up, but if this is right, we must seize our age.

Finally we can not ignore the creativity of IBM, their repertoire of songs is so funny, in addition to they have their own dress code, which we can not forget the socks fasteners, if we want to enter their offices.


viernes, 19 de febrero de 2016

Revenge of the Nerds

Every programming language has its purpose or its strong point. What with a language programming can do it more or less acceptable time, with another can perform it faster and efficiently. Depending on the requirements of the program is that you must choose the language that suits us.

Seems to me amazing how LIPS being a language that was created ago many years (60 years to be exact) and, it is today considered such a powerful language, due to the way that it  was developed. I agree that when a new language is developed, you should think ahead, not only trying to solve the problem that we have in front, and that not only we must consider when creating new languages, but rather to everything, for example when a program is being developed.

Another important aspect that it can be highlighted of the article is that it gives us an advice, whenever we are developing something, we have to think of the customer, we must design our programs to please the client, because if we win the customers confidence, we will have more opportunities to grow as a new company.

Something that is true, LIPS is a comfortable language in a matter of that, usually, the programs developed are short in terms of lines of code. Another advantage of LISP is that it has an extensive library where you find methods for almost everything, without having to implement it on your own, so you can focus on other aspects of the program rather than on simple things like sort something.

Of this article we can conclude that any decision on what language we must use should be based on the approach of the company and competition, you can not define if one language is better than another, but experience in the development industry will help us to choose the one that suits us.