Skip to main content

ReactJS - Immutability


Value vs. Reference Equality

The mutation of data in computer science is something everybody who has studied a common programming language has done at some point. You create a variable and they you change it! Magic! All of a sudden, you have a variable that is completely different, with a different value and everything! Well, actually, there's something that probably didn't change; the location of the data in memory. The variable is still pointing to the same place it always did; a little section it found specifically for the variable. The contents of the section had changed, but the reference - a sort of ID, if you would - is still the same. This is called mutating the value, and can therefore be seen as mutability.

ReactJS's Spin

ReactJS has an interesting method of making rendering more efficient, and it involves the way you alter data. Instead of changing the values of a set object every time you need it to change (mutating it), you can actually adopt a standard that replaces the object with a new object altogether every time you intend to change it [2]. Such is the idea behind immutability.

Courtesy of BenNadel.com [10]

Why would that make things any faster, though? Well, the way the parsing algorithm processes the alterations, replacing objects altogether secretly (or rather implicitly) gives these objects new reference locations. This allows the aforementioned diffing process to run with less consideration through the file (DOM); why even compare the values when you can just quickly see that the reference has changed. This may not seem quick to humans, but for an analyzer that can view the reference with less intensive processes, this is far superior[1, 2]. With this, the process of finding dirty data to update becomes less computationally intensive, noticeably so in large-scale or especially complex computations.


So, why does this matter

In computer science, some systems and conventions may be better than others in nearly all circumstances. More commonly, however, each method has pros and cons in specific applications that may very well justify usage when scalability or reusability is a priority. As a computer scientist, one must be able to come up with creative solutions to problems that consider the system's objectives and circumstances, and this is a great example. This specific case - as pertaining to mutability - also is a concept that should be internalized for those who intend to create or optimize their own systems of organization or processing where similar situations (ease of comparison, for example) are present.


Bibliography

Comments

Popular posts from this blog

ReactJS - What is it?

So . . . How About React? What happens when an impressive Facebook engineer gets assigned to port XHP - a PHP version primarily relied upon for data validation and scrubbing to combat XSS - to JavaScript and maybe gets a bit carried away with it [5] ? React! ReactJS (also known as React.js or simply React) is a library of Javascript, a programming language pivotal in the rendering of webpage elements alongside HTML and CSS . While some libraries generally try to incorporate and adapt ‘the wheel’ to make some specialized processes easier, React joins the ranks of the increasingly many that set out to completely reinvent it in many parts. Image courtesy of xpagexplorer.org [15] Basically, what is it? Basically speaking, Javascript is a programming language that can be used to alter the content of the website’s layout. ReactJS, like any library, utilizes its base language to ease and optimize complex sets of operations. Its features rework many elements consid...

ReactJS - Reactive Programming

What Is Reactive Programming? Reactive programming is a commonly-implemented practice in React implementations, but what does that actually mean? Well, Wikipedia's got our backs with the most basic of definitions: "In computing, reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change." Who did what now? Yeah, it seems complicated, but not only is it necessary but, with the veil of jargon explained, it's actually pretty basic. Courtesy of innoq.com [10] Reactive Programming Fundamentals Complexities aside, you can think of reactive programming as programming with changing information. In basic Java programming, for example, int c = a + b; assigns c that sum of the two variables at the time of assignment , not a binding obligation to continuously reflect the sum of a and b as they change. With reactive programming, when a variable's value changes, values associated with said value als...