Big questions

So, I've been (re)reading Hamming /The Are of Doing Science and Engineering/, which includes the famous talk "you and your research". That's the one where he recommends thinking about the big questions in your field. So here's one that we haven't talked about in awhile. It seems clear that more and more things are being automated, machine learning is improving, systems are becoming harder to tinker with, and so on. So for how long are we going to be programming in ways similar to those we are used to, which have been with us essentially since the dawn of computing? Clearly, some people will be programming as long as there are computers. But is the number of people churning code going to remain significant? In five years - of course. Ten? Most likely. Fifteen - I am not so sure. Twenty? I have no idea.

One thing I am sure of: as long as programming remains something many people do, there will be debates about static type checking.

Update: To put this in perspective - LtU turned fifteen last month. Wow.

Update 2: Take the poll!

How long will we still be programming
 
pollcode.com free polls

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Meh

computing power is all

with computing power millions of times what we had in the 70's we can use NN to detect cats

with computing power millions of times what we have now we can use programs to detect cats.

Convert the pictures to a 3d model, deduce the positions of bones, do statistical comparisons with different species, whatever.

The actual cat detection in

The actual cat detection in real time does not take much compute power. Training is expensive, sure, but the use of a trained network is cheap.

The problem is not

The problem is not recognizing cats, it's getting the cat to recognize you.

To cats, humans are just

To cats, humans are just bigger cats. And whose to say they are wrong?

I think you gives us too

I think you gives us too much credit. They think humans are a food delivery system.

Our cat is quite vocal with

Our (exceedingly sociable) cat is quite vocal with us, and if we translated all those meows as "feed me!" we could feel put-upon. So the social atomosphere in our house becomes much more pleasant if we alternatively translate those meows as "I am a member of your clowder!" But, if you really think about it, why should the cat distinguish between these two? Some human languages have words with "big" meanings; Latin is an example. Ostensibly languages from the misty past of human history have bigger words than later languages (I do think English is rather like a scalpel, suitable for making very precise distinctions).

To say that Bilbo's breath was taken away is no description at all. There are no words left to express his staggerment, since Men changed the language that they learned of elves in the days when all the world was wonderful. — The Hobbit

If programming becomes just

If programming becomes just turning some knobs until you get what you want, is it still programming?

Knob turning isn't fundamentally different from key pressing, ie. people program by clicking some keys until they get what they want. Of course, this applies equally well to "programming" your coffee machine, which we presumably don't wish to include.

I think the difference of "true programming" must be generality of the abstraction being programmed, where the set of behaviours that can be programmed is sufficiently general. That would mean that it must be Turing complete, or near-Turing complete.

Knob turning is

Knob turning is fundamentally different from key pressing, like water hosing is fundamentally different from archery. The benefit of continuous feedback should not be underestimated!

Let's denounce eugenics on LtU

The Europeans ran roughshod over the native Americans. That's not just some random coincidence, it's natural selection at work. The more aggressive culture dominated. The final chapter has not yet been written, of course, but I suggest the brutality in the earlier chapters may at least have been necessary plot development.

That is both historically ignorant and it makes an offensive eugenics claim.

It's a cultural

It's a cultural oversimplification, and it's not in any way remotely related to eugenics.

re it' a cultural

It is eugenics to describe the mass displacement and slaughter of indigenous people as "natural selection at work" regardless of whether you think the genome or some more nebulous "culture" is the mechanism of heritability and variation. (Remember that fascist eugenics was seizing on literal genetics only to explain beliefs it already held. It's sick "logic" is equally comfortable with so-called "cultural" rankings of people.)

Further, to speak of "the more aggressive culture" is not an oversimplification, it's an unscientific, ideological credo. Worst of all, it smacks of 20th century propaganda claims that the destiny of the world was to belong to the race with the superior will to power.

Europeans could ultimately dominate indigenous people because of the inevitable unevenness in the development of productive forces. The Europeans had more advanced metallurgy, industry, agriculture, transportation, weapons, and armies to name a few points.

While it is true that the Europeans operated under a political economy that was unable to function other than by expansion and enclosure. It does not follow that indigenous societies were any different in this regard, only that they had less developed capacity to fight.

Sigh

I apologize to LtU for replying to your blatantly trolling post in the first place. Having done so once, giving you a second chance, I apologize for doing so a second time. I'll try to stop with this.

It seems clear you don't know what the word "eugenics" means.

The word "aggressive" is an oversimplication, as I said. More accurate would be, "in this case successfully aggressive".

Your assertions about metallurgy etc. as decisive factors are not uncontroversial.

"While it is true that the Europeans operated under a political economy that was unable to function other than by expansion and enclosure. It does not follow that indigenous societies were any different in this regard, only that they had less developed capacity to fight." That I substantially agree with. It supports my point, although I get the distinct impression you have no interest in my point other than as an excuse to attack me.

re Sigh

I get the distinct impression you have no interest in my point other than as an excuse to attack me.

I attacked some particularly ridiculous things that you said, not you.

It seems clear you don't know what the word "eugenics" means.

You made statements that have an internal logic to them. I called this logic to the surface.

On the one hand you spoke of the survival of the "more aggressive culture" in a contest of life and death. On the other, you called this "natural selection in action".

That is precisely the same eugenicist, explanatory logic used by apologists for the slaughter for indigenous people at the time and since.

Here are some quotes a not bad article, an interview with a historian who works in this area (Roxanne Dunbar-Ortiz, emphasis added):

By the time of Theodore Roosevelt, US society, including "scientists," was awash in Social Darwinism and eugenics. But, clearly, Walt Whitman was a true visionary in the sense that his vile language of Mexicans, "Injuns," and "niggers," fit into the Social Darwinism that developed in the Atlantic world as a justification for colonialism and genocide, not just in North America, but all the Americas and Caribbean, South Asia, the Middle East, the Pacific, and especially, Africa and African Americans.

As an enthusiastic supporter of the US war against Mexico in 1846, Whitman proposed the stationing of 60,000 US troops in Mexico in order to establish a regime change there "whose efficiency and permanency shall be guaranteed by the United States. This will bring out enterprise, open the way for manufacturers and commerce, into which the immense dead capital of the country [Mexico] will find its way." Whitman explicitly grounded this prescription in racism: "The nigger, like the Injun, will be eliminated; it is the law of the races, history. . . . A superior grade of rats come and then all the minor rats are cleared out."

The more aggressive culture will triumph by the law of history, natural selection in action?

So catastrophic has history proved that world-view that it really ought to find no quarter. Yet here it has appeared: Not just casually mentioned in passing on LtU but now actively and indignantly defended.

Why do we say "the more aggressive culture" dominated? What a strange indirection. Why are we blaming the "culture"? What is a "culture" in this context if not simply an excuse to relieve individuals of agency from their horrific acts? ("I want the world to know: It wasn't me. It was the culture what made me do it."?)

What segregation is being policed -- what irreconcilability is being asserted as a fundamental property of nature -- behind a statement like "natural selection in action"? Really? Slaughter was the only way to reconcile capitalist and indigenous culture? People had no other choice? Or, rather, people as passive instruments of imaginary "culture" had no other choice?

This isn't just some moot debate over how best to narrate history, either. Here on LtU and in this topic in particular we're discussing the future of political economy in a powerful area where LtU readers have definite, personal agency and influence.

If our belief systems model slaughter of indigenous populations as "natural selection in action" during a contest between "cultures", won't the logic of those beliefs be reflected in our contributions to the future of technology, especially such a socially significant technology as computing and by whom and how it will be controlled?

ambiguity

You do make it difficult for me to walk away. You keep offering just enough of a glimmer of hope to encourage my optimistic side to vote in favor of trying again.

You made statements that have an internal logic to them. I called this logic to the surface.

No, you didn't. You falsely asserted a "logic" that did not exist in my remarks, would not have occurred to me, and I'm pretty much disgusted that it occurred to you (which I hope reflects on your low opinion of me, since otherwise it would suggest that you're obsessed with genetic elitism, which seems psychologically unhealthy for you).

I could make a plausible case (if I were trying to give you the benefit of the doubt; though you've really overdrawn your account on that benefit already) that you simply interpreted the term "Darwinian evolution" much more narrowly that it was intended. I'm inclined to attach Darwin's name to the general principle of evolution through differential survival of replicators regardless of what the replicators are. In a clash of cultures, I tend to think of it as obvious that the replicators involved are memes. I'd be surprised if genes have had any meaningful input into memetic evolution since sometime before the start of the neolithic (which I suspect was, in essence, the start of what Havelock called oral culture).

re ambiguity

You falsely asserted a "logic" that did not exist in my remarks, would not have occurred to me, and I'm pretty much disgusted that it occurred to you

Part of the point of critique is to uncover internal logics that are not initially apparent to the people using them.

I'm inclined to attach Darwin's name to the general principle of evolution through differential survival of replicators regardless of what the replicators are.

That has been clear from the start and nothing I've said contradicts that. Quite the contrary, in fact. As I said: Eugenics is not tied to literal genomic heritability.

In a clash of cultures, I tend to think of it as obvious that the replicators involved are memes.

There is no scientific theory of "memes" that supports such a statement. No scientific theory of "cultures" that "clash".

Nevertheless, suppose one believes such things. Is such a belief inconsequential? Or does it lead one to conclusions that follow from the belief?

If the unscientific beliefs that you hold about cultures, culture clashes, and memes lead to inferential conclusions, then it contains an internal logic. We can bring that logic to the surface and examine its consequences, and its basis in material reality.

What does that logic recommend to, for example, an army general? the board of directors of a tech company? An undergraduate studying programming?

If a snot-nosed naive undergrad finds out that super-smart John Schutt characterizes the genocide of indigenous people's as "natural selection in action" in a "culture clash" driven by "replicator-memes" -- how should that undergrad apply this knowledge as he rises in authority in industry or government?

I tend to think of it as obvious that the replicators involved are memes.

To get this far, you have posited "cultures", "replicators", and "memes" which are related by some logic, the gist of which I guess is supposed to be obvious.

If we believe in the unscientific claims about cultures, replicators, memes, and so on: wasn't Whitman's cheer-leading for genocide spot on? How do avoid that conclusion? Hey, it's inevitable. Bring it on. Rat v. lesser rat.

p.s.: I understand you feel insulted but you actually seem smart and respectable to me, hence my frankness towards you here. I think Dawkins et al on memes are risible.

I would recommend as an introduction to historical materialism part I of Marx's "A critique of the German ideology". I think you'll appreciate some of the humor at the beginning but also the kind of anti-mimetic stance of historical materialism (crudely: material reality of production produces social consciousness).

But then there is the question of ideology, which is closer to the crude concept of memes, and how, indeed, shifts in ideas come about, spread, and participate in the material reproduction of society over time. For that, a good starting point might be Foucault's "Archaeology of Knowledge", starting with the discourse on knowledge that is reproduced as its appendix.

"aggressive culture"

The "aggressive culture" most relevant to the European dominance of the Americas is probably the smallpox virus:

A specific example was Cortes' invasion of Mexico. Before his arrival, the Mexican population is estimated to have been around 25 to 30 million. Fifty years later, the Mexican population was reduced to 3 million, mainly by infectious disease. This shows the main effect of the arrival of Europeans in the new world. With no natural immunity against these pathogens, native Americans died in huge numbers. The eminent Yale historian David Brion Davis describes this as "the greatest genocide in the history of man. Yet it's increasingly clear that most of the carnage had nothing to do with European barbarism. The worst of the suffering was caused not by swords or guns but by germs”.
The loss of 90% of your population would be enough to make resisting invaders difficult just by itself. Now try to imagine the psychological impact on the survivors, and the social chaos resulting from having your entire societal infrastructure collapse. The same pattern was repeated throughout the Americas. None of this has anything to do with any genetic or memetic superiority of the European invaders. The Europeans were just plain lucky that (a) they carried nasty diseases the Americans weren't immune to, and (b) the Americans didn't have any equally virulent and lethal diseases to pass back to the Europeans.

Not that any of this has anything to do with programming languages. So I'll try to make this my only contribution to this particular thread.

footnote to "aggressive culture"

I don't think it is right to say, as the quoted author does:

Yet it's increasingly clear that most of the carnage had nothing to do with European barbarism. The worst of the suffering was caused not by swords or guns but by germs”.

The suggestion is that European barbarism is absolved from the majority of the genocide. We can safely reject that conclusion.

For as Roxanne Dunbar-Ortiz put it:

The colonization of North America was genocidal by plan, not simply the tragic fate of populations lacking immunity to disease. In the case of the Jewish Holocaust, no one denies that more Jews died of starvation, overwork and disease under Nazi incarceration than died in gas ovens, yet the acts of creating and maintaining the conditions that led to those deaths clearly constitute genocide.

footnote to the footnote

I'm not suggesting that European barbarism is absolved. I don't think the author was either (although I'm looking only at the quote that was on Wikipedia, so I could be wrong). Rather, my point was that European barbarism wasn't the deciding factor in the eventual dominance of the Europeans. It's unlikely that Pizarro could have taken the Incan empire if it wasn't being crushed by a smallpox epidemic, and it's unlikely that Jamestown or the other early English settlements would have expanded if the local Native Americans had not been essentially eliminated by various epidemics. But there's no denying the barbarism of the Europeans, going all the way back to Columbus's enslavement and torture of the the natives on the very first island he reached.

On the other hand, I don't think it's reasonable to assume that the Europeans of the time understood that they were bringing diseases or what the impact of those diseases would be. So saying that the colonization of the Americas was "genocidal by plan" seems a bit of a stretch.

re footnotes and absolution

I'm not suggesting that European barbarism is absolved.

I did not mean to say that you were. It was clear that you were not.

I don't think the author was either

I can only take Cowley's words as they are.

It's unlikely that Pizarro could have taken the Incan empire if it wasn't being crushed by a smallpox epidemic, and it's unlikely that Jamestown or the other early English settlements would have expanded if the local Native Americans had not been essentially eliminated by various epidemics.

I wouldn't venture to speculate but conquest was of course not a necessary reaction to a weakness of indigenous people.

I don't think it's reasonable to assume that the Europeans of the time understood that they were bringing diseases or what the impact of those diseases would be. So saying that the colonization of the Americas was "genocidal by plan" seems a bit of a stretch.

Biological warfare is ancient knowledge but it was not (with local exceptions) an overt, broad strategy of colonization of North America, sure.

"Genocidal by plan" refers to the plan to colonize by any means necessary -- which is an undisputed thing on paper contemporary to the time.

The Europeans were just

The Europeans were just plain lucky that (a) they carried nasty diseases the Americans weren't immune to, and (b) the Americans didn't have any equally virulent and lethal diseases to pass back to the Europeans.

While a good point, I'm not sure I'd call that luck: European culture encouraged living in cities in close proximity to many other humans, with frequent travel between them, and the subsequent lack of sanitation was a breeding ground for disease that spread easily. The Native Americans lived in smaller nomadic communities that didn't suffer these problems, so it's unfortunately not surprising they had almost no defence. Was it "luck" by default if it wasn't intentional?

Sources of disease

The Native Americans lived in smaller nomadic communities that didn't suffer these problems, so it's unfortunately not surprising they had almost no defence.

Not really. The idea that Native Americans all lived in small nomadic communities is largely a Hollywood myth. The Incan empire was huge and well-organized, with frequent travel over roads that still exist today. The Aztec capital of Tenochtitlan is generally considered to have been one of the largest cities in the world at the time (100,000-300,000 people depending on which estimates you believe). Cahokia, located in the modern day United States, had some 40,000 people living in close proximity to each other at its peak. Other dense population centers of various sizes existed throughout the Americas.

The diseases that Europeans carried were not a result of dense city living. Rather, they were largely picked up as result of close proximity to domestic animals such as cows and pigs. Native American societies didn't have the same kinds of domesticated animals. And even if they did have them, there's no guarantee that the same kind of diseases and immunities would have developed.

That is both historically

That is both historically ignorant and it makes an offensive eugenics claim.

John didn't claim that this was a good thing, or that the Europeans proved they were inherently superior, either of which would have qualified it as eugenics, John merely stated that history followed a familiar pattern. Your outrage is misplaced.

re that is both historically

John didn't claim that this was a good thing,

Not at issue: John's value system one way or the other.

At issue: John's explanatory logic for history.

Again, if John's memetic narrative of history was correct, then wasn't Walt Whitman's cheer-leading for genocide as inevitable progress also correct?

Again, if John's memetic

Again, if John's memetic narrative of history was correct, then wasn't Walt Whitman's cheer-leading for genocide as inevitable progress also correct?

No, because "cheer-leading genocide" and the outcome being "progress" are value judgments. I thought I made that clear when I said John didn't make a value judgment on the outcome or its mechanism.

re Again, if...

"cheer-leading genocide" and the outcome being "progress" are value judgments. I thought I made that clear when I said John didn't make a value judgment on the outcome or its mechanism.

In the earlier quoted passage, Whitman saw genocide as the inevitable consequence of a law of nature, and earlier John expressed at this same logic of "evolutionary" inevitability.

If their shared logic of inevitability is correct, isn't Whitman's celebration of this supposed inevitability just a cheerful take on reality that humans must passively accept other than insofar as they can accelerate and exploit the genocide?

If their shared logic of

If their shared logic of inevitability is correct, isn't Whitman's celebration of this supposed inevitability just a cheerful take on reality that humans must passively accept other than insofar as they can accelerate and exploit the genocide?

The inevitability of every single person's death is not cause to accelerate and exploit their demise by murdering them and taking their bike. I think this is obvious. It's also appalling to cheer on someone else committing a murder and taking the victim's bike, even if the victim was a jerk.

The inevitability of a person's death does not entail that cheering for their death is acceptable; even if you posit an additional value judgment that the murder was somehow justified/deserved, it's a questionable position. Cheer that justice was done, but be saddened that it had to cost a life.

This will be my last post on this topic since I think it's hopefully pretty well established by now that John didn't mean anything nefarious by his comments.

re shared logic

I think it's hopefully pretty well established by now that John didn't mean anything nefarious by his comments.

I don't think anyone at all has suggested otherwise.

While this thread has been

While this thread has been mostly for fun, and I saw no problem with the discussion diverging to topics not really appropriate for LtU, I think it might be a good time to stop. That is, unless some insights related to PL have yet to emerge.

Final tally of votes: 75% of 197 votes were for the last option, indicating a belief the programming as we know (and love) is here to stay for at least 30 years.

It seems there are two

It seems there are two schools at work in this thread. One focused on programming as a method of solving concrete problems, leading to debates about NN, machine learning etc. And a second school, concerned with programming as an expressive medium used by humans. Maybe, when the Singularity hits, programming language research will be focus on, uh.. notation as a tool of thought? I seem to recall someone suggesting that programs are for people to read and only incidentally for machines to execute? Wasn't it in some book?

Or maybe programming should

Or maybe programming should be like writing a book, and let's implement a typesetting language while we are at it. No one will actual ever read the code, but it will be beautiful anyways.

No one will actual ever read

No one will actual ever read the code

You meant "book", right?

Inflating the stats

Everybody has read it really, but many programmers pretend that they haven't so that they can be down with the kids and their Node.JS

I read the code

Is this a reference to Knuth? I read the code and have my check for one hexadecimal dollar to prove it.

I am with Stepanov on this one, algorithms are not written and done with, they are things of beauty that get refined over time. I would like to see an on-line peer-reviewed algorithm archive where people would get their improvements to existing implementations and new algorithms (as judged by the peer-panel) published. There is as much merit in improving the implementation of an old algorithm as developing a new one. If there was enough interest I would set up and host a site to do this.

Peer review doesn't scale.

Peer review doesn't scale. Code wiki's should be a thing, take advantage of the crowd.

Quality

The point is to curate the 'best' version of algorithms. Best has to have some kind of consensus, but it probably needs to be an educated consensus.

I think implementation

I think implementation concerns are multi-dimensional. There is no single "best".

Implementation of Algorithms

I think an important point for this is a suitable generic programming framework. If you abstract the algorithms over the type of iterator (data access pattern) they operate on, then you get distinct sub-versions of algorithms. For example, reversing the data in-place, in a container referenced by an indexed-iterator (code from Stepanov's "Elements of Programming"):

template<typename I>
   requires(Mutable(I) && IndexedIterator(I))
void reverse_n_indexed(I f, DistanceType(I) n) {
   // Precondition: mutable_counted_range(f, n)
   DistanceType(I) i(0);
   n = predecessor(n);
   while (i < n) {
      exchange_values(f + i, f + n);
      i = successor(i);
      n = predecessor(n);
   }
}

However not all containers provide (efficient) indexed-iterators, so here is a different reverse algorithm that only requires bidirectional iterators:

template<typename I>
   requires(Mutable(I) && BidirectionalIterator(I))
void reverse_bidirectional(I f, I l) {
   // Precondition: mutable_bounded_range(f, l)
   while (true) {
      if (f == l) return;
      l = predecessor(l);
      if (f == l) return;
      exchange_values(f, l);
      f = successor(f);
   }
}

It is important that there is a single framework, into which all the algorithms fit, and that framework is part of the iterative improvement, so that better abstractions, enable better algorithms. I think its clear you would have a hard time improving "reverse_n_indexed", but the idea would be to slowly expand the topics covered, refining the algorithms and abstractions. You would stars by gathering a bunch of related algorithms for a topic implemented in a non-generic way, and then derive the interfaces necessary to abstract those algorithms. For example 'parallel algorithms' would be a separate topic, etc.

Beautiful

I'd like to see it. I could imagine that many of the audience to Complexity Zoo would be interested in using it. There is a neat site that attempts something in a related area: Rosetta stone. In that case the tasks are very simplistic things and the focus is on maximising the number of languages that they are implemented in.

Having a peer-reviewed list of problems, algorithms to solve them and implementations of those algorithms would be a valuable resource.

Rosettacode

I think you mean http://rosettacode.org/

To see how this works, I

To see how this works, I highly recommend the Programming Pearls books.

One term, when the

One term, when the instructor gave us three TAs our pre-term briefing, he said, 'I'm going to try something different this term. I want you grade the students' work on beauty.' Of possible ugly characteristics of a program, not working correctly is high on the list, of course. But at the end of the term, when I was cleaning out the drawer of my desk where I'd kept old homework assignments, it was striking that the first assignments were full of badly formatted code with no comments, listings hand-written in pencil on pages torn out of a spiral notebook, and the like, while the assignments from the end of the term were laser-printed, neatly formatted and lucidly documented. It crossed my mind that we'd actually taught the students some habits that might be much more broadly useful to them in their future lives than the specific content of the class. (Not least if, as the saying goes, the programmer who later has to maintain their code is a homicidal maniac who knows where they live.)

Grading on beauty

This is interesting. How did you document and explain your grading choices to the student? I would suppose that you need to provide excellent feedback for them to improve so quickly.