

Powerful Programming Languages, Take Two - DanielBMarkham

So let's say it's 50 years into the future. You and your startup team get together for a weekend to crank out the next killer app. (Surely you haven't given up startups by now, have you?)<p>You all put on your neural helmets and begin to have a conversation about where the users are, what strategies you'd like to use, and the types of things you'd like to do in the future. At the end of this discussion, the computer creates a 10-minute neural "video" of your agreement along with a working application. Any newcomer to the team can "watch" the neural video and not only understand the application, but also understand what decisions were made and why, and how things should change in the future. The working application consists of 40K lines of assembly, automatically created during the discussion. To change the program, you just need to repeat the discussion process you did to create it -- ie, no assembler language knowledge is needed. Of course you _could_ go in and hack the assembler if you chose.<p>Conversely, at the same time, Arc++, The Next Generation is out. For this same amount of work, the code needed is this:<p>Floog()<p>Which of these is the more powerful programming language? Why?
======
bayareaguy
If you believe in the great nano-hardware apotheosis, 50 years from now you
won't program, you'll advise. Startup hackers will write essays like pg does
now, except their audience will be swarms of semi-cognizant nanobots who will
decide on their own if their suggestions are worthwhile. Only the efficient
ones will have their choices passed along to the next generation. There will
be great religious wars at the atomic scale as the bots try and decide where
best to put their molecular parentheses. All this will happen so fast it will
be unnoticeable to humans, most of whom will be too busy keeping each other
entertained.

~~~
DanielBMarkham
My crystal ball doesn't work much past the Great Singularity, so can we limit
the discussion to somewhere half-way between here and there? At the extremes,
a lot of discussion falls apart. Plus, I don't want no nano-bots arguing over
parentheses. Little buggers should be using braces instead. : )

------
jimbokun
Long before the advent of computers, mathematical notation provided a way to
more precisely express ideas than natural language. Of course, if you are
verbose enough, you can express mathematical ideas with prose. But the
corresponding mathematical notation will probably be more clear and easier to
manipulate than the prose version for someone well versed in both "languages."

Programming languages can similarly provide for precise, concise expression of
ideas.

Your example is a huge leaky abstraction waiting to happen. What if something
about the resulting program is very different than what you expected or
wanted? How do you know at what point things went wrong? How do you fix it?
What if there were ramifications that were not clear at the high level of your
conversation, but the machine dutifully did what you "wanted", with
repercussions like Mickey in the Sorcerer's Apprentice?

The only way programming languages will no longer be useful in the future is
if algorithmic thinking is no longer useful. Is that your assumption here?

~~~
DanielBMarkham
Programming languages can indeed provide for precise, concise expression of
ideas, but how precise must the description of a problem be in order for the
computational machinery to express it within parameters necessary to satisfy
the user?

So what if the program is very different that what you expected or wanted? Is
this such a new thing? A better question would be "what if I could be wrong
eleven times in a week and finally be happy. Would that be better than taking
a month to accomplish the same thing?" I think you're looking at the problem
through the wrong end of the telescope. The perfect is the enemy of the good.

I think by marrying mathematical concepts to computers you're continuing down
a path that may no longer be useful. While it's true that computers are
mathematical creations, the question isn't whether a program is "correct
enough", rather whether it is "useful enough"

We're already using poor, leaky abstractions to grasp and create programs --
it's called the English language. The guys who created E-bay didn't work out
the calculus of various bidding strategies -- they implemented a simple online
bidding system. We're not looking for mathematical perfection. We're looking
for maximum value with minimum effort.

Or maybe I'm smoking crack here. Are you saying that the ability to make the
most complicated precise programs using the least amount of syntax is a good
thing? If so, why would that be?

