Hercuros
Maybe another example is compiler optimisations: if we say that an optimising compiler is correct if it outputs the most efficient (in number of executed CPU instructions) output program for the every input program, then every optimising compiler is buggy. You can always make it less buggy by making more of the outputs correct, but you can never satisfy the specification on ALL inputs because of undecidability.
A “2% risk of default” on an individual bond is something a retail investor might be able to understand, but no one should be buying a “diversified” bundle of these things if they cannot form a reasonable understanding of how correlated they are. Why should understanding the correlation risk be left up to individual investors building their own portfolios?
I also think forming an intuition for these more “all-or-nothing” type events is more difficult than e.g. understanding that if GOOG goes down 10% then AAPL might do too at the same time because they are both tech stocks.
That’s a very optimistic take on how “rational” society tends to be. The thought that “if things are in a certain way in society, then it must make sense (from a moral or societal point of view) for them to be that way.”
However, if all of the program paths from that point onward behave the same as if the pointer was marked as exposed, that would be fine. It’s only “wrong” to track the incorrect abstract machine state when that would lead to a different behaviour in the abstract machine.
In that sense I suppose it’s no different from things like removing a variable initialisation if the variable is never used. That also has a side effect in the abstract machine, but it can still be optimised out if that abstract machine side effect is not observable.
It is also true that no numerical reasoning is happening: the memoized version of any recursive relation will return the same result as the original function, assuming the function is not stateful and will return the same outputs given the same inputs.
However, it is not true to say that it does this by exhaustion, since there are infinitely many possible outputs and therefore it cannot be exhaustively checked by direct computation. The “n” for which we are “taking the proof” is symbolic, and hence symbolic justification and abstract invariants are used to provide the proof. It is the symbolic/abstract steps that are verified by the type checker, which involves only finite reasoning.
Of course, the symbolic steps somewhat mirror the concrete computations that would happen if you build the table, especially for a simpler proof like this. But it also shouldn’t be surprising that a program correctness proof would look at the steps that a program takes and reason about them in an abstract way to see that they are correct in all cases.
All serious works in philosophy (Kant especially) are subject to interpretation. Whole research programmes exist around the works of major philosophers, interpreting and building on their works.
One cannot really do justice to e.g. the Critique of Pure Reason by discussing it based on a high level summary of the “main ideas” contained in it. These works have had a major impact on the history of Western philosophy and were groundbreaking at the time (and still are).
If the host and guest both get presented with the same “array of bytes” mass storage interface, then they will compete and potentially mess up each other’s reads and writes, let’s say if they both treat that array of bytes as an ext4 file system and try to write a file system metadata to the same physical location at the same time.
Of course you have have a “virtual file system” exposed over USB, but isn’t that exactly what MTP is? The point is that USB mass storage is not a virtual file system.
Of course you were already saying it’s not a good idea, but I think the above definitely plays a role at scale as well.
Employers also benefit from government support (e.g. the government sponsors education that ultimately provides the workforce for the employers).
Just because it’s good for “career optimization” does not make it less of a strange mindset to view your colleagues as predators. The article also puts all of the blame on the so-called “predators”, when it should be blaming the organization’s culture and leadership if helping others is viewed in this way.
If I use bad data to conclude that “Java is faster than C++ in most cases” you can be sure it will receive a lot more attention than if I reached the opposite conclusion based on similarly bad data.
People might find “serious” art meaningful and it might spark feelings in them, but that’s not the same as getting an adrenaline rush from exploding cars in an action scene.
Of course there are also cases where the boundary between “fun” and “serious art” is not so clear, there are always exceptions to any attempt to define what makes something “serious art”. Art can also be subversive and run counter to traditional expectations of what art “should” be. But I don’t think the Avengers is an example of that.
In reality, AI progress and capabilities are not so reducible to singular quantities. For example, it’s not clear that we will ever get rid of the model’s tendencies to just produce garbage or nonsense sometimes. It’s entirely possible that we remain stuck at more incremental improvements now, and I think the bogeyman of “superintelligence” needs to be much more clearly defined rather than by extrapolation of some imagined quantity. Or maybe we reach a somewhat human-like level, but not this imagined “extra” level of superintelligence.
Basically the argument is something to the effect of “big will become bigger and bigger, and then it will become like SUPER big and destroy us all”.
Moreover, merely developing the technology is not necessarily enough to get it actually adopted. Lobbyists will fight to protect established interests from industries like oil and gas. There will be narratives about how such new technologies destroy jobs, in an attempt to sway voters.
Ultimately, not enough change is going to happen without political will. That is because fighting climate change is not going to make everyone happy. There will be losers, and there is never going to be some magical piece of technology that will let us have our cake and eat it too. Creating political will requires more than just clever engineering, and people like Greta Thunberg can help motivate and inspire large groups of people to create that political will.
I have a feeling many technically minded people would struggle to read and write an essay about Heidegger or Habermas. In fact, I doubt most people are even aware of that type of philosophy due to not having actually delved into it very deeply, and yet as outsiders to such fields they feel confident in making claims that those fields are "easier." (And usually there is also an implication that this being "easier" is an indication of those fields being less serious or worthwhile.)
You seem to be ascribing some moral failure to the younger generations whereas there are also factors at play that go beyond individuals. It might be more sensible to say that the internet could not be invented in the current economic/social climate.
If you take Haskell and remove all the types (e.g. Scheme or JavaScript), you can have all the same abstractions, with basically the same syntax and operational behavior. But then of course the operational behavior is just applying/composing functions in the end... And because there are no higher-kinded types to deal with, category-theoretic language is less likely to sneak in.
I say this as someone who has used Haskell for years and studied category theory / PL theory as well. And I like all of those things, just think it's sometimes not really necessary to get the mental model at all and be able to use those tools.
I think that some code duplication is also not always the worst thing. Just because strings can be "combined" through concatenation and numbers can also be "combined" through addition does not necessarily mean you need one general notion/function to capture both, especially because if you take that to an extreme then you end up with some function that "sqoogles the byamyams" (i.e. the abstraction has become so general that the only way people really understand/use it is by looking at its concrete instantiations).
Of course, obesity is a huge issue (especially in the U.S. compared to many other "developed" countries) that can affect people's lives negatively and causes further medical issues such as diabetes, and ultimately can prevent people from leading a life that is as fulfilling and meaningful as they would have liked.
But we are still dealing with people here, not rats in a laboratory experiment, and I think the issues that directly follow from being obese are already bad enough that it does not help to pile on more shame by treating those people as being "weak-willed" or something of the sort, or denying them basic human dignity and respect for being outside the sacred norm. Do we really have to add artificial negative consequences for being overweight? Does that help those people have a more fulfilling and meaningful life?
I don't think people will just forget the direct negative physical/social consequences of being overweight by not being reminded of them all the time in a moralistic tone (and even just reminding people of such information can be moralizing, depending on the context in which the information is provided).
That is, saying that a painting is just a tool for the painter to evoke certain emotions or experiences in the viewer (or social goals for the painter, like wealth and status), just as a hammer is a tool for driving nails into wood, is to reduce the painting to a mere instrument.
Art is meaningful to people, and I think that cannot be reduced to art being just a goal-directed tool we use to manipulate/control the world or people around us.
For a lot of things, like solving boolean SAT, we have the equivalent of a "busy-beaver" limit: if you want to solve a SAT instance of size n, you need at most 2^n steps. And being able to solve arbitrary SAT instances in reasonable time would be huge for mathematical proofs as well, because you could do stuff like find proofs up to a fixed size quickly. Point is that math is probably even harder than BB in some sense, since having BB would not really help you solve math problems in practice most likely.
If they are just batch background tasks (i.e. there is no expectation of seeing some immediate UI update as a response), then having a larger queue might be fine. There's not really that much reason to put a (small) limit on say the number of files to be downloaded in a queue. And having a really large queue bound is not that dissimilar from having an arbitrarily large queue (limited be memory of course), in terms of buffer bloat and added latency.
E.g. it might be visible to you that a certain operation runs quickly on certain inputs, or that a particular output is chosen for a particular input, even though the documentation does not specify the exact output.
I would naively expect that for most functions you know too little about their arguments or the state in which they will be executed to be able to tell that certain branches will definitely not be taken. Especially since any function that has some mildly interesting side-effects (like loading and storing from a pointer or a class/struct field, or even _calling into any function that does that_) would seem to foil the analysis and turn large chunks of code into "unknown reachability".
Rephrasing, I would expect the set of basic blocks that can be removed just by essentially repeated constant propagation of statically-known function arguments to be pretty small. But I would be happy to be proved wrong if that intuition is not right.
Printf is somewhat of an exception, since the format strings are usually known at compile time, meaning that a lot of the control flow can indeed be deduced by compile-time evaluation, but for most functions I would not expect that.