HNHacker News
TopNewBestAskShowJobs

nendroid

10 karma · joined September 25, 2020

submissionscomments
nendroid··on Why I Prefer Functional Programming
Case in point, This guy turned what was just fact checking into something personal. See, it's not about being civil. That's just the way people like to think they are. The reality is most people can't accept being wrong and they can't accept opinions they disagree with and the irony is everyone believes they're above this base behavior.

No one is above it.

nendroid··on Dark’s new backend will be in F#
Nix has a multitude of drawbacks the biggest being learnability.
nendroid··on Leaving OCaml
>learnability

I feel this is the single most important causative factor for language popularity.

Javascript may have much more bad parts to the language than say Haskell but it's far easier for a programmer to learn all the bad parts of javascript and avoid those bad parts then for him to learn all the good parts of haskell and use those good parts.

nendroid··on Why I Prefer Functional Programming
"In computer science, imperative programming is a programming paradigm that uses statements that change a program's state."

The above quote is ripped straight out of wikipedia's definition of imperative programming showing that what I said wasn't a misunderstanding but an official definition.

The definition of imperative programming must include mutation otherwise it's isomorphic to functional programming. Because functional programming is simply statements without mutation.

nendroid··on Why I Prefer Functional Programming
I see no personal attack. Technically speaking.
nendroid··on Why I Prefer Functional Programming
https://www.wikiwand.com/en/Imperative_programming

"In computer science, imperative programming is a programming paradigm that uses statements that change a program's state."

You will see from the quotation above. The very act of changing state is an imperative style by definition. The purpose of mutable state is for it to change. So mutable state = imperative instructions.

>You don't have to listen to me, but you should seek out a second opinion from a competent person who can get through to you.

I'll throw that advice back at you. But you don't need to find that person. I'm right here in front of you telling you how it is.

>Everything I said in my last post is basic, well-understood computing knowledge. If you want me to disagree with it, you need to find yourself a competent computer scientist to aid you in framing your ideas in a way that is comprehensible with respect to the subject matter.

Yeah but you didn't account for the practical parts of computing. The theoretical parts often deal with machines that can't be realized in reality. It's pretty much common sense. How do you represent a function call without mutable state? How can you have a machine do an algebraic operation without mutable state? The very act of holding that information in state requires a state change meaning to even load a lambda machine with a program requires an imperative instruction.

We're also in a corner of computer science that isn't formally well defined. A language can be formally defined as pure but there's no formal theory for systems design and how the system overall influences the content of a pure SQL string in Haskell.

I define a haskell sql string to have syntactically correct SQL. The external requirements of my database are forcing me to define a string this way, is that a side effect? There's no formal rules in literature so it's just raw talking points... you won't be able to find an official source stating who's right or who's wrong.

nendroid··on Why I Prefer Functional Programming
I've been here for over 10. I've had accounts with lots of karma generated by simply agreeing with everything I read or just commenting with useless side suggestions. T

I've experimented a lot. Without changing tone just disagreeing with a popular opinion is all that you need to get voted down. I've even experimented with emotionally charged impolite popular opinions. People will vote you up just because they agree.

If I wanted a shitload of karma. I know how to get it. Removing one or two of the more "expressive" sentences above will in my experience not do much for a thread that is very very biasedly supporting FP. FP is great, I prefer it but most people cannot maintain such neutrality for their favorite paradigm. Or favorite anything for that matter.

Not to mention if you recall a while back someone posted a GPT-3 AI generated story that got voted to the front page. Most commenters didn't realize it was AI generated. A select few were able to figure it out and they posted comments that were vehemently voted down for not being in agreement with the general sentiment. HN is a technical crowd but they are not above common mob behavior.

https://www.theverge.com/2020/8/16/21371049/gpt3-hacker-news...

Scroll down to the picture. The person stated facts but his facts were misinterpreted to be attacks and he was told to be civil by someone who thought of himself as level headed. The reality is that the levelheaded person is as biased as one can get.

You think you're helping me. You think I'm putting up stubborn resistance to your help. Is that the case or am I just simply describing to you some of the insight I've gotten from messing around with HN for over a decade? Did I in fact put up stubborn resistance or am I just conversing with you and stating a disagreement? Hard to say.

Your immediate assumptions are no different than the "levelheaded" dude from earlier. Let's just be clear, I'm fully aware of the "expressive" areas in my posts.

You will also note that many of the posters assumed I'm attacking FP and that I don't have much experience with FP. All wrong assumptions. I have lots of experience and I prefer FP over other paradigms. I am simply stating that I disagree with the fact that algebra is the future of programming and can replace all imperative programming.

nendroid··on Why I Prefer Functional Programming
>The stdout buffer.

The stdout buffer is not part of the haskell language, it is part of the OS. The haskell runtime reads the haskell language and accesses the buffer. Neither the runtime or the buffer is part of the haskell language, get it? That's why haskell is called "pure" Category Hask: https://wiki.haskell.org/Hask#:~:text=Hask%20is%20the%20cate....

>Just because mutation isn't explicit doesn't mean it isn't there.

So? I never said it wasn't there. I'm basically saying as far as the programmer is concerned when operating within the haskell language no haskell language primitive is mutating. stdout buffer is not a haskell primitive... it is an OS primitive.

>That's completely untrue. Imperative languages can be implemented as a subset of functional ones[1] and vice versa.

This is true theoretically, but physically but you can't actually build a functional machine. Lisp isn't actually a functional language and you'll see from the instruction primitives that the lisp machine is more or less a turing machine that mutates memory.

>No language can do anything if it isn't implemented in a machine.

So? Never said this wasn't true.

>A machine isn't "imperative"[2], it's a pile of atoms that do what atoms do, without paradigm or instruction.

The machine you build is limited by what you build it with. You have a limited set of atoms. Therefore you can only build a machine with limited amount of state. In order to use the state efficiently the state must be mutable. Mutable state means imperative instructions. You can imitate functional programming with such a machine and you can sort of solve the memory problem with garbage collection. But with what paradigm do you implement the garbage collector? Imperative primitives.

> The reason nobody has, is because it doesn't matter: any Turing complete language can be used to implement any other language[3].

No the real reason is also because it's physically impossible. A physical translation of a actual lambda machine cannot be realized. What they can make is register based machine that are more efficient at compiling certain functional languages that's it. All machines we build have some sort of state that changes.

>Don't assert it, Prove it. Show me one computable function that cannot be computed using boolean algebra.

Sure I can prove what I said. But you're changing the problem from IO and ST to a computable function which I assume is algebraic. So of course all of algebra can be used to create all algebraic functions. I'll just prove what I said rather than what you changed it to.

Assuming mutation is an axiomatic operation that cannot be built from immutable operations, you will see that no mutation operation exists in algebra indicating that mutation cannot ever exist in any theorem of algebra:

https://www.wikiwand.com/en/Algebraic_operation#:~:text=In%2....

You will see that no algebraic operation involving mutation exists in the above document.

>Try to implement `volatile` in C without using another language. Does that mean C fails to model real hardware? No, because it has `volatile` to get volatile semantics! Just like Haskell has IO to get I/O side-effects. Or ST to get mutation semantics.

No but I can implement volatile with imperative primitives from other languages. All I am saying is you cannot implement ST and IO with functional primitives.

nendroid··on Tech Workers Take to the Mountains, Bringing Silicon Valley with Them
>Let's just gloss over the increasingly-common smoke from wildfires... :)

Yeah that part is bad. Not sure how to rate CA in general when you account for this as the wild fires only started getting crazy recently. For most of my life overall the fires weren't a problem.

>Certainly some of the sunniest in the English-speaking world. Personally (as an ex-Londoner), I overheat a lot and actually miss a good rainstorm from time-to-time - but your evaluation does line up with most people's, I think.

Scientifically it is actually rated as some of the best in terms of closest to something like room temperature throughout the year. It's a climate zone called the mediterranean climate zone. It exists in a few places in the world.

nendroid··on Tech Workers Take to the Mountains, Bringing Silicon Valley with Them
For the south bay it's not 3 months of the year, 100F lasts for like 2-3 weeks at most (actually realistically it's more like 95-100). It's the same for socal. Socal has about 2-3 weeks in the summer where the temps become sweltering.

Even within LA the temperatures vary, the closer you are to the coastline the better the weather.

I know because I grew up in the south bay, I lived in SF for 2 years and lived in LA for 10 years.

What's overall better in socal is that the winters are much more mild. In the south bay the worst you can get is ice in the morning and really cold nights. Socal winters just has a very slightly lower temperature than spring.

Not trying to say NorCal has better weather than Socal. I'm saying NorCal has some of the best weather in the world despite it not having the "perfect" weather that Socal has. The entire CA coast line is afterall still in the mediterranean climate zone.

nendroid··on Why I Prefer Functional Programming
Technically everything in the universe can be modelled by math. If it isn't modelled yet we can make something up to model it. Math is just axioms and theorems so yeah, you're not wrong.

I'm speaking in less technical terms. For example in general mathematical equations or axioms represent immutable concepts. In programming, variables mutate and change... very different from what math traditionally represents. Haskell is an attempt to segregate the immutability (the math part) away from the less "mathy" part (the mutations/IO).

Maybe math is too broad of a term. I probably meant to say "algebra" can't model all of programming, or whatever more suitable word that may or may not exist.

nendroid··on Tech Workers Take to the Mountains, Bringing Silicon Valley with Them
Of course but bay is still one of the best in the world.

Also the bay encompasses more than SF, while SF and daly city have notoriously foggy weather, the rest of the bay area is quite good.

nendroid··on Tech Workers Take to the Mountains, Bringing Silicon Valley with Them
I think the migration out of the bay will make it a more reasonable place to live. We do have some of the best weather in the world. I'm going to gamble on staying.

Hopefully this isn't like detroit.

nendroid··on Why I Prefer Functional Programming
>I think you’re getting downvoted (I can’t) because of your first statement.

nobody is reading this stuff anymore. It's just you and me. You have over 800 karma. You CAN downvote and you ARE. There is no theatrics, you're just voting me down, stop.

>I do not consider sqlString to be impure.

It's not "impure." But it doesn't change the fact the way you you write your SQL has imperative side effects within the database. You can trigger a deadlock in the database from within your pure haskell code if you wanted to.

It's not a philosophical thing. You absolutely have to consider imperative side effects even in your pure program.

That is reality. The philosophical part is whether you can call it "pure" or "impure."

>If you want to think that sqlString is “impure” outside of the context of execution (i.o.w. a Monad...) then sure, that’s valid, but so is my assertion that it is pure since it is referentially transparent. It exists in the void as just another string until the programmer decides to make it into an IO value that’s executed for its impure side effects (the only reason we do anything in computing, right?)

Yeah so? I never said your assertion was wrong. I never said that it was "impure." But I did say that you have to account for side effects in your program. Example:

   sqlString = "SELECT * FROM ASKDLSADSA DFLDSJFL DLSKFJSDLKFD SDLFKSDJF DSLKFJSDF SDFKLSDFJ "
Is a valid "pure" string, but will trigger a syntax error in your database. You have to account for all of this within your "pure" program. Haskell eliminates side effects in the category Hask but does not actually eliminate the need for YOU to deal with those side effects. This part is an objective fact.

Here's a better way to put it. For this specific example, the impurity of the real world leaks into your pure haskell program by affecting the contents of the string. The type itself can be seperate from the real world but the contents of the string reflects knowledge and impurity from the real world.

nendroid··on Why I Prefer Functional Programming
It does. You're completely and utterly wrong. You don't understand.

I'll reiterate my example a SQL string is pure. Just like the IO monad is pure. However when you're coding the sql string in your "pure" haskell program you have to account for imperative side effects related to the SQL itself.

   sqlString = "UPDATE X SET X.Y=2 WHERE X.Z = 1"
sqlString is technically "pure" but that doesn't mean you can treat the UPDATE command in the string as a pure concept.

It doesn't matter how "pure" your language or sqlString is... the concept of a mutation leaks over into the language and the programmer still has to deal with the concept.

Like you're original post said. The interpretation of the monad is different, and the programmer still needs to account for this in how he composes things together. The concept leaks across boundaries.

edit>>this whole karma thing is unfair. Posters can't vote down responses. I simply state my opinion the person responds then votes me down because he disagrees. What's the point of even having a discussion?

nendroid··on Why I Prefer Functional Programming
I never said it's not pure. Just like how a SQL string in haskell is fully pure. Doesn't change the fact that you're using pure primitives to control a process that is fundamentally unpure. The concept leaks across the boundary.
nendroid··on Why I Prefer Functional Programming
I refer to business problems but in reality what I said applies to all problems.
nendroid··on Why I Prefer Functional Programming
Not all aspects of programming can be described by math.

Mutations and IO are very critical parts of programming and the two areas where FP breaks down. Even the IO Monad leaks the imperative nature of the program over to the programmer.

The only way pure FP can sort of work is if there are heavy frameworks abstracting IO and mutation away from the programmer. If you're not doing IO or mutating something then your caching framework, database or Haskell runtime is doing it for you. Additionally like I said earlier, Even if your database is handling mutation for you, you still end up embedding mutation commands into the strings of your pure FP function. Updating a database in haskell still necitates the haskell user to place the mutation command in a SQL string.

My point is, that math is not the complete solution to the programming problem. What FP allows the programmer to do is to use the framework to segregate combinatorial logic away from mutation and IO. Your combinators will always be more composeable and modular but your IO and mutation functions will be less modular but they still have to exist.

nendroid··on Why I Prefer Functional Programming
So you like writing functions that take 3 functions as input parameters and returns a new function that also takes a function as an input parameter and returns another function? In general excessive use of this at great depth leads to code that is not only less readable but less modular.

The complexity of higher order functions can easily be reasoned about by looking at the cardinality of the type. Sum types and product types are standard and easy to reason about.

However an exponential type that takes in an exponential type and returns another exponential type leads to cardinalities and possibilities that are much harder to reason about.

Composition of combinators is a pattern promoted by point free programming that leads not only to higher readability but greater modularity due to the reduced cardinality. Additionally cardinality of the entire type can he reduced to only analyzing the the final result of the composition.

  F = A . B . C 
The cardinality of F is all that needs to be known. The cardinality of the individual components can be ignored and you don't have to reason about this. This is not the case for higher order functions.

In general business problems that we deal with do not Require higher order functions. Higher order functions share isomorphisms with two concepts we are already familiar with: frameworks and metaprogramming.

Frameworks are programs that call your code and metaprogramming is code that writes and calls code. These things are no different then a function that takes another function in as a parameter and calls it. All three concepts are aspects of the same thing.

Therefore all the downsides of metaprogramming and all the downsides of frameworks are applicable to higher order functions.

Most of the programming problems we solve in the real world do not require metaprogramming. It can easily be avoided and solved with much more composition of combinators. Again, not saying to avoid the usage completely but the usage of higher order functions like metaprogramming should be minimal and used sparingly.

nendroid··on Why I Prefer Functional Programming
I disagree with the higher order functions thing. Writing functions that receive other functions as input can lead to over complicated code that's really hard to read. It's literally the same thing as dependency injection just with functions instead of objects.

Use sparingly. I would avoid altogether except for common ones like map, reduce and filter.

Functional programming promotes the idea of composition of morphisms and point free programming. I would use this in place of Object composition/dependency injection/higher order functions or whatever you want to call it.

nendroid··on The invisible struggle of the Asian American small-business owner
>My flawed argument was based on India and China sharing a land border and that shared genetic markers are found on both sides of it.

This is not flawed reasoning. Despite Indians and Chinese people possessing unique genetic markers, people in India and China do still share genetic markers from earlier haplogroups. If you go far enough back into human ancestry we can find a markers arising out of Africa that all humans in Asia and Europe share.

>I’m not sure there’s any need to cheapen your point by making personal attacks.

It's not a personal attack. I assume your conclusions are irrationally influenced by the current "woke" trend that's taking over America today. I say this because my conclusion can be arrived at trivially with zero technical jargon.

The same conclusion can be derived from just looking at people. The similarity in facial features between Indians and Europeans and the marked contrast between Chinese and Indians makes my expose into the genetics quite unnecessarily pedantic. It hinders conversation by forcing me to go into details in order to state the obvious.

Correct conclusions can be arrived at in significantly less time if people utilized a combination of common sense and scientific evidence where it is deemed necessary. If I didn't choose to troll this thread with a mile long document of terminal evidence then very likely this conversation would have ended without a real conclusion despite the obvious fact that Indians and Chinese look different enough to be classified as following different branches in the ancestral tree.

nendroid··on The invisible struggle of the Asian American small-business owner
>I think you’ll find that’s strictly an American definition of “Asian”.

No, that's just colloquial usage of the term "Asian" in America. The official definition we use in America is the same as the UK version.

>Also your claims about genetic similarities and differences between races will need some supporting evidence as they sounds very much like personal opinion.

This is pretty common knowledge. "Mongoloids" branched off on a different ancestral line somewhere during the migration out of Africa. It happened roughly around the middle east with "mongoloids" migrating east on the north side of the himalayas and Indian people moving east to the south. The genetic markers when sampled from populations actually display this genetic separation geographically. In fact the grouping of Indians and "mongoloids" is far more natural and appropriate than the term "Asian"

This is pretty common knowledge from different facial features between Indians and Asian people. But if you want to get technical there are actually genetic markers that correlate geographically with racial physical features. The marker for "mongoloids" is called Haplogroup C-M217, also known as C2 (and previously as C3). It is a Y-chromosome DNA haplogroup. It is the most frequently occurring branch of the wider Haplogroup C (M130). It is found mostly in Central Asia, Eastern Siberia and significant frequencies in parts of East Asia and Southeast Asia including some populations in the Caucasus and Middle East.

The haplogroup C-M217 is now found at high frequencies among Central Asian peoples, indigenous Siberians, and some Native peoples of North America. In particular, males belonging to peoples such as the Buryats, Evens, Evenks, Itelmens, Kalmyks, Kazakhs, Koryaks, Mongolians, Negidals, Nivkhs, Udege, and Ulchi have high levels of M217.

I want you to take a look at this picture:

https://upload.wikimedia.org/wikipedia/commons/8/89/Haplogru...

The picture represents the frequency of the historic appearance of Haplogroup C-M217 among native populations with white representing very very low frequencies and the legend in the picture representing higher frequencies.

You will note that C-M217 is basically almost never shows up in India and is highly correlated with the geographic distribution of "mongoloid" facial features found from China going all the way to Native Americans in North America.

Now examine Haplogroup L-M20. Haplogroup L-M20 is also a human Y-DNA haplogroup, which is defined by SNPs M11, M20, M61 and M185. As a secondary descendant of haplogroup K and a primary branch of haplogroup LT, haplogroup L currently has the alternative phylogenetic name of K1a, and is a sibling of haplogroup T (a.k.a. K1b).

The presence of L-M20 has been observed at varying levels throughout South Asia, peaking in populations native to Balochistan (28%), Northern Afghanistan (25%) and Southern India (19%). The clade also occurs in Tajikistan and Anatolia, as well as at lower frequencies in Iran. It has also been present for millennia at very low levels in the Caucasus, Europe and Central Asia. The subclade L2 (L-L595) has been found in Europe and Western Asia, but is extremely rare.

The picture of the haplogroup linking Europe and India is illustrated here:

https://upload.wikimedia.org/wikipedia/commons/4/42/Distribu...

You will note that this haplogroup extends from India across the middle east into Europe which is consistent with the ancestral migrations of prehistoric humans and also with the caucasian features that Indians and Europeans share.

The story is more complex than this however. These Haplogroups only represent frequencies of two genetic markers. In reality what we interpret as race is an amalgamation of many many genetic and physical features. An individual needs to only have an average amount of these features for our visual cortex to recognize someone as "mongoloid" or "indian."

Because I chose to use a singular genetic marker to show the correlation between physical features, genetic features and geographic distribution you can actually find a flaw that arises from the use of a single genetic marker: Although japanese people and chinese people look alike, they do not share Haplogroup C-M127. Go ahead and look at the picture again above... you will see that japan is white, indicating a very low frequency of haplogroup C-M127 despite physical similarity. The reason for this is outside of the scope of this topic.

That being said it is still possible to find correlation between genetic similarities, physical features and geographic distribution with just two haplogroups because the correlations are very very high. This response serves as proof to show that what I said isn't my opinion. It is more representative of your lack of knowledge misleading you to believe that I am stating my opinion rather than a commonly known fact.

Most people know how use vision and sight to identify these genetic similarities just by looking at faces. It's totally obvious to normal people. However,some people get so politically correct that they lose the ability to to use common sense to see these similarities. People like you... For these people we need to use raw science to show you just how misguided your thought process is.

nendroid··on The invisible struggle of the Asian American small-business owner
>I can’t help but feel like articles like this are an attempt to racialize Asians and make them identify as a marginalized minority group, instead of as individuals who are in the process of achieving upward mobility. Calling the long-standing economic trends a “myth” is borderline deceptive and risky. Clearly something is working. But if you make people think that it isn’t working, you might inadvertently break it.

Economically us asians are doing quite well but that's not the only aspect of racism that exists. We're marginalized in different ways. It's hard to put into words what this is exactly. Quantitatively you can see an aspect of this in low asian representation in Hollywood but it's much more deeper than that. See here: https://www.youtube.com/watch?v=KsWTFeP1hno&t=3s

As you can see from the video it's not even about economics. It's something else that's deeper because the most insidious thing about it is that huge amount of Asian women sort of have this attitude against their own race as well. It's a subtle sentiment that no one really talks about so it comes out in different ways.

The examples are related to dating but I'm not talking about dating specifically. There is something going on terms of class divide and perspective that is influencing the dating game as a side effect. We talk about class in terms of money but clearly something else is going on with class here that is seperate from money.

It's really something that's hard to pinpoint and as a result I feel a lot of articles like this are written in place of the actual problem.

nendroid··on The invisible struggle of the Asian American small-business owner
I'm Asian, the guy didn't ask for a scientific study. He just asked for clarification which you did give in the second paragraph. Give him a break.

Yeah asians are victims of racism, but that doesn't preclude other races from criticising a statement for being unclear.

I would say to the parent parent poster that next time you can ask those questions without directly stating that the comment was: "extremely vague, charged, and lacking in nuance." Even though I agree that what you said is true, most humans are incapable of ingesting those words in an unbiased way and will likely misinterpret it as an insult. Ironically, the comment itself was "lacking in nuance."

nendroid··on The invisible struggle of the Asian American small-business owner
It's just a nomenclature thing. Genetically your people are more similar to people from Europe then the "asians" the article refers to. The article uses the word "asian" but technically the article is just referring to people who have certain facial features that are similar to people from China, Japan, Korea, Vietnam... etc. You are asian yes, but in terms of facial features you are in a very separate category than the previous countries I mentioned.

I'm not sure what is the proper term here. I've seen the terms "mongoloid" and "oriental" used to refer to my people but I've also seen things written about how these terms are dated and considered to be insulting. I have found no other word to refer to "asians" the way the article refers to "asians."

It's strange that it's so hard to find a term here as there is a very clear cut category here. Whatever... it's just words.

I would respond to your query and say that "mongoloids" have a very different experience with racism in the US than Indian people due to a multitude of factors one of them being that most Indians already know English.

Qualitatively speaking, in the software world Indians are easily dominating that arena over "mongoloids" so it's a completely different experience.

Whatever hardships Indian people are going through would imho warrant a completely separate article to cover that topic.

nendroid··on I am an Uighur who faced China’s concentration camps
https://www.lexico.com/en/definition/genocide

A genocide is systematic destruction of people through killing. That is the oxford official definition and that is the colloquial meaning of the term. When people hear the word they don't think torture, they don't think cultural assimilation, they don't think birth control.

They think slaughter.

Using the word genocide in the way you define it.... makes gitmo become a genocide camp. You're own civilized neighbor the US of A is also basically conducting genocide of middle easterners under your highly convenient definition.

But I don't need to tell you this. You know this already. You throw down that word with the full knowledge that whenever you use that word people will think mass killings. You only fall back on a convenient definition when someone calls you out on the technicality. This is what the articles you read do to manipulate the sentiment, and you accept it because you enjoy calling China a country that is conducting mass genocide. You enjoy perpetuating China with a reputation that is an extreme version of the truth. This is what's going on.

I would tell you to educate yourself but the mind is not only limited by what it is capable of learning but also by genetics. Your limitations are of the latter kind, there is nothing for you to learn because you are already aware of what you're doing.

There's nothing left to argue on the main topic because we both never disagreed that detention camps exist. We can argue about the definition of the word "genocide" and about how your misguided brain works though, I'm sure there's still a disagreement on those two areas.

nendroid··on I am an Uighur who faced China’s concentration camps
Wow the balls on this reply. And the lies. When did the op post about a utopian thought experiment? Never. That paragraph is an outright lie.

Op poses a question to help the reader view the action from a more empathic perspective. The goal is to quell all terrorism in the same sense as to prevent all future mass killings. This is the action any country will take.

The utopian thing comes from your misguided thought process. Rather what is being expressed here is an attempt to convey understanding that china's actions are a survival response to end slaughter and terrorism not an attempt to create a utopia.

It is a reflection of your own insensitivity that you those words didn't trigger empathy but rather all you saw was a "utopian thought experiment". To top it off you made a joke about block chain then tried to hide your true nature with a feigned apology. It's clear you don't give a shit either way.

No need to apologize for being insensitive and lacking empathy. You are what you are.

nendroid··on A Theory of Software Architecture
The paper I presented is not theory in the scientific sense. It's theory in the mathematical/logic proof based sense. There are really two uses of the word "theory" for this context, science based theories proven by statistical experiments, and logical based theories created from a set of elements and assumed axioms.

Things like this shouldn't be titled with "Theory." Call it your "opinion" or a "design pattern." Theory is associated with things like the theory of gravity (science) or game theory (math). This title is wildly inappropriate and shows a lack of understanding of what constitutes a theory.

The fact that this post is voted up shows how much the public misunderstands "theory" and how they mistake things like this which is actually just someone's qualitative opinion with the integrity of an actual theory.

Using big words and drawing diagrams does not lend any formal legitimacy to your opinion.

nendroid··on A Theory of Software Architecture
That's because JS is not a functional language. You are enforcing a functional style by discipline. Additionally a huge portion of benefits of the functional style are lost on untyped languages. If you're not using typescript you're dealing with a lot of unnecessary bugs.

If you guys moved to a fully functional paradigm where the language enforces the functional style you will see greater benefits.

Unfortunately for the front end the ecosystem for functional languages outside of TS/JS is not that great. But an easy one to try out to actually see the benefits I recommend writing a little app with ELM. With something like ELM, the functional style is enforced by the compiler. You will see that 90% of the bugs you typically deal with in JS/TS will disappear. One type of bug that will disappear is runtime errors. Runtime errors are not possible in ELM.

I find a lot of JS programmers haven't fully grokked the functional style. Example: You'll find JS programmers who talk about how much they like functional programming but don't understand why for loops don't exist in functional programming.

nendroid··on A Theory of Software Architecture
It's not just pure functions. Two things break modularity: Free variables and mutation.

The problem with OOP is that no method is truly pure, no method is a combinator.

   class Thing
      var memberVar
      def addOne():
          return memberVar+1;

The above is an example of your typical class. AddOne is not modular because it cannot be used outside of the context of Thing.

You can use static functions but the static keyword defeats the purpose of a class and makes the class equivalent to a namespace containing functions.

   class Thing
      static def add(x):
           return x + 1;
the above is pointless. Just do the below:

   namespace Thing:
       def add(x):
           return x + 1; 
The point of OOP is for methods to operate on internal state. If you remove this feature from OOP you're left with something that is identical to namespaces and functions.

Use namespaces and functions when all you have are pure functions and use classes when you need internal state... there is literally no point for OOP if you aren't using internal state with your classes.

Page 1 of 6Next →