1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] Nate Hardison: En programació, una biblioteca és una col · lecció de 2 00:00:09,470 --> 00:00:11,380 codi relacionat prèviament escrit. 3 00:00:11,380 --> 00:00:14,350 Les biblioteques són com nosaltres, com programadors, acció comuna i 4 00:00:14,350 --> 00:00:16,930 codi útil entre si, amb els diferents programes 5 00:00:16,930 --> 00:00:19,470 escriure, i fins i tot amb els diferents processos en marxa 6 00:00:19,470 --> 00:00:21,380 mateix temps en els nostres ordinadors. 7 00:00:21,380 --> 00:00:23,000 >> Anem a explorar una mica. 8 00:00:23,000 --> 00:00:25,070 Una de les funcions més comuns que vostè probablement ha 9 00:00:25,070 --> 00:00:27,500 estat utilitzant és la funció printf. 10 00:00:27,500 --> 00:00:29,820 Ara, printf no és una funció màgica que ha estat 11 00:00:29,820 --> 00:00:31,670 en forma fixa a l'ordinador - 12 00:00:31,670 --> 00:00:34,320 més aviat, és part de les biblioteques C estàndard, que són 13 00:00:34,320 --> 00:00:36,080 una col · lecció de funcions que ve amb el 14 00:00:36,080 --> 00:00:38,050 C llenguatge de programació. 15 00:00:38,050 --> 00:00:40,920 Des printf no està integrada a l'ordinador, el que significa que 16 00:00:40,920 --> 00:00:43,520 hi va haver algun programador que realment va ser i va escriure el 17 00:00:43,520 --> 00:00:46,310 funció printf i embolicat amb la resta de la norma 18 00:00:46,310 --> 00:00:48,880 biblioteques perquè els futurs programadors no han de 19 00:00:48,880 --> 00:00:50,310 duplicar l'esforç. 20 00:00:50,310 --> 00:00:52,620 I estem segurs d'agrair que aquest és el cas, a causa de verificar 21 00:00:52,620 --> 00:00:54,710 per la quantitat de codi que realment es necessita per implementar printf. 22 00:00:59,590 --> 00:01:02,860 >> Les biblioteques C estàndard, dels quals printf és una part, són 23 00:01:02,860 --> 00:01:04,480 una de les eines més importants que 24 00:01:04,480 --> 00:01:06,770 tenir en la lluita contra CS50. 25 00:01:06,770 --> 00:01:08,780 A més de la biblioteca d'entrada-sortida on 26 00:01:08,780 --> 00:01:11,370 printf vides, hi ha un munt d'altres biblioteques que 27 00:01:11,370 --> 00:01:14,230 és probable que utilitzi en el transcurs de CS50. 28 00:01:14,230 --> 00:01:16,730 Per exemple, la biblioteca de cadenes té funcions per 29 00:01:16,730 --> 00:01:20,960 comparar cadenes de C, obtingui la seva longitud, i concatenar ells. 30 00:01:20,960 --> 00:01:22,410 I la biblioteca de matemàtiques li dóna útil 31 00:01:22,410 --> 00:01:25,062 constants, com pi i e. 32 00:01:25,062 --> 00:01:27,650 Ara, en comparació amb les biblioteques estàndard de programació d'una altra 33 00:01:27,650 --> 00:01:31,190 idiomes, les biblioteques C estàndard són molt petites, 34 00:01:31,190 --> 00:01:34,060 però encara tenen una gran quantitat de coses. 35 00:01:34,060 --> 00:01:36,370 I això no vol dir que les biblioteques estàndard són la 36 00:01:36,370 --> 00:01:39,020 Només biblioteques de C, hi ha molts més per aquí a la 37 00:01:39,020 --> 00:01:42,460 món per al seu ús, incloent la Biblioteca CS50, 38 00:01:42,460 --> 00:01:45,150 biblioteques de cartografia amb el xifrat i el desxifrat 39 00:01:45,150 --> 00:01:48,000 funcions, les biblioteques amb funcions per codificar i 40 00:01:48,000 --> 00:01:50,970 reproduir vídeo, i així successivament. 41 00:01:50,970 --> 00:01:53,190 >> Això ens porta a un a part important. 42 00:01:53,190 --> 00:01:55,500 Una de les habilitats essencials de l'enginyeria és conèixer el 43 00:01:55,500 --> 00:01:58,090 eines disponibles en la seva caixa d'eines perquè pugui utilitzar 44 00:01:58,090 --> 00:01:59,850 ells i evitar reinventar la roda si no 45 00:01:59,850 --> 00:02:01,510 vostè ha de fer. 46 00:02:01,510 --> 00:02:04,120 Com programadors, les biblioteques són un dels més importants 47 00:02:04,120 --> 00:02:05,520 eines que tenim. 48 00:02:05,520 --> 00:02:08,520 Quan vostè es troba davant d'una tasca que sembla avorrit o 49 00:02:08,520 --> 00:02:11,940 comú, com trobar la longitud d'una cadena C, 50 00:02:11,940 --> 00:02:14,020 s'ha de preguntar si pot donar-se el cas que 51 00:02:14,020 --> 00:02:16,520 algú ja ha fet el mateix abans. 52 00:02:16,520 --> 00:02:17,760 El més probable és que vostè pot trobar alguns 53 00:02:17,760 --> 00:02:20,110 ajuda dins d'una biblioteca. 54 00:02:20,110 --> 00:02:23,260 >> Així que en termes tècnics, una biblioteca és un arxiu binari que 55 00:02:23,260 --> 00:02:26,210 S'ha produït unint una col · lecció de 56 00:02:26,210 --> 00:02:28,880 arxius d'objectes utilitzant una eina anomenada, vostè 57 00:02:28,880 --> 00:02:31,010 endevinat, l'enllaçador. 58 00:02:31,010 --> 00:02:33,830 Arxius d'objectes són aquests. Arxius o que s'obté quan es 59 00:02:33,830 --> 00:02:35,860 compilar codi C font. 60 00:02:35,860 --> 00:02:38,420 Quan els programadors escriure biblioteques, en general 61 00:02:38,420 --> 00:02:41,560 separar el seu codi C en dos tipus d'arxius: 62 00:02:41,560 --> 00:02:44,880 arxius de capçalera i els arxius d'implementació. 63 00:02:44,880 --> 00:02:49,820 Un arxiu de capçalera, per convenció, se li dóna l'extensió. H arxiu, 64 00:02:49,820 --> 00:02:51,940 i conté codi que declari la biblioteca de 65 00:02:51,940 --> 00:02:55,120 recursos que estan disponibles per al seu ús. 66 00:02:55,120 --> 00:02:58,830 Aquests recursos inclouen funcions, variables, estructures, 67 00:02:58,830 --> 00:03:01,980 definicions de tipus, i així successivament, i junts, són 68 00:03:01,980 --> 00:03:04,620 comunament es coneix com la interfície. 69 00:03:04,620 --> 00:03:07,280 De fet, si mai es pregunten què hi ha en una biblioteca, 70 00:03:07,280 --> 00:03:09,580 els arxius de capçalera són el lloc per buscar. 71 00:03:09,580 --> 00:03:14,030 >> Per exemple, vostè pot aixecar usr / include / stdio.h i comprovar 72 00:03:14,030 --> 00:03:16,210 tot el que vostè sempre va voler saber sobre 73 00:03:16,210 --> 00:03:18,570 la biblioteca estàndard de io. 74 00:03:18,570 --> 00:03:20,610 Hi ha un munt de coses aquí, i pot prendre una mica de 75 00:03:20,610 --> 00:03:22,420 temps per revisar. 76 00:03:22,420 --> 00:03:25,840 No obstant això, juntament amb Google i les pàgines de manual, aquest és el 77 00:03:25,840 --> 00:03:28,060 lloc per anar si vostè s'està preguntant com l'estàndard d'E / S 78 00:03:28,060 --> 00:03:30,460 funcions de la biblioteca funcioni. 79 00:03:30,460 --> 00:03:33,910 Així que una cosa clau a destacar aquí, però, és que els arxius de capçalera 80 00:03:33,910 --> 00:03:36,740 en general no inclouen la definició de funcions - 81 00:03:36,740 --> 00:03:40,020 és a dir, les implementacions de la funció reals. 82 00:03:40,020 --> 00:03:42,470 Aquesta és una il · lustració d'una ciència de la computació important 83 00:03:42,470 --> 00:03:45,700 principi anomenat ocultació d'informació, també es fa referència a 84 00:03:45,700 --> 00:03:48,960 vegades com encapsulació. 85 00:03:48,960 --> 00:03:52,630 >> A mesura que l'usuari o el client d'una biblioteca, no cal 86 00:03:52,630 --> 00:03:54,230 conèixer el funcionament intern de la biblioteca en 87 00:03:54,230 --> 00:03:55,380 per poder utilitzar-lo. 88 00:03:55,380 --> 00:03:57,800 Recordo haver vist printf només una mica enrere? 89 00:03:57,800 --> 00:04:00,275 Havies vist alguna vegada el codi real abans? 90 00:04:00,275 --> 00:04:02,535 Bé, suposo que vostè no té, tot i que podria 91 00:04:02,535 --> 00:04:05,090 han utilitzat printf tones de vegades. 92 00:04:05,090 --> 00:04:08,110 Tot el que havia de saber era la declaració de la funció actual 93 00:04:08,110 --> 00:04:10,940 a l'arxiu de capçalera stdio.h. 94 00:04:10,940 --> 00:04:14,010 De tota manera, el benefici d'ocultació d'informació bona és que vostè 95 00:04:14,010 --> 00:04:16,820 i els programes que escriuen estan aïllats de qualsevol canvi en 96 00:04:16,820 --> 00:04:20,209 el codi de l'aplicació de funcions de la biblioteca. 97 00:04:20,209 --> 00:04:22,880 Si la implementació dels canvis printf, vostè no té 98 00:04:22,880 --> 00:04:26,310 anar i canviar tots els programes que utilitzen printf. 99 00:04:26,310 --> 00:04:28,450 >> Llavors, on implementació anar? 100 00:04:28,450 --> 00:04:31,020 Bé, de nou, per conveni, l'execució va en un 101 00:04:31,020 --> 00:04:34,310 arxiu amb l'extensió. c. 102 00:04:34,310 --> 00:04:36,820 En general, els arxius de capçalera i els arxius d'aplicació van 103 00:04:36,820 --> 00:04:39,380 a la mà, així que si vostè ha declarat un munt de nova cadena 104 00:04:39,380 --> 00:04:42,950 funcions en mystring.h, llavors vostè definir tots 105 00:04:42,950 --> 00:04:46,960 aquestes funcions en micadena. c. 106 00:04:46,960 --> 00:04:49,230 Així que els arxius de capçalera i l'execució són llavors 107 00:04:49,230 --> 00:04:52,230 compilat, la creació d'arxius d'objectes que després són units 108 00:04:52,230 --> 00:04:55,360 junts per produir l'arxiu de biblioteca binària. 109 00:04:55,360 --> 00:04:58,520 L'escriptor biblioteca llavors s'enviarà l'arxiu binari al llarg de 110 00:04:58,520 --> 00:05:00,720 amb els arxius de capçalera per als programadors que desitgen utilitzar 111 00:05:00,720 --> 00:05:02,280 la biblioteca. 112 00:05:02,280 --> 00:05:04,640 En aquest punt, els arxius. C d'implementació no són 113 00:05:04,640 --> 00:05:07,840 cal, llevat que recompilar la biblioteca a partir de zero, de manera que 114 00:05:07,840 --> 00:05:10,270 estan sovint deixats de banda. 115 00:05:10,270 --> 00:05:13,670 >> Per utilitzar la biblioteca C, el que has de fer dues coses. 116 00:05:13,670 --> 00:05:16,890 En primer lloc, vostè ha d'incloure # arxius de la biblioteca de capçalera i els 117 00:05:16,890 --> 00:05:18,700 arxiu de codi font que voleu utilitzar 118 00:05:18,700 --> 00:05:20,530 de la biblioteca de codi. 119 00:05:20,530 --> 00:05:23,200 Això informa al compilador de totes les declaracions de 120 00:05:23,200 --> 00:05:26,890 funcions, variables, estructures, etc, presents a la 121 00:05:26,890 --> 00:05:30,510 arxius de capçalera perquè el compilador pot un, assegureu-vos que 122 00:05:30,510 --> 00:05:33,280 que està utilitzant recursos de la biblioteca en la manera adequada, 123 00:05:33,280 --> 00:05:37,120 i dos, generar el codi assemblador corresponent. 124 00:05:37,120 --> 00:05:38,910 Depenent d'on els arxius de la biblioteca de capçalera són 125 00:05:38,910 --> 00:05:42,720 localitzat, la sintaxi # include varia. 126 00:05:42,720 --> 00:05:44,880 Si els arxius de capçalera es troba en el sistema de 127 00:05:44,880 --> 00:05:46,690 defecte include - 128 00:05:46,690 --> 00:05:48,780 típicament, usr/include-- 129 00:05:48,780 --> 00:05:52,200 la sintaxi s'utilitza parèntesi angulars, com a # include 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 No obstant això, si els arxius de capçalera es troba en el mateix 132 00:05:59,540 --> 00:06:02,960 directori com el seu propi codi, la sintaxi de cometes dobles és 133 00:06:02,960 --> 00:06:04,870 utilitzat, com en # include "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> La segona cosa que cal fer és vincular al binari 135 00:06:11,220 --> 00:06:13,760 biblioteca d'arxius en compilar el codi. 136 00:06:13,760 --> 00:06:15,810 Aquest és un pas important super. 137 00:06:15,810 --> 00:06:17,540 Recordeu la nostra discussió anterior sobre com capçalera 138 00:06:17,540 --> 00:06:20,200 arxius no contenen el codi d'implementació? 139 00:06:20,200 --> 00:06:22,200 Si s'oblida aquest pas, rebrà errors sobre 140 00:06:22,200 --> 00:06:24,990 símbols no definits referència en el codi. 141 00:06:24,990 --> 00:06:29,580 Per resoldre aquest problema, utilitzeu l'opció-l seguit immediatament 142 00:06:29,580 --> 00:06:32,320 sense espai pel nom de la biblioteca. 143 00:06:32,320 --> 00:06:35,410 En molts sistemes, incloent l'aparell, l'estàndard de C 144 00:06:35,410 --> 00:06:38,350 Les biblioteques es vinculen automàticament per vostè. 145 00:06:38,350 --> 00:06:41,700 No obstant això, la biblioteca matemàtica és de vegades inclòs per separat 146 00:06:41,700 --> 00:06:44,600 i és possible que s'enllaça amb-lm. 147 00:06:44,600 --> 00:06:47,760 En el dispositiu, nosaltres ens encarreguem d'això per a vostè, i també ens 148 00:06:47,760 --> 00:06:52,170 vincular la biblioteca amb CS50-lcs50. 149 00:06:52,170 --> 00:06:54,540 Pots veure tot això en l'aparell quan s'executa make. 150 00:06:57,620 --> 00:06:59,130 >> Ara vostè hauria de tenir els coneixements necessaris per utilitzar 151 00:06:59,130 --> 00:07:02,150 biblioteques en C. Que es diverteixin explorant. 152 00:07:02,150 --> 00:07:05,880 El meu nom és Nate Hardison, i això és CS50.