Software Development

Correcting The Future

What If's of Software Development

What if you could create software in an easy to understand manner no matter the size of the project?
What if you could make your software adapt to any architecture automatically (without VM)?
What if NULL exceptions or errors were impossible?
What if you never had to allocate (or deallocate) memory?
What if you could take advantage of each hardware platform's strengths without rewriting the software?
What if you never had to create a thread, yet your software would be able to split up or merge back together to get the best execution possible?
What if you never had to lock anything?
What if you never had to worry about deadlocks or livelocks?
What if adding functionality was never a problem?
What if you could do it at runtime?
What if your software never needed to be shut down?
What if your software was naturally extensible?
What if your software could mutate and flow across multiple platforms as required?
What if reuse wasn't all hype?
What if you could actually spend time on creating the software and on the requirements instead of the framework?
What if you didn't have to worry about recursive calls or mutually dependant objects?
What if you didn't have to worry about scope?
What if you didn't have to worry about order of execution?
What if you didn't have to worry about portability?
What if integrating any external software was not a problem?

What if I told you that all this was possible at least 20 years ago, but we're still 50 years away from seeing it all?

My question is why nobody cares that we've been taken for a ride?
And why do SmallTalk, Lisp and Java users think that having a few of these features makes for the complete package when it falls way short?

The Programming Language of the Future is in /dev/nullBack On

Comments

Robbert van Dalenrapido Monday, May 22, 2006 8:36:34 PM

We all would like these features!

But to be able to reach the ideal you should *care* in the first place.

Most programmers don't care because they are programmers. They are paid well to get around obstacles that shouldn't be there in the first place.

And why is it that most people don't understand todays software? Because todays software is full of the worries you state.

But what's the alternative?

Do you, Vorlath, have a solution?

I guess you have .... I hope you have, so I don't have to think of one! ;)

But is your solution runnable, enjoyable, understandable and... most of all ... does it gracefully embrace legacy? Because every new solution has to deal with legacy in one way or another.

Unless you have something really really useful that can replace any existing software - just like that.

I also think Smalltalk, Lisp or Haskell don't have the features you describe. I'm also desperately trying, like you, to come up with an answer. My answer will probably incorporate a mix of the following concepts:

- Referential Transparent = Immutable
- Data Flow
- Function = Data
- Distributability / Parallelism
- No Variables

These are some solutions that come close:

- Erlang (Data Flow / Prolog / Functional/ Hot deployment)
- APL / Joy / Kdb (No Variables / Potential and concrete parallelism/ Very efficient)
- Finger Trees (Scalable/Distributable/Immutable datastructures/code)

I feel Erlang/APL/FingerTrees is a very potent combination.

What's your take?

Vorlath Monday, May 22, 2006 9:53:24 PM

The legacy argument is a good one. I think that sometimes, there should be genuine improvement when maintaining legacy software. Unfortunately, it's usually just a more contemporary package that is used and integrated instead of actually being a real improvement.

I like your argument about people getting paid to get around those problems. I once read someone say (I forget where exactly) that programmers intentionally make programming complicated on purpose (so as not to lose their jobs etc.). At the time, like everyone else, I thought that was ridiculous. I know better now, but it isn't the programmers. They just don't know any better. They can only be made aware of what they've seen. If they don't know there's a better way, they can't fathom that they're taking the long road. The truth is that there are people that know how to make software development a LOT easier, but are refusing to do so because of lucrative objectives. Can't say I really blame them, but it's rather frustrating when you see their capitalistic endeavors permeate the educational institutions which serves no purpose but to sidetrack true education into mindless drones that will buy their products. Remember DOS? Wasn't great, but the investment people put in to learn it made so that they didn't want to learn anything else. So if you get them early on when they're in school, you have a gridlock on sales, technology and what people use.

Do *I* have a better way to create software? I do know how software development would be better. But I have two problems. This may sound like I'm whining, but I'm just being realistic. First, will anyone even care? From what I've seen, before other programming languages take root, it takes at least 10-20 years. Sometimes longer. Secondly, even if I do create something, I'm not sure that it'll be the best way to implement it. After all, it's a first try. My fear is that if there is any kind of failure to take root, which is 99.99% guaranteed by the nature of the computing industry, then there is a very real possibility that this will be construed as a failure of this software development style. I think these are real issues that I should take into consideration before I release anything.

Write a comment

New comments have been disabled for this post.

June 2012
S M T W T F S
May 2012July 2012
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30