In the .NET embedded space there's also Meadow from Wilderness Labs (which is based on Mono, as opposed to NanoFramework which is a rework of MicroFramework[0]).
There was (semi) recently a "dev day" for Meadow which I found super interesting[1]. The founder of Wilderness Labs has also been doing a bit of streaming on Twitch[2].
They also have some great docs if you're interested in learning about electronics in general[3].
It's worth noting that Meadow runs full .NET; so you get generics, and all the other modern goodies. Currently we support .NET Framework 4.7.2/.NET Standard 1.6, though we're working on Core3.x support.
Also, we support F# and VB.NET. We even ship templates for both. However, F# 5 broke our F# support. :'( :'(
Probably not F#, although the programming part might be a lot easier. The problem with F# is that programming idiomatic F# tends to abuse the garbage collector quite a bit. They had to build a new garbage collector for the CLR before F# became really usable, and this runtime abandons that garbage collector for a simpler mark/sweep collector.
Naively I would say why shouldn't it? No matter which language you program in, the resulting IL code should be the same. On the other hand there are often utilities in the class library that compilers rely on, like attributes, helper functions and what not.
I've used it as well on a MacBook - no major issues. But does the .net nanoframework work on a MacBook?
Yeah, it's stock photo. I get it. I guess I would have expected a .net-oriented project may have at least chosen a stock photo with, say, C# code on the screen... :)
It was .NET MicroFramework / Netduino that got me into playing with embedded programming and microcontrollers. Whilst I found it useful at the time (being a C# coder) the fact that it's interpreted and has a huge runtime means it's not really suited for embedded work. It sounds like this is the same so I'm not going near it.
I've been using C# for over a decade, but recently switched my focus to Python.
I've been using MicroPython to build wasp-os apps for the PineTime/P8 smartwatch, and I find it to be a great compromise between productivity (REPL, dynamic, expressive syntax) and performance (@native, @viper, C embedding).
>On 23 January 2017, after numerous attempts to revive .NET Microframework project and bring it to community governance and a period of work "in the dark", a group of embedded systems developers publicly announced .NET nanoFramework as spin-off of .NET Micro Framework.
It's just a rework of the .NET MicroFramework, so it does not have Generics or any of the other new goodies post .NET v1.0 that are not compiler sugar.
My understanding is it doesn't matter in Haskell since it lacks reflection, they are real because you can't reflect and see they have been type erased at runtime.
In C# and Java reflection is used extensively and the generics still exist in C# when reflecting they are gone in Java.
Are “monomorphism” and “reification” interchangeable terms though? Considering how .NET now has covariant/contravariant generics I wonder if it could be described as having “polymorphic” generics as opposed to monomorphic generics - (unrelated to OOP polymorphism, ofc).
AFAIUI _monomorphisation_ and reification are interchangable.
That means, that if I have a polymorphic (generic) class `MyClassA<T>`, the compiler (regardless if it is JIT in the runtime as in C#, or AOT as in Rust) monomorphises (reifies) `MyClassA` for each instantiation of `T`. So `MyClassA<MyClassB>` and `MyClassA<MyClassC>` are distinct classes.
For this reason, co-/contra-variance in C# works only for interfaces. Type parameters in classes are invariant. `MyClassA<MyClassB>` and `MyClassA<MyClassC>` are distinct classes, neither sub-/super-class of the other, even if `MyClassB` were a subclass of `MyClassC`.
There was (semi) recently a "dev day" for Meadow which I found super interesting[1]. The founder of Wilderness Labs has also been doing a bit of streaming on Twitch[2].
They also have some great docs if you're interested in learning about electronics in general[3].
[0] https://community.wildernesslabs.co/t/lay-of-the-land/362
[1] https://www.youtube.com/watch?v=qE8qWhiz8Vw&list=PLoP9Fu9zn7...
[2] https://www.twitch.tv/wildernesslabs
[3] http://developer.wildernesslabs.co/Hardware/Tutorials/Electr...