otras 16 hours ago

I frequently find myself coming back to this quote from the first lecture:

And that is that computer science, in some sense, isn't real. You see, when an engineer is designing a physical system, that's made out of real parts. The engineers who worry about that have to address problems of tolerance and approximation and noise in the system. So for example, as an electrical engineer, I can go off and easily build a one-stage amplifier or a two-stage amplifier, and I can imagine cascading a lot of them to build a million-stage amplifier. But it's ridiculous to build such a thing, because long before the millionth stage, the thermal noise in those components way at the beginning is going to get amplified and make the whole thing meaningless.

Computer science deals with idealized components. We know as much as we want about these little program and data pieces that we're fitting things together. We don't have to worry about tolerance. And that means that, in building a large program, there's not all that much difference between what I can build and what I can imagine, because the parts are these abstract entities that I know as much as I want.

I know about them as precisely as I'd like. So as opposed to other kinds of engineering, where the constraints on what you can build are the constraints of physical systems, the constraints of physics and noise and approximation, the constraints imposed in building large software systems are the limitations of our own minds.

  • slwvx 15 hours ago

    > ...the constraints imposed in building large software systems are the limitations of our own minds.

    There are always constraints and limitations, including those to build and provide energy for software, and also the societal impacts. I guess the designer of Bitcoin and of current AI datacenters ignored constraints in the way described in the quote and the world is now paying the price in higher carbon emissions and energy prices

  • stuxnet79 10 hours ago

    I love this quote too. But it had the opposite effect on me when I first heard it. More than anything it reinforced how much software engineering was a joke of a discipline.

    Perhaps my views are an artifact of 2010s ZIRP era software culture. Cheap money poisoned the well and incentivized 'artisans' to build Rube Goldberg-esque towers of abstractions without a care for their cost impact or conceptual integrity.

    Possibility of death as a result of negligence, CapEx and actual physics are an amazing forcing function for a group of professionals to take themselves and their work seriously.

    Software engineering as a discipline will need to go through an upheaval before it can join the big boy club.

    AI seems to be making the problem worse. Now just about anybody with Internet access and a credit card can use Claude to add to the pile of questionable code that runs the global economy.

    • whateveracct 10 hours ago

      if there was a market for crappy bridges that collapse, "real" engineering standards would be lower

      idk maybe it's because all my software in my career has been about "real stuff" (and i write Haskell), but this "software engineering is a joke" take has been going on since before I can remember and it doesn't speak for me. Maybe I just do a good job.

      Software is just fundamentally different. But one nice thing (and why I bailed on "real" engineering) is how portable the skills are. I can easily use my skills to benefit myself in so many small and big ways. I couldn't do much with, say, chemical engineering hahah.

      I agree that AI is accelerating all the worst of the worst garbage practices.

watersb 13 hours ago

A few years ago, I had a summer project, building a desk for myself.

The desk part was a ludicrous fail, but I did listen to these SICP lectures, as an audio podcast, about four times.

Sending them mentioned here reminds me that I was going to clean up the audio... maybe someone will get to it before I do.