Live data from Hacker News

Low level is easy (2008)

yosefk.com

1–10 of 103 posts

Re: Low level is easy (2008)

#2
I have known this for many years but found it difficult to explain to others. Backends are so much easier to build compared to frontends, and I mean decent and reliable ones. The attitude of the backend people of looking down upon frontend people is really stupid and unsubstantiated. Though scalable backends are increasingly getting their own layers of complexity these days, but still, on the backend you will never deal with frameworks with millions of entry points. If you don't believe me, UIKit alone exposes I think about half a million public symbols.

Nevertheless, I chose the path of the frontend (specifically mobile) because it fascinates me when a lot of people see on their screens something that you have built. A lot more than building a system that only the internal frontend devs are going to appreciate (or not).

Re: Low level is easy (2008)

#3
post #2

I have known this for many years but found it difficult to explain to others. Backends are so much easier to build compared to frontends, and I mean decent and reliable ones. The attitude of the backend people of looking down upon frontend people is really stupid and unsubstantiated. Though scalable backends are increasingly getting their own layers of complexity these days, but still, on the backend you will never d…

Something I've noticed is that when you're building a backend, your program only ever interfaces with other programs. You can establish a reasonably predictable protocol. But when you build a front-end, you're interfacing with the human brain and all the messiness that that entails. It's an incredibly difficult thing to do well.

Re: Low level is easy (2008)

#4
post #2

I have known this for many years but found it difficult to explain to others. Backends are so much easier to build compared to frontends, and I mean decent and reliable ones. The attitude of the backend people of looking down upon frontend people is really stupid and unsubstantiated. Though scalable backends are increasingly getting their own layers of complexity these days, but still, on the backend you will never d…

> Backends are so much easier to build compared to frontends, and I mean decent and reliable ones.

Evidence would suggest otherwise. I can build a decent and reliable frontend with a no code solution. That's not to say frontend is "easy", just that trying to say which is harder is ridiculous. They're different.

I personally don't like working on frontends because it feels like getting on a hamster wheel that spins faster than in any other domain. ymmv though.

Re: Low level is easy (2008)

#5
There was once a programmer who was attached to the court of the warlord of Wu. The warlord asked the programmer: "Which is easier to design: an accounting package or an operating system?"

"An operating system," replied the programmer.

The warlord uttered an exclamation of disbelief. "Surely an accounting package is trivial next to the complexity of an operating system," he said.

"Not so," said the programmer, "When designing an accounting package, the programmer operates as a mediator between people having different ideas: how it must operate, how its reports must appear, and how it must conform to the tax laws. By contrast, an operating system is not limited by outside appearances. When designing an operating system, the programmer seeks the simplest harmony between machine and ideas. This is why an operating system is easier to design."

The warlord of Wu nodded and smiled. "That is all good and well, but which is easier to debug?"

The programmer made no reply.

– The Tao of Programming, 3.3

Re: Low level is easy (2008)

#6
I used to be naive and think frontend was just pushing pixels around and messing with html. Now that I like to think I know better.

I think people generally perceive low-level/backend work as more objective, scientific, and rigorous.

Re: Low level is easy (2008)

#7
post #2

I have known this for many years but found it difficult to explain to others. Backends are so much easier to build compared to frontends, and I mean decent and reliable ones. The attitude of the backend people of looking down upon frontend people is really stupid and unsubstantiated. Though scalable backends are increasingly getting their own layers of complexity these days, but still, on the backend you will never d…

>If you don't believe me, UIKit alone exposes I think about half a million public symbols.

That's interesting, do you have a source for this?

For reference the Qt5 framework only has about 25k publicly documented functions and the shared libs expose ~100k symbols.

Re: Low level is easy (2008)

#8
post #7
post #2

I have known this for many years but found it difficult to explain to others. Backends are so much easier to build compared to frontends, and I mean decent and reliable ones. The attitude of the backend people of looking down upon frontend people is really stupid and unsubstantiated. Though scalable backends are increasingly getting their own layers of complexity these days, but still, on the backend you will never d…

>If you don't believe me, UIKit alone exposes I think about half a million public symbols. That's interesting, do you have a source for this? For reference the Qt5 framework only has about 25k publicly documented functions and the shared libs expose ~100k symbols.

I think that passes the smell test. They're at the same order of magnitude and UIKit includes a ton of optional functionality that is situationally used where Qt would likely pull in a 3rd party lib.

Re: Low level is easy (2008)

#9
post #5

There was once a programmer who was attached to the court of the warlord of Wu. The warlord asked the programmer: "Which is easier to design: an accounting package or an operating system?" "An operating system," replied the programmer. The warlord uttered an exclamation of disbelief. "Surely an accounting package is trivial next to the complexity of an operating system," he said. "Not so," said the programmer, "When…

>, an operating system is not limited by outside appearances. When designing an operating system, the programmer seeks the simplest harmony between machine and ideas. This is why an operating system is easier to design."

I think I understand the intuition behind that... in other words... coding an os kernel seems to have less entropy, less degrees-of-freedom, less subjectivity ... than frontend programming like painting GUI pixels and Javascript-framework-of-the-month.

But there's a lot of subjectivity and philosophical debates about low-level os design:

- the famous "Worse is Better" essay tries to explain difference between "New Jersey approach" (Bell Labs UNIX) vs MIT approach of error handling in a system routine [1]

- famous debate between Linus Torvalds and Andrew S. Tanenbaum about microkernels vs monolithic kernels [2]

- David Cutler (designer of VMS & Windows NT) criticizing UNIX i/o architecture[3]

- even lower level than o/s is cpu design where some criticize RISC-V not having arithmetic overflow traps in the minimum base specification. And in the 1990s, the RISC (MIPS philosophy) vs CISC (Intel philosophy) was a big debate.

[1] https://dreamsongs.com/RiseOfWorseIsBetter.html

[2] https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_deb...

[3] https://retrocomputing.stackexchange.com/questions/14150/how...

Re: Low level is easy (2008)

#10
Staying as far from business as possible while still keep a thin line of contact with it, IMHO is the best way to live a programmer's life. Even when programming low-level systems such as Operating System or Compilers one still keeps a thin line of though of real world business through communicating with your users.
Post reply on HN