Message from JavaScript discussions

November 2017

— You wouldn't run Ruby or Java on an Arduino... but what if it had 8GB of RAM and a 3GHz processor


But that's a problem too... abstraction fits into 2 categories (well, two main ones at least). Abstraction via convolution and abstraction via mux/demux

— A lot of the time, people mistake convolution for abstracton, and you can run into badly designed libs/frameworks this way where it's easier to poke the innards of the thing than it is to use the provided interfaces

Message permanent page

— Like those asserts I wrote, that is abstraction via thunk mux/demux

— User experience

— Either they can get a cryptic error which may not explain the type is wrong althrough it is the cause of the error, or they get a nice message clearly explaining it

Message permanent page

— C++ is really crappy when it comes to that lol

— In C++ it will pick a "function candidate" for the argument types, so you can write 5 functions all named the same, but accepting different types, and C++ will try to use the most fitting one... If you give types which there were no functions for, you will get: [Error] no matching function for call which really uh... does not tell you what happened

Message permanent page

— Or you even can get [Note] no known conversion for argument 1 from ...

— It is trying to do some things under the hood for you, and complains when it fails, but you still don't know that's because you passed the wrong type

Message permanent page

— C++

— For comparison