C++ v skratke
Objektovo orientované programovanie
Jazyk C++ je už na poli programovacích jazykov veľmi dlhú dobu, no napriek tomu je stále veľmi populárny. I keď medzitým vzniklo mnoho nových jazykov, nikdy nedokázali prekonať potenciál jazyka C++. Jazyk C++ je radený medzi nízkoúrovňové jazyky a preto je ním možné napísať veľmi rýchle a pritom pamäťovo nenáročné aplikácie. V súčasnosti zažíva znovuzrodenie, prechádza novou štandardizáciou, čo ho radí medzi moderné jazyky s najnovšími trendami na poli programovacích jazykov.
Visual Studio 2015
Visual Studio 2015
K tomu, aby sme mohli písať kvalitne a rýchlo zdrojový kód, potrebujeme dobré vývojové nástroje. Na začiatku náš vývoj bol zameraný hlavne pre Windows a najvhodnejším vývojovým prostredím sa javilo Visual Studio. Začínali sme verziou 6.0 a postupne prešli až po súčasnú verziu Visual Studio 2015. Výhodou Visual Studia je integrácia viacerých programovacích jazykov do jedného nástroja. Na platforme MAC OS v súčasnosti používame XCode 7. K písaniu kvalitného kódu sú však potrebné i ďalšie nástroje ako AQTime, VTune a ďalšie. Pri vývoji našich produktov používame štandartné C++ knižnice (std, stl, boost atď.) a rôzne špecializované knižnice (zlib, libjpeg, libpng, libtiff, freetype a mnoho ďalších). Snažíme sa používať multiplatformové knižnice, pre ľahší vývoj na iných platformách.
Naše znalosti
Naše znalosti
Väčšina z nás sme vývojári a náš primárny programovací jazyk je C++. Poznanie základných štandardných knižníc C++ je pre nás alfou a omegou. PDF špecifikácia je obsiahla a preto sa veľa z nás špecializuje na určité časti. Okrem toho časť vývojárov sa zameriava aj na veci mimo oblasť PDF formátu, ako napr. používateľské rozhranie, napojenie na rôzne DMS či integrácia našich produktov do iných programov (napr. pluginy do internetových prehliadačov). Do nášho tímu okrem vývojárov patria aj špecialisti na inštalátori, testovanie či ľudia starajúci sa o špecifikácie a rozdelenie úloh. Mnohí z nás okrem jazyka C++ ovládajú i ďalšie programovacie jazyky (java, C# a pod.). Náš tím dokáže zastrešiť celú prácu na projekte od jeho začiatku až po dodanie finálnej verzie. Odpadá tak potreba najímať si ďalšie tímy na to, aby bol výsledný produkt profesionálny.
GIT a práca v tíme
GIT a práca v tíme
Práca v tíme prináša potrebu efektívne riadiť tím a zdieľať zdrojový kód. Na začiatku našej existencie sme používali vlastné systémy na zdieľanie zdrojového kódu. Postupným zväčšovaním tímu prišla potreba zefektívnenia tejto činnosti. K tomu nám pomohol systém CVS najskôr na vlastnom serveri, neskôr sme prešli na profesionálne zázemie. V roku 2012 sme prešli na systém GIT. V súčasnosti používame github na zdieľanie zdrojového kódu medzi našimi programátormi a buildovacími systémami. Na rozdeľovanie práce v tíme a sledovanie úloh nám slúži systém JIRA a Confluence, kde sú zaznamenané všetky úlohy ale aj chyby v našich aplikáciách. Úlohy sa automaticky priraďujú zodpovedným ľuďom, čo nám pomáha mať prehľad o celom postupe vývoja a využití ľudí a prostriedkov v tíme. Pre zostavenie výsledného produktu sme používali systém Bamboo. Od roku 2016 sme prešli na systém Jenkins.
Moderné C++
Moderný, rýchly, efektívny, robustný a optimálny, asi tak by sme mohli špecifikovať kód napísaný v najnovších štandardoch jazyka C++. Nový štandard C++ 11 ho zaradil opäť medzi moderné, rýchle a efektívne jazyky. Štandardom C++ 14 sa toto len podčiarklo a pridala sa optimálnosť a robustnosť. V súčasnosti je pripravovaný ďalší štandard C++ 17, ktorý opäť pridá veľa nového a posunie moderné C++ na vyššiu úroveň.
Multiplaformovosť
Aj keď náš produkt Nitro Pro je z veľkej časti predávaný pod operačný systém Windows, knižnica pracujúca s PDF dokumentom je napísaná pre rôzne platformy. Knižnicu možno používať na Windowse, MACu, iOS a pripravujeme verziu pre Android a Linux. Knižnica je napísaná v jazyku C++ a prístup k nej je pomocou HFT (host function table), čo je len tabuľka funkcií. To nám dovoľuje ľahko nahradiť funkciu v závislosti na architektúre. Knižnica môže byť prilinkovaná staticky ako aj dynamicky v závislosti od požiadaviek.
Využívané knižnice
V našej práci nám pomáhajú aj knižnice tretích strán. Okrem štandartnej knižnice jazyka C++ používame i knižnicu boost, Qt, prípadne knižnice operačného systému, ak to pomôže k napísaniu optimálnejšieho kódu. Okrem to sa PDF štandard odkazuje na mnoho iných algoritmov a štandardov, a preto využívame špecializované knižnice ako napríklad zLib, FreeType, Anti-Grain Geometry (AGG), OpenSSL a mnohé ďalšie.
Testovanie
Aj keď najlepší tester je zákazník, vždy je potrebné produkt otestovať, aby bol vydaný v očakávanej kvalite. Testovanie prebieha na rôznych úrovniach, od základného testovania vývojárom, cez testovanie interným alebo externým tímom testerov až po integračné testy. Na testovanie využívame "unit" testy, "case" testy, automatické testy, regresné testy a testovanie pomocou tretích strán. Využívame aj ďalšie prostriedky ako VTune, AQTime, JIRA, Bugsplat a ďalšie.