Programmering

8 flotte biblioteker for C ++ programmering

C ++ er et programmeringsspråk for generelle systemer som nå er mer enn 40 år gammelt, etter å ha blitt designet i 1979. Langt fra å miste damp, ligger C ++ fortsatt på toppen av flere popularitetsindekser for programmeringsspråk.

Utjevning av banen til C ++ -bruk er bred støtte for språket blant produsenter av IDEer, redaktører, kompilatorer, testrammer, kodekvalitet og andre verktøy. Programvareutviklere har også mange gode biblioteker til rådighet for å hjelpe til med å bygge C ++ - applikasjoner. Her er åtte som C ++ utviklere stoler på.

Aktiv malbibliotek

Fra Microsoft er Active Template Library (ATL) et sett med C ++ - klasser for å bygge COM (Common Object Model) -objekter, med støtte for COM-funksjoner som to grensesnitt, standard COM-tellergrensesnitt, tilkoblingspunkter og ActiveX-kontroller. ATL er tilgjengelig med Visual Studio IDE, og kan brukes til å bygge objekter med en tråd, leilighetsmodellobjekter, objekter med fri tråd eller begge objekter med fri tråd og leilighet.

Asio C ++ - bibliotek

Asio C ++ - biblioteket brukes til nettverks- og lavnivå I / O-programmering, og tilbyr en jevn asynkron modell. Asio har grunnleggende byggesteiner for samtidighet, C ++ nettverk og andre typer I / O, og har blitt brukt i applikasjoner som spenner fra smarttelefonapper og spill til svært interaktive nettsteder og sanntids transaksjonssystemer. Prosjekter som bruker Asio inkluderer WebSocketPP-biblioteket og DDT3 ekstern feilsøking for Lua-språket. Asio er tilgjengelig som gratis åpen kildekode under Boost Software License, og støttes på Linux, Windows, MacOS og FreeBSD.

Eigen

Eigen er et C ++ - malbibliotek for lineær algebra, inkludert matriser, vektorer, numeriske løsere og relaterte algoritmer. Alle matrisestørrelser støttes, fra små, faste matriser til vilkårlig store, tette matriser. Algoritmer er valgt for pålitelighet. Alle standard numeriske typer støttes. For hastighet har Eigen uttrykksmaler for å fjerne midlertidige og muliggjøre lat evaluering. Fritt tilgjengelig under Mozilla Public License 2 og kan lastes ned fra Eigen-prosjektsiden. Eigen har blitt utstyrt med en API beskrevet av talsmenn som uttrykksfulle og rene og naturlige for C ++ programmerere. Testpakken for Eigen har blitt kjørt mot mange kompilatorer for å sikre pålitelighet.

FloatX

FloatX, eller Float eXtended, er et kun headerbibliotek for emulering med flytende punkt med lav presisjon. Mens det er kompatibelt med C ++ kompilatorer, kan FloatX kalles av andre språk som Python eller Fortran. Flytpunkttypene utvides utover de innfødte enkelttyper og doble presisjonstyper. Maltyper er gitt som lar brukeren velge antall biter som brukes for eksponenten, så vel som betydelige deler av flytpunktet. FloatX er basert på ideen til FlexFloat-biblioteket for å emulere flytende typer med redusert presisjon, men implementerer et supersett av FlexFloat-funksjonalitet i C og gir C ++ -innpakninger. FloatX kom fra Open Transprecision Computing-initiativet. Den er tilgjengelig gratis under Apache License 2.0.

OpenCV

OpenCV, eller Open Source Computer Vision Library, er et datasyn og maskinlæringsbibliotek skrevet naturlig i C ++, og tilgjengelig under en BSD-lisens. OpenCV ble bygget for å gi felles infrastruktur for datasynsapplikasjoner og akselerere bruken av maskinoppfattelse i kommersielle produkter. Mer enn 2500 optimaliserte algoritmer for ansiktsgjenkjenning, gjenkjenning av objekter, objektklassifisering, 3D-modelluttrekk, bildesøk og mye mer, har OpenCV samlet et brukerfellesskap på mer enn 47.000 personer. Biblioteket er tilgjengelig fra OpenCV-prosjektnettstedet og tilbyr C ++, Java, Python og Matlab-grensesnitt og støtter Windows, Linux, Android og MacOS. CUDA og OpenCL grensesnitt er under utvikling.

Poco C ++ biblioteker

Poco (Portable Components) C ++ - biblioteker er ment å forenkle C ++ -utvikling, og er plattform C ++ - biblioteker for å bygge Internett- og nettverksapplikasjoner for å kjøre på systemer som strekker seg fra stasjonære maskiner og servere til mobile og IoT-enheter. Bibliotekene kan også brukes til å bygge mikrotjenester med REST APIer for maskinlæring eller dataanalyse. Poco-bibliotekene ligner konseptet Java Class Library, Microsofts .NET Framework eller Apple Cocoa.

Utviklere kan bruke Poco-biblioteker til å bygge applikasjonsservere i C ++ som snakker med SQL-databaser, Redis eller MongoDB, eller for å bygge programvare for IoT-enheter som snakker med sky-back-ender. Blant funksjonene i bibliotekene er et cache-rammeverk, HTML-skjemahåndtering, en FTP-klient for overføring av filer og en HTTP-server og klient. Poco-bibliotekene er tilgjengelige gratis under Boost Software License og kan lastes ned fra GitHub.

Windows malbibliotek

Opprinnelig fra Microsoft er Windows Template Library (WTL) (siden 2004) et open source-bibliotek for å bygge lette Windows-applikasjoner og UI-komponenter. Posisjonert som et alternativ til Microsoft Foundation Classes-verktøysettet, utvider WTL ATL og gir et sett med klasser for kontroller, dialoger, rammevinduer og GDI-objekter.

Wt

Wt er et web-GUI-bibliotek i moderne C ++ som lar utviklere bygge interaktive web-UIer med widgets, uten å måtte skrive JavaScript. En server-løsning, Wt ber om håndtering og gjengivelse av sider, og gir innebygd sikkerhet, PDF-gjengivelse, et 2D- og 3D-malingssystem, et objektrelasjonelt kartleggingsbibliotek, et kartbibliotek og et autentiseringsrammeverk. Kjernebiblioteket er åpen kildekode og gir et hybrid ensidig rammeverk som kan distribueres på Linux, Unix eller Windows.

Wt er utviklet av programvareteknologiselskapet Emweb, og er kompatibelt med HTML5- og HTML4-nettlesere samt med vanlige HTML-brukeragenter. Og Wt kan integreres med JavaScript-biblioteker fra tredjeparter. Med Wt defineres et program som et hierarki av widgets - alt fra generiske widgets som trykknapper til spesialiserte widgets, for eksempel en hel blogg-widget. Widget-treet gjengis som HTML / JavaScript i nettleseren. Wt kan lastes ned fra prosjektets webside. Både vilkår for åpen kildekode og kommersiell bruk er tilgjengelig.