Saturday, February 29, 2020

A New Paradigm

Konrad Hinsen’s The Promises of Functional Programming reinforces some of the concepts of functional programming we have been seeing in class, but it also reinforces some other ones. For example, from class I understood that a function always produces the same output when given a certain input. However, I failed to understand why that didn’t happen with imperative programming languages, as I was only thinking of functions in the mathematical sense. Now it’s clear to me that some of the things we call functions in the languages I’m comfortable with are everything but. 

I also found it interesting that although the reading’s sample codes are done in Clojure, it’s not mentioned as a popular language, and it’s mentioned how most functional languages are only used in investigation settings. Ten years ago may not seem like a lot of time, but it’s clear from this article that a lot can happen in that time; at least enough for Clojure to become such a popular programming language, not only when it comes to science, but also in application and data management situations. 

I don’t feel like I know enough yet to make an informed opinion on the advantages of functional programming, everything I have read so far points to it being better than imperative languages when it comes to parallelism. Assuming this is still the case, I’m excited to be learning a new paradigm and I’m looking forward to what possibilities this new way of thinking can open up. This is especially interesting to me because when I started programming, I found that changing my way of thinking in order to program correctly made me think differently in other areas of life, and helped me out a lot when it comes to problem-solving, and I’m hoping that functional programming can have a similar effect on me. 


Sources:
Hinsen, K. (2009) The Promises of Functional Programming

Saturday, February 22, 2020

The One True King Language


The Semicolon Wars by Brian Hayes talks about the surge of programming languages since the first one was invented, and how the community is constantly evolving and trying to find the be-all and end-all programming language. While I understand the notion of how having a standardized programming language would be useful, I think the system we have now is better, and I don’t see a single language making a difference in how we understand programming.

For one, we currently have multiple programming paradigms, which are each more useful than others depending on what we’re trying to achieve. If we only used one programming language, it would have to encompass each and every one of these paradigms, and it would get very complex, very fast. This would make it very difficult to know everything about the language, and most people would focus on only some parts of it, which isn’t too different to having multiple languages to choose from.

Secondly, the article makes a very good point comparing programming and human languages, and it mentions that humans think differently depending on what language they speak. As mentioned in the article, this also applies to paradigms, and I would assume that it applies to programming languages as well to some extent.

By having so many choices, it’s also easier for people with different mindsets to get into programming easily. Having only one language would limit the amount of people that go into the field, and I think that would overall cause more harm than the good a single language could give us.

On a more personal note, I enjoy learning new languages and tinkering with the quirks of each one. I know that as time passes and more languages are created, we will probably get closer to one that will be able to do anything we tell it to. And if that day comes, I will most likely use it. However, in the meantime, I will continue to experiment with anything I can get my hands on, and I will be very happy while I do it.


Source:
Hayes, Brian. The Semicolon Wars (2006)

Tuesday, February 11, 2020

Getting Started

Hello, my name is Joaquin and I'm currently on my sixth semester of my Computer Science undergraduate degree as ITESM.

When I signed up for Programming Languages, I did not know what I was getting into, although I had heard some comments about it being a difficult course. While it's too early for me to confirm or deny that claim, I feel confident that with enough time, I'll be able to grasp the concepts and should be able to do well. So far, I really enjoyed yesterday's class and Clojure seems like a breath of fresh air, especially considering I haven't learned a new language in some time, so I'm excited to be doing it again.

During my free time, I enjoy playing tennis and playing video games, especially those with a competitive nature. My go-to game for a long time (around 7 years) was League of Legends, but I've been having trouble finding time for it since matches take too long. Recently, I've gotten into Hearthstone which is much easier to play in short bursts and fit into my schedule. I also enjoy watching movies and I like reading quite a lot, and have recently gotten into audiobooks as well due to my long work commute.

The last series I've watched to completion is Mr. Robot, and I highly recommend it to anyone who hasn't watched it (it's also a good idea to rewatch it once you've seen how it ends, as you pick up on a lot of things that are easy to miss the first time through).
Also recently, besides rushing to watch most Oscar-nominated movies before last Sunday, I also took some time to rewatch some older classics, such as Monty Python and the Holy Grail and the original Blade Runner. 
As for reading, I've recently started re-reading through one of my all-time favorite series: His Dark Materials by Philip Pullman. I am currently on the third and final book, The Amber Spyglass, and after finishing it, I plan to start watching HBO's new adaptation of the series, which recently finished airing its first season.