I just looked to price one on their website, and it starts with some absurdly low specs including a 128GB SSD and a horrible 1366x768 TN screen for $1140. This is not acceptable in 2020.
So how is React a library? You can't just utilize part of React within an existing Angular app. I've built shims between the two frameworks and you can't just use React inside of Angular. When you utilize a React component inside of Angular, everything Angular about the application goes out the window and it becomes a mini React app starting from that component, just with the data originating from an Angular app.
The definition of a framework boils down to inversion of control, right? You define your application, and then it is run within the React "framework" context, which calls various predefined methods/functions.
All of the lifecycle methods in React are a good indicator, to me, that it is indeed a framework. You define these functions, and they are called by the framework. Inversion of control.
I think you completely misunderstood that sentence. Let's try again:
> The correct solution is to run the simulation on a different thread from the rendering, so that the simulation can be run at an appropriate frequency and the rendering can proceed at whatever framerate the user's hardware is capable of.
The "running in another thread" is a way to enable running the simulation at a fixed frequency where it will produce "correct" results, while not imposing the same constraints on the rest of the game engine that are not as sensitive to timestep issues. I never said that moving the simulation to a thread of its own is the entire solution itself, and "increasing performance" isn't the goal or result.
Chess is all about memorizing patterns of many kinds to then recognize them and reapply on the spot.
What all great chess players have in common is an amazing memory and the will to think and work on chess all day long (which is more astonishing to me than the memory side).
This line of thinking ends up being applied only to chess, while what you are saying is true about most fields that need human expertise and judgement.
LeBron James is famous for being able to remember every shot he makes. There are cricketers who can tell you ball-by-ball plays from memory. Roger Federer remembers most of his matches. I have seen technical founders have an uncanny ability to 'remember' their code bases and figure out what to change. Boxers remember fights and sparring sessions in crazy detail. Mathematicians can do the same with papers they read ages ago.
I feel that memory and understanding co-evolve. The more you understand something, the better you remember it. The more knowledge you are able to memorize, the better you are able to understand and assimilate and create new ideas.
I am commenting because I have seen several smart people give this line about chess being about memory without realizing their professional expertise involves a great deal of memory too. In my experience, this is probably because when kids play chess, there is always this one kid trying to memorize opening and dazzle other people. Ultimately, those kids do not go on to become grandmasters. But yet, the people who lose to them think they lost because they did not memorize an opening.
"LeBron James is famous for being able to remember every shot he makes"
No he isn't, and no he can't. This is total hyperbole and he has never said he can remember "every shot" he has made. He can identify games from short sections of video, and he can remember certain memorable dunks, etc. But he can't (and no one else can either) remember every shot (including failed shots).
You are right. Upon, rereading - yes, this is hyperbole. I didn't intend that.
My point should have been that he can remember plays when triggered just like a high level chess player can remember positions when triggered. The expert's memory is way better than what ordinary people remember in almost any domain that requires human expertise and judgement.
It's easy to remember something when it has logical structure to you. A King's Indian chess opening line I can rattle off from memory: 1.d4 Nf6 2.c4 g6 3.Nc3 Bg7 4.e4 d6 5.Nf3 0-0 6.Be2 e5 7.O-O Nc6 8.d5 Ne7 9.Ne1 Nd7 10.Nd3 f5 11.Bd2 Nf6 12.f3 f4 13.c5 g5 etc. Every move in this sequence makes sense. White is playing on the queenside with the c5 break, and black is gaining space on the kingside.
This is a great point! But chess (and other such games like Go) vastly improves your working memory which should translate to improved performance in other tasks like coding.
> Because with Chess you can store the entire search space in memory.
That is incorrect.
Quoting from [0]
> Chess has approximately 10^120 game paths. These positions comprise the problem search space.
Typically, AI problems will have a very large space, too large to search or enumerate exhaustively.
But as Go has an even larger search space, it makes sense that DeepMind sees it as a bigger challenge.
Effectively, yes. But I attach no greater philosophical significance to that than to say drilling holes is solved because most people can go buy a nice electric drill foR $30-$40. Flying to the moon is solved, too.
Professional chess, you mean; I think that's worth mentioning.
Thar description would put me off entirely: whilst it's a game I've enjoyed and taught to several others (I've helped at a school chess club, for example). My memory is terrible - I play by analysing a tree of possible outcomes, or more casually by strategic feel (positional play) which is far less intense and still enjoyable for me.
To be decent at chess also requires an ability to methodically think through the implications of each possible move.
Although this might seem like stating the obvious, I don't think it necessarily can be taken for granted that everyone is equally strong at this kind of thinking.
Maybe it's just due to impatience, or maybe there are actually differences in people's ability to keep these details straight so that they don't lose track of what they have and haven't considered, or maybe it's something else. Even if it's just impatience, conquering that impatience might be one of the factors in intelligence. And there might even be differences in brains (perhaps anxiety) that could affect how much patience one has for this kind of mental effort.
This is true but as someone who played chess as a child and who was never trained, chess forced me to think ahead. At that time I simply enjoyed the game and frankly did not know all things like patterns etc. All of us who played never read any books about the game, we simply played move by move.
Their dedication and mental stamina (maintaining focus over multiple long games) is a big factor.
Their proficiency is like any game that you might practice to extreme: whether speed-cubing or competitive video games. Getting really good (fast), even for simple games like Tetris, Solitaire or Minesweeper is just training your brain to quickly recognise some very specific patterns.
It’s only a bit surprising because it makes perfect sense if you think about it: memory is where the future happens, not just the past. You need a good working (I guess the human term would be short-term) memory to plan ahead. The better it is, the better plans you can make because you can analyze more futures/longer futures.
I think at casual levels chess is mostly about carefully parrying, till the opponent makes a mistake, perhaps alertness is more important than memorising patterns at that level..
There is also the The Theory of Steinitz, that says that one can only win in chess as a result of opponent's mistakes.
You recognize mistakes by memorizing patterns. There is no level in chess where you don’t memorize patterns. Maybe in the lower levels the patterns are simple enough that you don’t consider them patterns, but forks, skewers, etc. are still patterns.
I disagree that the first point is major. amd64 has been a thing for a long time. Compilers and kernel implementations have also changed, so x86 windows has been a moving target as well. Will people need to test and possibly debug after their recompile? Sure. Will a lot of such code work fine on the first try? Also yes.
Right - what I read is performant WebGPU is more consistent than Vulkan between GPU vendors and I understood that to mean higher-level. But perhaps it's just a promise of a better design.
John Carmack has some ideas on how to use immutable copies of the game state and functional programming concepts to create something that's easily parallelized. I saw it in an old QuakeCon keynote: https://youtu.be/Uooh0Y9fC_M
In low level audio you have something similar: there's a thread that pulls audio data all the time and it can't stop; at the same time you have potentially lots of things happening in other threads, including the UI one. You can always find ways of minimizing the synchronization overhead by e.g. having a single fast entry point to any changes that happened since the last cycle. With audio you basically end up passing immutable blocks of data with minimal synchronization. So should be possible to do in games, too.
The evolution has been from single threaded engines to different core elements being on seperate threads (e.g. renderer and io) to task based scheduling.
Typically though the updating the game itself is a relatively small part of the frame time and can be reasonably tricky to get real gains through parallelisation.
Audio is a very different problem that is typically about a chain of streaming buffers. The thread pulling audio data (and all the others processing it) is independent from the UI etc., that is not an issue.
Copying and passing immutable data around is not always fast enough and definitely not trivial to merge the results back.
In summary, it is a hard problem with no general solution. If you could solve it, then you have solved multithreading design for any problem.
I have always seen its goal as providing the means to create different user libraries for different specialized purposes on top of it.
Then you also get implementations of other APIs like Direct3D on top on Vulkan, which is amazing because you can reuse all your code and tooling and run everywhere.