U Microblinku, jednom od najbrže rastućih starupa u Hrvatskoj i regiji, “zastarjeli” C++ i dalje je glavni programski jezik. Zašto je tome tako, i koje su prednosti korištenja ovog jezika, popričali smo Nenadom Mikšom, koji je Head of Tools & Software Infrastructure u Microblinku. Evo što on o tome kaže…
Jedna od vrlo čestih priča između developera iz različitih firmi je priča o tehnologijama koje se koriste za razvoj proizvoda, načinima korištenja tehnologija i metodologiji organizacije posla. Pa tako, dok pričam sa svojim kolegama iz drugih startupova, svi se začude da mi u Microblinku koristimo C++ kao glavni programski jezik. Odmah te prozovu dinosaurom, jer zašto bi itko u 2019. godini koristio zastarjeli jezik poput C-a ili C++-a, kad postoji hrpa modernih jezika, poput Pythona, JavaScripta, C#-a, Jave itd.?
Zašto bi jedna “Startup-state-of-mind” kompanija, gdje je bitna agilnost i sposobnost brzog razvijanja značajki, koristila jezik za kojeg se smatra da je čista suprotnost tome i na taj način samu sebe potkopavala? Zar nije korištenje C++-a čisti mazohizam?
No, Microblink je prošle godine uvršten među 500 najbrže rastućih tvrtki u EMEA regiji. Je li to zbog ili unatoč korištenju C++-a kao glavnog jezika u firmi?
C++, mitovi i činjenice
Mit o zastarjelosti C++-a uglavnom dolazi iz doba 90-tih i ranih 2000-tih godina, dok je C++ bio jezik u kojem je developer bio odgovoran da ručno upravlja memorijom, što je često naporan i pogreškama sklon proces. Međutim, od 2011. pojavom modernije inačice C++-a, poznatijeg kao C++11 te kasnijim revizijama standarda 2014., 2017. i nadolazeće 2020., C++ se razvio u jedan vrlo moderan programski jezik kojeg je ugodno koristiti u svakodnevnom developmentu. Pritom je C++ zadržao sve svoje prednosti koje je i prije imao pred spomenutim jezicima: kompatibilnost sa svim postojećim platformama i superiorne performanse finalnog programa.
Zašto C++?
Microblink je počeo s korištenjem C++-a još davne 2012. i to prvenstveno s ciljem da jednom napisani kod možemo izbildati na svim platformama koje naši klijenti žele – bili to različiti Androidi, iOS, Windows, Mac ili Linux ili egzotične hardverske arhitekture poput MIPS-a ili Itaniuma ili čak web browser. Drugi razlog je bila široka dostupnost različitih programskih biblioteka koje možemo koristiti u izgradnji naših proizvoda, poput OpenCV-a.
Dodatna pogodnost su nam tada bile superiorne performanse naših proizvoda koje smo prvenstveno mogli zahvaliti jako dobrim C++ kompajlerima koji su naš tadašnji relativno neefikasan programski kod mogli prevesti u vrlo efikasnu aplikaciju, što nam je omogućilo stratešku prednost.
Sve te pogodnosti imamo i danas, uz razliku da danas naši developeri pišu vrlo efikasan kod, što dodatno olakšava optimizacije kompajlerima. Idealan primjer je naš sustav za izvođenje neuronskih mreža koji upogonjuje većinu naših današnjih proizvoda, prvenstveno BlinkID. Runner već i sad radi brže i efikasnije od trenutno najbržeg mobilnog izvođača neuronskih mreža otvorenog koda TensorFlow Lite. Međutim, mi ga kontinuirano poboljšavamo te će u budućnosti raditi još brže i efikasnije, kažu iz Microblinka
Ulaganja u developere i pripreme za budućnost
Kako bismo to postigli, stalno ulažemo u edukaciju naših developera, pa smo tako u rujnu ove godine sudjelovali na CppCon C++ konferenciji u Aurori (Colorado, SAD). Tu smo se imali prilike susresti i diskutirati sa samim developerima različitih C++ kompajlera, ljudima koji određuju smjer razvoja C++-a kao jezika te mnogim drugim developerima s kojima smo razmjenjivali developerska iskustva.
Dodatno, iz prve ruke smo saznali koje nove značajke C++-a 20 izlaze sljedeće godine. To će nam uvelike olakšati pripremu našeg programskog koda i naših developera za novu inačicu C++-a, koja će biti još modernija i ugodnija za dnevni development.
I na kraju, možda smo i bili dinosaur među startupovima, ali onaj dinosaur koji je preživio udar asteroida i evoluirao u agilnu ptičicu, koja se brzo prilagođava promjenama u staništu u kojem obitava.
Više o svemu saznajte na .debug konferenciji 12. i 13. prosinca 2019.