>> ALTAVEU: OK, així, vostè no ho cregui, però la setmana passada, dilluns, a Pierce, em
era al soterrani.
Mai vaig a Pierce.
I jo mai vaig a tornar de nou, perquè Vaig deixar les meves coses només per,
com, cinc minuts i algú van robar el meu ordinador i la meva
telèfon de la meva motxilla.
El que significa que he de tornar, i a continuació, a menys d'una setmana més tard
que ens van robar una altra vegada.
>> I llavors s'excitava -
Cerca meu iPhone segueix ser de poca ajuda.
Així que segueixo encoratjant no ho facis servir.
S'encén una vegada, i va ser al MIT, com 15 minuts més tard, i la persona
cridat a aquest número de telèfon que va mostrar en el meu registre de trucades AT & T.
>> Així que em vaig anar en línia, anomenat el telèfon nombre, i se'n va anar directament a aquesta
contestador automàtic en espanyol.
I no he sentit parlar d'ell des de llavors.
Així que vaig haver de aconseguir un nou ordinador i el telèfon.
Ho sé.
Sí
Però si vostès volen fer efecte en la meva Fons d'equip després d'això, és per això que
T'he demanat aquí.
És broma.
Però això era molt trist i traumàtic.
>> Però és tot de nou ara, i que per això el p-8 set va prendre tant de temps, perquè
Jo no tinc un ordinador.
I algú l'hi va robar.
I li vaig enviar un correu, preguntant si li posaria la seva p-8 set.
Però ells van dir que no.
I jo estava com, puc tenir el meu equip de nou?
I són com, no.
És broma.
>> D'acord.
Aquesta és la nostra última secció, i no tinc un parell de - només tenim tres
coses en l'ordre del dia.
Anem a parlar una mica Sobre la guia Q.
Després ens anem a gastar 15 minuts en una demostració fresca.
Llavors direm tot adéu a un altre.
Segur que no necessita els equips o una ploma o un paper per prendre notes, o
seguir al llarg.
Així que suposo que si tens el teu ordinador , Llavors vostè és al Facebook.
Només dic.
A menys que estiguis omplint les dades del Guia de Q, que és primer.
>> La guia de Q està oberta.
Vostè ha tingut un correu electrònic sobre ell.
Una vegada que tot el material Q es presenta al final de l'any, em surt tot el
Q comentaris a les puntuacions de tot el món que opta per donar-me retroalimentació.
I així, quan vas al Q -
No sé si es pot fer això, Jeff, perquè vostè és estudiant i extensió.
Però quan vas al Q, si no ho ha fet abans, vostè escull el seu
mestre, que és David Malan.
Vostè ha de fer ell.
>> I llavors vostè pot escollir TFS.
I vostè pot recollir la major quantitat TFS com vulgui.
No obstant això, hi ha 60 de nosaltres.
No ha de recollir tots.
Em pots recollir, o simplement triar un parell d'altres persones, si ho desitja, a
donar-los retroalimentació.
I llavors vostè aconsegueix les puntuacions en totes aquestes diferents eixos, i llavors vostè pot deixar
ells retroalimentació.
>> I llavors, com un mes després, Vaig a tots els que la retroalimentació.
I igual que els comentaris que ha estat donar-me al llarg del semestre, em
llegir tot això.
I és molt útil, i ajuda a a créixer com un mestre i com un
individu.
Així que, si us plau, preneu-vos un temps per fer-ho.
Només estarem aquí per com 30 minuts.
Així que si vols, al final d'això, per prendre cinc minuts, i només ha d'omplir
la Q, ja que no pren més temps que això.
Això seria meravellós, i també obtenir els seus graus de fa més ràpidament si
a omplir la Q.
>> Així que la majoria de vosaltres heu fet això abans -
o no, al voltant de la meitat de vostès han fet això abans.
Però si vostè és un estudiant de primer any, això és el que és.
Serà el mateix per a totes les classes.
Fes-ho.
Es triga cinc minuts.
Però també, si ho fas una mica de debò, això no és el pitjor
al món, perquè sens dubte prendre seriosament.
>> Així que si vostè em deixa una cara somrient, Vaig a apreciar això.
Però també li agrairia si vostè em va deixar més d'una cara somrient.
Però li toca a vostè.
Jo no et puc dir - o com un gran smiley cara, amb un capital D. Això
serà encara millor.
>> OK, això és tot el que tinc per el P. Si té alguna pregunta, pot demanar
mi, però bastant auto-explicatiu.
Així, si us plau, ompliu-lo.
Jo ho agrairia moltíssim, i això significa molt per a mi.
>> OK, això és el que anem a gastar 15 minuts passant.
Jo et vaig a mostrar una mica de codi.
Crec que això és realment genial, i això em va fer més
excitat en ciències de la computació.
Així que espero que farà el igual per a tots vostès.
>> Obrirem - i tot això Codi vaig a enviar a vostè més tard.
Però només obrirem -
Estic en el meu terminal -
anem a obrir aquest programa anomenat [? MySum. ?]
>> Tots poden llegir això, o ho hauria de fer més gran?
Algú pot dir-me el que aquest codi es fer-ho quan ho executo, o el que aquesta
programa ho farà quan ho executo?
>> [? Avi,?] Què et sembla que farà?
Mastegar Finalitzar.
No ha de parlar amb la boca oberta.
>> AUDIÈNCIA: Es necessita un munt de arguments, troba la suma d'ells tornen
suma i, a continuació, imprimir-ho?
O que es necessita en dos arguments, i llavors ho fa [inaudible].
I després imprimeix el que sigui els resultats són.
>> ALTAVEU: Close, molt a prop.
Algú vol afegir a la [? el Avi?] va dir?
És necessari donar a aquest programa qualsevol argument de línia d'ordres?
>> AUDIÈNCIA: No
>> ALTAVEU: No
Què passa si vostè no li dóna qualsevol argument de línia d'ordres?
Jo només escric MySum slash dot.
>> AUDIÈNCIA 1 més 2 és igual a 3.
>> ALTAVEU 1 més 2 és igual a 3.
I voleu imprimir això.
Això és exactament correcte.
Vas a veure que la impressió f línia a la part inferior.
Es va a imprimir a, b, i llavors la suma de a i b.
I suposo que vostè assumeix que suma funciona correctament.
Bona suposició.
>> Bé, i el que passa si em donar-li quin argument?
[? Manu? ?]
>> AUDIÈNCIA: Va a afegir el que sigui el primer argument és b.
O a 2, ho sento.
>> ALTAVEU: Dret, a 2.
Algú sap el que strtol fa?
Es tracta bàsicament d'atoi.
Atoi és en realitat una versió de luxe de -
o una versió més simple de strtol.
Però el que realment utilitza strtol.
I em vaig trobar que fos perquè volia una mena atoi, i després, quan em
em atoi, vaig llegir aquí.
I em vaig trobar amb "aquest comportament és el mateix que "strtol.
Així que és bàsicament atoi per tots els efectes.
I ja veus, fins i tot jo faig servir nul i 10.
>> En realitat, això li permet prendre una cadena, i convertir-lo en un nombre, i seleccioneu
quina base que desitja fer-ho polz
Així que aquesta és la base 10 aquí.
Jo podria haver fet en base dos decimals, base 16 per hexadecimal.
És molt bo.
Però conte llarg, això té dues nombres i els suma.
>> Així que anem a executar-lo.
I també es donarà compte, no són algunes de les coses -
així que tinc un makefile aquí, i Si obriu això, algunes coses
t'adonaràs són diferents.
En particular, aquest argument aquí, vostè probablement
no he vist això abans.
Generalment, compilem coses amb guió zero, zero.
Dash zero, zero, vol dir que no ho fan qualsevol optimitzacions, compilador.
No tractar de fer una mica de fantasia, o fer que alguna cosa funcioni més ràpidament, o aconseguir
desfer-se de variables que són necessàries.
No optimitzar el codi en absolut,
>> Estic demanant de tercer nivell optimització.
Així que el que estic demanant compilador per fer una gran quantitat d'optimitzacions.
Vostè pot canviar això en l'arxiu MAKE quan vostè té aquest codi, si vols
per veure coses diferents.
Què anem a mostrar en un segon.
Així correm el meu suma 1 més 2 més 3.
Algú em fa dos arguments.
>> AUDIÈNCIA: 4 i 5.
>> ALTAVEU: 4 i 5.
Gràcies.
Gran, funciona.
Quins són alguns altres bons arguments per provar, per assegurar-se que funciona?
Algú?
>> AUDIÈNCIA: 0.
>> ALTAVEU: 0 i?
>> AUDIÈNCIA: Negatiu 3.
>> ALTAVEU: Funciona.
Però aquests eren bones opcions.
OK, així que anem a tornar aquí.
Aquest és mysum.c.
Es donarà compte de que hi ha també alguna cosa anomenat sumfunction.c.
I això diu, oh, hi ha alguna cosa definit en sumfunction.c.
No incloc aquest fitxer aquí perquè jo no necessito.
Però puc enllaçar en tant compilar, que t'has adonat.
>> Anem a desplaçar-se cap amunt.
Vam veure quan compilem MySum, dret allà, ens vinculem al binari de
sumfunction.o.
I jo no necessito l'arxiu de capçalera perquè, és clar, hi ha el
declaració de la funció.
Així aguda inclouen normalment només posa en una declaració de la funció.
Aquí acabo de posar-recte en el codi.
Així que he de fer és enllaç en el binari, el que jo faig.
>> Alguna idea del que és en sumfunction.c?
Quin codi que he escrit en sumfunction.c?
>> AUDIÈNCIA: [inaudible].
>> ALTAVEU: Alguna idea?
Sí?
>> AUDIÈNCIA: Crec, defineix alguns [inaudible].
>> ALTAVEU: Si.
Així que faig escriptura int suma int a.
Escric aquesta línia, i després tinc oberta clau de tancament, tancat claudàtor.
Què creus que jo escric a l'interior dels claus, dins d'aquesta funció?
Sí?
>> AUDIÈNCIA: Retorn és igual a.
>> PROCESSADOR: Aquesta és una molt bona opció.
Qui pensa [? Manu?] Té raó?
Diu tornar a més b.
Bé, no tothom.
[? Akshar,?]
tu també?
Esteu segur?
D'acord.
Què?
>> AUDIÈNCIA: Vostè lletrejar malament.
>> ALTAVEU: No, no ho vaig fer.
Sí, és broma.
Tens raó.
Això és exactament el que diu.
És tornar a més b.
Això té molt sentit.
>> OK, anem a tornar aquí.
Veiem com la capçalera -
aquest és el tipus de retorn.
Recordeu, hem vist que el primer dia, la tipus de la funció de tornar, però va
abans que el nom de la funció int.
Aquí, he escrit int.
Què creus que passarà si en aquest funció, no escric int, però
Escric sense signar?
La diferència, per descomptat, és que sense signe representa única cosa positiva
sencers i poden ser int positiva o negativa.
>> Així que he canviat el retorn tipus d'aquesta funció.
Aquest codi no coincideix aquest retorn aquí.
Què creus que passarà quan va compilar?
Vostè ha cridar.
Sense crits.
>> Què passa quan executo el programa?
Anem a fer-ho abans de 0 negatiu 3, o negatiu gener.
Encara funciona, tot i que estic dient que ha de tornar un enter sense signe.
És clar que no em torna les un enter sense signe.
Es retorna un enter amb signe.
Està tornant negatiu gener.
OK, això és rar.
>> Què passa si em vaig a aquí i fer això?
Així que he canviat tot de int a signar.
Només pot prendre sencers sense signe.
Però, seguim pensant que funcionarà?
>> AUDIÈNCIA: Si.
>> ALTAVEU: Ho farà.
Això és una bogeria.
I passem de manera clarament assignat nombre enter, podem passar dues signat
nombre sencer, que encara funciona.
>> OK, alguna idea de per què segueix funciona, o el que està passant?
Sí, Jeff.
>> AUDIÈNCIA: Té alguna cosa a veure amb la seva optimització que
ressaltat.
>> ALTAVEU: No
Podríem canviar l'optimització, no per això deixa treballar.
Jo puc fer això per a vostè, però -
>> AUDIÈNCIA: Vaig a prendre la seva paraula per a ella.
>> ALTAVEU: Si.
Si obriu l'arxiu MAKE aquí, Vaig canviar l'optimització.
Així que vostè pot fer el tauler zero, zero.
Encara funcionarà.
Altres pensaments?
>> Vostès tots esperàvem per treballar, de manera que Per què esperes que funcioni?
No?
Silenci.
D'acord.
He d'esperar set segons perquè he fet una pregunta.
>> Així que el bo de C, i que ha probablement experimentat abans -
podria no tenir, això podria la primera vegada.
Però com tots vostès saben, quan escric alguna cosa en C, no es guarda com
aquest a l'ordinador.
Es guarda com uns i zeros.
Va de codi C a codi assemblador.
>> Algú ha vist codi assemblador abans, Codi de muntatge de la màquina?
Veurem en un segon.
Va de codi C a codi assemblador.
I vostès saben les etapes de compilació.
Calia memoritzar que per concurs una, i després escriure-ho en concurs zero.
La majoria de les persones es van equivocar.
Crec que vostès ho va clavar.
>> Però, vostès són la millor secció per a les proves, per cert.
Quin és impressionant.
No et farà mal.
No es preocupi.
Però és realment genial.
Bon treball.
>> Així que va a llenguatge assemblador, i després passa a uns i zeros.
I els uns i zeros es guarden en el ordinador, i això és el que guarda en
la a.out, o en aquest cas, l'arxiu executable.
I l'equip funciona amb uns i zeros.
Cert?
Hem après això abans.
>> Així que el millor és que això no signat idea, la idea dels tipus de ints sense signar,
etcètera, etcètera, això és aquí al llenguatge C.
Aquells existeix.
Però no hi ha tipus de els uns i zeros.
Tipus ni tan sols existeixen realment en el nivell de llenguatge assemblador.
Així que això és una cosa que existeix en C món, però no hi ha a l'ordinador
món o del món del processador.
Això és una abstracció que el C idioma ha inclòs, perquè la nostra
la vida més fàcil.
>> Així que al final del dia, puc escriure moltes coses diferents aquí, i és
no fa una diferència.
Com que només hi ha en el món C.
No existeix en el uns i zeros món.
I el nostre programa d'execució en els uns i zeros món.
Així que clarament no ha volat de la seva ment.
Però crec que això és genial.
Sí, Jeff.
>> AUDIÈNCIA: Així que, si en lloc de fent int, ho fas caràcters.
I tu estaves -
>> ALTAVEU: Anem a fer-ho en un segon.
>> AUDIÈNCIA: Perquè llavors s'obté una sense signe al passar de 128 a negatiu
127 o de 0 a 255.
>> ALTAVEU: Així char és problemàtic.
Algú sap per què carbó seria problemàtica, i que ho faria en realitat
canviar les coses en què i zeros món?
>> AUDIÈNCIA: causa de la grandària dels caràcters.
>> ALTAVEU: Mida de char és 1.
Així que sense signe també és de 4 bytes.
Així carbó seria arruïnar les coses.
Però el que és 4 bytes que està en relacionada amb un char?
O, al qual se suma un més -
vostè pot posar un caràcter més després de caràcters.
>> AUDIÈNCIA: Car estrelles.
>> ALTAVEU: Caràcter estrelles disposa de 4 bytes.
Així que anem a fer alguna cosa això és una estrella de carbó.
>> Així que això probablement funcionaria, però estem farà alguna cosa, fins i tot
més boig que això.
Al meu entendre, més boig.
>> Ara que he escrit una funció que retorna un punter, i es necessita un
punter i un valor sense signe - anem a canviar això a int així que no estem
fer massa canvis al mateix temps.
I té un arranjament crida, els índexs en la matriu, i torna la
direcció.
Hem vist aquests operadors abans.
Això, què creus que això va a fer, a canvi, quan ho executo?
Què pensa vostè que farà?
Alguna idea?
>> AUDIÈNCIA: violació de segment.
>> ALTAVEU: Què?
Segfault?
Això és una bona suposició.
Tom diu el mateix.
Qualssevol altres conjectures?
>> Qui pensa que va a fer el mateix?
Qui pensa que va a segfault?
Es fa el mateix.
Ho sento.
>> Però, és clar, posem en 1 i 2.
I aquests són els dos vàlids, oi?
Anem a veure, podem anar a la el segon lloc d'una matriu.
Però el que si vam fer b un nombre negatiu?
Aquesta és probablement una millor conjectura per alguna cosa en violació de segment.
Encara funciona.
>> OK, això ja és una bogeria.
Aquesta és la funció de suma igualment vàlides.
Això fa exactament el mateix com el retorn a i b.
Algú pot explicar per què això és una bona funció de resumir, o per què això funciona?
Què està passant aquí?
Per què fa això exactament el mateix cosa com nostra antiga funció suma?
[? Akshar,?]
Què està passant?
>> AUDIÈNCIA: Perquè quan vostè té 1 que és una direcció a
la memòria de localització -
i quan ho fa el signe, que va a l'adreça de memòria.
I quan vas a la b, ets una mica passos d'aquesta adreça de memòria en moviment,
vostè està tornant això.
Així que vostè és en realitat, de fet, afegint a i b [inaudible].
On són les operacions estàndard en aquesta declaració?
Igual que, d'on cauen els parèntesis?
El retorn de la direcció en un abans o després de [inaudible]?
>> ALTAVEU: Es va a indexar en b -
o un índex en un - i després tornar la direcció.
OK, així que entenia tot el món el que [? Akshar?]
va dir, i va explicar per què això funciona?
Jo no ho vaig fer, la primera vegada que algú explicat això a mi.
Algú vol una foto per explicar això?
Farem un dibuix, amb cap marcador, això és genial.
Trobat alguna.
>> Així que tenim una matriu que és una sèrie de caixes.
El primer és un índex de 0, índex 1, 2, 3, 4, punt, punt, punt.
Un arranjament típic.
I a més de tenir índexs, tots ells tenen adreces de memòria.
Així que anem a donar a aquesta adreça de memòria 13, 14, 15, 16, 17, etc.
Tothom està aquí fins ara.
>> Així que a és una direcció.
El nom d'una matriu, un punter es guarda allà.
És un punter, és una ubicació de memòria, l'inici de la matriu.
Així que si es tractés de la matriu, 1 seria un valor de 13.
I, per descomptat, podem donar un valor que volem.
Caràcter de luxe A, podem donar una qualsevol direcció de memòria que volem.
Podem donar-li 0, podem donar-li negatiu 1 - negatiu no existeix 1,
de manera que és probable que hi hagi un problema, però vas veure que encara funcionava.
Així que podem donar-li un qualsevol nombre que vulguem, qualsevol adreça de memòria que volem.
>> Llavors, int b diu, OK, vagi aquest número dels passos en la matriu.
Així que si b és igual a 2, i a és igual a 13, estem en la direcció de memòria 13.
I anem dos passos, i pel que estem aquí.
I el signe significa retorn la direcció d'aquest lloc.
I la direcció és, per descomptat, 15.
Així que tenim 13 més 2 o A més B, que és de 15.
>> La qüestió és, però -
Ho sento.
Això aclarir les coses per què això funciona?
>> AUDIÈNCIA: Per què seria treballar va -
perquè pugui tenir una matriu i anar a un índex negatiu?
>> ALTAVEU: així.
Així que vam fer els números negatius, així que això és el -
¿Això té sentit, però, primer, [? Avi,?]
per a vostè?
>> AUDIÈNCIA: Sí, estic sol [Inaudible], però -
>> ALTAVEU: Sí, això seria tornar 15.
Si una tenia 13 anys, i b era 2, això seria tornar 15.
>> AUDIÈNCIA: Així que la indexació de zero no convertit en un problema, oi?
Com que vostè s'està movent des de 0.
>> ALTAVEU: així.
Així que vostè està en moviment - així que si b va ser de 0, no desplaçar-se a qualsevol lloc.
I vostè acaba de tornar de la direcció -
si b és 0, això és essencialment retornant aquesta direcció d'una.
En passar en una xerrada d'una estrella i tornar el direcció d'una s'acaba tornant a,
essencialment.
>> Bé, la pregunta és per què nombres negatius funcionen?
I això és el realment bo de això, perquè això ha segfault.
I seria segfault si va fer alguna cosa com això.
Diguem, int.
Així que aquest codi és idèntic i ha de comportar de forma idèntica.
Essencialment, x és una variable d'escombraries, de manera que aquest ha de comportar-se de forma idèntica.
>> Farem això -
ups -
en estrella.
Bé, ja estem rebent errors aquí, perquè ja estarà enutjat
a mi, perquè ja sap el que ve.
En particular, el segon un.
Direcció de memòria apilats associat amb una variable local.
>> Essencialment, jo no vaig a compilar això, i després em vaig a desfer fer
el que acabem de fer.
Però com que mai estem realment accedir al que està en la memòria
ubicació, no va a segfault.
Estem en realitat mai mirar al que és en el segon quadre, o el que hi ha a qualsevol caixa
d'aquesta matriu.
Nosaltres només estem dient, aquí hi ha la direcció del que estem buscant i
tornar aquesta direcció.
Estem en realitat mai entrar al matriu a mirar en aquesta ubicació.
I perquè mai ens toquem la memòria, no ens fiquem en problemes.
No aconseguim una violació de segment.
>> Si intentem, de nou, toc que memòria, toc el que estava en un ob -
o un suport de b, i suposant un 0 i -
si una de 0, fins i tot, que seria bastant dolent, perquè no podem anar
baix tot el camí.
Si A i B són dos 0, i tractem de tocar el que hi era, llavors ho faríem
ficar en problemes.
Però si no toquem el que hi ha, simplement tornem la direcció, és
en realitat no va a segfault perquè que li permet realitzar aquestes operacions.
Només s'enfada amb vostè, i es posa molt enutjat, quan tractes de tocar
la memòria real i tornar el que és en aquesta ubicació de memòria.
>> Això té sentit?
Això és només una part boja de C. Així, tenim un més d'aquests.
>> Qui creu que és genial?
Més persones.
Això és bo.
D'acord, aquest és el nostre últim.
I m'agradaria que em digués si o no creus que això va
fer exactament el mateix.
>> Això ho he escrit en algun lloc.
No vaig a memoritzar.
>> Anem a veure, 8, b 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4.
Així que aquesta és una matriu, ara, no una funció.
I és una matriu perquè tenim quadrat suports, abraçadores no arrissat.
I és una matriu de quin tipus?
Qualsevol persona, no?
>> AUDIÈNCIA: Els seus números hexadecimals?
>> ALTAVEU: Però quin és el tipus C?
Tots ells tenen números hexadecimals.
Quin és el tipus C?
Et diu.
>> AUDIÈNCIA: És caràcters sense signe.
>> ALTAVEU: Dreta, caràcters sense signe.
I dos nombres hexadecimals és d'un byte.
Així que aquests són 1, 2, 3, 4, 5, 6, 7, 8, 9 bytes.
És un conjunt de 9 bytes.
>> Bé, vostè probablement ja sap la resposta a aquesta pregunta.
Però, ¿què creus que va a succeir quan executo això?
Dic, de nou, en mysum.c, Estic esperant una funció
que pren dos nombres enters.
I jo estic en el seu lloc dient que suma és una sèrie de caràcters.
¿Què passarà quan Corro. / MySum i fer?
>> Bé, en primer lloc, la majoria de vostès probablement d'acord que fer - oh no, és broma.
Què vaig fer malament?
Uh oh.
Això hauria de ser claus.
Així com s'inicialitza una matriu.
El meu mal.
>> Així que ja vam veure abans que els tipus de són una abstracció de nivell C, no una
abstracció nivell d'equip.
Així que la majoria de vostès probablement esperava que fer, o assumir que faria.
Però el que quan corro. / MySum?
¿Què passarà?
Alguna idea?
>> AUDIÈNCIA: Es va a imprimir una paraula.
>> ALTAVEU: Es va a imprimir una paraula.
Quina paraula?
>> AUDIÈNCIA: [inaudible].
>> ALTAVEU: Alguna altra conjectures?
Acceptar, imprimiu una frase.
Vostè pot tenir qualsevol frase.
Aquesta serà teu costat.
Qualsevol que tingui una suposició diferent?
Anna, quina és la seva resposta?
>> AUDIÈNCIA: Es va a imprimir -
dues lletres, o [inaudible] una lletra.
>> ALTAVEU: Una carta.
>> AUDIÈNCIA: Puc explicar com molts [inaudible]?
>> ALTAVEU: Nou.
Bé, jo vaig a executar-lo.
Fa exactament el mateix.
Afegeix dos nombres junts.
Bé, anem a passar els dos arguments.
No pren arguments.
Així que no sé d'on va poder possiblement obtenir aquests arguments.
Però anem a passar a 100 i 0.
I afegeix 100 i 0.
Això és una bogeria.
Crec que sí.
>> Negatiu 4, que funciona també.
Pots fer el que vulguis.
Aquesta és una funció de suma igualment vàlides.
Aquesta és una funció de suma.
Però, no, vostè està dient que és una matriu de bytes.
Llavors, què està passant aquí?
>> Així que, de nou, tornarem a aquesta idea que dèiem al principi.
Es passa de codi de nivell C, per al muntatge llenguatge, a uns i zeros.
Aquest és hexadecimal.
Però això és només una munt d'uns i zeros.
Això és 72 uns i zeros, oi?
72 uns i zeros.
9 bytes.
Cada byte té 8 bits.
Cada bit és un un o un zero.
Així que 72 uns o zeros.
Acabo d'ells escrits com aquest - en lloc d'escriure com una gran quantitat de
uns i zeros.
>> Però això passarà de nivell C idioma, per al muntatge
idioma, a codi.
I això mostrés en el codi, en algun lloc, aquests 72 uns i zeros
que he escrit aquí.
Així en algun lloc en què -
anirem aquí -
en algun lloc de MySum, el programa, hi ha són aquests 72 uns i zeros que he
per escrit i li va dir que per escriure.
>> Ara, qualsevol conjectura sobre el que els 72 uns i zeros signifiquen?
>> AUDIÈNCIA: Probablement el mateix cosa que tornar a més b.
>> ALTAVEU: Probablement el mateix cosa que tornar a més b.
Anem a verificar això.
Anem a esbrinar com vaig fer això.
>> Així que si vas de tornada aquí, et dic per executar aquesta comanda, objdump-S
sumfunction.o.
Anem a executar-lo. objdump -
obj, bolcar.
Bàsicament es em pot donar el que jo vull veure.
Em pot donar el llenguatge assemblador.
Em pot donar els uns i zeros.
Té un munt de banderes.
Aquest és el que anem per utilitzar de moment.
Dot -
com podeu veure en les diapositives -
capital de l'ruixada S diu, intersperse, codi font -
aquesta línia és de C - amb el conjunt codi i amb els uns i zeros.
I anem a córrer en sumfunction.o.
Com que serà més fàcil de veure.
Un cop més - hmm?
>> AUDIÈNCIA: Vostè lletrejar malament.
>> ALTAVEU: Però de fet vaig per desactivar per un segon.
Estic primer va a obrir només sumfuntion.o.
>> AUDIÈNCIA: Vostè lletrejar malament la primera vegada.
>> ALTAVEU: Classic.
Suma -
que és una paraula difícil, però.
Us sorprendria.
OK, així que això és sumfunction.o.
Ni tan sols vaig poder dir-li.
Hi ha un munt de zeros, clarament molt de zeros, i no hi ha altra
coses que no són zeros.
Però tot zeros.
Sembla que hi ha alguns més.
Així que, clarament, això és difícil de llegir.
Aquest és el llenguatge binari.
>> Ara anem a obrir-lo -
¿Què?
Què estic fent malament?
¿Vaig escriure correctament?
OK, això és incòmode.
Necessito un segon per entendre el que estic fent malament.
Aquesta és una error.
Això és estrany.
Oh, és per això.
>> Vaig a tornar a la nostra inicial un, perquè puguem mirar el
codi objecte d'aquest.
Perquè no hi ha realment va a ser qualsevol cosa quan només cal posar el
uns i zeros polz
Això és.
OK, així que tothom pot veure això.
Aquesta funció, com ja he dit, apagar les línies C -
línies de codi font -
amb unes instruccions de muntatge.
>> Aquí està la nostra línia de codi font.
Aquí hi ha un, aquí és una altra.
Heus aquí les instruccions de muntatge.
Això és el que semblen.
Instruccions de muntatge -
vostè pot aprendre més d'ells si es pren altres classes de CS, però són
en general, una instrucció.
I a continuació, una font i un destí.
>> I llavors aquí està el codi binari que correspon a l'assemblea
instruccions.
Així com vostè pot veure, aquesta funció suma, al final del dia, és de tres
instruccions de muntatge.
Només tres.
Un mov -
aquest m-o-v representa Move.
Afegir estands per Afegeix.
I r-i-t vol dir retorn.
Així que un mov, un add, una devolució.
I aquests, per aquí, són els zeros i els que corresponen a aquest codi.
>> Així que aquests zeros i uns, si es vol Saps aquests, només pot posar
aquells directament in
I després va a fer el exactament el mateix.
Com que, al final del dia, tots que està executant és una llarga sèrie de
zeros i uns.
I això és el que el seu codi és en realitat.
>> I la raó -
anem a veure una cosa.
Tenia obert el makefile?
Així que si ens vam anar de nou a llançar- zero, zero fins aquí -
ho sento, el capital o el capital o zero, no és zero, zero.
I VA ACONSEGUIR, seria seguirà funcionant igual.
Però ara t'adones que hi ha una molt més instruccions de muntatge.
Això és perquè, de nou, li vaig preguntar a la compilador que no faci cap optimització.
>> Així que encara podia prendre tots aquests zeros i uns, i llençar-los a,
i que anava a funcionar.
Acabo de fer les optimitzacions, perquè que és una mica més fàcil, llavors,
per escriure la matriu.
Però això havia de funcionar igual de bé.
>> Bé, farem una última cosa, perquè crec que és la part més fresca.
Tot i que tothom està clarament Ja bufat i sense paraules.
Les nostres ments s'han apagat.
[Inaudible]
>> Així, aquests són d'una classe diferent de CS, que és molt interessant,
que he pres -
CS61.
Jo us animo a prendre-ho.
Però el millor d'aquest fet, que les coses són només zeros i uns,
són que tot està zeros i uns.
>> Així que vostè pot prendre un arxiu que té el zeros correctes i que vol
en algun lloc en el mateix, i l'ús d'aquesta secció de zeros i uns en funció suma.
>> Què vull dir amb això?
Vull dir que pots tenir un arxiu d'imatge té la sèrie correcta de zeros i
estimats, que imprimeixen una mica a una imatge.
I un programa podria interpretar és un imatge, però ets capaç d'interpretar, si
que vols, com una funció de suma.
>> Així que si volíem obrir, per exemple, aquesta imatge.
Anem, Hello Kitty.
Wonderful little imatge.
Aquí hi ha aquesta cadena de zeros i uns.
Aquests 72 zeros i uns existir en aquesta imatge.
>> Així que el que puc fer, llavors, és escriure -
He de recordar on són.
Vaig a trobar això en un segon.
Però ho fem -
m'ho dius a mi esbrinar on són.
Un seg.
Farem -
>> AUDIÈNCIA: [inaudible].
>> ALTAVEU: Gràcies.
Així que si executem aquest programa, que en canvi llegeix en un arxiu, llavors es va
a aquest índex a l'arxiu.
I llavors, de nou, igual que MySum, pren dos nombres.
Podem afegir números exactament igual que que estàvem fent abans, el que va a
mostrar com el fet que, al final del dia, totes aquestes coses són
zeros i uns.
I és només la forma en què vostè triï interpretar-los.
>> I si realment es veuen en aquesta imatge -
anem a ampliar una mica.
Tots poden veure-ho?
Es donarà compte d'aquí, hi ha alguna taca estranya.
Anirem - aquesta és la imatge original.
Es donarà compte de que aquí no hi ha taca.
Aquest és el codi de la funció suma, és aquesta petita taca aquí.
>> I, de fet, un cop més, si vostè aprèn més sobre això, t'adonaràs que aquest
Hello Kitty, que té fins i tot una major taca, ha codi que pot fer-se càrrec d'un
ordinador si no està protegida apropiadament.
Així que en realitat es pot executar aquest.
Jo no vaig a córrer ara mateix.
Però es pot executar aquest Hola Imatge del gatet, i que pot
fer-se càrrec del seu equip.
>> Així que això és tot per la demostració.
Algú té alguna pregunta, comentaris, inquietuds?
Crec que això és fascinant.
Això em va inspirar a aprendre més.
Li recomano, si estàs interessat en absolut en CS, parla amb mi.
Tot i que sóc un Estudis Socials Concentrador, sóc un CS, secundària, de manera que
Encara sé una mica.
Però jo sé el que sens dubte classes que ha de prendre.
Crec que és tot molt interessant, i animo a vostè, sens dubte, a
obtenir més informació si està interessat.
>> Està bé, tinc una última cosa.
Ho sento.
Alguna pregunta?
No em vaig aturar a esperar si algú tenia alguna pregunta sobre això.
>> Algú serà un concentrador d'CS?
O pensar-hi?
Un, dos, tres, quatre.
Un - només un.
Anna és l'única part que és plantejat amb autoritat.
OK, això és genial.
Assam, què faràs?
>> AUDIÈNCIA: [inaudible].
>> ALTAVEU: Constantino?
>> AUDIÈNCIA: Física.
>> ALTAVEU: Whoa, això va ser ràpid.
Vostè va tenir una mala experiència en CS50?
[Inaudible], què faràs?
>> AUDIÈNCIA: No tinc ni idea.
>> ALTAVEU: Curt?
>> AUDIÈNCIA: Econ o CS.
>> ALTAVEU: Econ o CS.
Tom?
>> AUDIÈNCIA: Estic fent Stat.
>> ALTAVEU: Stat?
D'acord.
Què ets?
>> AUDIÈNCIA: Em?
>> ALTAVEU: Si.
>> AUDIÈNCIA: Stat.
>> ALTAVEU: Stat.
Oh, aquí ho tens.
Tom, parla amb Alden.
Emily, què ets?
>> AUDIÈNCIA: Biomèdica -
>> ALTAVEU: Està vostè en aquesta secció?
>> AUDIÈNCIA: No
>> ALTAVEU: OK, això és Emily.
Ella és la meva amiga.
És evident que no és tan bo d'un amic, perquè ella em fa una mala estona.
Vostè podria ser més amable amb mi davant de tots, el meu estudiant -
>> AUDIÈNCIA: Estic fent la teva guia Q.
>> ALTAVEU: De debò?
Uh oh.
Bé, ets increïble.
T'estimo tant.
Oh boy.
>> De totes maneres, jo, ahir a la nit, com tot -
Estic segur que tothom sembla realment subratllat en aquests moments.
No sé, són de primer any - són vostès sent estressat?
Em sento estressat.
Era com, et vas a casa Acció de Gràcies.
Ets com, vaig a fer totes aquestes coses.
>> AUDIÈNCIA: És molt diferent.
>> ALTAVEU: Sí, i torna.
Jeff, que no et sents d'aquesta manera?
>> AUDIÈNCIA: Acabo de pensar Jo faria una mica.
>> ALTAVEU: OK, molt bé.
Així que tornar, i no tinc fet res.
I tot és molt estressant.
I a mi es refereix, genuïnament interessat, sobre si sóc o no
va a acabar tot el que he de fer.
Però ahir a la nit, no es va destacar, Jo estava una mica trist.
Així que vaig escriure al meu diari sobre el que jo estava trist per.
I jo estava trist per aquesta secció en aquesta classe arriba a la seva fi.
>> Així que jo només anava a llegir per vosaltres un petit fragment del meu diari,
de la nit anterior.
Puc obtenir algunes tovallons, alguns teixits de Tom?
No, vaig a plorar.
Jo no ploro.
No és que no pots plorar, És només que no ploro.
Ni tan sols sé si el meu llàgrima glàndules treballades - els conductes lacrimals.
No he plorat en molt de temps.
>> AUDIÈNCIA: [inaudible].
>> ALTAVEU: OK, gràcies.
Bé, hi ha un petit pròleg -
hi ha altres parts del meu diari entrada, perquè intento diari cada
nit abans d'arribar al llit.
Li recomano un diari.
Se li ajuda a processar les coses, i també ser molt agraïts per la seva dia.
I això fa que sigui molt més fàcil mirar de tornada al seu dia i adonar-se que
hi havia un munt de bones coses que van succeir.
Encara que vostè se senti molt estressat en la nit o molt molest, o
realment trist o cansada.
>> Oh, Déu meu.
Ni tan sols sé si està escrit que bé perquè jo no el corregeixi.
Però anem a llegir-lo.
En general no llegeixo la meva revista, òbviament.
>> "Demà em vaig a ensenyar el meu últim Secció CS50 de l'any.
És una bogeria la rapidesa amb què vola.
No obstant això, em sorprèn el diferent la meva experiència en l'ensenyament d'aquest any va ser
que quan jo era un estudiant de segon any.
Per començar, jo definitivament conèixer millor el material.
Però no li diguis a la meva primera cohort dels estudiants que.
Més important, però, em vaig adonar que l'alegria que ve de peu
al davant d'una habitació del que comença com estranys, però acaba sent, en
menys, amics de Facebook, és no és un cop de sort de primer any.
Més aviat, és de saber que, en alguna manera, vostè està ajudant a
talentós, pensatiu, agradable, i persones apassionades aprenen una mica més
sobre la informàtica.
>> Estàs canviant la bombeta que només un poc en la seva conca, de manera que és capaç
a brillar més que tu, o ells, podria haver imaginat l'inici del semestre.
Estàs ajudant a convertir els celles arrufades de cap cap avall i fent preguntes que
proporcionar suport, però encara permeten els estudiants a posar-se dret pel seu compte.
>> Certament, no és una exageració dir que aquesta secció és el meu favorit
part de la setmana.
O fins i tot que no m'atreveixo a dir, això és tot, a les 5:30 cada setmana, sabent
que serà massa llarg fins que ens trobem de nou.
>> No obstant això, estic molt agraït a tot el que m'ha donat aquesta
oportunitat de tornar alguna cosa als altres.
Per David, per la seva paciència i confiança.
Per a l'equip de filmació i producció, per fer-me veure una cosa respectable.
I, el més important, als meus alumnes, sense els quals no tindria cap motiu per
passar 10 hores per esbrinar la millor manera de dibuixar els punters, o dissenyar un
taula dels dofins, a través de JavaScript.
Com sempre, ha estat una benedicció. "
>> Així que amb això, gràcies nois.
Ens veiem tots a la fira CS50, i el hackathon, si hi ets.
I si vostè té alguna pregunta, vaig a pegar voltant fins que no hi hagi més.
Però li dono les gràcies nois per un any meravellós.
>> [Aplaudiments]
>> ALTAVEU: Podria plorar.