Catch up on stories from the past week (and beyond) at the Slashdot story archive


Forgot your password?
Get HideMyAss! VPN, PC Mag's Top 10 VPNs of 2016 for 55% off for a Limited Time ×

Comment Re:Windows 10, Windows 10, Windows 10! (Score 1) 480

That doesn't seem like a particularly believable reason. ARM SoCs that might end up in tablets and phones all have at least moderately competent GPUs and the requirements of Aero Glass are pretty trivial even by modern mobile GPU standards (compositing, a token amount of pixel shader). More importantly, offloading rendering to the GPU is more power efficient (which is why Apple pushed as much as possible there starting when laptop sales began to outnumber desktops and continued when iDevices started to become popular).

Comment Re:dark patterns huh? (Score 1) 126

Is it any wonder that UX designers are getting a horrible reputation among some segments of the tech-savvy crowd?

The main reason for this is that people who self-describe as UX experts, as opposed to HCI experts, tend to be the ones that favour form over function and ignore the last 40 or so years of research into how to design useable interfaces. Most of them wouldn't know Fitts' Law if it dragged them to the corner of the screen and made them infinitely long.

Comment Re:How do you regression test that stuff? (Score 1) 308

There isn't much testing of the C bindings. They're also in the process of being deprecated in favour of machine-generated ones that are less API stable and have no ABI stability guarantees (precisely because most people don't actually use them from C, they use them from some other language with C bindings). For everything else, there's a bit regression test suite that works by feeding some code (source code when testing clang, IR or assembly when testing bits of LLVM) into one of the tools and then checking that the output matches. Bugs still slip in quite easily, unfortunately. The second tier of tests involves compiling and running a bunch of benchmarks and similar sample code and checking that they haven't got slower (by a statistically significant margin) and that they still produce the right answers. There's a network of buildbots that runs on a variety of operating systems and architectures that first builds and runs the regression test suite on every commit and then (less frequently) runs the executable tests. These catch most regressions, but not all - the rest are caught by users testing betas and filing bug reports.

There's been a lot of research work on improving this. The LLVM Miscompilation Detector, for example, had a semantic model of LLVM IR and would feed real and randomly-generated IR through the optimisation pipeline and then use a theorem prover to attempt to prove that the semantics of the before and after versions were the same. This could then be combined with the LLVM bugpoint tool to find the optimisation pass that performed an invalid transform.

Comment Re:As a C programmer (Score 1) 308

It's a tradeoff. Blowing away the i-cache is a good way of killing performance, but so is having a load of function calls that do almost no work. If you had to do a virtual method call for comparing two unsigned integers and a different virtual function call for comparing two signed integers when inserting them into a set then you'd have a lot more overhead. In a typical std::set implementation, the compare operations are inlined and so the costs are very low.

The real problem with C++ is that the programmer has to make the decision about whether to use static or dynamic dispatch up front and the syntax for both is very different, so you can't trivially switch between them when it makes sense to do so.

Comment Re:The Theater Experience (Score 1) 328

Exactly. I bought a fairly decent set of speakers, a projector, and a DVD player for a total of around £450 in 2003. Back then, a ticket at my local cinema cost £4.50 (it's gone up), so roughly the same as going to the cinema 100 times. Popcorn was another £4 or so (drinks another £2-3), so that brought it down to about 50 trips - one a week for a year. I split the cost of the projector with my housemates back then and we'd have friends bring a DVD and food / beer around. By the end of the year, it had more or less paid for itself. One of my housemates bought the other shares in the projector when he moved and I bought a new one and have replaced the bulb once, so I've spent a total of about £500 (plus electricity) over a period of 13 years. The up-front cost was a lot higher, but over 13 years it's been cheaper than going to the cinema once a month and not having anything to eat / drink there. And that's just the cost for me: for the first few years when living with housemates and for the last few living with my partner the benefits have been shared by multiple people. Oh, and we get to watch TV shows in the same environment.

I stopped buying DVDs for a while because renting was a lot cheaper, but as BluRay and streaming start to see adoption the second-hand market is flooded with DVDs so it's easy to pick up a film for £1 or a season of a TV show for £3-5.

The real answer to piracy? Give people the product that they want for a reasonable price. Give me a service that let's me download DRM-free movies in a standard format that will work on the FreeBSD media centre box connected to my projector, my Mac laptop, my old WebOS tablet and my new iPad and I'll happily hand over money. Until then, I'll stick to DVDs.

Comment Re:The Theater Experience (Score 1) 328

Right, because old people are the ones that have good hearing. I had a similar experience the last time I went to a cinema. Sound settings so ludicrous that any base drowned out people talking and caused distortion in the speakers. I've not been to the cinema near where I live now, but they've just done a big refurbishment that ended up with a quarter the seating space that they had before. Apparently it's doing pretty well (people like the big comfy seats), but a apparently decade ago it was able to sell out most of the screens on a regular basis. Now they always have empty seats, even with a quarter the capacity.

Comment Re:Hatchet jobs aside (Score 1) 406

I look into the witness guy's background, he has UK security clearance FFS!

Having UK security clearance is not that hard. I did for a while (though it's long-since lapsed). Anyone who works on any defence-related project is likely to have security clearance. Remember when Snowden released all of the things he could access and it turned out that over a million people in the USA had security clearance? The UK isn't that much more restrictive in who it hands our clearance to.

Comment Re:Which version of C would you use? (Score 1) 308

C11 threads are also a horrible API full of mistakes that other threading libraries learned from and fixed two decades ago. It exists solely because someone thought that you can't have atomics in a language without a mechanism in the standard library for creating threads. C++11 threads are actually quite sensible. The only significant addition in C11 is the addition of a half-arsed port of C++11 atomics (right down to accidentally including a joke footnote from the C++11 draft spec that was removed before the C++11 spec was finalised). _Generic is vaguely useful.

Comment Re:Non-linear Presentation (Score 1) 98

It's very useful to be able to create presentations with multiple paths through them. You can embed deep-dives into things that you're trying to explain and skip over them if the audience either isn't interested in that part or that they want more information about. Quite a few other presentation tools provide support for non-linear presentations, PowerPoint is playing catchup.

Comment Re:As a C programmer (Score 1) 308

Look at LLVM as an instructive example. It's a large complex beast written in heavy C++, but there are bindings for every language you'd ever want to seriously write a compiler in.

Not a great counterexample - The LLVM C bindings are maintained by hand and all of the other bindings are machine-generated from the C bindings.

Comment Re:As a C programmer (Score 1) 308

Using C++ without templates is missing the point. One of the things I miss the most when writing C is the lack of efficient generic data structures. C equivalents of things like std::list, std::dequeue, and std::unordered_map all require lots of macros that cast things through void* (and therefore avoid any possibility of compile-time errors) and typically extra layers of indirection which hurt performance from d-cache misses more than templates will hurt from increased i-cache usage.

Apple's CoreFoundation is probably the nicest-designed C library providing core features, but it is a lot harder to work with than its Objective-C equivalent for similar performance and less efficient than a C++ version (though with stronger binary compatibility guarantees).

Comment Re:As a C programmer (Score 1) 308

As for the specific example (dst - src >= len): Comparing against a dst - len operation would require an intptr_t that as you pointed out is optional. dst - src requires a ptrdiff_t type that isn't optional in C99 and can be found in stddef.h

This is correct, however it is undefined behaviour to compare two pointers to different objects. In particular, C is intended to support environments where objects are allocated as segments and can be relocated in a linear address space (I work on one such architecture and wrote the C compiler for it, though we actually do support this idiom because so much real-world code depends on it). In such an environment (which includes the version of C that targets the CLR), there is no guarantee that the ordering of two objects in memory will be stable.

Slashdot Top Deals

Asynchronous inputs are at the root of our race problems. -- D. Winker and F. Prosser