lunes, 18 de abril de 2016

miniKanren

Now on this entry we'll talk about Programming Logic and it's advantages. It's funny how the lecture introduce it as a Harry Potter chapter, because is closest to real magic in the programming world. But, what is programming logic? It describes the constraints and relations of the problem, without telling how to do the whole problem.
To do this, first of all we need to get know about how miniKanren works and their utilities. miniKanren is a language to run backwards your program, what it makes it more interesting to get know how it works, with the help of core.logic
In my opinion I think even if this is more direct, I mean as telling the program what you want and it's restrictions making the code shorter have a price at the moment of debugging.
The lecture also teach us how to use these tools and it's important that core.logic is an embedded miniKanren that is useful to combine the best of Clojure and logic programming. I like the way the lecture explain this concept, because there are many analogies that can make us understand how programmig logic works. It's not easy, because we are used to code each step well detailed, to get what we want, I see as an algorithm that is serie of steps that tells the program which way to follow. Now logic programming allow us to code in reverse, making the code shorter, with the help pf core.logic this is possible, also exists core.match.
In conclusion, I see that there are equivalences with other commands like conda or fresh, but it's important to understand that logic programming does not return false or true, instead of that is a success or a fail, but with the time I hope getting used to this new language, even is better on some problems, the restrictions and the entries it's what makes everything.

miércoles, 30 de marzo de 2016

Language as the Ultimate Weapon

Why is the  Nineteen Eighty-Four novel by George Orwell relevant to a student taking the Programming Language course?
It's interesting because on the previous documentary Triumph of the Nerds Part III, where a part where Jobs quotes Orwell, even the publicity of Apple where inspired by these book.
I think depends on the context we how powerful or malicious as the article says, it could expand our horizons and minds on the normal way, but on the political way it could let scarce of words of expressions.
It's like they say "An ignorant people is easier to govern", that what was happening on Orwell's novel, they were making people ignorant by changing the language, letting them scarce of expressions and other people couldn't know what was happening only by what Big Brother was promoting. The powerful of languages is synonymous of a powerful weapon mixed with the social media could be fatal. We can see cases of these nowadays, that through T.V we can get into people's mind and changing the way they think, because it's the most viewed.
I think is highly recommended these book, not only for programmers but also for other people, because it makes you think how a language is and what it's the situation we are facing.
On the other hand from the programmer perspective, I think it is relevant to our course because it's the answer why we are taking these course! I mean, it expand our minds making an analogy between programming world and Orwell's world. Having only one language it would be like having one option of a screen that have no CD entries, it would work but it's limited if you want to watch or listen to music, where there isn't on the web but only in CD. Options we need options! we cannot be limited by only learning one language, these reminds me of the article The Semicolon Wars, even though results difficult to handle so many languages it's great at the same because you can use them according to the case like making more efficient. So, yes it's relevant to our course and to our career learning Programming Language, because in the real world you're facing too many Programming Languages.

Triumph of the Nerds Part III

In these new chapter " Triumph of the Nerds Part III", we can se how things emerged and the consequences. The evolution of the computer and it's creator it's really interesting because of the events, bad or good, at the end we are enjoying the privileges.
The subtitle of these document it's curious Great Artists Steal by Picasso, because that's what happened between Jobs and Gates and the succeed they were having. As I said before in other blogs, Gates is ambitious, so he wanted to be the best. According to Jobs, Gates stole his ideas so he would be famous an billionaire.
At the end, all is competence for make known who were the best, both had great ideas and vision, but it's important the business model of what strategy you're going to use because the idea could be great but with a lack of publicity.
On the other hand, what makes more popular these computers was the creation of friendly interfaces, so everyone could be able to use it. And between Apple and Microsoft even though both had friendly interfaces, on one you could install applications, making more useful, because of the compatibility of each program. And the invention of the printer, that prints the same thing you see on the screen is awesome, because before that, all that prints were on the same font type.
In conclusion, from my point of view I think they were there because of the money instead of only making a world better. It was a constant competition between, but it's really interesting how old the story of the computer is, I would even imagine the amount of companies that were actually in constant innovation and creation to have what we surrounds us nowadays and it seems we can live without it.

martes, 15 de marzo de 2016

Rich Hickey on Clojure

On these entry we are going to talk about the podcast of Rich Hickey the creator of the Clojure language. First of all Rich told us that Clojure is a dynamic programming, it's a Lisp so it's designed to be hosted, mostly functional so it's has entasis on mutability, pure functions and inmutable data structures. And It has other focus on concurrency. And on the other hand we have Lisp (that we talked about on the previous blog) that is innovate widely available, because programs are presented to the compiler as a data structure.
Honestly, it was hard to me to get use to Clojure, because the first time was really confusing to, it was so different from what I was used to learn. And with Lisp, I'm not really familiar with it but some day I'll try it. But Clojure I see it more compact, I mean you can code in fewer lines what makes it more understandable, but first you have to know how these lazy-sequences, recursions, etc works!
Another aspect that I like about Clojure is that you don't need to specify the type of data because it's no necessary. Well, I'm really comparing these with Java, because is the language that teach us since first semester, so getting know Clojure it makes a more easy way to program even though I still need to practice.
In conclusion I see Clojure like the best of both worlds, in this case Java and Lisp, so I think is the future for functional programming to produce more code, because as Rich said it is more and more used for companies, startups, so yes it have a future. Well, and from my experience I thinks it's important to learn Clojure to have more alternatives of choosing code and this language makes me more easier to code even though it's difficult sometimes because of the parenthesis or the order, but in general it's a promising language.

miércoles, 2 de marzo de 2016

The Promises of Functional Programming

Now on this entry we're going to talk about The Promises of Functional Programming because Clojure is one of those and it's important to get know more about it. First of all the article have the purpose to show us the advantages of use it, because it will make our programs more compacts, but this have a price and with price I mean an effort. In contrast with tradicional programming that is also known as imperative programming is easier to test and helps to concurrent and parallel programming.
Functional Programming have as fundamental principle functions, these functions have to be pure functions, that means free from side effects.
An example of these is recursion, that replaces loops, personally I like recursion more than loops, because is a compact way to program and you don't need more variables. But I'm conscious that there are problems that it's better use loops. Sometimes I think that side effects are bad and we need to avoid them, but the article gave another point of view that if you want your program interact with the real life, you'll need side effects.
And finally we'll talk about concurrency and parallelism, the first one means the execution of several threads operating on the same data and the second the division of a computational task into multiple processes running in parallel. Both could be the future, even though concurrency have a problem on maintaining data in a coherent state.
In conclusion, these article helped me to complement the classes, because it's has so many concepts that help us to know how it works and it's advantages and a little bit of history. Although I keep learning from these, sometimes I don't get use to define variables, but I like the shorter the code is, making it more readable. So invite all, to use and test these language

miércoles, 24 de febrero de 2016

Triumph of the Nerds Part II

In these new chapter " Triumph of the Nerds Part II : Riding the bear" we are going to talk about the success the Microsoft and other companies like Apple. In personal, this was tough fight between companies so beyond the success, it was about money and power. Some interesting facts about the video is that CP/M was the first operating system created by Gary Kildall and the relation between IBM and Microsoft, that was an interesting history, because IBM didn't have the software just de pieces, believing that the computer industry was dominated by them.
The error that some companies commit is that didn't get that the heart of the personal computer was the software. It was the part that gave life to the computer. The hardware were the body and with the time this madre more sophisticated. Operated Systems are on cellphones or tablets not only on personal computers.
The title of this documentary "Riding the bear", after seeing it I traduce it as metaphor  that no matter how the rules are, you have to dominate them or in this case riding the bear, the bear are the obstacles that a company faces to succeed.
Nowadays, technology is growing up too fast, because practically these new generations they were born with it, so the computer industry demands people to innovate stuff for the next generations.  In conclusion, I think that the success of each company is the fact that the rules of the industry are in constant change, but sometimes we rely too much and we take for granted that no one could won us. So, from my point of view I recommend always be updated and aware of what is around us, I mean the competitors. If you had an idea you need to know how to develop it, even on the marketing sometimes is what stop companies to succeed.

domingo, 7 de febrero de 2016

Revenge of the Nerds

On this entry were are going to talk about the article Revenge of the Nerds by Paul Graham that talk about different languages and the advantages and disadvantages of each in a general way. According to Graham it's bad to think that all languages are equivalent because each are designed with an special purpose that makes our life easier, instead of using one single language for every project we develop. The experience I had along the career is learning different programming languages and getting use to it, because a the begging was only Java, that it's what I think the language we saw the most, then C and finally Lisp.
Personally, at the begging was difficult to get use to programming in Clojure, on this language you did not have to define the type of variables, I mean define int, string, all was implicit. But with the time, even it's confusing I like because it's compact, even the parentheses are still confusing. I know that there are a lot of languages I need to learn, but my objective is to know the strengths of each to know when to use it on a project.
So I agree with something, that not to marry with some language is like a preview entry calling Beating Averages,  that the key of their project was that the risk themselves using another language, that a few knew it.
It's good to know more about Lisp and it's advantage, because is a new language to me, and I have not explore it at all, so these article gave more information, about the pros of using it.
In conclusion, it's interesting having another point of view and perspective of LISP, I didn't new it was the base of some languages, but I agree that with it's characteristics like recursion and conditionals, make easier the life as a programmer.