Yikes.. I'm going to have to reread this later to grok it better. I think it's nice that the language has added all these new features (though the macros at the end tell me it's not enough..) - but I keep feeling like the direction of the language post-C++11 has been steered by library developers with these more and more difficult to digest features. Features that you don't end up using every day, and so they never really sink in.
There are plenty of simpler things I'd like them to tackle before. Just in the past week of work two examples come to mind (just to illustrate that there are still issues)
- I was trying to get some function calls to inline and had to fight the compiler for half the day to get it to inline them for me (I still don;t understand why it's okay that the compiler ignored the inline keyword. Can't we assume that I as the developer will know what's best if I explicitly put the keyword there?)
- Then the next day I had the opposite problem where a branch was being inlined even though I wanted a if(/rare event/){ jump to some method}. Again the language provides no tools for me to accomplish that
There are tons of issues with the standard library containers and data locality that have been ignored too.
C++ is THE high performance language - can we spend some time on performance and stop pretending that there isn't room for improvement on that front?
So is this a program that makes it easier for people to change jobs after coming to the US on an H1B? Doesn't sounds like they're gaming anything, but it does sound like something that's sorely needed.
As and aside, with all the offtopic comments going one: while the H1B program is definitely flawed I think it's amazing that no one stops to consider the ethics of draining the 3rd world of its talent.
If there are all these amazing talented programmers in India or wherever, then maybe YC should open an office there
I'm gunna defend the otherside here. As a recent post on HN pointed out, when Google Maps happened people were outraged that you could look into their yards. Same thing with Street-View. Zuckerburg just understands that we're moving into a post-privacy world and they're really pushing the envelope here. For example I think people were outraged by Graph Search, but I think if they were to have released it in 2 years it would have been received differently. People were at first creeped out by Google Now and Amazon Echo, but now most people don't mind.
The thing they should worry about is pushing the envelope too far and too fast. I think for-instance WeChat would have totally destroy Facebook if it weren't for its Chinese-gov't tentacles. It has a much saner privacy model where you only see things from your friends ( not to mention it has a much simpler and nicer interface )
To the first point, I think this might be controversial... but try to avoid people you work with directly. It seems like it's better at first glance - b/c you interact with them more - but the reality is there are whole layers of professionalism and competing interests between you and them which actually kinda preclude you from building a system of mutual trust.
Maybe "trust" isn't quite the right word, but I'm struggling to find a better one. The difference between an acquaintance and a friend is that you can implicitly know they will help you and that you will help them. This involves being willing to do thing while expecting nothing in return. In a work setting that usually leads to bitterness
I think an OS class isn't meant to prepare you for working on the operating system. The vast majority of people that take an OS class aren't going to work on OSs, but they should appreciate how everything works. Using a language optimized for communicating "how everything works" clearly should be a priority!
I think this is part of a larger issue of people making programming their lives. Our profession encourages obsessiveness more than most - and making your work your life is something people seek out! (just look at startup culture)
I find it makes finding professionalism a lot harder. Most companies expect you to be friends with your coworkers/boss/etc. and then leverage that to exploit their workforce.
I like the artist alternative he proposes. With github you can now take ownership of your work/contributions. You can go into an open source project and make a contribution and then never touch that software again - yet your accomplishment is something that's tracked and stays with you
I don't really like the fetishizing of Tuft's style.
If you actually read his books, what he actually does is present a mental model for what to take into account when designing. But his style isn't meant to be the end-all of typesetting or data presentation! The books aren't saying "see, I made this design for the following reasons. Now everyone should emulate me!" It's just one solution in the realm of all good design solutions.
One example I would immediately point to would be ggplot2. A wonderful library in a lot of respects, but the defaults are absolutely horrendous!! The default grey background with white lines was just pulled from one of Tufts's books without a second of thought b/c these grey backgrounds are horrible waste of ink when printing and are actually chart-junk b.c most of the time you have a white background - for-instance in a powerpoint (<- that was a funny b/c Tuft hates powerpoint)
Here too, the cream colored background looks gorgeous on paper and just weird and out of place on a webpage.
It's started to lag and be very clunk for me recently (though maybe I just need to close some tabs). It used to be incredibly more responsive than facebook.com
I mean, it's only "necessary" because it would be a catalyst for the proletariat revolution. The Russians and the Maoists generalized on the idea and showed that it's more an issue of getting the disenfranchised organized - whether they be factory wage slaves or farmers that don't own the land they work
There are plenty of simpler things I'd like them to tackle before. Just in the past week of work two examples come to mind (just to illustrate that there are still issues)
- I was trying to get some function calls to inline and had to fight the compiler for half the day to get it to inline them for me (I still don;t understand why it's okay that the compiler ignored the inline keyword. Can't we assume that I as the developer will know what's best if I explicitly put the keyword there?)
- Then the next day I had the opposite problem where a branch was being inlined even though I wanted a if(/rare event/){ jump to some method}. Again the language provides no tools for me to accomplish that
There are tons of issues with the standard library containers and data locality that have been ignored too.
C++ is THE high performance language - can we spend some time on performance and stop pretending that there isn't room for improvement on that front?