Qt Group - Eeppinen matka teknojätiksi

Tämä on se avain ajatukseen.

Kuka on yllättynyt siitä, että sulautettuihin järjestelmiin keskittynyt framework ei ole käytössä tyypillisissä IT-hankkeissa. Jaskan mainitsemat kielet ovat toden totta vahvasti käytössä softataloissa, koska ne tarjoavat osaajalle hyvät työkalut moderneihin, tyypillisiin hankkeisiin. Samaa tarinaa itsekin kuulen suomen OHTU-piireistä ja nämä kielet eivät ole häviämässä minnekään.

Mutta Qt:n osalta taas pitää muistaa, että ketä asiakkaita oikeasti tavoitellaan ja mitkä heidän vaatimukset ovat. Kun puhutaan frameworkista, jolla pystyy rakentamaan tehokkaasti pyörivää (C++) ja kieltämättä komeaa käyttöliittymää normaalia nopeammalla aikataululla, niin sulautettujen järjestelmien osalta Qt alkaakin kuulostaa houkuttelevalta vaihtoehdolta hankkeen tilaajalle.

20 tykkäystä

Huhhuh tuntuupas tämän osarin jälkeen halvalta nuo 15€ ostetut QT t romahduksessa :thinking:

1 tykkäys

Yksi hieno päivä lisää olla Kuutin kelkassa. Foorumille, analyytikoille ja muutamalle aktiivisimmalle käyttäjälle menee allekirjoittaneen kiitokset. Tänään juodaan Kuuttikahvit ja illalla mennään Fortumin yhtiökokouksen jälkeen pitsalle kun virtuaalireaaliosingot kilahtaa :wink:

Viimeaikaista keskustelua lukeneena haluaisin kuitenkin tiedustella mielipiteitänne Kuutin pitkän ajan tarinasta? Jos ymmärsin alasta jotain tietäviä oikein niin heillä on käytössä ”vanhahko” koodaussysteemi? Mitä haittoja siinä bisneksen kannalta on? Olen ymmärtänyt että nykyinen tapa toimia ja järjestelmät riittää hyvin Kuutin tarpeisiin?

2 tykkäystä

OPllä OLI target 28,00 uskon että huomenissa on 30,00screenshot.4

2 tykkäystä

LG:n kanssa yhteistyö vain syvenee, kunhan vain pysytään itsenäisenä eikä käy vain niin että LG syö omiin hoiviinsa tätä.

Saahan tätä jotkut vielä alelaarista :smiley:

1 tykkäys

Ei se ole vanhahko. Se vain soveltuu paremmin osaksi isompia tuotteita, ei vain “tavallisen” tietokonesoftan rakennustyökaluksi.

Jos koodaat jollekkin firmalle jotain “custom”-sovellusta jonkun vakiobackendin päälle pyörimään browserissa tai jonkun purkkaruntimen päällä , on helpompaa käyttää “modernia” ja “helppoa” frameworkkia Javalla tms.

Jos koodaat auton dashboard-UIta tai vaikka jonkun lääkintähärvelin näyttöä tai hellan digitaalinäyttöä ja softan pitää pyöriä mahdollisesti hyvin rajallisilla resursseilla, eli c++ käännettynä kohdeplatalle, QT on kova luu, varsinkin kun se taipuu niin monelle alustalle - eli kun kerran teet duunin QT:lla niin vaikka itse laitteen rauta vaihtuisi jostain syystä erilaiseksi, suuri osa duunista on edelleen käyttökelpoista. Samoin QT auttaa jos haluat vaikka niin että laitteen UI on myös käytettävissä etänä kännykkäsovelluksen kautta - voit tehdä sen UIn kerran ja ajaa sitä niin kännykässä kuin itse laitteen omalla näytöllä hardiksella.

QT:lla voi edelleen myös tehdä ihan hyvin UIta tietokonesoftiin kun tarpeen on että se pyörii käännettynä natiivina erilaisilla käyttiksillä eikä devauksen helppous ole niin iso asia vaakaupissa kuin portattavuus ja lopputuotteen suorituskyky.

Oikeat ratkaisut oikeisiin paikkoihin. QT:lle selvästi on ottajia ja kysyntää.

30 tykkäystä

Näin olin asian juuri ymmärtänytkin, kiitos :blush:

Analyytikoiden ja foorumin keskustelu on kyllä avannut useamman firman toiminnan selkeämmäksi ja ymmärrettävämmäksi, varsinkin kun oma ammattitaito on toisenlaisilla aloilla, jatketaan sitä :blush:

6 tykkäystä

Vareliuksen mukaan LG:n uusimpien isojen sopimusten vaikutus alkaa realisoitua lisenssituloihin vuoden 2020 lopulta… jos paljon yksinkertaistaa, niin jakelulisenssien tuottama tulo siis oletettavasti tulee kiihtymään loppuvuotta kohden :slight_smile: Lupaa ihan hyvää, koska ei tämä vuodenvaihde Q4’19 - Q1’20 ole kovin huonosti mennyt…

9 tykkäystä

Aloitetaan nyt ensinnäkin tuosta C++:sta. Monien webbiselainten kuten esimerkiksi Chromen, Firefoxin, Safarin ja Edgen ydinosat on kirjoitettu C++:lla. Kohtuullisen tuoreiden Googlen Tensorflow ja Facebookin PyTorch AI-frameworkkien lähdekoodi on C++:aa. Windowsissa, Linuxissa, OS X ja Android OS:ssa on kaikissa C++ koodia, joskin Androidin käyttöliittymäosista iso osa on Javaa. Java ohjelmat ajetaan Java Virtual Machinessa(JVM), joka on kirjoitettu pääasiassa C++:lla. Taivaan tosi on, että C++ ei ole häviämässä minnekkään, varsinkaan kun sen rajapinta astetta alemman tason C kieleen on kohtuullisen mutkaton.

Esimerkiksi Tensorflow tai PyTorch -frameworkkia käyttävä ohjelmoija kirjoittaa koodinsa useimmiten helppokäyttöisemmän Python API:n läpi, vaikka koodia voisi kirjoittaa käyttäen myös C++ rajapintaa.

Toinen kysymys onkin sitten, että miten Qt menestyy GUI -frameworkkina, kun tuohon C++ ja loppu applikaatoiden väliin usein tulee jokin toinen ylemmän tason kieli, jolla itse applikaatio kirjoitetaan… Autonvalmistajat ja sulautettujen järjestelmien kehittäjät käyttävät Qt:ta todennäköisesti suoraan natiivin C++ API:n läpi, mutta täytyy muistaa, että kielessä on tarjolla myös Bindingit ainakin Pythonille, Golle ja Javalle, joskin ainoastaan Python rajapinta on projektin ylläpitämä.

26 tykkäystä

Kiitos @Aston_Livingstone aktiivisesta tiedon jakamisesta. Lisätään tänne video, jossa OP:n Kimmo Stenvall kommentoi QT:n tulosta.

14 tykkäystä

Nyt on laadukasta settiä @idkf @Antoinette @Jaska
Kiitoksia laadukkaiden mielipiteiden tuonnista keskusteluun, meikä arvostaa näitä yli kaiken! Mukava lukea :slight_smile:

6 tykkäystä

Siis selvennyksenä, että eikö Qt:a käytetä QML kielen kautta myös? Sitä ainakin Qt:n sivuilla vertaavat HTML5 kieleen.

1 tykkäys

Carnegie ollut tänään myyntilaidalla. Myynyt tähän mennessä lähes 50000 lappua laitaan eli yli 40 prosenttia päivävaihdosta. Ilman tätä voisi kurssi olla hieman korkeammallakin.

4 tykkäystä

Carnegie painaa laitaan ja suomalaiset piensijoittajat tankkaa, upeaa että kerrankin näin päin :heart_eyes:

5 tykkäystä

Jossain kohtaan niiltä varmasti loppuu myytävä kesken :wink:

4 tykkäystä

Käyttöliittymiä voi tehdä käytännössä kahdella tavalla. Qt Widgets tyylillä suoraan C++:sta, jossa käyttöliittymän erilaiset visuaaliset elementit ovat C++ -olioita joita luot, pidät tallessa jne. ja joiden ominaisuuksia muokkaat suoraan. Alkuperäiset Qt desktop applikaatiot tehtiin näin. Qt:n koodieditorissa(jota ei siis pidä sekoittaa Qt softakirjastoon), Qt Creatorissa, on myös mahdollisuus tehdä tällainen Qt Widgets käyttöliittymä graafisesti vetelemällä palikoita hiirellä laatikkoon, josta sitten generoituu nuo C++ oliot. Vastaavasti tuon graafisesti tehdyn käyttöliittymän voi generoida Pythonille, josta generoituu Pythoniin nuo oliot joihin sitten laitetaan dataa samaa tapaan kuin C++:ssa ja muokataan olioiden kokoa, luodaan uusia jne.

Toisella tapaa vastaavasti sitten käyttämällä tai QML tyylillä, jossa käyttöliittymän visuaalisia elementtejä luodaan ja käsitellään QML:llä joka on kai käytännössä sama kuin JavaScriptiä kirjottaisi. Vähän toteutuksesta riippuen sitten oletetusti käyttäjän syöttämää mahdollista dataa sitten pyöritellään tuossa JavaScript(QML) muodossa kirjoitetussa koodissa tai sitten tuota QML koodia käytetään vain datan vastaanottamiseen, ja prosessointi koodi kirjoitetaan C++:ssa. Jos datalle halutaan tehdä jotain erityisen haastava laskentaa, yleensä tuo QML ottaa vaan datan ja se tallennetaan C++ taulukoihin, listoihin tms. säiliöihin. Esimerkiksi C++ listalle matemaattiset operaatiot ovat huomattavasti tehokkaampia kuin JavaScript listalle. Sama listan läpikäynnissä jne.

Kilpailevia teknologioita on sitten esimerkiksi erilaiset HTML -pohjaiset käyttöliittymä frameworkit, jotka toimivat esimerkiksi siten, että käyttöliittymä kirjoitetaan webbisivun tyyppisesti ja C++/Pyton/Java koodi sitten käynnistää laitteeseen ikäänkuin webbiserverin joka palvelee tätä “nettisivua” samalta laitteelta. Yleensä siis selaimessa pyörivää käyttöliittymää palveleva webbiserveri siis tietysti pyörii jossain muualla päin maailmaa kuin käyttäjän omassa laitteessa. Käyttöliittymän tai “nettisivun” koodi kirjoitetaan HTML/JavaScript/Css combolla. “Webbiselaimessa” pyörivä käyttöliittymäkoodi ei pääse suoraan käsiksi laitteen fyysiseen rautaan tai käyttöjärjestelmän tarjoamiin palveluihin vaan pyynnöt välitetään tuolle samassa laitteessa pyörivälle “Webbiserverille” joka hoitaa homman.

Sitten on tämä React Native, jossa käyttöliittymäkoodi on JavaScriptiä ja se ajetaan selaimen JavaScript -moottoria muistuttavassa JavaScript Coressa.

Loppujenlopuksi React Native on kohtuullisen lähellä tuota QML -ohjelmointia. Molemmissa käytännön ideana lienee, että Web -kehitystä tehnyt JavaScriptiä hyvin osaava koodari pystyisi helposti tekemään käyttöliittymän ohjelmalle, ja se toimisi erilaisilla alustoilla. Erona on miten esimerkiksi käyttöjärjestelmän tarjoamia palveluja, kuten tiedostojen kirjoittamista, oheislaitteita, prosesseja jne. käytetään. React Nativessa tuo tehdään esim. Androidille Javalla käyttäen tuota Android käyttöjärjestelmän Java API:a kun taas Qt käyttää käsittääkseni lähtökohtaisesti C++ rajapintoja, mutta ilmeisesti myös tuon Java rajapinnan käyttäminen onnistuu jotenkin.

Takamatkaa Qt:lla on React Nativeen verrattuna se, että React Native vaikuttaa hyvin samalta kuin React.js, eli React.js:llä nettisivun käyttöliittymän tehnyt koodari osaa tehdä myös React Nativella android ohjelman käyttöliittymän. Ja React.js on erittäin käytetty webbidevauksessa, joten sitä osaa moni devaaja. Toki käytännössä pelkkä käyttöliittymä ei riitä, vaan dataa pitää käsitellä jne.

26 tykkäystä

Sanotaan nyt vielä se, että käsittääkseni tehokkuusetu React Nativen ja Qt QML:n välillä tulee siitä, että React Native koodi ajetaan aina JavaScript enginessä. Eli laitteessa täytyy pyöriä lopullisessa applikaatissa tuo JavaScript engine, JavaScript koodia virhetarkastellaan sitä suoritettaessa jne.

QML koodi voidaan kääntää Qt Quick Compilerilla binääriksi, jolloin tuota JavaScriptin tulkkausta ajovaiheessa ei tarvita ja suorituskyky on parempi.

8 tykkäystä

Kimmo, Rauman Lukko!

4 tykkäystä

Uusi tavoitehinta 26€ ja lisää🤑 raporttia odotellessa.

3 tykkäystä

Hmm, mulla lukee ainakin 2.4 päivitetty tuo tavoitehinta.

1 tykkäys