Hey Tech Nerds - Here's a Question: Fundamental Layers of Abstraction

Поделиться
HTML-код
  • Опубликовано: 16 окт 2024

Комментарии • 14

  • @sl1msn1per
    @sl1msn1per 7 месяцев назад +4

    What is interesting to me is that we operate in a space now where we really have to think about and analyze what the layers are, compared to some of our predecessors who would have to work with ALL layers of the stack, and who would know intimately the different levels of abstraction. I think most developers now have wider expertise on the top layers as opposed to deep and thin expertise about how a computer and network work end-to-end.
    Perhaps it is more useful for building general software to have wider top-level knowledge, even though we miss out on insights gained from having deep knowledge.

  • @fuzzynine
    @fuzzynine 7 месяцев назад +6

    I personally would answer this question with the PBS Crash Course Computer Science. ^^
    But very nice video. Thanks again for such wonderful insights, Mr. B.

  • @kepper104
    @kepper104 7 месяцев назад

    Nice video! It was very fun to watch and intuitive to understand, thanks for making it!

  • @sodiboo
    @sodiboo 6 месяцев назад +4

    I disagree with the web being the top-level abstraction. For one, to be pedantic, the question was only about between the output on a monitor and the switches in the computer. The web isn't involved in that. But i don't disagree with *any* of your reasoning, i'd just give this layer a different name: Toolkits. This terminology is maybe more popular on Linux, but typically for a given graphical environment, which is part of your operating system, there is a Way That Apps Look. To make such apps, people don't draw individual pixels, they use a toolkit! And these toolkits are what abstract "a buffer of pixels for the monitor" into "widgets the user can interact with". Each platform typically has one native toolkit, except the fact that every major platform has several at this point. And some toolkits are cross-platform. HTML/CSS, which is part of The Web, is a toolkit. Not just web apps, but also electron. In this regard, to unify your point about "An abstraction over operating systems", i would also classify most standard libraries in most programming languages as part of an application's toolkit. It is, after all, an abstraction of the operating system (filesystems, syscalls, etc), just not of the UI like UI toolkits are. On that point, maybe toolkit is too broad/generic/preexisting of a term for this level? Maybe a different name would be better?
    A toolkit is the fundamental abstraction over an operating system, which makes your app work on many systems, and typically behave as the user expects without writing it multiple times. The web is the single toolkit that works in the most places.

  • @gfasterOS
    @gfasterOS 6 месяцев назад +1

    This was way better than my answer, but I would want to include the ISA as a fundamental abstraction. It's the layer that code turns into computation. I see this as different from hardware because most of the hardware abstraction as we care about it happens in the OS, but the OS is built on the ISA.

    • @sodiboo
      @sodiboo 6 месяцев назад +3

      I would say an ISA is type of structured data. While I think there are some important data structures to facilitate all abstraction we use today, the ISA being among the most important (just after like, maybe numbers?), it is not a *fundamentally* different abstraction from structured data. The role is important, but the idea isn't fundamentally unique. The word "fundamental" in the question plays a huge role.

  • @gooeyPhantasm
    @gooeyPhantasm 7 месяцев назад +1

    very insightful and interesting answer! thank you for sharing

  • @andytroo
    @andytroo 7 месяцев назад

    Are there not abstractions in the outbound direction also - your browser(rendering html(running javascript( running jasm (running dot net( running rockstar 2.0)))))) has decided to show 'I ran at time x' to the user, but that involves abstractions not described here?

    • @sodiboo
      @sodiboo 4 месяца назад

      These are not fundamental layers of abstraction. Yes, they are real abstractions, but not fundamentally different from each other.

  • @petergerdes1094
    @petergerdes1094 2 месяца назад +1

    Surely the right answer is none. Layers of abstraction exist in our heads not in the physical world. And in our heads the answer is ultimately description relative. You can add more by explaining it differently!

    • @petergerdes1094
      @petergerdes1094 2 месяца назад

      And even electrical voltages can be considered as abstractions over states in a a QM field theory. Ultimately it's our choice in giving a description of how many layers of abstraction are used.

  • @ggtgp
    @ggtgp 7 месяцев назад +9

    The answer is 42.

    • @pendarischneider
      @pendarischneider 7 месяцев назад +2

      But we know there was an abstraction failure in the software generating this answer... and, would you please pass me my towel. 😉

  • @mowinckel10
    @mowinckel10 6 месяцев назад +1

    Hmmmm I disagree.
    Often there are many layers of abstraction just in the code.
    Does that count? Yes. Also no. Also maybe.
    Abstractions are a way of thinking. A way of modeling. And how do we know if a model is good?
    By asking "for what?"
    When you ask how many layers of abstraction there is, without saying for what purpose, the answer is "As many as you want"