Skip to main content

Chapter 11: The Hundred-Year Language

14 replies [Last post]
jonathansimon
Offline
Joined: 2003-06-07
Points: 0

This chapter focuses on what languages will look like and how we will be programming in one hundred years.

There are some interesting points made in this chapter but the most interesting point to me is what was missing -- most notably Quantum Computing.

I believe in 100 years we will have quantum computing, and it will non-trivially change the way we program and how we structure languages. I mean, even OO is Functional or at least procedural at its core! The most interesting question to me is how we will change our outlook on programming in general to make use of quantum computers.

-jonathan

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
jonathansimon
Offline
Joined: 2003-06-07
Points: 0

I've been a big fan of a "core java" for a while now. We have Jar files that help us extend the language -- and alot of Java is written, well, in Java. So there is no technological reason why there couldnt be a really small core Java and everything else be extensions.

There are other factors of course, like already having installed what you expect to use, but then again, you could just provide the extensions with your app like you do like whatever libraries you currently use. Then again, this could cause some serious DLL style confusion without the right organization and planning.

I think its awesome that the threading lib is independent. I wish more worked like that! And I'm always happy to deal with an extra lib on my side to speed up the 2 year release process from sun...

meidezhao
Offline
Joined: 2004-04-18
Points: 0

Nice to read this interesting chapter. Just a piece of mind, the boundary between different levels of programming will be more clear. Most of programming work will just assemble different components together through a powerful IDE providing all the phases of software development. The components will be written in different languages including AI languages, and can be purchased from some major component providers.

c_jinx
Offline
Joined: 2004-05-04
Points: 0

> The components will be written
> in different languages including AI languages, and
> can be purchased from some major component providers.

You can surely count on those "major component providers" to sell "components". However, I kind of doubt the usefulness of these "components".

rythos
Offline
Joined: 2004-08-31
Points: 0

The problem I have with this idea is that although we may have 2D drag'n'drop etc IDEs, I have only once used such a product for creating a UI. I used it once, saw the ugly, nasty code that it created and have done my own UI programming since.

In some cases though (and I'm arguing against my point here) it does work well. I'm working in C# and ASP.NET right now at work and the seperation of logic and view (oh yes, everyone is allll about that) means that the UI creator can create as nasty code as it wants and I don't have to deal with it. I just hook into the back.

I think a fair amount of Pauls ideas come from the fact that hackers like control over the low-level parts of their system. And while I don't agree with him as strongly (annoys me whenever he puts down Java) I do agree that there is a certain amount of control that I want. The 2D UI creator didn't give me the control I want. The 3D creator will have to be another order of magnitude more impressive to still give me the illusion of control while still saving me time and energy to do more interesting things.

rythos
Offline
Joined: 2004-08-31
Points: 0

Just read this chapter last night. _Now_ I have something to say :).

I can't even begin to imagine how this will change our view of programming. Or maybe I can. He made a point near the end of this chapter about how even with massive parallel systems he thought people would still just write a single-threaded program and then optimize for the multiple threads later. Is it ok to imagine a quantum computer as a machine with the possibility of infinite threads? I don't know enough about the subject to say for sure :). But if so, then it's possible that this will turn into an "optimize later" problem as the complexity gets far to much for our mere monkey brains to imagine without help. Perhaps one of those 3D tools being discussed above will be able to take a single-threaded program and "easily" seperate it into parts for a quantum machine?

Comment on this chapter: I really hate people that start an argument and then say "Oh, I'm not trying to start an argument." He does this in the beginning "I'm not trying to diss Java..." The rest of this annoyance comes from his "Great Hackers" essay which many other people have discussed with far more eloquence than I will ever be able to muster, but this reminded me of the feelings I get when reading that essay.

He predicts that Java will be an evolutionary dead-end. C# appears to be in large part based on Java. Seems like someone got _something_ right enough to be passed on to it's language-children.

I do like his point about how languages are just notation, not technology, and evolve just as quickly as math notation does: real slow. Topics like this remind me of that famous linguistics experiment where they "proved" that a lack of certain language (human) features doesn't mean you can't form the concepts. Programming languages are just programmers way of expressing certain concepts. But there are more concepts than can be expressed using an given high level language. What sort of other concepts can't we express? The first that comes to mind (because I find it interesting) is that of AI. It is generally accepted that most current methods of AI aren't quite right. So there must be something in the list of concepts that we can express in our current languages that is missing (if you accept that intelligence can be codified that is). There are more concepts I'm sure. Will the "language of the future" be able to map these concepts into a coded form? Or are we stuck never being able to formalize certain things?

Sorry. Long post. :)

johnm
Offline
Joined: 2003-06-06
Points: 0

> I can't even begin to imagine how this will change
> our view of programming. Or maybe I can. He made a
> point near the end of this chapter about how even
> with massive parallel systems he thought people would
> still just write a single-threaded program and then
> optimize for the multiple threads later.

Yes and no. Think about the nature of problems that people want (to help) to solve with software... There's only a relatively small class of software which don't have to deal with the vagarities of external events in non-trivial ways. Dealing with humans and other distributed and decentralized actors requires dealing with some non-trivial software problems. You might have only one thread but you'll still need to deal with the non-serial nature of reality one way or another.

One of the key levers moving into the future will be language constructs that allow people to deal with concurrency and events in more natural ways.

rythos
Offline
Joined: 2004-08-31
Points: 0

Yes! That's another concept that needs some help. I haven't looked at all at the new Java Concurrency package (no Java programming recently), but I'll bet that it's just a rehash of old ideas.

johnm
Offline
Joined: 2003-06-06
Points: 0

> Yes! That's another concept that needs some help. I
> haven't looked at all at the new Java Concurrency
> package (no Java programming recently), but I'll bet
> that it's just a rehash of old ideas.

Doug and the rest of the expert group have done an excellent job but they are still constrained by making it a library rather than, say, fundamentally changing the language.

rythos
Offline
Joined: 2004-08-31
Points: 0

I hadn't intend to down on their work at all. I wonder what a fundamental change of the language would look like. Would it be useful but overly complex? Would it twist our fragile little monkey brains in ways they been twisted in before? The same question I have with my AI idea. What would a fundamental change in the language which allowed AI and multithreading to be easily expressed in look like? They aren't going to be easy to express otherwise some brainiac would have figured them out already.

arae
Offline
Joined: 2004-06-22
Points: 0

I don't think we will use language - algorithms and instructions expressed in words. I imagine assembling components on a virtual reality workbench. Building molecular models in 3D with library components.

When all programs could do was hex, we programmed in hex. Then we had teletypes, green screens, X tubes etc. At each display advance, programming moved too. High resolution 2D workstations mean we now program with 2D drag'n'drop & wysiwyg IDEs.

When 3D becomes the norm, programmers' tools will become 3D.

ba22a
Offline
Joined: 2003-08-26
Points: 0

Why 3d? In the 'real' world, we've had 3d for some time now :) and don't generally use it to communicate; 2d is more convenient. 3d manipulation has niche uses (architecture, chemistry, surgery, animation), where visualisation is important, but in most other disciplines plain old writing is king.

How about a move back to direct-manipulation systems first (ie writing tablets). They can support a far wider set of characters than our keyboards can, and aren't biased for one notation or another (we've long overloaded accounting symbols in computing because the keyboards don't support the mathematical ones, for example). Its odd to see that keyboards have already been abandoned for some of the mundane data-entry tasks they're supposedly best at, eg the cash register.

johnm
Offline
Joined: 2003-06-06
Points: 0

Why just one language? Isn't one of the lessons that we've been learning that there's different languages work best for different people in different contexts?

johnm
Offline
Joined: 2003-06-06
Points: 0

Don't forget to include the idea of hacking matter at smaller and smaller levels of granularity. :-)

mike_ishigaki
Offline
Joined: 2004-10-13
Points: 0

Haha! I think this is written about in the book:
"An Elite World"