4 ms·
I disagree with the idea that computer science has an inverted use of abstractions. Unfortunate naming aside, computer science is basically mathematics applied
by vacuity 1y ago
I disagree with the idea that computer science has an inverted use of abstractions. Unfortunate naming aside, computer science is basically mathematics applied to computation and data (still theoretical!) and software engineering (a good name, if only more people followed it) is applied computer science. Abstractions (models) must be the basis of the codebase. The JVM is an abstraction. Assembly is an abstraction. Threads are an abstraction. And so on. Of course, software engineering adds the complication of changing specifications and hence changing abstractions. Don't confuse poor abstractions for a reason to not have abstractions. Indeed, we have abstractions everywhere.
- bawolff 1y agoTo be clear, when i mean abstractions in computer programming, i mean things like classes and polymorphism; abstractions that are used to structure code bases. I think abstractions in CS (Turing machines, etc) or other building blocks in computer systems (OS interfaces,computer languages, etc) are a different story and much more similar to how abstractions are used in math.
- vacuity 1y agoI think abstractions for structuring code are just a different kind of CS-math abstraction. Particularly, a programming language is a heavyweight abstraction that provides the ability to create further abstractions. Good abstractions for structuring code have a lot to do with good abstractions elsewhere; the goals and scope are different, but the principles are the same.