← Back to context

Comment by t43562

1 year ago

I think the interesting things about the mosquito are really that it was designed for manufacture in a sense and that it was very high performance too.

It was multipurpose AND high performance. I just think we might tend always to try to specialise and think that specialisation is the highest possible good.

To turn this to software, it was powerful for Android and iOS to use languages for which a lot of developer talent existed already and to pay attention to the ease of development more than ultimate performance. Nokia used an active-objects based version of C++ which used little memory and could get good performance out of the tiny ARM chips of the day but was very hard to program for. ARM chips suddenly got better and made most of this pain unnecessary but there was no way to suddenly make the C++ dev experience better without really starting from scratch.

It wasn't at all "designed to manufacture", it was an incredibly hard to build aircraft, requiring labour of extremely skilled carpenters as it was built of large number of wood elements requiring a very high precision of shapes to tightly fit together. Incredible pain in the ass to manufacture and no one else in the world could repeat a similar project. But the result was worth it.

  • Well, in the sense that it could be built by a much more available manufacturing skill and more available materials. I know that's not about ease for the workers but it made production much easier overall.

    • Nope; the manufacturing skill required was exceptionally rare, it's a lot harder than riveting aluminium sheets - any housewife could do it. Carpentry requires years and years of skill build-up, wood is unforgiving material. Mosquito production always struggled with shortage of people who could be taught how to do it.

      1 reply →

“Nokia used an active-objects based version of C++ which used little memory and could get good performance out of the tiny ARM chips of the day but was very hard to program for.”

I don’t think C++ was the problem there. The tooling was terrible, documentation even worse. It didn’t feel like they actually wanted developers.

  • C++ was a total disaster for one reason and everything came out of this:

    It cannot handle running out of memory safely.

    Handling an out of memory exception requires memory. 50% of the nastiness came out of the way Symbian tried to address this by redefining the new operator so that it could return null instead of raising an exception - the whole approach to memory management became horrendous because of this. 2 stage initialisation etc. It meant that all existing C++ code and containers were not portable.

    20% of the nastiness came out of C++ being very immature at the time it was all started so OS classes for handling various kinds of unicode strings were not nice, there was no ABI stability. At Nokia the ARM compiler was used and it was very slow and required licenses which made it expensive to build in parallel.

    20% of the nastiness came from choosing the windows DLL model over the linux .so one with export slots so that adding one method to a class would move the slots around and make a DLL incompatible if you didn't go through a complicated freexing process which seemed to go wrong from time to time. Adding one item to a datastructure also could crash existing programs which is par for the course in C++ but not Java and this was quite shitty.

    These percentages are just my rough stab at it - maybe enough to give an idea.