flat assembler
Message board for the users of flat assembler.
 Home   FAQ   Search   Register 
 Profile   Log in to check your private messages   Log in 
flat assembler > Heap > Why Software Sucks?

Goto page 1, 2  Next
Author
Thread Post new topic Reply to topic
yeohhs



Joined: 19 Jan 2004
Posts: 168
Location: N 5.43564° E 100.3091°

Why Software Sucks?

http://scottberkun.com/essays/46-why-software-sucks/
(first published in 2005)

What do you think of the present situation (2018)? Are software nowadays suckier or suck more than ever? Laughing

_________________
“It’s not that we have a short time to live, but that we waste a lot of it.”
-Lucius Annaeus Seneca
Post 11 Apr 2018, 06:37
View user's profile Send private message Visit poster's website Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 15808
Location: Misner space

Hehe, all we need to do is eliminate the users and then the software will be perfect.
Post 11 Apr 2018, 07:00
View user's profile Send private message Visit poster's website Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 15808
Location: Misner space

Post 11 Apr 2018, 08:42
View user's profile Send private message Visit poster's website Reply with quote
yeohhs



Joined: 19 Jan 2004
Posts: 168
Location: N 5.43564° E 100.3091°


_________________
“It’s not that we have a short time to live, but that we waste a lot of it.”
-Lucius Annaeus Seneca
Post 11 Apr 2018, 09:00
View user's profile Send private message Visit poster's website Reply with quote
yeohhs



Joined: 19 Jan 2004
Posts: 168
Location: N 5.43564° E 100.3091°


revolution wrote:
Hehe, all we need to do is eliminate the users and then the software will be perfect.



Very Happy That's a great idea. I thought of a variation: all we have to do is eliminate all user inputs, other than starting and terminating it. What kind of software can we create then? Very Happy

_________________
“It’s not that we have a short time to live, but that we waste a lot of it.”
-Lucius Annaeus Seneca
Post 11 Apr 2018, 09:08
View user's profile Send private message Visit poster's website Reply with quote
yeohhs



Joined: 19 Jan 2004
Posts: 168
Location: N 5.43564° E 100.3091°

Since I've too much free time today, I googled Computer Art. Laughing


Quote:

Computer art is any art in which computers play a role in production or display of the artwork. Such art can be an image, sound, animation, video, CD-ROM, DVD-ROM, video game, website, algorithm, performance or gallery installation.



Very Happy Interesting area to explore.

_________________
“It’s not that we have a short time to live, but that we waste a lot of it.”
-Lucius Annaeus Seneca
Post 11 Apr 2018, 09:23
View user's profile Send private message Visit poster's website Reply with quote
Furs



Joined: 04 Mar 2016
Posts: 1157


revolution wrote:
Hehe, all we need to do is eliminate the users and then the software will be perfect.

On the contrary we need to eliminate 99% of the devs (if not more).

Software development has been made way too accessible to incompetent retards who can't even follow control flow properly but still manage to make a klutch that "seems to work" in a very forgiving language. Obviously it's the fault of those forgiving or "managed" languages to begin with, if they didn't exist, then software development would be an advanced skill again. Imagine if only asm existed, how many programmers would there be left? At least you can be certain in such a case, at least 50% of the software would be competent.

Everyone thinks knowing a crappy "easy" language makes them a programmer and wants to write his own shit. These people really ought to look for a different goal in life, if they can't even understand pointers properly. Since these people are the majority by far, it so follows that the overwhelming majority of software is garbage quality.

Not only that, there's too much redundant software -- software that does absolutely nothing new or better than another, yet it's still used because there's just too many idiot programmers writing that shit. In some cases you aren't even aware of the superior, true quality software, because it's drowned in a sea of endless junk produced by incompetents. It's hard to find the diamond in the rough these days, unless the software is popular enough.

All of this is because too many crappy developers/programmers use those "easy" languages and infest the software ecosystem with their garbage.
Post 11 Apr 2018, 12:34
View user's profile Send private message Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 15808
Location: Misner space

I think the problem there is that everyone has to start somewhere. You can't expect people to immediately start programming like an experienced expert. At least give people a chance to improve before you burn them at the stake.
Post 12 Apr 2018, 04:13
View user's profile Send private message Visit poster's website Reply with quote
sleepsleep



Joined: 05 Oct 2006
Posts: 7253
Location: ˛                              ⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣ Posts: 6699

the article excellently describing the whole situation, thumbs up,
http://scottberkun.com/essays/46-why-software-sucks/
Post 12 Apr 2018, 10:25
View user's profile Send private message Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 15808
Location: Misner space


sleepsleep wrote:
the article excellently describing the whole situation, thumbs up,
http://scottberkun.com/essays/46-why-software-sucks/

Same link as the OP.
Post 12 Apr 2018, 11:42
View user's profile Send private message Visit poster's website Reply with quote
sleepsleep



Joined: 05 Oct 2006
Posts: 7253
Location: ˛                              ⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣ Posts: 6699

yah, i supposed to quote it, but kinda forget, sorry,
Post 12 Apr 2018, 16:10
View user's profile Send private message Reply with quote
Furs



Joined: 04 Mar 2016
Posts: 1157


revolution wrote:
I think the problem there is that everyone has to start somewhere. You can't expect people to immediately start programming like an experienced expert. At least give people a chance to improve before you burn them at the stake.

I'm not talking about people who are learning the basics. I'm talking about people who think their skills are perfectly adequate because they teach this habit on others of writing shit code.

They tell others that learning how pointers work is a waste of time, which means they are not in learning process, but instead they think they are very skilled "programmers" not even having the slightest clue how to implement a linked list with pointers!

What they should do is learn how to be a real programmer and understand real computer programming concepts, not be sheltered by a managed language, so that their code will improve in quality. But no, they're content with crap code, "cause it works" (even with clutches or bloat or slowdowns or random crashes or whatever), and then wonder why software sucks.

Well it's because they pollute the ecosystem with their junk and drown the software that doesn't suck completely, since they're the stupid majority.
Post 12 Apr 2018, 19:11
View user's profile Send private message Reply with quote
sleepsleep



Joined: 05 Oct 2006
Posts: 7253
Location: ˛                              ⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣ Posts: 6699

why logic is not portable?

i define writing code as implementing logic,

can someone show me a portable logic, to reverse string, sorting array,?
Post 12 Apr 2018, 20:12
View user's profile Send private message Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2279
Location: Usono (aka, USA)


Furs wrote:
I'm not talking about people who are learning the basics. I'm talking about people who think their skills are perfectly adequate because they teach this habit on others of writing shit code.



Some people have different goals and styles. It's impossible to support every paradigm at the same time. Some focuses are more on speed or portability or language dialect idiosyncracies. You can't do everything at once.


Furs wrote:

They tell others that learning how pointers work is a waste of time, which means they are not in learning process, but instead they think they are very skilled "programmers" not even having the slightest clue how to implement a linked list with pointers!



One guy (Seed7) says pointers are the gotos of data structures. It's certainly error-prone. It's somewhat easier to rely on library or class for linked list rather than doing it all manually. Same with gotos, overall shunned but still good in a pinch. Some languages don't even have goto at all (Java, Modula-2, Oberon) or very limited to within a single procedure (not global).

Pointers usually means addresses. (Yes, C overuses them for everything.) In some languages, e.g. Pascal, "pointers" only point to the heap. Thus, languages like Oberon support garbage collection by default. I think Fortran 77 didn't even support the heap (dynamic memory at runtime), only compile-time. It certainly makes things easier and more provably correct (but less flexible).

I do think garbage collection is overrated, but it does avoid some errors. Still, being explicit and careful without it is also good. Note that garbage collection varies, and some languages are native (e.g. Oberon) and not JIT, bytecode, or interpreted. So don't lump them all together just yet!


Furs wrote:

What they should do is learn how to be a real programmer and understand real computer programming concepts, not be sheltered by a managed language, so that their code will improve in quality. But no, they're content with crap code, "cause it works" (even with clutches or bloat or slowdowns or random crashes or whatever), and then wonder why software sucks.



There was one C++ teacher who tried to get students to avoid the low-level C stuff, which wasn't as typesafe. To me, it looked like she was trying to avoid low-level pointers too much. In that case, I think Pascal would've been a safer choice (but of course not upwards compatible with C++, at least not directly). Normal, high-level code doesn't need pointers at all, at least not directly. A C program written without needing malloc() can be written in Pascal with no pointers. Understand what I mean?


Furs wrote:

Well it's because they pollute the ecosystem with their junk and drown the software that doesn't suck completely, since they're the stupid majority.



First you make it work, then you prove it correct, then you optimize. Bloat is usually due to bad libraries or "dumb" (not smart) linkers. But a lot of things don't have easy solutions or else we'd all do it.

It takes a lot of effort to write good, portable, robust, flexible software. Indeed, sometimes you only learn from making mistakes. But other times it's good to have a mentor, friend, or whatever.
Post 12 Apr 2018, 23:49
View user's profile Send private message Visit poster's website Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2279
Location: Usono (aka, USA)

Post 12 Apr 2018, 23:59
View user's profile Send private message Visit poster's website Reply with quote
DimonSoft



Joined: 03 Mar 2010
Posts: 241
Location: Belarus


rugxulo wrote:
In some languages, e.g. Pascal, "pointers" only point to the heap.


Well, not really.

Code:

var
  xyWord;
  pX^Word;
...
if x > y then
  pX := @x
else
  pX := @y;





rugxulo wrote:
I do think garbage collection is overrated, but it does avoid some errors. Still, being explicit and careful without it is also good. Note that garbage collection varies, and some languages are native (e.g. Oberon) and not JIT, bytecode, or interpreted. So don't lump them all together just yet!


Garbage collecion is not just overrated. It is the case of “one solution should suit all needs” and “yes, your user has infinite amount of memory, don’t care about flushing and taking the garbage out”. A mechanism suitable for cases so rare that it is not worth being implemented even in such cases is being used for nearly all cases.


rugxulo wrote:
First you make it work, then you prove it correct, then you optimize.


First you spend time to design what you’re going to write. Then you carefully implement it (maybe secured by pre-written tests) and it turns out that the implementation not just works but is also optimized enough and all that is for free.

Any leaky abstraction that lets a programmer think that computer resources are infinite ensures that the software written will be bloated.

IMNSHO.
Post 13 Apr 2018, 08:49
View user's profile Send private message Visit poster's website Reply with quote
Furs



Joined: 04 Mar 2016
Posts: 1157


rugxulo wrote:
It's somewhat easier to rely on library or class for linked list rather than doing it all manually.

That kine of proves my entire point. Also I didn't say that they have to do it or "reinvent the wheel". But they have to know how to do it, or understand how it works as a concept.

"Plugging library calls together" does not make one a programmer. This is the hallmark of a bad programmer.

You even see people who convert from string to number, do some operations, then back to string, and when finally using it, back to number AGAIN, and put that software out in the wild. This "yo yo" style is more common than you think, because those people have no idea what they're even doing. They probably don't even know the difference between a string and a number in those cases and think it's just one thing.

So why software sucks? More importantly why does that kind of shit as above example exist in the first place? Why are those people even writing code in the first place??? It's not like nobody ever chained a few APIs together like they did, that's why there's so much redundant software out there.

It's like someone who chains a few functions together in math and calls himself a mathematician. It's retarded. I'm sick of people chaining libraries together and thinking they're a great developer, when they could NOT write it themselves. It's not a matter of "why bother writing yourself", because they can't write it themselves, even if they wanted to. They'll always bring excuses like "don't reinvent the wheel" to describe their lack of competence on the topic (it's not about rewriting the wheel, it's about understanding how it works).

It's also degrading to the rest of us.

@DimonSoft: Well said. But "designing" is too complex for some people since it doesn't come prepackaged in a library that someone else has already written, I'm afraid. Wink They need everything on silver platters and just waiting to be put together like a kid's puzzle.
Post 13 Apr 2018, 14:33
View user's profile Send private message Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2279
Location: Usono (aka, USA)


DimonSoft wrote:

rugxulo wrote:
In some languages, e.g. Pascal, "pointers" only point to the heap.


Well, not really.



I was referring to original (J&W or ISO 7185) Pascal, not the heavily-altered Turbo dialect. People always whined that Pascal didn't let you do low-level addressing, so Modula-2 added (pseudo-)module SYSTEM for things like that. And of course Oberon was used to write its own (garbage-collected) OS.


DimonSoft wrote:

Garbage collecion is not just overrated. It is the case of “one solution should suit all needs” and “yes, your user has infinite amount of memory, don’t care about flushing and taking the garbage out”. A mechanism suitable for cases so rare that it is not worth being implemented even in such cases is being used for nearly all cases.



OberonOS never required infinite amounts of memory. While there are rarely some Oberon implementations that lack g.c., most of them have it and use it successfully. I don't know the details, though (mark and sweep versus whatever).

And yes it can be problematic (I heard Modula-3's biggest portability nightmare was the g.c. I think this led to the death of FreeBSD's cvsup, which was later rewritten in plain C. Of course even that is apparently shunned nowadays.)


Dimonsoft wrote:


rugxulo wrote:
First you make it work, then you prove it correct, then you optimize.


First you spend time to design what you’re going to write. Then you carefully implement it (maybe secured by pre-written tests) and it turns out that the implementation not just works but is also optimized enough and all that is for free.

Any leaky abstraction that lets a programmer think that computer resources are infinite ensures that the software written will be bloated.

IMNSHO.



Automated tests are very helpful, obviously.

Modern code and machines are anathema to scrimping on RAM or stack. "ulimit" often returns "unlimited", and many programs assume tons of stack (and other bad assumptions). In fact, with AMD64, everyone just assumes they always have gigs of RAM available, which I find lazy. But I imagine some of them barely have a good excuse (sometimes).
Post 13 Apr 2018, 21:18
View user's profile Send private message Visit poster's website Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2279
Location: Usono (aka, USA)


Furs wrote:

You even see people who convert from string to number, do some operations, then back to string, and when finally using it, back to number AGAIN, and put that software out in the wild. This "yo yo" style is more common than you think, because those people have no idea what they're even doing. They probably don't even know the difference between a string and a number in those cases and think it's just one thing.



Well, strings are really just arrays of numbers. All the type checking is up to the compiler. And several interpreter-oriented languages tend to intentionally mix up the two for programmer simplicity.


Wikipedia wrote:

Rexx ... is essentially an almost free-form language with only one data-type, the character string; this philosophy means that all data are visible (symbolic) and debugging and tracing are simplified.
...
Because variable contents in Rexx are strings, including rational numbers with exponents and even entire programs, Rexx offers to "interpret" strings as evaluated expressions.



And yes, REXX was designed to be easy to use. It too is garbage-collected.


Furs wrote:

So why software sucks? More importantly why does that kind of shit as above example exist in the first place? Why are those people even writing code in the first place???



Most code is helper for work/school while a few sell their software itself as their business. The implication is that business is backed by education, thus skill is proportional to cost.


Furs wrote:

@DimonSoft: Well said. But "designing" is too complex for some people since it doesn't come prepackaged in a library that someone else has already written, I'm afraid. Wink They need everything on silver platters and just waiting to be put together like a kid's puzzle.



Writing everything from scratch is harder than it sounds. Indeed, assembly tends to be low-level, but "macro" assembly is not so low-level as to avoid all abstractions. Maybe I'm naive, but I don't think the Linux kernel would gain much efficiency (although maybe some size savings) from being written in assembly instead. They know and use C for various good reasons. It doesn't mean it can't be slightly better, but overall they know what they're doing.

Just because someone doesn't write their own OS or compiler from scratch doesn't mean they're doing it wrong. You don't have to understand literally everything. HLLs are intentionally meant to hide and abstract away so-called "irrelevant details". Obviously HLLs are popular and successful. But so is assembly. Hey, whatever works!
Post 13 Apr 2018, 21:46
View user's profile Send private message Visit poster's website Reply with quote
Furs



Joined: 04 Mar 2016
Posts: 1157


rugxulo wrote:
Well, strings are really just arrays of numbers. All the type checking is up to the compiler. And several interpreter-oriented languages tend to intentionally mix up the two for programmer simplicity.

What? The strings are in ASCII and base10, which is double redundancy. Even if it wasn't, it would still need to be "converted" for absolute no point at all, I mean seriously.

I don't know what you're trying to argue here. I was giving an example of a very bad programming practice that i call "yo-yo programming" which leads to software sucking. You cannot possibly defend that, right?

The thing is, those "programmers" aren't even aware of all this, that's exactly why the language is at fault for not forcing them to learn. In short, if they learned the hard way that programming is not so easy for them and they should find a diffferent goal in life, we'd have more quality software. The entry level is too low, and it's the fault of the forgiving languages.


rugxulo wrote:
Just because someone doesn't write their own OS or compiler from scratch doesn't mean they're doing it wrong. You don't have to understand literally everything.

I never said you did. But if you write something for the OS or a platform you ought to know the stuff on a big picture at the very least. This applies to any project: if your project is about signal processing, you ought to know about that kind of stuff instead of being "protected" by a stupid HLL or pre-packaged library. Making a DSP filter with a bunch of library calls is not going to make any good software, it's the same run-of-the-mill everyone else is doing, which is why 99% of software these days is redundant bloated garbage as I said.

Even coding in something "portable" like C/C++ "ISO mode" you still have to learn that -- not the specific platform you code for, but the C/C++ "virtual machine" specification (which is even harder than the actual details of a platform actually). If you don't, you're a poor programmer and your software will suck.


rugxulo wrote:
HLLs are intentionally meant to hide and abstract away so-called "irrelevant details". Obviously HLLs are popular and successful.

As if being popular has any merit to the result sucking or not. Rolling Eyes In fact that actually proves my point even more... I already said there's too many people who shouldn't even be programming in the first place, given their coding habits or actual knowledge of what they're doing... the fact that they still manage to compile something is not a good thing, but a bad one.

I know that HLLs are intentionally meant to hide a lot of stuff, that's my whole point. It's not necessarily the fault of the HLL directly (hey, I love C++), but indirectly: they enable people who shouldn't even be programming to still make something -- albeit, that "sucks", but whatever.

Do you want to know why software sucks? See this link, and what kind of "mentality" or doctrine such people give to others: http://rubyonrails.org/doctrine/#optimize-for-programmer-happiness. With this kind of people preaching to other, newbies, is it any wonder why software itself sucks?

Software sucking has nothing to do with programmer "happiness" or experience, but with the end result. If the end result is bloated, big, crashes, or is slow, then the software sucks, which is the topic. Doesn't matter how happy a developer was. The end usage of the software is what matters in this respect.

And yes, software today sucks much more than 10 or 20 years ago. Of course, it's also because the average programmer today is much dumber than the average 10 years ago, since he is "protected" by the HLL from the "nasty details". With no workout for the brain, you become dumb. Literally. Use it or lose it.

(note: the total amount of good programmers might actually be higher than 10 years ago or more, but the average is not because there's simply way more dumbies into the scene today than before so they tilt the average, which is why it's so much harder to find good software today written by actual good programmers -- it becomes more and more a "diamond in the rough" kind of thing; it's not the absolute total value that's lower, it's the relative percentage that's way lower)
Post 14 Apr 2018, 13:28
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  
Goto page 1, 2  Next

< Last Thread | Next Thread >

Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You can attach files in this forum
You can download files in this forum


Main index   Download   Documentation   Examples   Message board
Copyright © 2004-2018, Tomasz Grysztar.
Powered by rwasa.