Difference between revisions of "New software crisis"
m (→Main problems) |
m |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{Stub}} | {{Stub}} | ||
+ | Up: '''[[Software trouble pages]]''' | ||
{{wikitodo|Discuss this}} | {{wikitodo|Discuss this}} | ||
Line 6: | Line 7: | ||
'''Accelerating bit-rot''' from: | '''Accelerating bit-rot''' from: | ||
− | * | + | * dependency hell |
− | * | + | * incidental complexity |
− | * | + | * plumbing across gaps |
− | * | + | * bad abstractions |
'''Incidental complexity''' growing acceleratingly all the way to the point <br> | '''Incidental complexity''' growing acceleratingly all the way to the point <br> | ||
− | where a rewrite from scratch is the only option. | + | where a rewrite from scratch is the only option. Just another form of bit-rot. |
'''Plumbing:''' Lack of good abstractions over barriers in underlying hardware (including network barriers). <br> | '''Plumbing:''' Lack of good abstractions over barriers in underlying hardware (including network barriers). <br> | ||
Line 23: | Line 24: | ||
Also there is a lack of languages that are conducive for <br> | Also there is a lack of languages that are conducive for <br> | ||
tools to easily trace across levels of abstraction. | tools to easily trace across levels of abstraction. | ||
+ | |||
+ | See also: '''[[The problem with current day programming and its causes]]''' <br> | ||
+ | Covers not just the technical side. | ||
== Main cures == | == Main cures == | ||
Line 28: | Line 32: | ||
* provably guaranteed purity of code (purely functional languages aka denotative languages) | * provably guaranteed purity of code (purely functional languages aka denotative languages) | ||
* super fine grained content addressed (fine grained per function / closure) | * super fine grained content addressed (fine grained per function / closure) | ||
+ | |||
+ | == Incidental complexity vs accidental complexity == | ||
+ | |||
+ | '''Incidental complexity is not the same as accidental complexity!''' <br> | ||
+ | Incidental complexity is unnecessary but still may be partially fully intentional introduced. <br> | ||
+ | The lack of necessity of incidental complexity of the complexity may fall anywhere on the spectrum knowledge quadrant spectrum. <br> | ||
+ | |||
+ | '''Accidents:''' | ||
+ | * unknown unknowns – Not influencable fate. | ||
+ | * unknown knowns – Oops, I actually totally would have known that this decision is bad if I would have been more vigilant. | ||
+ | '''Conscious decisions:''' | ||
+ | * known unknowns – This could be bad but it's hard to think about, so lets juts hope for the best. | ||
+ | * known knowns – Very consciously doing bad ugly horrible hacks. | ||
== Related == | == Related == | ||
Line 37: | Line 54: | ||
== External links == | == External links == | ||
+ | |||
+ | '''Incidental complexity is not the same as accidental complexity!''' <br> | ||
+ | See: https://coder-mike.com/blog/2021/09/24/incidental-vs-accidental-complexity/ <br> | ||
+ | |||
+ | === Old crisis === | ||
[https://en.wikipedia.org/wiki/Software_crisis Software crisis] ... <br> | [https://en.wikipedia.org/wiki/Software_crisis Software crisis] ... <br> | ||
− | The | + | The Wikipedia article is mainly about the "old fist crisis" it seems. <br> |
A lot of new severe large scale problems/challenges have arisen since then. | A lot of new severe large scale problems/challenges have arisen since then. | ||
+ | |||
+ | [[Category:Programming]] | ||
+ | [[Category:Software]] |
Latest revision as of 09:32, 5 May 2024
(wiki-TODO: Discuss this)
Contents
Main problems
Accelerating bit-rot from:
- dependency hell
- incidental complexity
- plumbing across gaps
- bad abstractions
Incidental complexity growing acceleratingly all the way to the point
where a rewrite from scratch is the only option. Just another form of bit-rot.
Plumbing: Lack of good abstractions over barriers in underlying hardware (including network barriers).
Bridging via plaintext without hard structural guarantees.
See Gaps in software.
Bad abstractions: The saying goes:
Ever problem in computer science can be solved with yet another layer of abstraction.
Except the problem of too many layers of abstraction.
Also there is a lack of languages that are conducive for
tools to easily trace across levels of abstraction.
See also: The problem with current day programming and its causes
Covers not just the technical side.
Main cures
- provably guaranteed purity of code (purely functional languages aka denotative languages)
- super fine grained content addressed (fine grained per function / closure)
Incidental complexity vs accidental complexity
Incidental complexity is not the same as accidental complexity!
Incidental complexity is unnecessary but still may be partially fully intentional introduced.
The lack of necessity of incidental complexity of the complexity may fall anywhere on the spectrum knowledge quadrant spectrum.
Accidents:
- unknown unknowns – Not influencable fate.
- unknown knowns – Oops, I actually totally would have known that this decision is bad if I would have been more vigilant.
Conscious decisions:
- known unknowns – This could be bad but it's hard to think about, so lets juts hope for the best.
- known knowns – Very consciously doing bad ugly horrible hacks.
Related
- Gaps in software
- The problem with current day programming and its causes
- General software issues
- Software
External links
Incidental complexity is not the same as accidental complexity!
See: https://coder-mike.com/blog/2021/09/24/incidental-vs-accidental-complexity/
Old crisis
Software crisis ...
The Wikipedia article is mainly about the "old fist crisis" it seems.
A lot of new severe large scale problems/challenges have arisen since then.