This shows you the differences between two versions of the page.
programare:tutoriale:read_docs [2022/01/21 02:04] radu.nichita created |
programare:tutoriale:read_docs [2022/01/24 16:38] (current) stefan.popa99 [Dezavantaje] |
||
---|---|---|---|
Line 53: | Line 53: | ||
* **bibliotecă** (EN: **library**): este o colecție de cod reutilizabil, ce implementează diferite funcționalități și care poate fi folosit de multiple aplicații. | * **bibliotecă** (EN: **library**): este o colecție de cod reutilizabil, ce implementează diferite funcționalități și care poate fi folosit de multiple aplicații. | ||
- | * **framework**: este un software folosit ca schelet bază pentru dezvoltarea aplicațiilor sau a diverselor funcționalități. Un framework expune, în general, doar acele bucăți de cod (funcții, clase) de care este nevoie pentru a îl folosi. Restul funcționalității este, în general, ținută intern de framework. | + | * **framework**: este un software folosit ca schelet de bază pentru dezvoltarea aplicațiilor sau a diverselor funcționalități. Un framework expune, în general, doar acele bucăți de cod (funcții, clase) de care este nevoie pentru a îl folosi. Restul funcționalității este, în general, ținută intern de framework. |
* **API** ([[https://ro.wikipedia.org/wiki/Application_Programming_Interface|Application programming interface]]): Este interfața expusă de o bibliotecă/un framework/o aplicație. Un API nu este cod propriu-zis, ci este interfața prin care putem folosi un cod (de exemplu, interfața unei biblioteci în C ar putea fi reprezentată de semnăturile funcțiilor conținute, strânse într-un header - aceasta explică ce funcții există în bibliotecă, ce valoare returnează, ce parametri primesc, ce face funcția). | * **API** ([[https://ro.wikipedia.org/wiki/Application_Programming_Interface|Application programming interface]]): Este interfața expusă de o bibliotecă/un framework/o aplicație. Un API nu este cod propriu-zis, ci este interfața prin care putem folosi un cod (de exemplu, interfața unei biblioteci în C ar putea fi reprezentată de semnăturile funcțiilor conținute, strânse într-un header - aceasta explică ce funcții există în bibliotecă, ce valoare returnează, ce parametri primesc, ce face funcția). | ||
Line 65: | Line 65: | ||
* Observație: cele 2 metode se aplică și comenzilor Linux - de exemplu, încercați să cautați cu ''%%man ls%%'' sau ''%%man grep%%''. | * Observație: cele 2 metode se aplică și comenzilor Linux - de exemplu, încercați să cautați cu ''%%man ls%%'' sau ''%%man grep%%''. | ||
* [[https://docs.microsoft.com/en-us/cpp/c-language/?view=msvc-170|Windows]] - documentație oficială Microsoft pentru **Windows**; | * [[https://docs.microsoft.com/en-us/cpp/c-language/?view=msvc-170|Windows]] - documentație oficială Microsoft pentru **Windows**; | ||
- | * [[http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf|ANSI C]] - o variantă free de documentație pentru ANSI C. Există și variantă non-free. 9a6956437b897ff580a30bb2c9d7a5811c36479b | + | * [[http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf|ANSI C]] - o variantă free de documentație pentru ANSI C. Există și variantă non-free. |
* **C++**: La fel ca la C, nu există o documentație oficială pentru tot limbajul. Exemple de documentații: | * **C++**: La fel ca la C, nu există o documentație oficială pentru tot limbajul. Exemple de documentații: | ||
* [[https://en.cppreference.com/|C++ Reference]] | * [[https://en.cppreference.com/|C++ Reference]] | ||
Line 286: | Line 286: | ||
cel mai probabil veți primi [[https://en.wikipedia.org/wiki/Segmentation_fault|Segmentation fault]]. | cel mai probabil veți primi [[https://en.wikipedia.org/wiki/Segmentation_fault|Segmentation fault]]. | ||
- | Așadar, practic vorbind, cele 2 coduri se comportă diferit. Deși primul cod pare că merge în anumite cazuri, în realitate el va ascunde un memory leak care vă poate cauza comportament nedefinit (EN: [[https://en.wikipedia.org/wiki/Undefined_behavior|undefined_behavior - UB]]). Să rulam cu valgrind acest program: | + | Așadar, practic vorbind, cele 2 coduri se comportă diferit. Deși primul cod pare că merge în anumite cazuri, în realitate el va ascunde un acces invalid la memorie pentru că se încearcă scrierea la o adresă de memorie nealocată. Să rulam cu valgrind acest program: |
<code cpp> | <code cpp> |