Live data from Hacker News

What Is Code? (2015)

bloomberg.com

51–54 of 54 posts

Re: What Is Code? (2015)

#51

Earlier quoted context omitted.

Data are instructions for the computer interpreted in the context of a program. Or no program in the case of instructions which can be interpreted directly by the computer. That is, data are programs, programs are data. Just need to establish the environment in which to execute/process them.

Right, except what got me thinking is that "programs" can be conceptually seen as a sequence of "instructions" to the computer. Whereas it is more difficult to think of data as "instructions". Data is more like a model of the world, than a set of "instructions".

It is, but it also influences how the software and hardware actually execute, making it a kind of program. Essentially every program that accepts any kind of data is really operating as a virtual machine, a software specified computer. It interprets the data and performs actions conditioned on that input.

mp3 files are instructions to an audio producing "computer", mp4 to an audio/video "computer". Whether it's a software description of the machine or a hardware implementation. Zip files are data, but when run through a decompression program they determine what gets decompressed (the program determines how) making them instructions for the decompression computer. The text of a text file opened in an editor providing rendering instructions. TCP packets are data, but they influence the TCP state machine, which is an explicit rendering of the idea that the software (sometimes hardware in this case) is describing a computer and the data (packets) represent instructions that effect the state of that computer.

However, this interpretation is usually not explicit so the manner of these virtual machines is ad hoc and ill-specified (if at all).

Re: What Is Code? (2015)

#52
post #22
post #18

Earlier quoted context omitted.

> But what is "data"? It's a sequence of bits. You take reality (or whatever you want) and represent it as bits. That sequence of bits is called "data".

In the computer science world yes. But the word also exists outside of that context (and did so long before computers). Data is the plural of datum. A datum is a piece of information. Of course not any piece information is automatically a datum, as that noun implies a certain structured nature or a normative perspective on that piece of information. Certain information only became commonplace because it became a datu…

OP's question seems to be in the context of computers, not the semantics of the word "data" in the broader anthropological and socio-cultural context.

Re: What Is Code? (2015)

#53
post #34

Earlier quoted context omitted.

Data is information about things and code is information about how to transform data. Every program transforms input data to output data. Code is interpreted by the computer. Data and code are encoded to bits for the digital computer.

That sounds enlightening to me. Code is interpreted by the computer, Data is interpreted by Code !!! But when we say "code is interpreted by computer" we are really saying "Code is interpreted by Code" right? Meaning the interpreter or compiler. So how come this snake doesn't eat its own tail? The answer, the MAGIC of computers, is that at the lowest level somehow Hardware is able to interpret Code .

My answer tried to be as generic as possible and leave out the "real world" and implementation details in general. There are fundamental limitations to what you can express in four sentences...

Compilation is "just" an intermediate step between code and using it in an interpreter. The interpreter can be pure hardware, mix of hardware and software, or you can do it on paper yourself (given time). These are implementation "details". Also, to me code is not a synomym with software, since I'm not referring to programmability, only to the transformation aspect. Programmability is an implementation detail. You may perform a transformation with hardware only, as mentioned above. The hardware itself could be described with code, e.g. in Verilog language. Manufacturing a silicon chip based on Verilog code is also an implementation detail.

In fact your CPU/PC is hardware and it is making transformation from input data to output data. In this case, besides the other input data, like keyboard input and files on disk, you may consider the binary code as part of the input data. This is where the confusion starts to happen. This is an implementation detail and should not be confused with the general notion of utility we want to have. Code is "only" the means to an end. We want to do stuff with the machine. We want to transform input data to output data, since that is essentially what we are after. For the goal of getting stuff done, data and code are separate things.

When saying "data is interpreted by code", it is partially correct. First of all data carries meaning, as in meaning for people (the data user). Data is encoded to some format (which is also data, but implementation data) and you could say that this encoding is "interpreted". However, the encoding is "just" an implementation detail which depends on the machine you are trying to use for the transformation. When the computer paints pixels on your monitor, it transfers data bits through display driver, through HDMI protocol (for example), to monitor itself. There are plenty of "interpreters" on that path. On the screen the pixels could represent the letter "A" and that could carry meaning for you (depending on the other stuff on the screen). This is why I stated that data is information about things. Encoded data is an implementation detail and varies between implementations, but the "true" data is essential and implementation independent. It carries meaning and utility value. Essential data is not interpreted by code. The user (a person) interpretes the essential data.

Code is data for the compiler. The compiler transforms source code (input data) to object code (output data). Code is data also for the interpreter. Algorithm contains all the essential information about the data transformations to be performed, and code in form of programming language text, is an implementation of that algorithm in the specific programming language. Algorithm is programming language independent. It's fair to say that by code I mean the algorithm. But also an algorithm must be presented in some form or another, so its code. :)

Re: What Is Code? (2015)

#54
post #45
post #38

Earlier quoted context omitted.

> "They get some token attention but they're always subservient to business values" Hard disagree. CS education doesn't have business at its core, but science . It's all about systems design, theory, formal verification, requirements gathering, math, logic, etc. It's neither about (primarily) business nor coding concerns. You probably don't need CS for those.

Computer science is not a science. Computer science typically bounces between mathematics and engineering, with some unique aspects of its own. But it definitely isn't a science, which typically needs a loop of hypothesis, observations, and theory.

> Computer science is not a science

That's a narrower argument that the one I wanted to make, which was that CS is not programming; it's theory/research/practice more like the traditional sciences.

Whether it's a science or not is not as clear-cut as you claim [1]. There is argument about this, like about many things claiming to be "science". Here's a relevant quote from Wikipedia, attributed to Newell and Simon:

> "Computer science is an empirical discipline. We would have called it an experimental science, but like astronomy, economics, and geology, some of its unique forms of observation and experience do not fit a narrow stereotype of the experimental method. Nonetheless, they are experiments. Each new machine that is built is an experiment. Actually constructing the machine poses a question to nature; and we listen for the answer by observing the machine in operation and analyzing it by all analytical and measurement means available."

This does seem to leave out the more "mathy" part of CS, which isn't about building machines at all. For the record, I think CS is science.

[1] https://en.wikipedia.org/wiki/Computer_science

Post reply on HN