148 karma · joined May 11, 2017
I feel like one of the best ways to acquire this wisdom is to post a project with lots of mistakes and let people tear it apart.
Nowadays I do computer graphics for fun, and I want to be able to create full applications, so I lug around my MacBook, but I have no doubt if I upgraded from my venerable iPad 1 I could find apps that let me play with shaders, or web-apps that let me do quite a bit more.
"The new Surface Hub 2 is sleeker, more agile and more affordable to fit any workspace or work style."
No info on exactly how much more affordable.
Disclaimer: I work at Microsoft (but not on this).
Full disclosure, I work for Microsoft, this post doesn't reflect my employer in any official capacity, etc.
I could make an awful enumerate implementation in C:
#define enumerate(item, array) for (int i = 0; i < sizeof(array)/sizeof(array[0]); i++) { item = array[i];
#define enumerate_end }
...
enumerate(int number, numbers)
printf("Number is %i\n", number);
enumerate_end
...But then everyone reading it would have to go read my enumerate definition, whereas they'd understand the regular for loop immediately.I think higher-order functions are a great tool when they're used to remove complexity. The tricky part is that your reader needs to already understand how they work. If adding the definition of a higher-order function would make your code longer than simply not using it, I think it's a bad case to use it.
Functional programming as a paradigm makes sense when you want to limit the context a programmer has to be aware of when working on a problem, but in this case recursion and imperative programming accomplish the same goal.
main(i){for(;i<101;puts(printf(i%3?"%d\r":"fizz",i)&&i++%5?"":"buzz"));}