Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> this tabular programming environment isn't just about cramming programming capabilities into a Game Boy-like device. It's about rethinking programming from the ground up for a specific hardware context. (...)

> By rethinking how programming can work within tight hardware constraints, we might discover new approaches that actually enhance rather than limit creative expression.

This speaks to me. As a software engineer, I work with abstractions all day, and it is impossible for me to fully understand the system that I'm building. I often think I would be much happier if I worked on a product that I could actually understand from top to bottom and know all the details.



> This speaks to me. As a software engineer, I work with abstractions all day, and it is impossible for me to fully understand the system that I'm building. I often think I would be much happier if I worked on a product that I could actually understand from top to bottom and know all the details.

For a programmer, the “system” is in a sense incidental to the domain and language you’re programming in. It has relevance only insofar as practicality demands it (like an astronomer knowing how to operate a telescope). There is no intrinsic value to this knowledge as such. Anything ‘beneath’ your language is implementation detail whose purpose is to simulate your language, program, whatever. It has nothing to do with your language and does not explain the language; any appropriate system that can simulate it will do.


1) all abstractions leak. We use them anyway because they are helpful, but you have to be expert enough to know when they're leaking, and know what to do about it. This invariably requires understanding the system underneath the abstraction.

2) I disagree that there is "no intrinsic value" in this knowledge. Even in purely monetary terms, my salary is much higher because I like to look underneath the abstraction. I agree that in our modern software systems that it is not practical to understand everything, and it's usually most "cost efficient" to operate at/near the highest abstraction layer. But this does not bring me joy! and what "intrinsic value" is there besides happiness?


but it has a tremendous impact on performance. making it hard to ignore.


Hence the comparison with telescopes. But knowledge of a tool is not to be confused with the field itself. We are not programming computers per se. We are using computers to simulate formalisms that can be carried out by people, in our heads or on paper, largely because it is tedious, labor intensive, and would take us longer.

The intellectual distinction is essential and, sadly, one that many in the field seem not to understand. Many seem to subscribe to a kind of "computer atomism" which installs the physical device in the center as the really real with abstractions as epiphenomena or illusions; the real stuff, they claim, are the assembly - nay! - the bits - nay! - the atoms - nay! - ... No. Assembly, bits, atoms, these are all irrelevant and incidental as far as the language and the formalism we're using is concerned. They are details that concern the instrument, not the language, which stands on its own.


I agree with not placing the computer at the center. After all it's a tool.

But I struggle with the idea that we can ignore the technical details. After all, even the highest abstraction comes from the physicality of the universe.

But maybe you are saying that the limitations of a tool shouldn't forbid you from thinking at the higher language level.

Or maybe I am just not enlightened enough to understand your point, to which I can only apologize.


> actually understand from top to bottom and know all the details.

In practice, you’re always going to hand-wave away some level of abstraction, whether that’s at the JavaScript, C++, C, LLVM, native ISA, CPU microcode, logic gates, transistor, chemistry, or physics level.

https://xkcd.com/435/


One could make a hardware simulator and code in low level components. For some applications it would make things a lot easier, everything else would be hard. It seems fun to be able to build the physical app.


You (and GGP) might enjoy:

https://www.nand2tetris.org/





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: