Da Fortran se i dalje dosta koristi, ovo sa C++ i C11/C14/C17 je samo neki uvod, nije to nov jezik vec stil i nacin pisanja programa (meta jezik) sa primenjenim nekim vrlo bitnim i korisnim stvarima, interfejsi, vektori, objekti, imenovane i definisane veriable i tako dalje, ima svasta tu zanimljivo sto je napravljeno za tacno neke konkretne potrebe i implementirano u jezik kao standard i samim tim programerima koji su do sad kodirali u C i C98++ moze puno da pomogne jer su napravljene precice i stvari obradjene tacno kako treba.
Na primer Bjarne zagovara potpuno upotrebu Exception-a jer vodi u razne probleme, takodje zagovara upotrebu Garbage Colector-a za "curenje" memorije, covek kaze "ne sme da curi i nemoj da curi" ... i tako jedno stotine razlicitih pravila kako uvezati pointere/vektore/objekte/metode/klase/interfejse/tipove/strimove/i-ko-zna-sta-sve sve zajedno
Pa dalje na primer tu je .hpp ekstenzija koja je u sustini c++ header fajl ali zbog mogucnosti upotrebe namespase-a za variable moguce je napisati potpuno portabilnu biblioteku u hederu i nezavisnu od ostatka coda-a i bez ostatka source fajlova!
Auto varibale i lambda funkcije, heh, to je tek zanimljivo i kako rade sa programskim interfejsima, gomila stvari se pise meta jezikom a kompajler to onda uzme i prevede u najoptimalniji format i usput odradi gomilu nekih provera a to sve da bi se odrzala cista semantika code-a, npr sto nesto ne moze da se iskaze u metrima ili kilogramima ili sekundama nego stalno nesto mora da se konvertuje (mislim da je spomenuo bas Fotran koji to moze ali nisam siguran). Ima tu vrlo bitnih pravila i programskih paterni koje na prvi pogled izgledaju banalno ali nisu ni malo kada se veoma ozbiljno i detaljno sagledaju.
Dalje Clang je tek prica za sebe, bas mi se svidja, cross-platform build system koji radi razne "stalno potrebne" stvari koje se ticu pronalazenja biblioteka, pravila za izbor objekata za odredjene platforme i tako dalje, opet neka meta prica ali koja stvarno lepo radi i koristi se uveliiiiiikoooo samo sto mi to ne pratimo bas ... automatski generise Makefile pa make onda pokrene prevodjenje i linkovanje ... probao na Linux i na Mac i radi kao dobar dan : ) ... mislim da ce i ARM (tj mozda vec tako i radi) kompajleri da rade 1:1 ...
Ovo je ozbiljna prica i ono sto stalno spominjem i kada je u pitanju programiranje za embeded platforme i mikrokontrolere, ne trebaju mi nikakve biblioteke (CubeMX, STDLib i slicno), potrebna mi je cista semantika coda-a i kompajler koji je dovoljno pametan da samo preko dobro organizovane header definicije programeru pruzi novi nivo organizacije i to BEZ programskog overhead ili vrlo minimalnog a sto sve ove doticne funkcije i ST-ove biblioteke trenutno rade, funkcije koje pozivaju funkcije koje pozivaju funkcije, cek malo, svaki poziv 1us na STM32F103, silno vreme se gubi jer nije dobro organizovano ...
Hocu jezik i standard koji kada se kaze upali pin 1 na MCU da to svede na 1, 2 ili 3 masinske instrukcije (najmanje sto moze) i hocu da mi kazu kako to da napisem i da koristim ubuduce, kojom god sintaksom da trebam da napisem a ne obrnuto da ja pisem po pravilima nekih funkcjia, hocu da pisem po pravilima jezika, to je poenta!
CMSIS je tu napravio ogrmnu u tacno potrebnu bazu, jos nije to sve iskorisceno najbolje kako treba, bare metal i dalje nezamenljiv ...
Na primer, sto ne moze da se napravi recimo Objekat za konfiguraciju svih pinova i da pre-procesor sve sto sam pisao (recimo 10-20-30 linija coda, u C++11 je to moguce napraviti recimo pomocu templejt interfejsa) svede na 4-5 masinskih instrukcija jer se sa toliko to moze sve konfigurise a ne da to radim u run time a recimo i ne treba mi tamo u run-time jer te operacije samo jednom prolazim ...
Trenutno smo postedjeni thread-ova i procesa za MCU sa 1 jednim jezgrom, ali koliko sledece godine ce da pricamo o nekim visejegarnim ARM-ovima, pa kad onda pocne da se komplikuje sa Thread Safe zahtevima cela prica, hehe ...