Monday, August 14, 2017

Computer languages

It is valuable, especially for philosophers, to learn languages in order to learn to see things from a different point of view, to think differently.

This is usually promoted with respect to natural languages. But the goal of learning to think differently is also furthered by learning logical languages and computer languages. In regard to computer languages, it seems that what is particularly valuable is learning languages representing opposed paradigms: low-level vs. high-level, imperative vs. functional, procedural vs. object-oriented, data-code-separating vs. not, etc. These make for differences in how one sees things that are if anything greater than the differences in how one sees things across natural human languages.

To be honest, though, I’ve only ever tried to learn one language expressly for the above purpose, and I didn’t persevere: it was Haskell, which I wanted to learn as an example of functional programming. I ended up, however, learning OpenSCAD which is a special-purpose functional language for describing 3D solids, though I didn’t do that to change how I think, but simply to make stuff my 3D printer can print. Still, I guess, I learned a bit about functional programming.

My next computer language task will probably be to learn a bit of Verilog and/or VHDL, which should be fun. I don’t know whether it will lead to thinking differently, but it might, in that thinking of an algorithm as something that is implemented in often concurrent digital logic rather than in a series of sequential instructions might lead to a shift in how I think at least about algorithms. I’ve ordered a cheap Cyclone II FPGA from AliExpress ($17 including the USB Blaster for programming it) to use with the code, which should make the fun even greater.

All that said, I don’t know that I can identify any specific philosophical insights I had as a result of knowing computer languages. Maybe it’s a subtler shift in how I think. Or maybe the goal of thinking philosophically differently just isn’t furthered in these ways. But it’s fun to learn computer languages anyway.

5 comments:

Russell Jones said...

I think this is a great idea. Computer languages allow you to convert one's thoughts to a logical structure. It is quite fascinating to find errors in your thinking because, once translated to code, you see results that are aberrant.

sacha said...

I too adopted the same approach to broaden my linguistic capabilities. As well as the many languages I speak, Logic and Python have allowed me to gain a completely different window of understanding into the indefinitely many functions of language.

Example; the distinction between the "mathematical branch" and "social branch" of language is not clear cut. In logic, the "simpler" language, seems to be extensional into our more "complex" in the sense that it is complete with the context. And from Python, as well as the obvious exciting time for the field of linguistics in different uses of language (Example; programming language theory), there is the fun thought in natural language processing. Using a "means to an ends" sort of language, you are teaching a machine to reproduce and analyse a social, end in itself language.

Nagy Zsolt said...
This comment has been removed by a blog administrator.
Nagy Zsolt said...
This comment has been removed by a blog administrator.
Alexander R Pruss said...

Off-topic comments deleted. If such posting continues, the user will be banned and have all their recent comments deleted.