Thus, it may not match or be part of the evolution pattern you outlined.
Of course. For every highbrow concept that became mainstream, there's three that only became niche and another 20 which died off.
I think that functional programming (and I include the actor model) is more important now because of the trend towards more and more cores on the one machine. Purely functional design scales to lots of cores in a way that sequential code does not. Whether or not the industry realises this is a separate question.
"High brow" programming has never proven itself in practice for multiple projects.
Sure it has. Assembler proved itself against writing binary, high-level languages proved themselves against assembler, managed languages proved themselves against languages compiled to machine code, regular expressions proved themselves against writing custom parsers... most new technologies were "high brow" once.
My impression is that functional programming comes from Lambda calculus which was introduced in the 1930's.
Mostly correct. The Lisp family of languages borrow the lambda notation, but they're not based on lambda calculus in the Church/Tarski sense.
The differences (and the differences between functional programming and the theory of sets-and-functions that we teach to high school students) don't really matter at a basic level.
How are functional programs translated into machine code?
Here you go. This book is 30 years old, but the basic principles are the same.
That same complex algorithm that is simplified thanks to lambda calculus techniques might be so difficult to translate to machine code that the resulting program is less efficient.
For what it's worth, the same is true of any high-level language. CPUs don't understand virtual dispatch natively, either.
So if regular programmers who form the bulk of the workforce can't grok them, the languages need to be fixed, not people.
I know what you're saying, but there's a real danger here that the industry will find itself caught in a local extremum. An engineer of 1880 could easily have said that if regular engineers who form the bulk of the workforce can't understand this "electricity", then it needs to be fixed to conform to the world of steam.
If one is well versed in category theory or has spent a significant amount of time working with functor spaces, monoids, and monads, then it's much easier to understand a non-trivial application written in Haskell than the equivalent object hierarchy in an object-oriented language. The up-front cost is greater in terms of study and learning the semantics, but the end result is significantly more powerful.
I strongly suspect (but can't yet prove) that the supposed up-front cost in understanding Milner-esque functional languages is just the same as the up-front costs for Simula-style object oriented languages. The difference is that in the case of Simula-style object oriented languages, most of the up-front cost has already been largely paid by the time you come to them.
If it's any help, consider that there seems to be a significant learning cost in wrapping your brain around "real" object-oriented languages such as Smalltalk when coming from "broken Simula" object-oriented languages such as Python or C++.
We teach set/function theory and basic logic to high school students. It shouldn't be that much harder to make the very small amount of generalisation to explain the fundamentals of a modern logic-based type system.
There are several things wrong with Python, but the main thing that it has in common with Basic is that it's impossible in general to tell what a program means by looking at the source text. You can only tell by running it.
I would suggest Python. Whatever language he learns next (with the possible exception of Scheme or Haskell) will require a lot of unlearning in the future. He is better off unlearning Python's bad habits than (say) JavaScript's.
I wouldn't give up the time I had with Basic, either.
Given that 10,000 years from now the world-wide network will be unrecognisable (if there's any justice in the world), it could be the Thing of Internets.
Coincidentally, I was out walking today through a forest that was originally planted in the 1300s, in order to provide timber for the anticipated navy of the 1600s.
Was it used for that purpose? The fact that it's still there suggests not.
This was years ago, but I installed NoMachine's NX server (version 3.x) and things worked very smoothly, almost as fast as being local. NX eliminates a lot of the "back and forth" in "X" which demonstrates that you don't really need that extra overhead in the first place.
I had a similar experience with lbxproxy. However, this was in the days when everything was Xt/Athena/Motif/whatever. QTK and Qt may have changed things.
Apart from 2001, which was mentioned in the very comment you responded to, I would nominate The Andromeda Strain, Moon, Interstellar, and Gattaca has being hard sci-fi.
On a broader note, there is a critical mass of people who have this idea that it's possible for reviews of any artwork to be objective. This is a misunderstanding of the nature of art and art criticism. There are some things that can be objectively evaluated, but as a whole, it's entirely a matter of opinion. Expert opinion in the case of academic or journalistic critics, but opinion nonetheless.
Strangers in the night...
Thus, it may not match or be part of the evolution pattern you outlined.
Of course. For every highbrow concept that became mainstream, there's three that only became niche and another 20 which died off.
I think that functional programming (and I include the actor model) is more important now because of the trend towards more and more cores on the one machine. Purely functional design scales to lots of cores in a way that sequential code does not. Whether or not the industry realises this is a separate question.
I like to crumble up day old fecal matter from the kitty litter box to add a little bit of flavor to things.
Hey, that's how I named my startup, too!
That is some first-class word salad right there.
"High brow" programming has never proven itself in practice for multiple projects.
Sure it has. Assembler proved itself against writing binary, high-level languages proved themselves against assembler, managed languages proved themselves against languages compiled to machine code, regular expressions proved themselves against writing custom parsers... most new technologies were "high brow" once.
My impression is that functional programming comes from Lambda calculus which was introduced in the 1930's.
Mostly correct. The Lisp family of languages borrow the lambda notation, but they're not based on lambda calculus in the Church/Tarski sense.
The differences (and the differences between functional programming and the theory of sets-and-functions that we teach to high school students) don't really matter at a basic level.
How are functional programs translated into machine code?
Here you go. This book is 30 years old, but the basic principles are the same.
That same complex algorithm that is simplified thanks to lambda calculus techniques might be so difficult to translate to machine code that the resulting program is less efficient.
For what it's worth, the same is true of any high-level language. CPUs don't understand virtual dispatch natively, either.
Oh, so that carrier group really was near North Korea after all!
So if regular programmers who form the bulk of the workforce can't grok them, the languages need to be fixed, not people.
I know what you're saying, but there's a real danger here that the industry will find itself caught in a local extremum. An engineer of 1880 could easily have said that if regular engineers who form the bulk of the workforce can't understand this "electricity", then it needs to be fixed to conform to the world of steam.
The worst thing we can do as an industry is think we know what we're doing. And in a sense, we're already there.
Asking whether you like functional programming is like asking whether you like phillips head screwdrivers.
I do not. Give me JIS screwdrivers any day.
If one is well versed in category theory or has spent a significant amount of time working with functor spaces, monoids, and monads, then it's much easier to understand a non-trivial application written in Haskell than the equivalent object hierarchy in an object-oriented language. The up-front cost is greater in terms of study and learning the semantics, but the end result is significantly more powerful.
I strongly suspect (but can't yet prove) that the supposed up-front cost in understanding Milner-esque functional languages is just the same as the up-front costs for Simula-style object oriented languages. The difference is that in the case of Simula-style object oriented languages, most of the up-front cost has already been largely paid by the time you come to them.
If it's any help, consider that there seems to be a significant learning cost in wrapping your brain around "real" object-oriented languages such as Smalltalk when coming from "broken Simula" object-oriented languages such as Python or C++.
We teach set/function theory and basic logic to high school students. It shouldn't be that much harder to make the very small amount of generalisation to explain the fundamentals of a modern logic-based type system.
It only makes code more readable if you're familiar with it (functional programming).
Well that's a truism. Object-oriented programming is the same: it only makes code more readable if you're familiar with it.
The main distinction between the two, however, is that object-oriented programming was invented, but functional programming was discovered.
There are several things wrong with Python, but the main thing that it has in common with Basic is that it's impossible in general to tell what a program means by looking at the source text. You can only tell by running it.
Even JavaScript gets that correct.
I would suggest Python. Whatever language he learns next (with the possible exception of Scheme or Haskell) will require a lot of unlearning in the future. He is better off unlearning Python's bad habits than (say) JavaScript's.
I wouldn't give up the time I had with Basic, either.
Given that 10,000 years from now the world-wide network will be unrecognisable (if there's any justice in the world), it could be the Thing of Internets.
Like many from my era...
It took years to undo the damage!
Yup. And in that respect, Python is the new BASIC.
Lambda: the Ultimate Central Nervous System Stimulant
Coincidentally, I was out walking today through a forest that was originally planted in the 1300s, in order to provide timber for the anticipated navy of the 1600s.
Was it used for that purpose? The fact that it's still there suggests not.
Pics or it won't happen!
It's a self-replicating Perl program.
Thanks for stalking me, though!
This was years ago, but I installed NoMachine's NX server (version 3.x) and things worked very smoothly, almost as fast as being local. NX eliminates a lot of the "back and forth" in "X" which demonstrates that you don't really need that extra overhead in the first place.
I had a similar experience with lbxproxy. However, this was in the days when everything was Xt/Athena/Motif/whatever. QTK and Qt may have changed things.
... and such a system written in such would probably still be faster and more efficient than X!
I know you meant it as a joke, but I remember NeWS and Display PostScript.
X should not stand for all time, but there's a reason it won that particular battle.
maybe the only real hard sci fi film made
Apart from 2001, which was mentioned in the very comment you responded to, I would nominate The Andromeda Strain, Moon, Interstellar, and Gattaca has being hard sci-fi.
The hive mind works!
On a broader note, there is a critical mass of people who have this idea that it's possible for reviews of any artwork to be objective. This is a misunderstanding of the nature of art and art criticism. There are some things that can be objectively evaluated, but as a whole, it's entirely a matter of opinion. Expert opinion in the case of academic or journalistic critics, but opinion nonetheless.
Sounds like the result of the Erdogan referendum.
Hang on, isn't this a SJW-centric production? Or did I miss the memo from 4chan about what is to be labelled "SJW" this month?