Maybe. I'm happy to run any formally verified C as my basement, for example the seL4 kernel, or for C to be used as an intermediate language. Especially as there should be less code at the bottom of the stack. But C++ seems worse, it's a far more complex language, designed and built to try and scale C to building applications. This creates a far larger attack surface.
> "The exploit used a race condition bug between two threads due to missing proper synchronization between them. It gives an attacker a Use-After-Free (UaF) condition that is very dangerous because it can lead to code execution scenarios"
This is why C++ needs to be retired; and why we need to use safer languages. Not even Google can write safe C++. Thankfully Mozilla have already realised this.
> what happens when you plug an additional screen in?
Absolutely nothing. I have to tyoe xrandr commands to make anything happen. I3 is strictly just a window manager. Unfortunately projects like Gnome solve these problems in a completely monolithic fashion, with no module or component that I use that just solves this problem.
Using the new ribbon version of office I found out that document properties could only be inspected by clicking on a golden orb and going into a menu called "Publish". Similarly most other less-often used features became impossible to find. I've refused to use office for any substantial document ever since. I can only assume that this research was targeted at new users and not existing users.
And it was a completely different UI, forcing all the users to relearn most of the functionality. I suspect that such a user-hostile change was done in order to achieve a patentable UI, something that LibreOffice and others would not be able to copy.
What about the Deepin desktop? I haven't tried it but many magazine sites say it's now the most polished. I'm fairly happy with i3, until I need to plug in additional screens...
IIRC Safari achieves this by suspending the processes in background tabs, which could be running inefficient JavaScript (polling for new ads etc). There's no cross-platform way to do this, but I think Mozilla absolutely need to try and find a way to address this. Web sites cannot be trusted to write efficient well-behaved JavaScript and so the burden of taming it falls upon the browser. There is probably some throttling going on, but clearly not enough. Running background JavaScript should be an opt-in permission, not the default.
Both Chrome and Firefox have support for sandboxing on Linux. For the security conscious, there's always the Xen/Linux Qubes distribution, which is considerably more secure than MacOS.
My employer encountered lots of basic bugs, like file handle exhaustion, which together with the amount of recent activity in GitHub, suggested to me that there is a lot of new code in Bazel. If it's essentially the same as Blaze as you say, then why the new name?
Syntax is the absolute best thing about Haskell and it's ML relatives, especially coming from C++ and Java as I did. It's succinct and very easy to read, without braces, parens and type annotations scattered everywhere. For example, defining a function is as simple as "let f x = ..x.."
The succinctness of Haskell really matters when dealing with non-trial code or types. Just compare the type signtaure of "SelectMany" in C# to an equivalent in Haskell.
Ok here's a talk about making Haskell games that took place last week: https://keera.co.uk/blog/2019/09/16/maintainable-mobile-hask...
I don't deny that making games in Haskell is niche, but it's certainly possible. Frag was just an example I remembered (ten years is recent for an old git like me).
Those weekly Monad blog tutorials probably annoyed the Haskell community more than anyone. Extremely readable and well written papers had already been published by the Haskell community (e.g. Phil Wadler). Read the papers first.
I was calling out the Java memory model and concurrent programming in Java as being very complex. It's inherent to the language itself and almost impossible to change. I was only calling it "hidden" complexity as most people do not see an issue when writing single threaded programs. Concurrent programming I genuinely believe is easier in Haskell.
Lens is a library, not part of Haskell the language, it's also not particularly widely used. If you are going to conflate the ecosystem with the language, then we could equally talk about the complexity of dependency injection frameworks, AbstractSingletonProxyFactoryBeans, aspect-oriented bytecode weaving, and enterprise Java beans when discussing how much "easier" Java programming is.
I have programmed both Java and Haskell professionally on multiple codebases. I honestly found more ad-hoc and incidental complexity in the Java world. At least the Haskell libraries generally were consistent in the abstractions used. Java the language, also had a lot of hidden complexity, for example its memory model (required knowledge for concurrent programming).
I am not American, but if I was, much of the above would also upset me. But you are invoking a straw man, my point was that Apple should pay more tax (especially to Europe), not solve all the worlds problems. I get that you don't care.
> How would you decide on any other number and justify overpayment to the shareholders?
How do they justify a 245 billion dollar cash pile to the shareholders? To decide on a number, pick one that beats all competitors, then advertise on all boxes and websites that you pay more tax than anyone else.
> Sounds like Europe has tax problems then. Pass some laws.
The worlds richest company has the best lawyers, they will always be able to find loopholes or refuse payment (see prior link). The best way to tackle it is via public rebutal of their self-righteous image.
Apple already have the largest margins in the industry. They are sitting on a 245 billion dollar cash pile. They have so much cash they literally don't know what to do with it. Meanwhile, infrastructure and public services in both our countries are failing. But I guess voters, like you, "are sick of hearing about it", which explains a lot.
The richest company in the world with the best lawyers will always find loopholes to exploit. I would argue it's the spirit of the law that counts. One way to tackle it is to rebut any claims of self-righteousness from said corporation.
This is true, even Haskell supports imperative programming and mutation (very well in fact) but languages do need defaults. Given that even OOP thought-leaders argue "favour immutability", I would argue that FP languages offer a better set of defaults out-of-the-box (e.g. persistent collections, libraries for working with immutable data, concise syntax). Mutation is extremely useful and powerful, but if it's the default idiom used absolutely everywhere, then program composition and reuse will be harder to achieve.
They also pay 0.005% tax in Europe, sure it's legal, but is it morally ok? They certainly benefit from all the European infrastructure and academic research that they are not contributing back to. Some put the figure owed at 14.5 billion dollars:
I don't think modern Haskell is a single paradigm language. As I said above, it has good support for imperative programming and lots of imperative code has been written in Haskell. Even the GHC compiler is full of imperative code and uses algorithms with mutation where it makes sense (e.g. unification).
Depends on what you mean by "scalable". Given that Haskell can track the use of effects and mutable state in its type system, might suggest that it allows such techniques to scale beyond a language that does not. Haskell also has syntactic and compiler support for imperative code, no encoding is necessary, so I don't think your analogy of writing FP in assembly is fair. Writing imperative code in Haskell is much the same as in Java.
Haskell is perfectly capable of expressing imperative algorithms and mutable state. Such algorithms are still expressed using pure functions, pure functions that return IO actions.
Monads let you redefine what a statement is. This is very powerful and makes Haskell my favourite language for imperative programming. There's no need to modify the compiler for e.g. Async/Await, it can be a library.
A Monad instance has a set of properties or laws that it obeys. This gives you a general understanding of what e.g. filterM will do, i.e apply an effectful filter function such that the effects are sequenced in the order of the input list.
There's an opportunity for someone to sell "reasonably" secure hardware at this price point. Especially since Intel certainly isn't selling anything that fits this description.