ja
Olet aivan oikeassa. Ei ole. Vielä. Se, kasvaako Qt joskus sellaiseksi, on avoinna oleva kysymys. Ainakin kaikki tähdet ovat taivaalla oikeassa asennossa mahdollistaen sen. Mitä tulee kilpaileviin teknologioihin. Niitähän on. Usein ne ovat kuitenkin alusta riippuviaisia. Joillekkin asiakkaille se ei ole ongelma. Toisille se on. Varsinkin desktop-alustalla uudet web-app tyyppiset sovellukset ovat suurin kilpailija. Esimerkki tästä on Electron (esimerkki esim vs code). Tällöin rakennetaan vain platform riippuvainen web-ikkuna, jossa voi esittää itse aplikaation, joka on sama alustasta riippumatta. Esimerkki tällaisesta sovelluksesta on Jodel. Tässä lähestymistavassa on omat teknologiset haasteensa ja edut. En ala niistä pätemään tässä koska jotain menisi kuitenkin väärin. En ole koskaan kirjoittanut riviäkään .js. Jäsästä tulikin mieleen. Ei ole sattumaa että nimenomaan React, .js ja muut web-teknologiat ovat tällä hetkellä työmarkkinoilla kovassa huudossa. Palkkaus on kehittynyt todella kovaa.
Varsinkin tällä foorumilla ollaan puhuttu lähiaikoina paljon todella rauta läheisistä Qt ratkaisuista, joissa laskentateho on rajoittava tekijä. Osaan omasta mielestäni hyvin arvioida Qt:n MCU-tuotteen kilpailuvaltteja vrt. muihin teknikoihin.
Johtuen siitä miten puolijohde teollisuus toimii tämä ei ole näin mustavalkoista. Kaikille on varmasti tuttua kuinka uudet prosessorit ja muistit rikkovat jatkuvasti uusia viivaleveys ennätyksiä. Tällä hetkellä pienin massatuotannossa oleva tekniikka on TSCM:n ja Samsungin 5nm CMOS-tekniikka. Aina kun siirrytään matalempiin feature-kokoihin kasvaa kustannukset räjähdysnäisesti. Suurin tekijä tähän on ns. yield ja siihen liittyvä RnD. Joka kerta kun viivaleveys tippuu, tulee saannista huomattavasti pienempi. Maturiteetti ja economies of scale auttaa tähän ongelmaan. Saantia voidaan parantaa parilla kikalla. Esimerkiksi kompleksisissa piireissä, kuten SoC-piireissä, suuri määrä eri lohkoja mahdollistaa laitteen toiminnan vaikka osa lohkoista olisi rikki. Tällöin on kannattavinta tuottaa aina korkeimman ydin ja muisti mallin piirejä, testata piiri ja polttaa sulakkeet/laseroida tracet, jolloin pienivikaiset piiritkin voidaan myydä. Esimerkki tästä on kun esim Intel tekee prosessoreja. Litografiassa kaikki waferin lohkot ovat i9-10900K. Mutta ne jotka viottuvat voidaan myydä i3, i5, i7 malleina riippuen mitä voidaan pelastaa.
Tästä päästään SoC piireistä MCU teollisuuteen. Ensinnäkin, nämä valmistetaan todella korkeilla viivaleveyksillä. Voidaan puhua jopa matalasta um-tasosta, mutta luultavasti suurin osa on 45nm ja 90nm välissä. Nykytekniikalla näiden tekniikoiden saanti on kertalukuja parempi kuin huippumallisten SoC-piirien. Tästä johtuen kulut ovat matalat. Tästä päästään myös kompleksisuuteen. Koska MCU:t ovat verrattain yksikertaisia laitteita verrattuna kokonaisiin SoC-piireihin ei niissä ole lohkoja joita voidaan poistaa käytöstä. Tällöin korkea saanti on elinehto. Vaikka tuotantoa rakennetaan lisää ei ole vielä etäisesti nähtävissä tilannetta että edes puolista IoT kikkulsta löytyisi Mediatekin, Applen, Qualcomin SoC-piirejä.
Kuten sanoin, suurin osa MCU-piireistä, joita IoT-laitteista löytyy on yksinkertaisia (Nordic, STM, NXP, Atmel…). Muisti on suurin rajoite sille, mitä koodia voidaan ajaa. Edellämainitujen prosessorivalmistajien tuotteissa löytää Cortex M0/1/3/4/7 ytimiä ja keskiarvoisesti noin 250kB muistia (tosin huippumalliessa lähestytäään tai hieman ylitetään 1 MB raja). Tämä on vähän. Todella vähän. Jos ajatellaan 720p näyttöä ja 3x8b (3B) väriavaruuttaa vaatii se pelkän yhden framebufferin kannalta 2.76MB muistia. Tämä tarkoittaa että täytyy käyttää ulkoista muistia. Tämä on vain esittämään sitä kuinka vähän resurssia piireillä on vaikka paperilla MCU:ssa riittäisi DMIPS:jä. Edellämainittu web-app lähestymistapa vaatii tätäkin enemmän muistia (puhutaan vähintään useista kymmenistä, realistisesti parista sadasta MB:sta). Ristikäännettävyys ja testaaminen on myös yksi haaste, mutta menee ohi aiheen.
Huomoitavaa että automotive-prosessorit eivät pääsääntöisesti sovi tähän kaavaan sellaisenaan.
tl;dr: Mikäli halutaan saavuttaa IoT:lle halvan hinnan, pitää käyttää pieniä ja halpoja prosessoreja ja joiden heikkouksien ympärille pitää luoda toimiva tuote.
Tulee kuitenkin muistaa että Qt:ta käytetään paljon myös desktop sovelluksissa. Nopea lista esim täältä: Category:Software that uses Qt - Wikipedia. Sieltä saattaa löytyä varsin tuttuja nimiä perus KDE:sta (johon olen itse luottanut jo reilun 7 vuoden ajan), pieni ruotsalainen mediatalo nimetä Spotify sekä Google Earth. Kannattaa muistaa koko tuoteportfolio, ei vain se uusin ja hehkutetuin tuote.
Tämä on mielestäni mielenkiintoinen kysymys. Onni onnetumuudessa on se että kaksi potenttiaalisinta vaihtoehtoteknologia tuottajaa eivät keskity matalatehoisiin järjestelmiin ollenkaan. Puhun siis Applesta ja Googlesta. On ehkä aikaista sanoa tähän mitään, mutta jään sivusta seuraamaan kuinka teknologian ala kehittyy. Olet aivan oikeassa että tällaisen tuotekehitystyökalu-tuotteen rakentaminen on ohjelmistokehityksen mittapuussa hidas prosessi. Se on lisäksi sellainen, ettei rengasta kannata montaa kertaa keksiä uudelleen. Joillakin aloilla on luonnostaan päädytty yhteen tai kahteen vallitsevaan malliin (esim x86 ja ARM) mutta toisaalta joskus on hirveä määrä identtisiä kilpailijoita (Catia, Solidworkd, Invetor, NX). Tämä kai määräytyy markkinalakien mukaan. Tärkeää on kuiteknin se että nyt jo on hallussa teknologinen etumatka. Mikäli tuotekehitys ei pysähdy tai lähde väärään suuntaan on varteen otettava etumatka olemassa myös tulevaisuudessa vaikka kilpailioita tulisikin.