How timely. I was reading the Unicode Standard the other day, and realized how this seemingly simple project of "modelling a character with a number" has become a huge, sprawling behemoth over years because they tried to cover every aspect of human language; I'm sure it's going to be even more convoluted and politicized in future, and it will never be complete. And this brings me two sides of the argument: should sof…
Wait, are there really people who think humans should change their lives to fit a software framework?
Software Is Hard (2007)
41–50 of 54 posts
Re: Software Is Hard (2007)
#42Earlier quoted context omitted.
> In the choice between simple (and cheap and correct) vs complex (and expensive and buggy) Often simple is not correct. In much of the code I have worked on there is simple code for 99% of cases, but correctly handling the other 1% can be much more complex. Also, simple is often not fast. An implementation of bubble, insertion, or selection sort is almost always simpler than quicksort, mergesort or especially heapso…
> Web browsers are a really good example that some software needs to be complex to do its job. Web pages can do pretty much anything so web browsers have to support that which requires a bunch of code off the bat. The point is that web pages don't inherently need to do "pretty much anything." The web could have been simple and browsers could be simple. Stakeholders decided that no, we want more and more and more and…
I did kindof address that in my final sentence. But there is a fair amount of inherent complexity in what I would want from a replacement for the web.
The web interface for Github should still be possible. Doing that would require a graphical layout engine (eg something like css), some way to manage authentication, and some way of submitting user data from a form. None of those require a turing-complete language, so I would perhaps be in favor of not having a JS equivalent, which would dramatically simplify the task of a browser, but there is still a lot of complexity there.
> And when you say simple is not correct, it is often because someone wants something complicated instead of acknowledging that simple, in fact, does all they really need.
The easiest case to say the simple is not enough is with encryption. I am not aware of any simple encryption algorithm. If you want to achieve, communication that others cannot eavesdrop in, simple is not enough.
Numerical stability in all sorts of applications is important and it is hard to achieve. Projecting the real number line into finite bits is hard to do in a consistent way.
You didn't contest my simple vs fast claim, but a good example of that is pathfinding algorithms. Dijkstra's algorithm is simple (relatively), but for many video games, a more advanced algorithm like hierarchical A* search or jump point search is needed.
Re: Software Is Hard (2007)
#43Earlier quoted context omitted.
Yes. It will happen whether it’s desireable or not. For example, I think it’s inevitable that the US will use an ISO date format eventually, and further down the line I think many Asian scripts will be replaced with western etc.
> I think it’s inevitable that the US will use an ISO date format eventually About half the programmers I know (including myself) already write dates as 2019-10-27 even when using a pen, it really is a more convenient format.
Re: Software Is Hard (2007)
#44The way I have thought about software's necessary complexity for a long time is by considering what software IS. Software, no matter what it does or how it is written, boils down to instructions and data that operate on transistor gates in a computers processor and memory. We must write code which orchestrates the flipping of millions or billions of switches, millions or billions of times a second, in exact perfect s…
Re: Software Is Hard (2007)
#45Earlier quoted context omitted.
Unicode was invented to avoid the kind of thing you are suggesting, and that's why it is popular. ASCII doesn't even cover all of the characters and symbols that are normally used by English speakers.
> ASCII doesn't even cover all of the characters and symbols that are normally used by English speakers. Such as?
Re: Software Is Hard (2007)
#46Earlier quoted context omitted.
> Web browsers are a really good example that some software needs to be complex to do its job. Web pages can do pretty much anything so web browsers have to support that which requires a bunch of code off the bat. The point is that web pages don't inherently need to do "pretty much anything." The web could have been simple and browsers could be simple. Stakeholders decided that no, we want more and more and more and…
> The point is that web pages don't inherently need to do "pretty much anything." The web could have been simple and browsers could be simple. Stakeholders decided that no, we want more and more and more and even more features. I did kindof address that in my final sentence. But there is a fair amount of inherent complexity in what I would want from a replacement for the web. The web interface for Github should still…
I disagree very much. Most crypto is very simple to use as well as implement. From DES to Chacha20, you can fit an implementation on a business card or two.
> Numerical stability in all sorts of applications is important and it is hard to achieve.
Counterpoint: I hardly ever need to worry about numerical stability, and most of the time I can just throw more bits at it.
> You didn't contest my simple vs fast claim, but a good example of that is pathfinding algorithms. Dijkstra's algorithm is simple (relatively), but for many video games, a more advanced algorithm like hierarchical A* search or jump point search is needed.
I wish the problem of complex software were just algorithms. Because most algorithms are easy to abstract in a box with loose coupling, and even the more complex algorithms usually boil down to some dozens of lines of code.
No, the millions of lines of code in big bloated applications are not made up of that.
Re: Software Is Hard (2007)
#47Earlier quoted context omitted.
> ASCII doesn't even cover all of the characters and symbols that are normally used by English speakers. Such as?
Emojis.
Re: Software Is Hard (2007)
#48> once Epic's written Unreal, they never have to create a first-person shooter engine again. Instead, they just need to keep adding new features. Day 1 may need to write a first-person shooter engine, but only because we've never done that before. This is why programmers always want to rewrite everything. Most shipping software is the equivalent of a novelist's first draft. ...and Unreal had been licensing their firs…
OTOH FPS mechanics like running, jumping, shooting are the core of the game and get re-implemented differently each time. Game engines don't really have much interaction implemented, and the physics they provide still has a lot of bugs, so behaviors end up with custom code most of the time.
Assets are kind of hit or miss as to whether they're reusable, and usually need some tweaking if they are reused.
Overall I'd say the reason games have moved to 3D is because of hardware support and better gameplay mechanics, rather than code reuse. Untitled Goose could have been an isometric tile game made in RPG Maker or whatever but they would have had to spend more effort on graphics and the physics glitches wouldn't be as funny.
Apparently Minecraft is still the top-selling game in the world; the code there was written completely from scratch.
I wonder if it's really software that's hard though, or that life in general is hard and software failures are just more visible.
Re: Software Is Hard (2007)
#49Earlier quoted context omitted.
> In the choice between simple (and cheap and correct) vs complex (and expensive and buggy) Often simple is not correct. In much of the code I have worked on there is simple code for 99% of cases, but correctly handling the other 1% can be much more complex. Also, simple is often not fast. An implementation of bubble, insertion, or selection sort is almost always simpler than quicksort, mergesort or especially heapso…
> Web browsers are a really good example that some software needs to be complex to do its job. Web pages can do pretty much anything so web browsers have to support that which requires a bunch of code off the bat. The point is that web pages don't inherently need to do "pretty much anything." The web could have been simple and browsers could be simple. Stakeholders decided that no, we want more and more and more and…
Similarly, I can tell you that dealing with ill formatted feed data, parsing any given value can be trivial, until you find some random example of data that abuses some seperator. Then suddenly you need to do thing like try seperating on X and see if you get data that looks right, else seperate on Y. Oh, and include some data (if it exists) from a prior seperation based on Z. I feel bad for anyone who has to modify my code. Hopefully they won’t ignore the unit tests that include all the gnarly cases...
Re: Software Is Hard (2007)
#50Earlier quoted context omitted.
You believe strongly in this. Why didn’t you use a larger font size to ensure everyone sees your message?
I was able to increase the font size of the whole page in two taps in mobile Safari.
People adapt their behavior to their communication media instinctively and continually, and are as routinely deliberately controlled thereby.