Live data from Hacker News

What's wrong with Software nowadays and how we can fix it

github.com

51–60 of 147 posts

Re: What's wrong with Software nowadays and how we can fix it

#51
post #29

>To fix this, we need to increase the currently tiny number of people who are able to write, modify, combine and share software. We need a tool that makes writing software easy and fun, and accessible to everyone. A tool that enables software literacy. Global access to niche knowledge doesn't seem like an effective use of the world's time to me. Let's look at this same idea, but replace "develop software" with "perfo…

Ok, but what makes brain surgery a good analogy? Why not replace "writing software" with "hopping on one foot" instead? Most of us own computers that can run software, but we don't own the equipment required to do brain surgery. More people have problems that can be solved by software than can be solved by brain surgery. I think software is more like basic arithmetic: a bit of training (plus the pen and paper you alr…

A lot of people use software, but does that really mean they need to know how to create their own?

sbov's car analogy suggestion is apt: a lot of people drive cars, but should they be expected to be able to maintain their own?

A kinda related side observation:

I found my brief stint working with Max/MSP (a visual language typically used by musicians) to be illuminating. This is a tool for non programmers (musicians in this case) to write software for their own use and it succeeds at this. Its kind of like excel for musicians. But, just like excel, the software created by these people, while functionally they work and do what the musician wants, are written in pretty terrible spaghetti code (giving visual programming a bad name in the process), because the users never learned software engineering principles (even simple ones like abstraction).

Just as with excel, this is fine for write-only once-off tools and I certainly do think that more excel-like tools that allow non-programmers to solve their own problems are necessary and will help in software literacy. However, I don't think that these tools or skills will achieve a world where most people can write and modify software in general because they won't have been trained in the software principles we take for granted. Try and debug a large non-programmer-created excel sheet sometime for example. :)

My point is that its not exactly like basic arithmetic, but as you say its not thaaat different either. Yes, some excel-like tools and a bit of training will allow more people to create their own little solutions to their day to day problems, and this is something worth striving for, but it won't be enough to let them create/modify large software in the general case. For that, they need the full blown mathematicians training (or, some of it, anyway).

> you can do something yourself that used to require a professional

I suppose THIS is what the goal is or should be. Not to make everyone a programmer, but to allow people to do more things for themselves that they previously required experts for.

Re: What's wrong with Software nowadays and how we can fix it

#52

I usually try hard not to be cynical, but in this case I can't stop myself. This seems to be another attempt at a grand, unified packaging and IPC / linking method. There have been hundreds of these, and there is no attempt at all to discuss where all the others went wrong, and how this will improve upon them.

There are interesting ideas in this project.

I would love instantly dig into any software component. I can do that with website: I can right-click on button and click "Inspect" and I'm very close to discover what code executes. Imagine the entire computing platform built this way. Few navigations and you are reading TCP/IP code. Click here and there and you are inspecting USB packet from your mouse.

Also live code update is so rare, yet so useful. Set breakpoint on that line, stop there. Add some code and it'll be executed immediately.

Java invented Javadocs, which is awesome. I can read almost 0 documentation on some simple library yet I can use it with autocomplete. JavaScript isn't quite there yet, but it could be.

There's a lot of improvements to be made in current software stack.

Re: What's wrong with Software nowadays and how we can fix it

#53
post #6

At first glance, it seemed like yet another silicon-valley-neoliberlist-style lots of words and ideologies, but no code and practicalities. But it seems like OPs thesis has a more hands-on approach: http://zells.org/res/Zells_DiplomaThesis.pdf

This looks interesting to me as a programmer, but it looks much too complex and niche-knowledge-dependent to be, in my opinion, a real contender as a tool to allow non-programmers to program.

I only glanced at it, though, so maybe its easier than it seems, but to me, the samples looked complex enough that I don't see it.

It does look great as an experiment into different programming models though and that's something I always enjoy (and is needed if we're to get better future tools).

Re: What's wrong with Software nowadays and how we can fix it

#54
post #36

Earlier quoted context omitted.

Can someone name a couple of those hundreds of attempts?

Most languages try this at some point, Java claimed you could link all your code into Java and use OOP. Self-describing components in .NET Visual Basic 6's component method. Windows has had various of these, including ODE and COM. Obviously, any linux distribution, and plain old C linking, probably comes closest (although that tends not to be self-describing. Lots of RPC systems I would say fall into this list, just…

CORBA and WSDL/SOAP.

Also, it's not quite correct to say that these failed. They did what they were supposed to do; they simply were not the magic bullet some proponents made them out to be.

Re: What's wrong with Software nowadays and how we can fix it

#55

Anyone who says this: in the virtual world of computers, everything can be replicated, from complex physical phenomena to abstract ideas, and even your own mind. Does not understand computers well enough to be lecturing the world about the need for software "literacy". The assertion that computers can represent any of those things is a complete falsehood. Computers are great with complex mathematical models of physic…

I don't think he was talking about present day technology; rather, he was referring to abstract machines.

Whoever taught you computer science must have had a very pessimistic attitude, which is surprising to me as most of the academics I've talked with think the computers of the distant future will have no limitations.

In the preset day, though, we have limited time and must choose our battles carefully. I respect the OP for his attempts, if a little a misguided. Just ask any active member of the Linux kernel and they'll tell you how often they see such people undertake similarly bold approaches which deliver little outcome (and, hopefully, a life lesson...)

Re: What's wrong with Software nowadays and how we can fix it

#56
post #50

Anyone who says this: in the virtual world of computers, everything can be replicated, from complex physical phenomena to abstract ideas, and even your own mind. Does not understand computers well enough to be lecturing the world about the need for software "literacy". The assertion that computers can represent any of those things is a complete falsehood. Computers are great with complex mathematical models of physic…

>One of the first things you learn in Computer Science is that not all problems can be solved with a computer. Oh ... could you elaborate? I think my cut-rate, community college degree skipped that part :) it seems like a useful thing to know!

I assume skywhopper is referring to undecidable and uncomputable problems. https://en.wikipedia.org/wiki/Undecidable_problem

Re: What's wrong with Software nowadays and how we can fix it

#57

Anyone who says this: in the virtual world of computers, everything can be replicated, from complex physical phenomena to abstract ideas, and even your own mind. Does not understand computers well enough to be lecturing the world about the need for software "literacy". The assertion that computers can represent any of those things is a complete falsehood. Computers are great with complex mathematical models of physic…

Perhaps there's intended subtext saying that computers have the capability to do such things, but we are unable to do such things with the current technology and knowledge. I mean, you're right. The statement shouldn't have been said without being explicit.

I dunno. I'm just trying to give benefit of the doubt.

In writing this defense of the article, I realize that such a flawed premise shouldn't exist when talking about teaching fundamentals.

Re: What's wrong with Software nowadays and how we can fix it

#58
post #9

Earlier quoted context omitted.

One of the most common challenges that I see engineers face is to effectively empathize with the user. When you know a lot about something, you just see it in a fundamentally different way. This makes it difficult to focus on making it easy for the user to do what they want, not what you think they should want. When I drive my car, I just want to get from point A to point B while listening to a podcast. I don't care…

> Literacy isn't about forcing people to learn things, it's about ensuring that everyone has the baseline exposure to help them discover if they have an interest in a topic, and then the resources to explore that topic if they choose. That sounds hilariously naive. If we'd let people decide themselves what they want to learn the majority would still be in the sandbox making castles and playing with toys all day.

Its about exposure, not learning enough to be a professional.

For example, I learned some basic mathematics, physics, chemistry, biology, history, geography, etc in school. Until I got to university, what I learned wasn't enough to make me a mathematician, physicist, chemist etc. It did give me a baseline on which I could build and it gave me exposure. This exposure was forced on me, but what I did with it (a computer science degree and a programming career), was something that was left up to me to choose later.

I see computers/software the same way. Its common enough in day to day lives now that I think a baseline of computer literacy and some basic exposure should be required and afterwards the students can choose if they wish to explore more or not.

The exposure doesn't necessarily have to prep them for real work (I'm pretty sure dissecting a frog isn't going to prepare me for veterinary work...), just give them a taste of how things work.

Re: What's wrong with Software nowadays and how we can fix it

#59

I'm going to buck the trend of cynicism and say this is beautiful and matches my own ideas closely, though I have not read the paper yet. How many of us seasoned programmers came to an understanding with computers by playing in a "toy world" of comprehensible, somewhat visible, documented, predictable abstractions, such as Logo, HyperCard, Excel, BASIC, or even assembly code, and now perform bizarre ceremonial rites…

After reading the thesis, the proposed model of computing is like a concurrent Smalltalk where everything is completely mutable, even an object's code and prototype chain. The author then writes a function to calculate the Fibonacci sequence by turning it into a distributed system, with some effort, and then runs the code and talks about its performance!

At first glance, there seems to be a lot of incidental complexity and creative choice in expressing a function from integer to integer in this system, which goes against the ideas of code reuse and separating meaning from optimization -- i.e. that there is one global Fibonacci function that we can inspect and understand and don't have to rewrite for performance, or in another language, or to run in a distributed fashion.

Re: What's wrong with Software nowadays and how we can fix it

#60
post #30

Earlier quoted context omitted.

The difference is most people won't need brain surgery in their lifetime. A more relevant comparison would be car maintenance.

Well, most people don't know how to fix their car, so the result seems to be the same to me.

Another fault with his logic is that programming languages are very specialized and very powerful tools. You could try to dumb them down to make them work for the average person (which has been done ad nauseum at this point) but then they would no longer be capable of solving certain classes of problem either simply or quickly.

To go back to the car analogy, yes most people understand at least at a rudimentary level how modern cars function, but most people also lack the tools to do anything but the most basic of maintenance on a modern car. Even assuming they had the tools available, they still wouldn't understand how to use them or even how to diagnose certain classes of fault. We could say that in order to allow everyone to perform maintenance on their cars at home that car manufacturers aren't allowed to use anything but standard tools to build their cars, but that would basically undo the last ~30 years of advances in the auto industry. Want to own a Tesla? Oh sorry, non-standard parts, going to need to pull that off the market. The situation in the programmer world is basically the same, yeah we could make everyone program in something like BASIC (and even that is probably too complicated for most people), but that's kind of like tieing one hand behind your back and then jumping in the deep end of the pool. Programming is hard enough as is, we don't need to start introducing handicaps.

Post reply on HN