-14 karma · joined April 11, 2019
Pre-generics Java is about the appropriate amount of language complexity for our current lingua franca
Assembly is bad because it is typeless. Because it is typeless, there is no way to check for program correctness. Rust is okay because it doesn't require garbage collection and types, but the best language would be C with a highly-elaborate strong type system and no closures or other unsuitable concepts for systems programming.
Functional programming languages have good ideas, like type systems or lazy evaluation. But many of these ideas are NOT INHERENT to the paradigm. Perl6 incorporates almost every functional programming idea but as an imperative language.
You guys sound like the teenager whose parents (priests and theologians) are "always going on about that" wrt his drug usage. "No mom and pop. I don't have a drug problem. I can self-correct myself any time I want in time for Varsity."
You are wasting your time. All people of faith believe that everyone else's beliefs are based on insane delusions and that their beliefs is based on evidence and truth and so they cannot do an unbiased comparison of their beliefs with others. Comparing belief in e.g. rights for sexual minorities with e.g. Islam is always going to be seen as a false equivalency. Just like the Muslim is going to see a comparsion of belief in e.g. feminism as a false equivalency with Islam. You see, the Quran is based on truth while feminism is based on an insane delusion.
They can't both be right. At least one of them is wrong.
Fortune 500 companies aren't attracted to functional. They're attracted to the TYPE systems of many functional languages. And type systems are good. But you can build e.g. a dialect of C or Pascal using those exact same type systems with no functional programming at all.
Continuations are equivalent to memcpy... which should almost never be used. And tail-optimized recursive functions are still difficult to reason about.
And tail-call optimization (making stack calls constant) is... kind of self-defeating... because the only advantage of recursion is that it has a stack built into the function call/return operations. Anything a recursive algorithm can do is equivalent just a for loop and a stack data structure. And if you're tail-call optimizing it so that it has a stack parameter... then you're just using a clever way to write a for-loop :D Except functional doesn't allow for you to mutate a preexisting stack so you're also wasting space recreating a new stack each function call.
Yeah. Abstract math almost rarely transfers directly to the computer world. There's a reason why the pure functional & concurrent language Erlang was only used in telecoms and languished in obscurity: because that was the only domain it worked well in.
Closures are basically global variables and inherit all of the problems with global variables.
Continuations are basically goto's or memcpy and inherit all of the problems with goto's and memcpy.
Functional programming is ALL of the bad programming practices of the '80s. But because it's more abstract and mathematical it gets a free pass. Nevermind the fact that computer science is not mathematics. And the benefits of mathematical abstraction DO NOT TRANSFER if they inherently violate the commandments of bad ideas like global variables and goto's.
There are solutions to ALL OF the object oriented problems--including the diamond problem, circle-ellipse problem, and overuse of type hierarchies. There are no solutions to the functional programming problems because they inherently incorporate bad ideas described in paragraphs 1, 2, & 3.
I know high-school dropouts and graduates from DeVry University who understand design patterns. Category theory--even basic category theory--isn't taught to undergraduate math majors (except maybe at MIT to honors students).
I mean, I appreciate functional programmers who want to do it because it is hardcore... but that's why they do it: because it's hardcore.
Now if you'll excuse me once I complete my Ph.D. dissertation I might be able to finish my text editor I'm programming in Haskell.
Reflect on this: there are at least 200 factual errors on the front page comment sections of Hacker News. Do you nod along while you read it being entertained, or do you pinpoint the errors?
I'm not even talking about nigling details. I saw one comment about relativity with a huge scientific howler right in the middle of it. And people upvoted it sky high.
The people who upvoted it were being passive. The users of this site receive a passive experience and generally speaking are too childish to handle asserting their own mind. Even comments are largely passive. People don't even reflect on the subject-verb agreement of the sentences that they write. They are so childish that asserting themselves by the tiniest amount on their writing is not trivial nor has it reached the point of automaticity.
How does science work? It's largely like reading Hacker News. Scientists download research papers, understand them, and test them... and occasionally come up with new directions and ways (equiv 2 commenting on the newslink).
None of that are assertive. When an assertive person presents himself on a subject, he causes a PARADIGM SHIFT. He doesn't go along with the presuppositions: he creates his own presuppositions. This is Thomas Kuhn's "groundbreaking" thesis on scientific progress: some people internalize other people's presuppositions until they are fossilized in their brains resulting in them kicking and screaming on their death bed when it's time to admit it was a bad idea... or some people are like creative genius Thomas Hobbes who said he didn't bother reading all the failures before him because he was too busy thinking his own presuppositions.
You can't go faster than the speed of light in your reference frame because you are always doing zero in your reference frame.
This is the narcissist interpretation of quantum mechanics. No object constancy, quantum consciousness, Hume's "I believe it when I see it" are all narcissist perspectives on objects.
No they can't because sophonts aren't voluntarists. Sophonts are intellectualists. Although judging by your advocacy of the otaku theory of biology you probably have a voluntarist personality.
By the good regulator theorem, human cognition (intuition is bergson's word not mine) must be just as good as scientists-at-their-most-careful or I and you would be dead.
representation = passive; science isn't assertive. Science is purely passive which is why scientists can never assert something is true but only that it hasn't been disproven. A scientist can say "this is what general relativity says, this is how general relativity maps onto the bending of light, apply it to your work or not. Take it or leave it."
scientism = passive-aggressive; it is assertive by asserting "no metaphysical woo" passively using representations provided by science. They're like the coworker who passively expresses how he feels about his boss by little gestures.
cognition (what Bergson called intuition) = assertive; it reaches knowledge of truth which is why it can definitely assert something is true. But it isn't forceful so it can't convince other people which is why it only reaches up to your being.
Computer programs exist inseparably from the operating system. The type of a circle might change to that of an ellipse. The size of a file can only be known at runtime. The only way the compiler can catch all errors is if no object is mutable and everything except for closed variables is allocated on the stack. And both of those preconditions are insane.
This is still superior to dynamic typed languages because it tells you exactly what the type problem is and where.
Now let's have String index(arr:int[], i:(Fin(arr):int)), where FinInt(arr) is a dependent type that is an integer between zero and the length of the array. As the code is compiling, we have this
int i = 24951; String str = index(f, i);
The file exists in the future after the compilation. If the future file has at least 24951+1 lines, then the compiler can verify that i < n and that i is correctly typed. But if the file is short, then the type of i is incorrect. So at compile-type the type of i is indeterminate.