În Tips & Tricks

Code::Blocks: Un mediu de dezvoltare integrat (IDE) pentru C++

code-blocks

C++ este unul dintre cele mai folosite limbaje de programare pentru dezvoltarea programelor de tip desktop. Pentru crearea de programe în C++ este necesar un mediu de dezvoltare integrat (integrated development environment – IDE) care să uşureze pe deoparte procesul de programare, iar pe de altă parte, să integreze o serie de instrumente care să facă posibilă și să eficientizeze crearea de software.

Microsoft Visual Studio este fără îndoială cel mai performant IDE pentru C++ (și pentru alte limbaje de programare), însă este disponibil doar pentru Windows și, în plus, este contra cost în varianta profesională și enterprise.

 

Ținând cont de aceste două aspecte ale acestuia și de faptul că sistemele de operare Mac și Linux devin tot mai populare, dezvoltatorii ar trebui să se orienteze în alegerea unui IDE multiplatformă, eventual gratuit, care să furnizeze, de asemenea, toate elementele software care stau la baza dezvoltării eficiente de programe desktop.

 

În acest articol, am să vorbesc despre un astfel de IDE, Code::Blocks, și am să descriu succint experiența pe care o am în folosirea acestuia pentru programarea mai multor aplicații desktop, dintre care unul este și programul Virtual WiFi.

 

Despre Code::Blocks

Code::Blocks este un IDE pentru limbajele de programare C++, C și Fortran ce a fost lansat în versiune stabilă în 2008.

Acesta este gratuit, open-source și cross-platform (compatibil cu Windows, Mac și Linux), având proprietatea de a suporta folosirea de multiple compilatoare, inclusiv pe cel specific IDE-ului Microsoft Visual Studio C++, ceea ce face ca dezvoltatorul să aibă un control mai mare asupra software-ului creat și asupra portabilității codului sursă de pe alte IDE-uri.

Programul furnizează toate elementele necesare unui IDE performant:

  • Editor de cod – permite evidențierea codului în funcție de sintaxă, sugerarea de cod la tastare, posibilitatea de reformatare textuală a codului, personalizarea interfeței grafice, a fontului și a mărimi de font, organizarea facilă a fișierelor deschise – sub formă de file ș.a.
  • Depanator (debugger) – facilitează depistarea rapidă a erorilor de programare, prin inserția de breakpoints, vizualizarea funcțiilor locale și a argumentelor acestora, vizualizarea regiștrilor CPU, definirea de watches ș.a.
  • Designer GUI – permite proiectarea interfețelor grafice într-un mod vizual, de tipul WYSIWYG (What You See Is What You Get). Designerul se numește wxSmith și este derivat din librăria wxWidgets, librărie ce permite crearea de interfețe grafice cross-platform.
  • Posibilitatea migrării proiectelor de pe alte IDE-uri, de exemplu de pe DEV-C++ și Visual Studio.
  • Posibilitatea extinderii funcționalității prin intermediul plugins-urilor; în plus, plugins-urile pot fi create direct din cadrul programului.
  • Existența unei comunități numeroase de dezvoltatori care conlucrează la îmbunătățirea programului sau/și discută dificultățile întâlnite în cadrul acestuia. Mai mult decât atât, IDE-ul este open-source, deci oricine poate crea versiuni noi, particularizate după nevoile proprii.
  • Documentație completă cu privire la folosirea și configurarea IDE-ului (în limba engleză).

Instalare și configurare

Mediul de dezvoltare integrat Code::Blocks poate fi descărcat în funcție de sistemul de operare folosit de aici.

În Ubuntu, ultima versiune (16.04 LTS), programul este prezent și în centrul de instalare software, la secțiunea Development ToolsIDE.

Deși IDE-ul nu este construit cu un compilator propriu, acesta poate fi descărcat împreună cu un compilator standard, MinGW/GCC.

În cazul în care se dorește folosirea unui alt compilator atunci compilatorul respectiv trebuie instalat în sistem și apoi configurat în Code::Blocks.

Pe lângă mediul de dezvoltare integrat, în funcție de caz, vor trebui instalate și configurate variate toolkit-uri necesare, care, folosite împreună cu librăriile acestora, va contribui decisiv la o dezvoltare rapidă, sustenabilă și eficientă a software-ului – programatorul putând să se concentreze pe aspectele vitale ale dezvoltării programului și nu pe „reinventarea roții”.

De exemplu, pentru dezvoltarea unui program bazat pe interfețe grafice (GUI) va trebui folosit un toolkit precum wxWidget, iar această operație este una puțin mai complicată, pentru că librăria va trebui compilată mai întâi, înainte de a putea fi utilizată.

Pentru compilarea toolkit-ului wxWidgets trebuie să descarci wxWidgets (sursă) și să-l instalezi sau dezarhivezi într-o locație stabilă pe hard disc, de exemplu, în rădăcina sistemului de operare; apoi, să compilezi toolkit-ul și să-l configurezi pentru folosirea în IDE, pe baza instrucțiunilor de aici.

 

Odată ce wxWidgets este compilat și configurat în cadrul IDE-ului, se poate începe dezvoltarea de software cu interfețe grafice avansate, compatibil cu Windows, Linux și Mac.

 

În cazul altor toolkit-uri, vor trebui urmate procedee asemănătoare de compilare și configurare.

 

Crearea unui program

Crearea unui program în Code::Blocks pornește odată cu deschiderea unui nou proiect de un tip specific programului care se dorește a fi dezvoltat, care să conțină toate resursele programului.

 

Pentru crearea proiectului, deplasează-te la meniul FileNewProject, iar apoi, din lista cu tipuri de proiecte disponibile, alege tipul de proiect pe care să-l dezvolți.

 

Exemple de proiecte care pot fi create:

  • pentru programe de consolă: „Console application”;
  • pentru programe cu interfețe grafice cross-platform: „wxWidgets project”;
  • pentru programe grafice (de exemplu jocuri): „Glut Project”, „OpenGL project”;
  • pentru programe specifice altor IDE-uri, de exemplu Matlab, QT etc.

 

În imaginea de mai jos sunt listate toate tipurile de proiecte care pot fi create cu Code::Blocks.

code-blocks-programe

 

Mai departe vei avea posibilitatea de a seta variate opțiuni de dezvoltare și de a configura resursele care vor fi folosite în cadrul proiectului.

De exemplu dacă se dorește dezvoltarea unui program cu interfețe grafice bazate pe wxWidget, va trebui să se specifice și sursa librăriei wxWidget – care să aibă și toolkit-ul compilat anterior.

În acest moment ești gata de a începe dezvoltarea programului dorit.

 

Experiență personală cu IDE-ul Code::Blocks – crearea programului Virtual WiFi

Pe baza IDE-ului Code::Blocks am dezvoltat programul Virtual WiFi, un program ce substituie existența unui router wireless, permițând astfel crearea de rețele Wi-Fi folosind adaptorul wireless al calculatorului (dacă acesta permite o astfel de operație) și partajarea de date între multiple calculatoare.

 

În plus, programul mai permite și partajarea accesului la internet atât către alte calculatoare, cât și către variate dispozitive portabile, precum telefoane mobile, tablete ș.a.

 

Dezvoltarea interfeței am făcut-o pe baza designerului GUI incorporat, wxSmith, completat de atașarea toolkit-ului wxWidgets, lucru care mi-a permis crearea cu ușurință a interfețelor grafice, într-un mod foarte intuitiv și rapid.

 

design-grafic-virtual-wifi-adi-barbu

 

Librăria wxWidgets este concepută pentru a fi foarte ușor de înțeles și folosit, fiind necesară de regulă doar consultarea sumară a documentației.

 

Au existat însă și anumite dificultăți ale folosirii acesteia, caz în care am fost nevoit nu numai să consult în detaliu anumite părți ale librăriei, dar și să examinez vasta colecție de cod sursă dat ca exemplificare pentru folosirea acesteia.

 

Tot legat de toolkit-ul wxWidgets, mai trebuie spus că atașarea librăriei a făcut ca programul rezultant să fie cu circa 7 MB mai mare în dimensiune.

 

Prin intermediul arhivatorului de executabile UPX am reușit însă să minimalizez dimensiunea finală la doar 2.3 MB, cu dezavantajul de a produce un efect de întârziere la execuția programului.

 

Dacă programul dezvoltat folosește un număr foarte mare de resurse ale librăriei wxWidgets, atașarea statică a librăriei va constitui un avantaj, pentru că dimensiunea programului crește tot cu aproximativ 7 MB, indiferent de complexitatea elementelor interfețelor grafice.

 

Referitor la procesul de programare în sine, nu am întâlnit elemente care să îmi îngreuneze dezvoltarea, în afară de caracteristica autocompletării de cod în funcție de context, care nu este una la fel de performantă cum este în cazul Microsoft Visual Studio, Eclipse sau NetBeans.

Îmbunătățiri aduse în acest sens au fost făcute în noua versiune, 16.01, lansată pe 28 ianuarie 2017.

Pe parcursul dezvoltării programului au existat câteva bug-uri de programare, însă acestea au putut fi depanate folosind debugger-ul IDE-ului.

***

În concluzie, Code::Blocks este un IDE performant, gratuit, cross-platform și foarte adaptabil la necesitățile dezvoltatorului, pe care îl recomand pentru dezvoltarea de software multiplatformă de tip desktop în C++.

Acest IDE, împreună cu toolkit-ul wxWidgets și un program de control al versiunilor este tot ce ai nevoie pentru a putea dezvolta programe desktop bazate pe interfețe grafice de oricare complexitate și la orice nivel de experiență în programare.

Programe asemănătoare sunt CodeLite, CLion, Eclipse, NetBeans, QT, Dev-C++ ș.a.