What I mean by that is that Berlusconi was a rich man whose political beliefs didn't fit perfectly into a major party (and won because of disaffection with mainstream politics) and ran the country to indulge and enrich himself.
Obviously, you don't know much about what fascists actually do to political opponents.
Whatever works.
But for the record, I agree that characterising Trump as the second coming of Mussolini is just showing ignorance of the many ways that democracy has been hacked over the years. He is probably closer to the second coming of Berlusconi.
Instead of blaming Social Media, why not get rid of the root problem, religion?
If we didn't kill each other over gods, we'd kill each other over economic systems or text editors. People require a good excuse to be bad people, but it doesn't really matter what the excuse is.
The second Iraq war was fought on the pretext of "freedom" and "democracy". How about we get rid of those? That'd fix the problem, right?
RSS is my portal to the Internet. I don't get any news from social media. What I get from social media isn't "news" in any meaningful sense. It's interaction with friends that I rarely see in person.
3. When he talks about "modern languages," he's clearly referring to languages that look and feel a lot like Python. Mainly Python.
Right, so by "modern", he's talking about the state of the art of interpreted languages as it was a quarter of a century ago. As in, before Haskell had constructor classes.
OO is not an overblown methodology. OO designs are so popular because they reduce complexity (when implemented properly) by representing logic in the form of re-usable, extensible objects. Opposition to OO design typically comes from junior programmers who haven't yet struggled to maintain or update existing, non-OO systems.
That was the case in the mid-90s, but it's simply not true today. Today, junior programmers are trained on object-oriented languages, and most of the opposition comes from senior programmers who have struggled to maintain existing non-reusable, non-extensible, and (especially) non-scalable OO systems which have bloated over time.
It took the existence of legacy OO systems to truly understand this.
Yet, I still see OO heads around who think; the more it inherits, the more it is OO.
You can thank Grady Booch for this. (The other early 90s "gurus" can share some of the blame, but Booch is the worst offender.)
Compare Alan Kay, who coined the term "object-oriented":
OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them.
with Grady Booch, who has some very expensive CASE tools to sell you:
Object-oriented programming is a method of implementation in which programs are organized as cooperative collections of objects, each of which represents an instance of some class, and whose classes are all members of a hierarchy of classes united via inheritance relationships.
There are three important parts to this definition: object-oriented programming (1) uses objects, not algorithms, as its fundamental logical building blocks (the “part of” hierarchy [...]); (2) each object is an instance of some class; and (3) classes are related to one another via inheritance relationships (the "is a" hierarchy [...]). A program may appear to be object-oriented, but if any of these elements is missing, it is not an object-oriented program. Specifically, programming without inheritance is distinctly not object-oriented; we call it programming with abstract data types.
Now to be fair to Booch, he was working at a time when it was believed that analysis was the really hard part of software development. You have to remember that this was a boom era when old paper-based businesses were computerising their processes. There was a tension between keeping continuity between the old business and the new one (it had to be close enough that you weren't essentially rebuilding the business from the ground up) while also taking the opportunity to do things better. Understanding precisely what the new system should do was a very hard problem.
But are just coded procedural inside a class wrapper.
That's an extremely reasonable approach. If the problem is procedural, but you're working in an OO language without a real module system, many programmers use the object system as a de facto module system. Modularity is important.
However if I were interviewing for a software development shop making some big clunky product I can just as easilly state all the greats OO has to offer.
Sure, but if you don't want your product to be unnecessarily big and clunky, you could consider hiring programmers with some self-restraint. And possibly better taste.
Look at JavaScript. ECMAScript 2015 finally added something kind of resembling real classes. Why is that?
Because the first job of JS has always been to manipulate DOM which was designed in the "90s class hierarchy bloat" aesthetic. The need, but not the ability, was there from the beginning.
If Eich had managed to get Scheme in, we wouldn't be having this conversation now.
Tha half-arsed Smalltalk/Erlang style OO that node.js developers seem to be embracing is more "real" than this. I do not think that OO is a failure. I think that Alan Kay has beaten Grady Booch but the world hasn't realised it yet.
It was overblown, but I think it's settling down now. There is a trend towards non-Simula object models (e.g. prototypes), pure (or as pure as possible) functional programming, the actor model, generative programming (e.g. "Modern C++") and so on.
But the bottleneck is not CPU itself for a good many applications.
That's true, but it's also not relevant. For most "apps", the main issues are battery life and responsiveness. Multi-core is increasingly being seen as a tool to increase responsiveness rather than throughput, because the app looks like it hasn't fallen asleep even if it hasn't done the thing that the user asked yet.
If I ask a database to do a sort, it may use parallelism under the hood, [...]
Interesting example. I wrote the sort subsystem for a (non-SQL) DBMS in one of my previous jobs, so... I guess this illustrates that we come from different perspectives on this point. In case you are curious, it was single-threaded, although it was designed to work on a clustered database, so it was parallel in the sense that it did parallel sorting across multiple machines in a cluster (which is what we called it before we called it a "cloud").
That "root engine" may indeed use FP, but the model maker doesn't have to know or care.
Right, and that's the advantage: Pure functional programming ensures that the client doesn't have to care, because workers are guaranteed not to modify anything that they are not supposed to because they are pure functions.
Map/reduce was all the rage a couple of years ago. I think the main advantage was not the map/reduce model, but the realisation that when you have "big data", you take the code to the data rather than taking the data to the code. But on top of that, forcing yourself into a pure functional style means that your code can run anywhere because it doesn't care about the context in which it runs.
Freakonomics by Dubner and Levitt. Assuming you already know the mechanics of being in business, the most important lesson you need to know is that people respond to incentives, but they rarely respond in the way you anticipated.
I can't imagine why anyone would want to emulate Steve Jobs. He died because he believed in woo-woo quack cures. I realise that denying reality is valued in the entrepreneur business, but surely that's why you should stand out.
To say that "there can be no free market in the absence of regulation" is equivalent to saying that there can be no free market, period.
For a fundamentalist definition of "free", that's accurate. There can be no free market. There is only "more free" or "less free". And even then, you're often talking about various freedoms traded off against each other.
The real world is a balancing act which requires constant, nimble adjustment. Neither Bloated Government nor The Mythical Hand of the Market can efficiently supply this by itself.
What I mean by that is that Berlusconi was a rich man whose political beliefs didn't fit perfectly into a major party (and won because of disaffection with mainstream politics) and ran the country to indulge and enrich himself.
Obviously, you don't know much about what fascists actually do to political opponents.
Whatever works.
But for the record, I agree that characterising Trump as the second coming of Mussolini is just showing ignorance of the many ways that democracy has been hacked over the years. He is probably closer to the second coming of Berlusconi.
Yup, that's very accurate. My point is that pretext heresies don't have to be religious.
Here's an example then. If speed wasn't an issue, every data structure could be a database.
Emit more carbon for great good!
Instead of blaming Social Media, why not get rid of the root problem, religion?
If we didn't kill each other over gods, we'd kill each other over economic systems or text editors. People require a good excuse to be bad people, but it doesn't really matter what the excuse is.
The second Iraq war was fought on the pretext of "freedom" and "democracy". How about we get rid of those? That'd fix the problem, right?
As Yes Minister famously pointed out, this is an irregular verb.
I have an independent mind.
You are eccentric.
He/she is batshit crazy.
You're a decade too late to make that complaint. It's all AI, it's just that the trendiest part changes every decade.
1950s: Electronic brains
1960s: Perceptrons
1970s: Neural networks
1980s: Expert systems
1990s: Intelligent agents
2000s: Machine learning
2010s: Deep learning
Oh, and of course, all my podcasts (invaluable since I commute by mass transit) are delivered by RSS.
RSS is my portal to the Internet. I don't get any news from social media. What I get from social media isn't "news" in any meaningful sense. It's interaction with friends that I rarely see in person.
FORTRAN was the first of the 3rd generation languages.
It's a debatable point. A-0 is often credited as being the first, although FORTRAN was arguably the first 3GL to have all the pieces in place.
Octal was for computers which hadn't standardised on word sizes that were a power of two bits.
No, a real language should allow you to program anything, including device drivers.
Many languages allow you to program device drivers. Unfortunately, not all operating systems are quite as agreeable.
Yes, it scales to TWO-line programs, which are unreadable but do the job of 1000 lines of Python.
3. When he talks about "modern languages," he's clearly referring to languages that look and feel a lot like Python. Mainly Python.
Right, so by "modern", he's talking about the state of the art of interpreted languages as it was a quarter of a century ago. As in, before Haskell had constructor classes.
OO is not an overblown methodology. OO designs are so popular because they reduce complexity (when implemented properly) by representing logic in the form of re-usable, extensible objects. Opposition to OO design typically comes from junior programmers who haven't yet struggled to maintain or update existing, non-OO systems.
That was the case in the mid-90s, but it's simply not true today. Today, junior programmers are trained on object-oriented languages, and most of the opposition comes from senior programmers who have struggled to maintain existing non-reusable, non-extensible, and (especially) non-scalable OO systems which have bloated over time.
It took the existence of legacy OO systems to truly understand this.
Yet, I still see OO heads around who think; the more it inherits, the more it is OO.
You can thank Grady Booch for this. (The other early 90s "gurus" can share some of the blame, but Booch is the worst offender.)
Compare Alan Kay, who coined the term "object-oriented":
OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them.
with Grady Booch, who has some very expensive CASE tools to sell you:
Object-oriented programming is a method of implementation in which programs are organized as cooperative collections of objects, each of which represents an instance of some class, and whose classes are all members of a hierarchy of classes united via inheritance relationships.
There are three important parts to this definition: object-oriented programming (1) uses objects, not algorithms, as its fundamental logical building blocks (the “part of” hierarchy [...]); (2) each object is an instance of some class; and (3) classes are related to one another via inheritance relationships (the "is a" hierarchy [...]). A program may appear to be object-oriented, but if any of these elements is missing, it is not an object-oriented program. Specifically, programming without inheritance is distinctly not object-oriented; we call it programming with abstract data types.
Now to be fair to Booch, he was working at a time when it was believed that analysis was the really hard part of software development. You have to remember that this was a boom era when old paper-based businesses were computerising their processes. There was a tension between keeping continuity between the old business and the new one (it had to be close enough that you weren't essentially rebuilding the business from the ground up) while also taking the opportunity to do things better. Understanding precisely what the new system should do was a very hard problem.
Things have changed.
But are just coded procedural inside a class wrapper.
That's an extremely reasonable approach. If the problem is procedural, but you're working in an OO language without a real module system, many programmers use the object system as a de facto module system. Modularity is important.
However if I were interviewing for a software development shop making some big clunky product I can just as easilly state all the greats OO has to offer.
Sure, but if you don't want your product to be unnecessarily big and clunky, you could consider hiring programmers with some self-restraint. And possibly better taste.
Yes, but also no.
Look at JavaScript. ECMAScript 2015 finally added something kind of resembling real classes. Why is that?
Because the first job of JS has always been to manipulate DOM which was designed in the "90s class hierarchy bloat" aesthetic. The need, but not the ability, was there from the beginning.
If Eich had managed to get Scheme in, we wouldn't be having this conversation now.
Tha half-arsed Smalltalk/Erlang style OO that node.js developers seem to be embracing is more "real" than this. I do not think that OO is a failure. I think that Alan Kay has beaten Grady Booch but the world hasn't realised it yet.
It was overblown, but I think it's settling down now. There is a trend towards non-Simula object models (e.g. prototypes), pure (or as pure as possible) functional programming, the actor model, generative programming (e.g. "Modern C++") and so on.
"The Circle" is typical Dave Eggers. I couldn't finish it.
Fair enough.
But the bottleneck is not CPU itself for a good many applications.
That's true, but it's also not relevant. For most "apps", the main issues are battery life and responsiveness. Multi-core is increasingly being seen as a tool to increase responsiveness rather than throughput, because the app looks like it hasn't fallen asleep even if it hasn't done the thing that the user asked yet.
If I ask a database to do a sort, it may use parallelism under the hood, [...]
Interesting example. I wrote the sort subsystem for a (non-SQL) DBMS in one of my previous jobs, so... I guess this illustrates that we come from different perspectives on this point. In case you are curious, it was single-threaded, although it was designed to work on a clustered database, so it was parallel in the sense that it did parallel sorting across multiple machines in a cluster (which is what we called it before we called it a "cloud").
That "root engine" may indeed use FP, but the model maker doesn't have to know or care.
Right, and that's the advantage: Pure functional programming ensures that the client doesn't have to care, because workers are guaranteed not to modify anything that they are not supposed to because they are pure functions.
Map/reduce was all the rage a couple of years ago. I think the main advantage was not the map/reduce model, but the realisation that when you have "big data", you take the code to the data rather than taking the data to the code. But on top of that, forcing yourself into a pure functional style means that your code can run anywhere because it doesn't care about the context in which it runs.
I would add "Microserfs" and possibly "The Circle" to that list.
Freakonomics by Dubner and Levitt. Assuming you already know the mechanics of being in business, the most important lesson you need to know is that people respond to incentives, but they rarely respond in the way you anticipated.
I can't imagine why anyone would want to emulate Steve Jobs. He died because he believed in woo-woo quack cures. I realise that denying reality is valued in the entrepreneur business, but surely that's why you should stand out.
To say that "there can be no free market in the absence of regulation" is equivalent to saying that there can be no free market, period.
For a fundamentalist definition of "free", that's accurate. There can be no free market. There is only "more free" or "less free". And even then, you're often talking about various freedoms traded off against each other.
The real world is a balancing act which requires constant, nimble adjustment. Neither Bloated Government nor The Mythical Hand of the Market can efficiently supply this by itself.