
ben buon pomeriggio il mio nome è Krista
e sono un professore all’Università di
California Irvine Sono anche uno sviluppatore
in un progetto open source sono stato
facendo ciò da quando ho ottenuto il mandato perché io
era così ansioso di tornare in realtà
scrivere un codice che dovevo trovare
qualcosa in realtà mi sporca le mani
e farlo sentire di nuovo per quello che è
per sviluppare effettivamente sistemi e io sono
parlerò della programmazione
stili oggi e questo discorso è molto
parlare per le persone a cui piace
programmare chi effettivamente pensa che sia
una cosa davvero bella da fare come un
attività intellettuale quindi programmazione
stile lasciami solo dirti perché vado
per parlare di questo e perché penso che sia
importante e non so voi ma
in questo grande progetto che io sono un
sviluppatore ci sono molte altre persone
codice di commit ad esso e a volte quello
in realtà quando vedo un pezzo di codice I
può dire chi era la gente che lo ha scritto
a destra appena appena può dire
ci sono alcuni elementi lì dentro che tu
inizia appena inizi a sapere più di
i tuoi colleghi di lavoro che inizi a rilevare
questi modelli di codice di scrittura che sono
molto familiare a molto specifico per
questa persona o un altro e quando vai
quando entri ed effettivamente patch
qualche bug è importante, penso che tu
dato il sentimento immediato di ciò che era
lo stile che si applicava lì e
o due cose possono accadere o te
in realtà non mi piace davvero lo stile
e faresti meglio a essere pronto per il refactoring
davvero intensamente o semplicemente lo sai
metti da parte i tuoi gusti e antipatie e
prova solo ad abbinare lo stile che era
lì in primo luogo e correggere il bug
altrimenti se inizi a mixare il tuo
stile con lo stile della persona che
ha scritto il codice sarà un grande
pasticcio ora in grande stile se ti senti in un lavoro
società così a volte anche le aziende hanno
regole
per come produrre il codice degli stili
che si applica ed è tutto buono e
open-source è un po ‘più che in
alcuni progetti un po ‘più flessibili
di persone in grado di esprimere
loro stessi nel modo in cui pensano
è meglio riflettere quello che sono
pensando quindi cos’è questa idea di stile
bene
gli stili di programmazione in generale sono cose
esiste ovunque
questo non è nuovo per la programmazione giusta –
abbiamo avuto la nozione di stile per sempre dentro
le arti in particolare così ho potuto parlare
sulle arti letterarie, ma questo è
dipingendo sulle belle arti e vedi
questi diversi stili sono cosa cosa
sono questi stili bene abbiamo modernismo
Realismo impressionista e cosa questi
le cose sono davvero quando vai all’arte
scuola e conoscere questi diversi
modi di esprimerti attraverso a
dipingendolo davvero solo
vincoli su come esprimere il tuo
idee quindi se vuoi produrre il
dipingere in stile impressionista
bene è meglio evitare linee molto nitide
per esempio le forme stanno emergendo da
un mucchio di piccoli punti che si applicano
ecc se vuoi esprimerti
modernismo quindi farai meglio a sapere il vero
L’idea inglese che stai per
dipingi la realtà che non immagini
la realtà dipinge un’astrazione di
realtà quelli sono vincoli e quelli
i vincoli possono essere appresi ci sono
le tecniche ci sono modi di pensare
e puoi imparare che la gente fa molto
buon lavoro di insegnamento nell’arte
scuola come produrre opere in specifico
stili non facciamo un ottimo lavoro in
l’informatica nel farlo così tu
sai se vai a scuola d’arte e se tu
davvero non voglio ottenere molto
sofisticato te e quello con come un
la storia dell’arte lo ha semplificato tutto
modi diversi di disegnare i volti a destra
e gli stili nelle belle arti sono molto
spesso associato con specifico
gli artisti ti sorprendono per lo stile dali
lo stile di Picasso e quelli sono tutti
cose che puoi effettivamente provare
imitare se vuoi così quali sono
stili di programmazione in programmazione
gli stili di programmazione sono solo le regole in
i vincoli che tu
vuoi candidarti quando esprimi cosa
vuoi farlo in modo che resistano al salto
su di me basta così sono modi di
esprimendo compiti l’altro interessante
la cosa sulla programmazione di Styles è questo
esistono in molte scale così esistono
alla piccola scala della scrittura del programma
giusto e esistono anche nei sistemi
livello quando si progettano interi sistemi
componenti composti hai anche stili
modi di pensare a come decomporsi
il problema e come confrontare come
i componenti interagiscono e ciò che trovo
interessante è che alcuni di quelli
modelli e di quegli stili che tu
applicare a livello micro molti di essi
in realtà si applicano anche al sistema
level design va bene e quindi non è da vicino
incidente che un sacco di persone che sono
molto bravo nei linguaggi di programmazione
e persone che scrivono compilatori e
anche il linguaggio di programmazione del design
spesso finiscono per essere molto bravi a scrivere
sistemi perché hanno appena quello
modello concettuale su come il piccolo
i pezzi interagiscono insieme e hanno un ordinamento
di una certa flessibilità nel pensare
quindi questi questi modelli questi stili
esistono in molti livelli e ovviamente noi
tutti sanno che sono in un modo congelato
nei linguaggi di programmazione determinati
i linguaggi di programmazione sono esecutori di
stili giusto alcune persone pensavano bene io
pensa che il modo giusto per esprimere
te stesso è pensare agli oggetti bene
quindi ora fammi disegnare un linguaggio che è
costringendoti a pensare agli oggetti o a me
pensa che il modo migliore per esprimere
te stesso è in termini di funzioni così ora
lascia che disegni una lingua che pensano
ti costringe a pensare in termini di funzione
quindi i linguaggi di programmazione ne congelano alcuni
questi stili di programmazione vanno bene per a
motivo o un altro così che cosa perché sono questi
importante bene ognuno è importante da
da solo, ma penso che c’è di più
importante qui è che il
la consapevolezza che ce ne sono molti
stili di programmazione non solo uno va bene e
questa è una cosa che siamo io sono un
professore quindi insegno agli studenti che vogliono
che non facciamo molto bene noi
insegnare alle persone uno o due stili al massimo
quando escono dall’università e e
la gente ha un’idea sbagliata
che è così che dovrebbero pensare
sul software in effetti non è vero
ci sono molti modi diversi di
pensando al software ma ci sono loro
servono anche come vocabolari comuni per
parlare all’interno delle squadre giuste
sono fotogrammi di riferimento su cui
in realtà scrivi il codice e noi tutti
sappi che alcuni stili sono migliori di
altri tutti abbiamo questa idea ma ma è così
dipende proprio dipende da un sacco di
le cose dipende da cosa stai provando
per ottimizzare e molte volte non lo sono
cercando di ottimizzare le stesse cose in
diverse circostanze quindi è davvero
importante quando hai quelle guerre in mezzo
in gruppo su quale sia il modo giusto di
fare cose è davvero importante
capisci cosa stai provando?
per ottimizzare forse stai cercando di
ottimizzare sapete il numero di linee di
codice o forse stai cercando di ottimizzare te
conoscere l’ abilità per le altre persone
capire il codice di altre persone o forse
si sta cercando di ottimizzare si conosce il
velocità se c’è un sacco di cose
potresti voler provare a ottimizzare
a seconda di cosa vuoi fare tu
raccogliere il sale di programmazione giusto che
può aiutarti a raggiungere questo obiettivo o o o
può impedirti di raggiungere quell’obiettivo così
non ce n’è uno solo non ce n’è uno
è sempre meglio dipende tutto bene
quindi sai di essere un’università e un essere
un professore di informatica, mmm
Mi capita spesso di sapere che io in realtà
ha insegnato il corso di lingue di programmazione
introduttivo e ho appena scosso la testa
come sai che non stanno imparando cosa
dovrebbero imparare, voglio dire che insegniamo
loro programmano il linguaggio che è così
molto più oggi sono i software di cucito di
allora questo davvero c’è tutto questo
diversi modi di pensare al
problema ed è questo modo di pensare
riguardo al problema che credo davvero
è davvero importante insegnare così ora noi
lo sanno e infatti abbiamo la stessa
problema quando non lo è un altro corso
solo linguaggi di programmazione ma anche noi
insegnare corsi sull’architettura del software
per esempio non è il fatto che il software
l’architettura è lo stesso problema come
come insegni l’architettura del software
e il problema c’è anche
peggio perché solo l’architettura del software
ha senso quando hai effettivamente un
grande sistema pieno si sa diverso
componenti che interagiscono tra loro
quindi gli studenti
sono molte volte in cui sono preparato per davvero
assimilare quegli insegnamenti perché questo
c’è ancora troppa complessità in
il tempo che possono gestire così è
importante essere in grado di insegnare questa cosa
quindi per farmi avvolgere il mio
dirigiti per insegnarlo, se già lo fai
ne conosco un po ‘l’anno scorso, quindi mi sono imbattuto in questo
autore autore francese e ancora se tu
voglio trovare interessanti idee pazze
è sempre bene dare un’occhiata al
Intellettuali francesi del 20 ° secolo
perché sono davvero interessanti
comunque così questo ragazzo Ramone Kino e lui
è stato parte ha iniziato questo club un workshop
di letteratura potenziale se posso
lo traduco in inglese, tutto quello che Aleppo è
fondamentalmente un club di intellettuali francesi
scrittori e matematici e loro
tutta la moto era un limite, così sono
tutta l’idea era che tu avresti dato loro un
vincolo e avrebbero prodotto il
lavoro basato su quel vincolo e tu
conosci un pezzo d’arte del tuo testo letterario
nominalo e quindi questi erano vincoli
conosci anche qualche tipo di vincoli
i vincoli su di te conoscono la matematica
vincoli o vincoli astratti
non può usare quella parola o cose del genere
Va bene così c’è un libri che facciamo su
il lato è un libro che raccomando da
una persona che faceva parte di questo club I
dimentica il nome perché non posso
ricorda i nomi ma lei ha scritto questo libro
li ha chiamati in inglese, evita chiunque
qui ed evitare no sì paio di persone
comunque, quindi, cosa c’è di interessante in questo
libro è che è il libro è davvero
interessante è una storia interessante
e non è piccolo in realtà è abbastanza
libro di medie dimensioni è molto coinvolgente
è um quello che era ma oltre al
raccontare ciò che è interessante del libro
è che l’intero libro è scritto
senza le tue correnti della lettera e
ora prova a scrivere qualcosa senza il
lettera e destra che ti dà
immediatamente qualcosa che conosci molto
stile strano proprio lì, perché alcuni
parole che pensi potrebbero essere le
parole naturali da fluire che non puoi usare
loro perché hanno una lettera e così tu
iniziare a usare
parole oscure perché si deve a
applica questo vincolo comunque così è
un libro interessante cerca ma
oltre a questo, una volta ok, conosci se stesso
ha scritto un libro interessante chiamato
esercizi in stile che consiste nel
la seguente cosa ha preso un po ‘
storia che è una storia completamente stupida
sapere che può essere insegnato può essere raccontato in 30
secondi e ha scritto questo libro con 99
diversi modi di raccontare questa storia
ok solo ossessivo-compulsivo tutto il
modo attraverso giusto solo in un modo
in un altro modo va fino in fondo così così
sai, ecco alcuni di questi
stili metafore sorprese sogno
precisione esitazione prognosticazione
un sacco di stili diversi ed è quello
nomi da parte del modo in cui io non sono nemmeno sicuro che
diede loro nomi Penso che la
il traduttore ha dato questi nomi di stili
per tipo di così l’associazione tra
il nome e la resa reale è
relativamente confuso e parlerò di più
per quanto riguarda i nomi in un secondo comunque così quando io
trova questo libro è wow va tutto bene
come facciamo se volessi imparare come
scrivi parole letterarie che voglio davvero
leggi questo libro perché mi insegnerà
alcuni mi renderanno conto di come
diversi vincoli che posso applicare
per aiutare in realtà mi Scrivi Scrivi
i vincoli sono buoni ci aiutano a creare
quando non abbiamo vincoli è
davvero difficile creare cose così così io
pensato che sto per rubare
questa è l’ idea migliore di sempre
okay, ho intenzione di prendere il programma
andando a scriverlo in ossessivo ossessivo
modalità compulsiva come molti modi che posso
possibilmente scrivere il programma in modo che sia
quello che sto facendo quindi sono qui è il
storia della mia frequenza del mio programma
tutti qui possono fare frequenza di termine
okay prendi un file conta le parole tu
sapere normalizzarli in minuscolo
eliminare non alfanumerico rimuovere il
ferma le parole se non sai cosa fermarsi
le parole sono quelle parole che esistono in
lingue che sono così frequenti che loro
non hanno alcun segnale quindi cose come la
in inglese quindi rimuovi le parole di stop e
poi contare le parole e presentarli
diminuendo l’ordine di frequenza che sono
solo dicendo le 25 parole più frequenti
okay, questo è il mio programma che tutti possono
scrivi questo ogni studente in
l’anno junior può scrivere così se tu
prendilo per esempio pregiudizio privato mio
libri preferiti si otterrebbe una lista
qualcosa del genere va bene ecco il
input Rende l’output laggiù
programma quindi quanti modi ci sono
annotare la frequenza pensa un po ‘
quale sarebbe il tuo primo approccio a
scrivi da per 10 frequenze ok lì
molti modi se ti dessi sapere tutto
di questo esercizio sono abbastanza sicuro di me
vedrebbe almeno 50 modi diversi di
scrivendolo così prima di andare avanti così
è quello che ho fatto, lo so ora
avere una collezione di loro in github voi
possibile si possono guardare in alto il gioco è fatto
e il mio obiettivo è raggiungere 33 e poi I
fermati e scrivo il libro per spiegare
cosa succede ma 33 non lo sai
può andare può andare molto più in alto di 33
um lasciami andare qui per il resto del
parlare e mi limiterò a passare attraverso alcuni dei
questi stili okay no I ho bisogno di
il tuo aiuto va bene, ecco cosa è successo
circa un mese fa sono venuto qui per
ufficio per un incontro di un piccolo club come
gli esperti di guanti di Aleppo nella programmazione
lingue e io li presento
alcune di queste idee e gli stili e io
ha fatto qualcosa di veramente stupido, okay
e mi hanno ucciso per questo ecco cosa
ho deciso di dare nomi tecnici a
questi stili vanno bene e non appena io
iniziato stavo usando nomi tecnici come
stile funzionale o sai imperativo
lo stile mi hanno appena ucciso perché loro
sei entrato in una guerra di nomi, giusto?
non sai che questo non è funzionale
stai dimenticando ba ba ba oh no no questo
non è imperativo tu lo sai sì oh mio
Dio va bene così io per completamente
evitare del tutto il problema
Ho fatto un passo indietro e ho detto okay
not gonna nome queste cose ti senti bene
sai cosa non mi interessa del nome
ciò che conta qui sono i vincoli
okay devi scrivere per il termine
frequenza utilizzando questi set di vincoli
ora, qualsiasi cosa tu chiami, dipende da te
in effetti è qui che ho bisogno del tuo aiuto
aiutami a nominare queste cose okay, vado
per presentarti i vincoli e te
aiutami a nominare le cose e il modo in cui
tu se vuoi partecipare twittami
hashtag che è il mio nome tweet hashtag
stile quale stile uno e dimmi cosa
quale dovrebbe essere il nome di quello stile?
ok ora dovrei avvertirti che il nome
i numeri qui non corrispondono al
I numeri che ho in github sono giusto
avere uno due tre quattro cinque qui sul
in alto ma non ho gli stessi nomi che ho
sul repo github Va bene così qui andiamo
lo stile numero uno non prova a leggere questo
solo per dirti che questa è una pagina di codice
ok ora ho intenzione di ingrandire ma anche
prima di ingrandire, puoi già vedere
qui c’è molta dose indiana
andando a destra quindi c’è un sacco di
scope nidificati così ho intenzione di ingrandire
diverse parti di questo programma di esempio
in modo da avere un’idea di come questo
il programma è effettivamente scritto bene così
inizia avendo una variabile globale così
le frequenze delle parole questo si manterrà
sulla parola la parola frequenze sopra
qui e poi ho appena aperto la fermata
le parole e io le carico tutte così
che devo fermare le parole già pronte
andare quando ho bisogno di confrontarli okay
e quindi fondamentalmente quello che sto facendo qui
sono due cicli annidati uno che itera
sopra le righe del file e
uno che itera sopra il personaggio
in ogni riga e puoi vedere la storia
giusto così abbiamo iterato su una linea tu
itera sul personaggio che cerchi di rilevare
l’inizio di una parola la fine del
parola
prova a normalizzare mentre vai tu
rileva la parola vedi se è una parola di stop
si ignora bene in modo che tutto il
logica che sta andando là e quella dentro
quegli ambiti lessicali nidificati laggiù
giusto così questo è un modo per farlo
quali sono le caratteristiche di questo
stile quali sono i vincoli se tu
voglio scrivere una programmazione di questo stile
quali sono questi limiti lasciami dire
tu quello che sono
nessuna astrazione va bene non si definisce
procedure o funzioni o oggetti o
qualsiasi cosa tu abbia appena iniziato nella prima riga e
finire in linea n un’altra cosa che tu
anche non fare è usare le librerie così
fondamentalmente non scegliere le librerie farlo
tutto bene, quindi ho bisogno di aver bisogno di un
nome per questo stile così sto andando a
ti do il mio nome mio in realtà penso
hai molti nomi per questo monolite
potrebbe essere chiamato nulla che potrebbero essere
discarica del cervello è una specie di stile
finisci quando sei veramente in un
affrettati a fare qualcosa e loro no
voglio anche solo pensare a come lo sai
di che tipo di astrazioni si tratta
funzioni di libreria che puoi usare solo da bere
così che questo è uno stile va bene così lascia
lasciami passare allo stile numero due
okay, allora lo stile numero due di nuovo se tu
voglio dare il tuo suggerimento per
nome
hashtag style numero due va bene
Effettuerò lo zoom in avanti ma in realtà è così piccolo
quindi posso semplicemente espandere ciò che puoi vedere
l’intero programma ora sulla mia prossima diapositiva
va bene, ecco l’intero programma
e sto per farti attraversare
le linee perché ce ne sono solo cinque
linee fondamentalmente così il primo tutto
giusto il primo qui solo carichi
fino alla fine delle parole si apre la seconda
il file di input e carica le parole di
eliminando normalmente fa molto
di cose è che sta controllando per non
spesso sai per alfanumerico
personaggi sta controllando se
ci sono parole di arresto non sono e
eliminandoli in modo da farlo come a
almeno tre cose qui e questa
linea di codice e si finisce con un
un elenco delle parole che sei
interessato a contare ok
il prossimo è che li prendi
parole e poi sai che ce ne sono molte
parole ripetute quindi ora vogliamo trovare
le uniche parole che vogliamo
riduci e scopri l’unico
le parole quindi questa è un’altra cosa
stiamo facendo qui abbiamo un set del
parole e l’insieme in Python
elimina i duplicati ora c’è questo
linea qui questa linea è una specie di
divertente questa linea ordina le parole uniche
dal numero di occorrenze nella parola
l’ elenco delle parole originali va bene così sono
dandogli un comparatore
funzione una funzione lambda che è a
comparer
e se guarderai attentamente
Che cosa sta succedendo qui è l’operatore di confronto
effettivamente vivo confrontando il suo conteggio
ogni volta che hai bisogno del paragone
sta contando le parole della parola
elenca bene e poi li stampi
ora sono cinque righe di codice okay è
ottimo se provi a eseguire questo ci vuole
circa cinque minuti ok e il problema
è questa questa cosa qui che, fondamentalmente,
ogni volta che si desidera scoprire come
conosci la parola l’occorrenza del
parola Elisabetta torni al
elenco originale delle parole e conta
la parola Elisabetta così per tutto il
confronti che devi fare per
ordinando il conteggio va bene così questo richiede
per sempre è molto pessimo in termini di
le prestazioni sono molto buone perché lo sono
davvero molto breve per cui è molto brutto
per una performance di runtime, ma così c’è
un altro stile su di te, giusto è così
quali sono le caratteristiche di questo
stile bene in questo caso particolare tu
inoltre non fare astrazioni come non lo fai
ho chiamato astrazioni l’obiettivo qui è
doverlo fare in poche righe di codice
come possibile va bene e nel tuo dentro
Per ottenerlo, allora tu
rinunciare alle astrazioni perché
astrazioni alle linee di codice che hai
avere definizioni e cose e il
l’altra cosa che fai è provare
utilizzare il più possibile tutte le avanzate
librerie che puoi trovare
quello di roba per te in effetti se tu
c’era già una libreria in Python
anche lì il termine frequenza è ciò che
faremo e avrai una riga di codice
destra
così così così che si vede e si vede gente
scrittura di codice come questo diritto è molto
programma corto ma ognuna delle linee ha
un enorme carico semantico e non lo è
necessariamente facile da capire cosa c’è
andando avanti lì anche se c’è
solo cinque righe di codice alcune di quelle
le linee sono davvero complicate
capisco che stanno cercando di fare molto
le cose quindi lo chiamo codice golf I
non so se sai cosa si chiama obiettivi
sono chi qui sa quali sono le palle di codice
va bene, molte persone non lo sanno, quindi c’è un
tutta la cultura là fuori su internet
nel mondo dello sviluppo che ha questo
sfida chiamata codice golf che tu
prova a risolvere questi compiti computazionali
dice in queste poche righe di codice come
possibile collegarlo a Google Code Golf
vedrai che ce ne sono di tutti i tipi
la cultura là fuori che tu sai e
in una certa misura quella cultura
influenza molto di quello che sta succedendo
software in corso nel software
sviluppo che le persone hanno sulle spalle
delle loro menti questa idea che meno
le linee di codice sono migliori, giusto dipende
a volte non è meglio o in un altro modo
che potremmo chiamarlo trihard forse tu
guarda questo quando le persone vedono questo
persone che sono appena uscite da studenti non laureati
ed erano molto bravi e quelle persone
chi ha ottenuto come A e loro vantaggi e
sono davvero bravi e ti conoscono
sapere come usare tutto avanzato
librerie e tutte le funzionalità avanzate
della lingua e vengono da te
con questo piccolo programma che è
davvero minuscolo ma nessun altro lo capisce
nella squadra, quindi c’è stile
numero due se pensi che ci sia
altri nomi fammi sapere il numero di stile
tre okay, questo riguarda la pagina in
la metà del codice e ho intenzione di zoomare
qui dentro e dirti come sono questi codici
è progettato qui e ce ne sono alcuni
le variabili globali qui indicano la parola
frequenza le parole e le frequenze
e poi ci sono un sacco di procedure
fondamentalmente con il filtro file normalizzato
può rimuovere le parole di stop frequenze ordinate
okay e poi ecco la funzione principale
e la funzione principale consiste di appena
chiamando quelle procedure leggere il file
filtro in scansione analizzare rimuovere parole di arresto
le frequenze sono ordinate per farmi stampare
ok sono sicuro che tutti qui hanno
programmi scritti in questo stile sì sì
questo è uno stile molto molto ricorrente
facile così così tu quali sono i principali
caratteristiche di questo stile bene
ecco come devi qui è il
vincoli che è necessario applicare se
vuoi produrre programmi in questo
stile in cui dividi il tuo problema
le procedure vanno bene quali sono queste
le procedure procedurali sono astrazioni
che possano prendere l’input che non fanno
necessariamente restituire qualsiasi output e
certamente non c’è assolutamente
requisito che restituiscano l’ output
questo è rilevante per quello che sono
facendo potrebbero tornare potrebbero essere codici di errore
o qualcosa del genere giusto così sono
solo procedure sai poco
pacchetti di istruzioni ci sono di solito
alcuni stati condivisi che queste procedure
operare su e, fondamentalmente, la strada
che tu componga il problema più grande è
per decomposizione in questi più piccoli
procedure e quindi semplicemente chiamandole
procedure fondamentalmente dando queste
comanda quello giusto per uno in modo pensare
quello che chiameremmo questo stile sono
chiamandolo stile da libro di ricette proprio questo è
il tipo di espressioni che vedi
ricette di ricette di cucina mescolano le uova con il
il burro li lascia sul lato che conosci
mescolare il cioccolato con un fiore e poi
questo è esattamente ciò che è molto naturale
per le persone penso di pensarci
libri di cucina ok ecco un altro questo
uno che ho intenzione di ingrandire è circa il
non una pagina e mezzo – ed è davvero
davvero simile a quello che ho appena
presentato ci sono alcune differenze e
i dettagli in realtà fanno abbastanza a
effetto drammatico sul risultato finale ma
ecco di cosa si tratta, quindi dividi anche tu
problema in
pezzi più piccoli, ma ognuno di questi
i pezzi ora prendono input e restituiscono
output che è il tuo vincolo okay
di questi pezzi è una funzione di
ingressi alle uscite e ora quello che fai
ecco quindi qui sono le funzioni e in
infatti le funzioni la divisione che io
è esattamente la stessa di quella
Vi ho mostrato prima, ma il modo in cui si
componi il tuo problema qui è questo
linea qui la parola frequenze e
Mi dispiace aver dovuto rinominare le funzioni
ecco che non sarebbe stato adatto a uno
linea okay, ma fondamentalmente il modo in cui tu
produce il tuo grande problema è di
componendo queste funzioni più piccole
chiamandoli uno dopo l’altro così il
l’output di uno è l’ input al successivo
e così via ok ecco un altro stile
okay, penso a come chiamarlo
stile qui qui il vincolo quindi cosa
sono i vincoli
quindi cosa pensi veramente che ti costringa
vuoi produrre programmi in questo stile
devi decomporre il problema in
termini di funzioni e quando intendo
funzioni intendo davvero funzioni come te
l’ho imparato in algebra come te
imparato in matematica si sono
relazioni dagli input alle uscite okay
non sono procedure che sono
funzioni matematiche e in effetti se
Sono molto severo qui per far rispettare
i miei limiti aggiungono molto
relazioni dagli input agli output
non possono avere alcun effetto nel mondo
okay, non puoi avere effetti in là
stampare cose sullo schermo che influiscono
file system che non dovrebbero essere in questi
funziona bene
sono relazioni che sono la tua borsa
non c’è stato condiviso e cosa
il modo in cui componi o produci il
il problema più grande è fare matematica
composizione della funzione che conosci s dopo G
proprio come avevamo imparato in matematica
Va bene che è uno dei vincoli di stile e
devi scriverlo così da pensare
su quello che chiameresti questo stile I
chiamalo
la caramella giusta di stile della fabbrica della caramella
fabbriche hai queste piccole scatole
che fanno solo una cosa e producono te
sai fare un rivestimento sulle caramelle e prendere
le caramelle alla prossima scatola che fa
qualcos’altro e oh questa è la caramella
stile di fabbrica va bene il numero cinque
qui andiamo pagina e mezzo questo uno
potresti riconoscere qualcuno di voi
non riconoscere questo sta saltando fuori
si rende popolare di recente c’è a
un sacco di piccole funzioni funky la strada
che lo fai ci sono un sacco di
le funzioni qui leggono il file che sono
essenzialmente uguale a quelli che io
ti ha mostrato prima che gli occhi normali possano essere rimossi
ecc. ma ora c’è qualcosa di speciale
su queste funzioni che c’era
solo un ulteriore vincolo va bene e
il vincolo è che ognuno di
queste funzioni se si nota accetta un
parametro aggiuntivo è una funzione
discreto e il modo in cui si suppone che
utilizzare questa funzione è alla fine come
stavi per restituirti il valore
in realtà invia quel valore alla funzione
che hai ricevuto come input e questo è
quello che ritorni okay, potresti pensare a cosa
perché mai qualcuno dovrebbe fare questo mai aspettare?
Sai perché non basta restituire il
valore che stavi per tornare
se questo fosse il caso, lo faresti
finire con uno stile fabbrica di caramelle questo
è uno stile diverso è un ulteriore
vincolo questo è che si dispone di uno
costrizione
Inoltre questo è ciò che hai
funzione che ottieni come parametro e
quello che fai è proprio alla fine
che valore che verrà tornando ragazze
come input per la funzione che tu
okay e quindi sai che è il principale
codice, basta chiamare la prima funzione
leggi il file con gli argomenti e poi
tu gli dai la prossima funzione che
è il filtro chars va bene
stai incatenando le funzioni dandole
come argomenti per la funzione che sei
chiamarti probabilmente hai visto questo
giusto JavaScript lo fa sempre
è stato reso popolare ma questo
questo stile è in realtà uno, grazie a Dio
uno stile che in realtà è chiamato stile
ha uno stile ma non lo dirò
il nome tecnico perché altrimenti
alcune persone qui mi sparerebbero così
Non lo chiamerò così tanto
ecco che ecco i vincoli il
le funzioni prendono questo in più
il parametro F che viene chiamato alla fine
e dato che la funzione è anche cosa
sarebbe normalmente il valore di ritorno più
la prossima funzione in modo da incatenarti
funziona così bene così come pensi
su come lo chiamerai
stile lo chiamerò kick your
compagno di squadra qui fondamentalmente non sei solo
calciare la palla stai calciare la palla
e i tuoi compagni di squadra per prendere la palla
vero è quello che sta succedendo qui o
un altro modo se sei un po ‘di più
incline agli affari femminili come me
si chiama lo stile all’uncinetto che vai e
ottenere la funzione successiva da lì è questo
filo che vai sempre e ottieni il
prossima funzione da destra probabilmente
non so di cosa sto parlando
comunque è esattamente così
vieni questa immagine mi viene all’uncinetto
stile quando vedo quando vedo questo
alcuni di voi potrebbe sapere qual è il
termine tecnico appropriato per questo
è ma non lo userò
okay numero di serie sei bene così questo
è in realtà molto diverso da questo
circa due pagine di codice e fammi zoomare
dentro e cosa sta succedendo qui ora con
qualcosa di completamente diverso va bene così
ora sto pensando al problema come questi
classi di cose
va bene così c’è una cosa chiamata
il gestore di archiviazione dei dati proprio così
ovviamente dal nome si prende cura del
input bene, questa è l’unica cosa che
tratta l’ input sono questi dati
Storage Manager e poi ce n’è un altro
uno che è un word manager di stop e come
il nome dice che è la cosa che prende
cura delle parole di stop e ce n’è un’altra
uno che è chiamato la parola frequenza
manager che si prende cura di tutto
questo è legato al calcolo della parola
frequenze giuste, quindi queste sono queste
manager e controllori e cose in
qui e così il modo in cui si avvia il
programma qui sei tu ne crei uno di
questi il word controller di frequenza
sorta di cosa principale che avvia il
programma e tu chiami sai il
la procedura viene eseguita su di esso e tu lo lasci correre
sai che il codice funziona correttamente
cosa qui la giusta catena di reazioni
qui ora tutti riconoscono questo diritto
in realtà ho qualcos’altro qui solo
per illustrare un altro punto di questo
lo stile è tutto questo
in realtà riutilizzare i codici che sono stati
definito in questo altro tipo di cosa questo
Esercizi di TF qui completamente
irrilevante solo per illustrare il
meccanismo di questo stile che puoi
riutilizzare le procedure che sono state definite
in altre cose va bene così tutti conoscete il
termine tecnico di questo stile, sono io
non lo dirò quindi quali sono i principali
caratteristiche qui principali
caratteristiche ben definite
progetta il problema che pensi del
problema in termini di cose che ci sono
le cose dappertutto vanno bene e lo guardano
cosa sono queste cose sono capsule
le capsule di dati e procedure
destra i dati non sono mai accessibili
direttamente è accessibile solo attraverso
queste procedure va bene sono queste cose
che definiscono quali sono le procedure
esposto all’esterno
e inoltre queste capsule possono dire che lo faccio
la stessa cosa di quello
okay, quindi pensa a come chiamare questo
stile lo chiamo il regno del sostantivo
stile e questo è il riferimento per a
davvero divertente sta dicendo che ci sono i
internet guarda il regno dei nomi I
consiglio molto divertente quindi questo è quello che tu
finire i programmi che sono scritti in
questi vincoli finiscono con nomi
essendo cose molto importanti nella tua
programmi finisci con i manager
e controller e
conosci adattatori e ogni sorta di
cose perché sono così
si pensa che il problema è in termini
Di queste cose modelliamo il problema
in termini di cose e le cose espongono
procedure okay
quindi ecco un altro questo è un
variazione del regno dei nomi
ma con un ulteriore vincolo let
io ti mostro cos’è questo che sta succedendo
su qui oh no mi dispiace davvero
rimosso quello va bene così questo è
in realtà completamente diverso sono contento di esserlo
rimosso quello perché non lo faceva per a
parlarne non aggiungere molto valore di questo
in realtà completamente diverso ok
questo tu pensi al problema in
un modo completamente diverso, ecco qui
ecco cosa sta succedendo nella ecco la
masse principali qui. Cosa stai andando?
Pensa che è un momento che aspetto un grande
file giusto e potrebbe davvero essere davvero
grande quindi potrei potenzialmente fare cose dentro
Parallelo per accelerare a destra, intendo
dividi i dati nel file in cui mi trovo
pezzi e ora ho intenzione di dare ciascuno di
questi pezzi in un lavoratore che lo fa
esattamente la stessa cosa che lo sta facendo
in parallelo e poi alla fine quando
questi lavoratori smettono di fondermi
tutto okay e io produco la parola
frequenze e poi nel frattempo io
parallelizzato il mio compito quindi ce n’è un po ‘
guadagna qui tutto bene quindi ecco cosa c’è
andando avanti c’è una funzione che è
chiamato parole divise che prende esattamente
un pezzo di input e divide il
la parola sostanzialmente cerca di identificare il
le parole vanno bene e poi ottieni queste divisioni
che sei molto importante applicare un
funzione della mappa
chi qui ha applicato una mappa o equivalente
funziona i tuoi programmi
okay, quindi la mappa è una funzione
gli dai una funzione come input e a
lista di dati e puoi fare domanda
quella
funzione minuti ah sai in parallelo
a quella lista per ognuno di questi pezzi
che lo ottieni qui e poi
cosa fai con quei pezzi con quelli
il culo si divide per darlo a un altro
conteggio delle funzioni parole che sta per
ridurre tutte quelle cose che hai
va bene e poi lo stampi alla fine così
ecco le parole divise ed è un po ‘
complicato hai davvero bisogno di guardarlo
sopra e pensa un po ‘ se tutti
qualcuno ha fatto questo tipo di stile
tutti hanno fatto questo tipo di stile
si
ok questo stile è in realtà molto semplice
ma ci sono alcuni dettagli che rendono
è un po ‘diverso va bene è come
tu una persona che sta provando sempre a
ottimizzare le cose va in questa fase della mappa
e cosa oh mio dio potrei farlo così
molto meglio ma poi inizi a pensare
oh cosa sta succedendo sto facendo il
problema molto molto semplice così che sia
lontano il passo di riduzione che viene dopo
okay, ecco il passo ridotto qui
quindi quali sono i vincoli?
i vincoli è che dividi l’input
in pezzi e tu hai questi due
astrazioni si applica una funzione in
parallelo va bene e poi li prendi
risultati parziali e li riduci
in qualche modo in modo coerente
okay, come chiameresti questo stile?
Lo chiamo multiplexer inverso va bene se
prima multiplexing se non sarà
l’elettronica è un concetto che è stato
in giro per alcuni decenni ok
e non c’è nulla di nuovo come ho detto questi
concetti esistono in tutto il posto niente male
nell’elettronica tanto quanto nella programmazione
questo è stato intorno per un po ‘, infatti,
il concetto di MapReduce oops ho fatto solo io
dire che è stato in giro da da
la prima degli anni ’60 è stata la prima volta
introdotto in Lisp molto tempo fa ora
è stato reso popolare con un Hadoop in
infatti c’è una variazione di quello che ho appena
ti ho mostrato e non ho avuto tempo di
guarda attentamente l’ implementazione di
disfunzioni perché ne avresti tanti
di vendere tutto questo non è come io
fai lo fa e si sarebbe giusto così
c’è una variazione di cui hai bisogno
per introdurre un altro altro vincolo
che devi presentare se vuoi
per produrre lo stile Hadoop
ok, quindi stile numero otto
anche lo stile numero otto è molto
diverso è completamente diverso
modo di pensare al problema
diverso da tutto ciò che ho mostrato
prima tu così come pensi
su questo problema in questo stile è quello di
pensa bene quindi ho i dati giusti per
avere dati di input così che cosa sto andando a
fare è davvero intenzione di memorizzare miss
questi dati nei tavoli vanno bene
analizzare i dati e memorizzarli nelle tabelle
e poi quello che voglio veramente fare voglio
contare le parole sì, ma potrei volerlo
conta altre cose che potrei voler ottenere
più conoscenza di questi dati non solo
le frequenze del mondo vanno bene e io voglio
fallo in un modo che è molto facile per me
per dichiarare queste specifiche
e ottenere la conoscenza dei dati ok
quindi quello che sta succedendo qui è quello
prima sto creando uno schema di luce sequel
Sto creando così sto creando il
Lacrime dello schema Ti mostrerò cosa è cosa
lascia che ti mostri di cosa si tratta
fondamentalmente queste tre tabelle del
documenti tabella la parola stabile e il
carattere stabile perché potrei volerlo
contare i caratteri o fare qualcosa
con loro e quindi è così che sono
creando lo schema e quindi sto caricando
il file nel database va bene e quello
è ad un certo punto ecco cosa sono
inserendo i dati va bene qui
inserendo tutto ciò che popola il
database e infine una volta che lo è
in posizione quindi il mio programma è davvero
davvero semplice, dico solo in modo dichiarativo
bene selezionare questo dalle parole raggruppate per
qualcosa o lì da qualcos’altro
super facile a destra non ho bisogno di programmare
in quanto tale sono solo queste dichiarazioni e
poi li stampo
okay, questo è un altro modo di fare
frequenza temporale ora il modo di pensare
di pensare completamente al problema
diverso quindi quali sono i principali
caratteristiche bene il modo in cui tu
pensa al problema è che lì
sono questi si pensa al vengono immessi
dati come entità con relazioni tra
loro e ora il vincolo qui è che tu
devi avere un motore di query che devi
essere in grado di interrogare queste tabelle e
e lo fai usando questo dichiarativo
linguaggio di query molto bello che non lo fai
scrivi programmi come tali che dichiari
quello che vuoi e il motore di query fa
per te va bene
quindi pensa a come lo chiameresti
Lo chiamo tabular okay, quindi me ne sono andato
attraverso otto di questi come ho detto che sono un
Poco ossessivo-compulsivo quando
arriva a questi esercizi e c’è
un mio obiettivo qui è ottenere 33
e ho circa 23 al momento nel
github repo lì sto scrivendo un libro
su questo è un libro per il
il distillato è per la programmazione avanzata
studenti ma anche per professionisti che
per un motivo o per un altro non sono stati esposti
a molte di queste cose quando erano
in undergrad e loro vogliono essere gentili
di cristallizzare voglio dire che non c’è niente
nuovo come tale c’è solo cercando di fare
le persone consapevoli che ci sono molti modi per
pensa ai problemi e in effetti
alcuni di questi modi sono molto vecchi loro
sono stati inventati negli anni ’50 per
esempio, mi sembra di capire il mio repository Github
vedrai che il primo si chiama vecchio
volte che è lo stile della scrittura
programmi che sono stati utilizzati nel 1951
fondamentalmente e c’è ogni sorta di altro
stili c’è lo stile di riposo – ok –
sentito parlare di riposo yeah ok così ho
un test che ho un esempio in cui viene utilizzato
lo stile di riposo quindi c’è di tutto
diversi modi di pensare al
problema e credici o no
le cose si accumulano e non va
lontano
nessuno di questi modi di pensare tutto il
così sono anche per qualche ragione
quello il 19
51 okay gli stili che hai scritto
di programmi che hai scritto 1951 persone
lo stanno ancora scrivendo in questi giorni e loro
sono ancora buono per qualcosa quando tu
avere un vincolo che hai molto
piccola memoria più intendo piccola nel
percepire che è più piccolo dei dati
che devi elaborare ed è necessario
comprimere le cose e si vuole veramente
pensa alla tua memoria e a te
farla franca con molti altri ridondanti
cose in cui metti quelle cose ridondanti
come commenti o qualcosa di ok, nomi di
le variabili li mettono invece nei commenti
di farti sapere che c’è di tutto
cose così il modo di scrivere programmi
Il 1751 è ancora vivo oggi e la stessa cosa
va per oggetti e funzioni e
continuazioni e relazioni e il tuo nome
molte cose diverse sono tutte
le persone verranno solo con nuovi modi
di pensare al problema va bene questo
non finisce qui e, se hai pensato
che gli oggetti erano morti e nostri
la programmazione funzionale è il bello
la cosa è davvero non è non è come
le cose funzionano è solo accumulare e
hai tutti questi stili che sono
buono per alcune cose e non va bene per
altre cose e tocca a te sapere il
progetto e tu e il tuo particolare
situazione per decidere quale stile tu
dovrebbe pensare per quel particolare
caso che cosa stai cercando di
ottimizzare è molto importante, quindi è così
questo è tutto e io benvenuto
contributi a proposito e due giorni
dopo l’ ID ho messo il codice su github
c’erano già persone che contribuivano
come i casi di test e la fabbrica di caramelle
è stato il primo che le persone hanno fornito a
script di shell per farlo, quindi benvenuto
implementazioni in altre lingue che sono
facendo tutto in Python ma tu sai
puoi farlo anche in altre lingue
perché di nuovo gli stili sono indipendenti
delle lingue, quindi questo è tutto
ti ringrazio molto ne prenderò un po ‘
domande come si fa a distinguere
stile e brevetti buona domanda va bene così
stiamo andando alle guerre mondiali di nuovo così io
pensa che essenzialmente questo provi a
trasmettere lo stesso tipo di valore che è
per trasmettere esperienze che le persone hanno
accumulato nel corso degli anni ed è molto
difficile da codificare in queste esperienze
matematica o modi formali così davvero
buon modo di esprimerli in questo è
dando questi esempi proprio così il
il libro dei brevetti ha questi modi di pensare
sul problema che le persone hanno visto
nello sviluppo di software che facciano bene
situazioni specifiche bene, sono una cosa
quello che sto cercando di fare qui è un po ‘
un po ‘più basso di quello se posso dire
quindi, che è quello di catturare alcuni modi di
ingegnerizzare il programma da soli
okay non solo risolvendo problemi specifici
ma in ingegneria in come stai
progetta il tuo codice come pensi
il tuo codice fondamentalmente va bene così che è sorta
di esso è molto correlato direi
è solo diverso se tu se vuoi
per dire diversi modelli se vuoi
usare questa parola e che sono un po ‘
livello inferiore rispetto a quelli che sono in
il libro modelli vi ringrazio molto ho
pensa che il tempo sia scaduto e il resto del
commenti e domande puoi ottenerli
su Twitter va bene
e sono un professore all’Università di
California Irvine Sono anche uno sviluppatore
in un progetto open source sono stato
facendo ciò da quando ho ottenuto il mandato perché io
era così ansioso di tornare in realtà
scrivere un codice che dovevo trovare
qualcosa in realtà mi sporca le mani
e farlo sentire di nuovo per quello che è
per sviluppare effettivamente sistemi e io sono
parlerò della programmazione
stili oggi e questo discorso è molto
parlare per le persone a cui piace
programmare chi effettivamente pensa che sia
una cosa davvero bella da fare come un
attività intellettuale quindi programmazione
stile lasciami solo dirti perché vado
per parlare di questo e perché penso che sia
importante e non so voi ma
in questo grande progetto che io sono un
sviluppatore ci sono molte altre persone
codice di commit ad esso e a volte quello
in realtà quando vedo un pezzo di codice I
può dire chi era la gente che lo ha scritto
a destra appena appena può dire
ci sono alcuni elementi lì dentro che tu
inizia appena inizi a sapere più di
i tuoi colleghi di lavoro che inizi a rilevare
questi modelli di codice di scrittura che sono
molto familiare a molto specifico per
questa persona o un altro e quando vai
quando entri ed effettivamente patch
qualche bug è importante, penso che tu
dato il sentimento immediato di ciò che era
lo stile che si applicava lì e
o due cose possono accadere o te
in realtà non mi piace davvero lo stile
e faresti meglio a essere pronto per il refactoring
davvero intensamente o semplicemente lo sai
metti da parte i tuoi gusti e antipatie e
prova solo ad abbinare lo stile che era
lì in primo luogo e correggere il bug
altrimenti se inizi a mixare il tuo
stile con lo stile della persona che
ha scritto il codice sarà un grande
pasticcio ora in grande stile se ti senti in un lavoro
società così a volte anche le aziende hanno
regole
per come produrre il codice degli stili
che si applica ed è tutto buono e
open-source è un po ‘più che in
alcuni progetti un po ‘più flessibili
di persone in grado di esprimere
loro stessi nel modo in cui pensano
è meglio riflettere quello che sono
pensando quindi cos’è questa idea di stile
bene
gli stili di programmazione in generale sono cose
esiste ovunque
questo non è nuovo per la programmazione giusta –
abbiamo avuto la nozione di stile per sempre dentro
le arti in particolare così ho potuto parlare
sulle arti letterarie, ma questo è
dipingendo sulle belle arti e vedi
questi diversi stili sono cosa cosa
sono questi stili bene abbiamo modernismo
Realismo impressionista e cosa questi
le cose sono davvero quando vai all’arte
scuola e conoscere questi diversi
modi di esprimerti attraverso a
dipingendolo davvero solo
vincoli su come esprimere il tuo
idee quindi se vuoi produrre il
dipingere in stile impressionista
bene è meglio evitare linee molto nitide
per esempio le forme stanno emergendo da
un mucchio di piccoli punti che si applicano
ecc se vuoi esprimerti
modernismo quindi farai meglio a sapere il vero
L’idea inglese che stai per
dipingi la realtà che non immagini
la realtà dipinge un’astrazione di
realtà quelli sono vincoli e quelli
i vincoli possono essere appresi ci sono
le tecniche ci sono modi di pensare
e puoi imparare che la gente fa molto
buon lavoro di insegnamento nell’arte
scuola come produrre opere in specifico
stili non facciamo un ottimo lavoro in
l’informatica nel farlo così tu
sai se vai a scuola d’arte e se tu
davvero non voglio ottenere molto
sofisticato te e quello con come un
la storia dell’arte lo ha semplificato tutto
modi diversi di disegnare i volti a destra
e gli stili nelle belle arti sono molto
spesso associato con specifico
gli artisti ti sorprendono per lo stile dali
lo stile di Picasso e quelli sono tutti
cose che puoi effettivamente provare
imitare se vuoi così quali sono
stili di programmazione in programmazione
gli stili di programmazione sono solo le regole in
i vincoli che tu
vuoi candidarti quando esprimi cosa
vuoi farlo in modo che resistano al salto
su di me basta così sono modi di
esprimendo compiti l’altro interessante
la cosa sulla programmazione di Styles è questo
esistono in molte scale così esistono
alla piccola scala della scrittura del programma
giusto e esistono anche nei sistemi
livello quando si progettano interi sistemi
componenti composti hai anche stili
modi di pensare a come decomporsi
il problema e come confrontare come
i componenti interagiscono e ciò che trovo
interessante è che alcuni di quelli
modelli e di quegli stili che tu
applicare a livello micro molti di essi
in realtà si applicano anche al sistema
level design va bene e quindi non è da vicino
incidente che un sacco di persone che sono
molto bravo nei linguaggi di programmazione
e persone che scrivono compilatori e
anche il linguaggio di programmazione del design
spesso finiscono per essere molto bravi a scrivere
sistemi perché hanno appena quello
modello concettuale su come il piccolo
i pezzi interagiscono insieme e hanno un ordinamento
di una certa flessibilità nel pensare
quindi questi questi modelli questi stili
esistono in molti livelli e ovviamente noi
tutti sanno che sono in un modo congelato
nei linguaggi di programmazione determinati
i linguaggi di programmazione sono esecutori di
stili giusto alcune persone pensavano bene io
pensa che il modo giusto per esprimere
te stesso è pensare agli oggetti bene
quindi ora fammi disegnare un linguaggio che è
costringendoti a pensare agli oggetti o a me
pensa che il modo migliore per esprimere
te stesso è in termini di funzioni così ora
lascia che disegni una lingua che pensano
ti costringe a pensare in termini di funzione
quindi i linguaggi di programmazione ne congelano alcuni
questi stili di programmazione vanno bene per a
motivo o un altro così che cosa perché sono questi
importante bene ognuno è importante da
da solo, ma penso che c’è di più
importante qui è che il
la consapevolezza che ce ne sono molti
stili di programmazione non solo uno va bene e
questa è una cosa che siamo io sono un
professore quindi insegno agli studenti che vogliono
che non facciamo molto bene noi
insegnare alle persone uno o due stili al massimo
quando escono dall’università e e
la gente ha un’idea sbagliata
che è così che dovrebbero pensare
sul software in effetti non è vero
ci sono molti modi diversi di
pensando al software ma ci sono loro
servono anche come vocabolari comuni per
parlare all’interno delle squadre giuste
sono fotogrammi di riferimento su cui
in realtà scrivi il codice e noi tutti
sappi che alcuni stili sono migliori di
altri tutti abbiamo questa idea ma ma è così
dipende proprio dipende da un sacco di
le cose dipende da cosa stai provando
per ottimizzare e molte volte non lo sono
cercando di ottimizzare le stesse cose in
diverse circostanze quindi è davvero
importante quando hai quelle guerre in mezzo
in gruppo su quale sia il modo giusto di
fare cose è davvero importante
capisci cosa stai provando?
per ottimizzare forse stai cercando di
ottimizzare sapete il numero di linee di
codice o forse stai cercando di ottimizzare te
conoscere l’ abilità per le altre persone
capire il codice di altre persone o forse
si sta cercando di ottimizzare si conosce il
velocità se c’è un sacco di cose
potresti voler provare a ottimizzare
a seconda di cosa vuoi fare tu
raccogliere il sale di programmazione giusto che
può aiutarti a raggiungere questo obiettivo o o o
può impedirti di raggiungere quell’obiettivo così
non ce n’è uno solo non ce n’è uno
è sempre meglio dipende tutto bene
quindi sai di essere un’università e un essere
un professore di informatica, mmm
Mi capita spesso di sapere che io in realtà
ha insegnato il corso di lingue di programmazione
introduttivo e ho appena scosso la testa
come sai che non stanno imparando cosa
dovrebbero imparare, voglio dire che insegniamo
loro programmano il linguaggio che è così
molto più oggi sono i software di cucito di
allora questo davvero c’è tutto questo
diversi modi di pensare al
problema ed è questo modo di pensare
riguardo al problema che credo davvero
è davvero importante insegnare così ora noi
lo sanno e infatti abbiamo la stessa
problema quando non lo è un altro corso
solo linguaggi di programmazione ma anche noi
insegnare corsi sull’architettura del software
per esempio non è il fatto che il software
l’architettura è lo stesso problema come
come insegni l’architettura del software
e il problema c’è anche
peggio perché solo l’architettura del software
ha senso quando hai effettivamente un
grande sistema pieno si sa diverso
componenti che interagiscono tra loro
quindi gli studenti
sono molte volte in cui sono preparato per davvero
assimilare quegli insegnamenti perché questo
c’è ancora troppa complessità in
il tempo che possono gestire così è
importante essere in grado di insegnare questa cosa
quindi per farmi avvolgere il mio
dirigiti per insegnarlo, se già lo fai
ne conosco un po ‘l’anno scorso, quindi mi sono imbattuto in questo
autore autore francese e ancora se tu
voglio trovare interessanti idee pazze
è sempre bene dare un’occhiata al
Intellettuali francesi del 20 ° secolo
perché sono davvero interessanti
comunque così questo ragazzo Ramone Kino e lui
è stato parte ha iniziato questo club un workshop
di letteratura potenziale se posso
lo traduco in inglese, tutto quello che Aleppo è
fondamentalmente un club di intellettuali francesi
scrittori e matematici e loro
tutta la moto era un limite, così sono
tutta l’idea era che tu avresti dato loro un
vincolo e avrebbero prodotto il
lavoro basato su quel vincolo e tu
conosci un pezzo d’arte del tuo testo letterario
nominalo e quindi questi erano vincoli
conosci anche qualche tipo di vincoli
i vincoli su di te conoscono la matematica
vincoli o vincoli astratti
non può usare quella parola o cose del genere
Va bene così c’è un libri che facciamo su
il lato è un libro che raccomando da
una persona che faceva parte di questo club I
dimentica il nome perché non posso
ricorda i nomi ma lei ha scritto questo libro
li ha chiamati in inglese, evita chiunque
qui ed evitare no sì paio di persone
comunque, quindi, cosa c’è di interessante in questo
libro è che è il libro è davvero
interessante è una storia interessante
e non è piccolo in realtà è abbastanza
libro di medie dimensioni è molto coinvolgente
è um quello che era ma oltre al
raccontare ciò che è interessante del libro
è che l’intero libro è scritto
senza le tue correnti della lettera e
ora prova a scrivere qualcosa senza il
lettera e destra che ti dà
immediatamente qualcosa che conosci molto
stile strano proprio lì, perché alcuni
parole che pensi potrebbero essere le
parole naturali da fluire che non puoi usare
loro perché hanno una lettera e così tu
iniziare a usare
parole oscure perché si deve a
applica questo vincolo comunque così è
un libro interessante cerca ma
oltre a questo, una volta ok, conosci se stesso
ha scritto un libro interessante chiamato
esercizi in stile che consiste nel
la seguente cosa ha preso un po ‘
storia che è una storia completamente stupida
sapere che può essere insegnato può essere raccontato in 30
secondi e ha scritto questo libro con 99
diversi modi di raccontare questa storia
ok solo ossessivo-compulsivo tutto il
modo attraverso giusto solo in un modo
in un altro modo va fino in fondo così così
sai, ecco alcuni di questi
stili metafore sorprese sogno
precisione esitazione prognosticazione
un sacco di stili diversi ed è quello
nomi da parte del modo in cui io non sono nemmeno sicuro che
diede loro nomi Penso che la
il traduttore ha dato questi nomi di stili
per tipo di così l’associazione tra
il nome e la resa reale è
relativamente confuso e parlerò di più
per quanto riguarda i nomi in un secondo comunque così quando io
trova questo libro è wow va tutto bene
come facciamo se volessi imparare come
scrivi parole letterarie che voglio davvero
leggi questo libro perché mi insegnerà
alcuni mi renderanno conto di come
diversi vincoli che posso applicare
per aiutare in realtà mi Scrivi Scrivi
i vincoli sono buoni ci aiutano a creare
quando non abbiamo vincoli è
davvero difficile creare cose così così io
pensato che sto per rubare
questa è l’ idea migliore di sempre
okay, ho intenzione di prendere il programma
andando a scriverlo in ossessivo ossessivo
modalità compulsiva come molti modi che posso
possibilmente scrivere il programma in modo che sia
quello che sto facendo quindi sono qui è il
storia della mia frequenza del mio programma
tutti qui possono fare frequenza di termine
okay prendi un file conta le parole tu
sapere normalizzarli in minuscolo
eliminare non alfanumerico rimuovere il
ferma le parole se non sai cosa fermarsi
le parole sono quelle parole che esistono in
lingue che sono così frequenti che loro
non hanno alcun segnale quindi cose come la
in inglese quindi rimuovi le parole di stop e
poi contare le parole e presentarli
diminuendo l’ordine di frequenza che sono
solo dicendo le 25 parole più frequenti
okay, questo è il mio programma che tutti possono
scrivi questo ogni studente in
l’anno junior può scrivere così se tu
prendilo per esempio pregiudizio privato mio
libri preferiti si otterrebbe una lista
qualcosa del genere va bene ecco il
input Rende l’output laggiù
programma quindi quanti modi ci sono
annotare la frequenza pensa un po ‘
quale sarebbe il tuo primo approccio a
scrivi da per 10 frequenze ok lì
molti modi se ti dessi sapere tutto
di questo esercizio sono abbastanza sicuro di me
vedrebbe almeno 50 modi diversi di
scrivendolo così prima di andare avanti così
è quello che ho fatto, lo so ora
avere una collezione di loro in github voi
possibile si possono guardare in alto il gioco è fatto
e il mio obiettivo è raggiungere 33 e poi I
fermati e scrivo il libro per spiegare
cosa succede ma 33 non lo sai
può andare può andare molto più in alto di 33
um lasciami andare qui per il resto del
parlare e mi limiterò a passare attraverso alcuni dei
questi stili okay no I ho bisogno di
il tuo aiuto va bene, ecco cosa è successo
circa un mese fa sono venuto qui per
ufficio per un incontro di un piccolo club come
gli esperti di guanti di Aleppo nella programmazione
lingue e io li presento
alcune di queste idee e gli stili e io
ha fatto qualcosa di veramente stupido, okay
e mi hanno ucciso per questo ecco cosa
ho deciso di dare nomi tecnici a
questi stili vanno bene e non appena io
iniziato stavo usando nomi tecnici come
stile funzionale o sai imperativo
lo stile mi hanno appena ucciso perché loro
sei entrato in una guerra di nomi, giusto?
non sai che questo non è funzionale
stai dimenticando ba ba ba oh no no questo
non è imperativo tu lo sai sì oh mio
Dio va bene così io per completamente
evitare del tutto il problema
Ho fatto un passo indietro e ho detto okay
not gonna nome queste cose ti senti bene
sai cosa non mi interessa del nome
ciò che conta qui sono i vincoli
okay devi scrivere per il termine
frequenza utilizzando questi set di vincoli
ora, qualsiasi cosa tu chiami, dipende da te
in effetti è qui che ho bisogno del tuo aiuto
aiutami a nominare queste cose okay, vado
per presentarti i vincoli e te
aiutami a nominare le cose e il modo in cui
tu se vuoi partecipare twittami
hashtag che è il mio nome tweet hashtag
stile quale stile uno e dimmi cosa
quale dovrebbe essere il nome di quello stile?
ok ora dovrei avvertirti che il nome
i numeri qui non corrispondono al
I numeri che ho in github sono giusto
avere uno due tre quattro cinque qui sul
in alto ma non ho gli stessi nomi che ho
sul repo github Va bene così qui andiamo
lo stile numero uno non prova a leggere questo
solo per dirti che questa è una pagina di codice
ok ora ho intenzione di ingrandire ma anche
prima di ingrandire, puoi già vedere
qui c’è molta dose indiana
andando a destra quindi c’è un sacco di
scope nidificati così ho intenzione di ingrandire
diverse parti di questo programma di esempio
in modo da avere un’idea di come questo
il programma è effettivamente scritto bene così
inizia avendo una variabile globale così
le frequenze delle parole questo si manterrà
sulla parola la parola frequenze sopra
qui e poi ho appena aperto la fermata
le parole e io le carico tutte così
che devo fermare le parole già pronte
andare quando ho bisogno di confrontarli okay
e quindi fondamentalmente quello che sto facendo qui
sono due cicli annidati uno che itera
sopra le righe del file e
uno che itera sopra il personaggio
in ogni riga e puoi vedere la storia
giusto così abbiamo iterato su una linea tu
itera sul personaggio che cerchi di rilevare
l’inizio di una parola la fine del
parola
prova a normalizzare mentre vai tu
rileva la parola vedi se è una parola di stop
si ignora bene in modo che tutto il
logica che sta andando là e quella dentro
quegli ambiti lessicali nidificati laggiù
giusto così questo è un modo per farlo
quali sono le caratteristiche di questo
stile quali sono i vincoli se tu
voglio scrivere una programmazione di questo stile
quali sono questi limiti lasciami dire
tu quello che sono
nessuna astrazione va bene non si definisce
procedure o funzioni o oggetti o
qualsiasi cosa tu abbia appena iniziato nella prima riga e
finire in linea n un’altra cosa che tu
anche non fare è usare le librerie così
fondamentalmente non scegliere le librerie farlo
tutto bene, quindi ho bisogno di aver bisogno di un
nome per questo stile così sto andando a
ti do il mio nome mio in realtà penso
hai molti nomi per questo monolite
potrebbe essere chiamato nulla che potrebbero essere
discarica del cervello è una specie di stile
finisci quando sei veramente in un
affrettati a fare qualcosa e loro no
voglio anche solo pensare a come lo sai
di che tipo di astrazioni si tratta
funzioni di libreria che puoi usare solo da bere
così che questo è uno stile va bene così lascia
lasciami passare allo stile numero due
okay, allora lo stile numero due di nuovo se tu
voglio dare il tuo suggerimento per
nome
hashtag style numero due va bene
Effettuerò lo zoom in avanti ma in realtà è così piccolo
quindi posso semplicemente espandere ciò che puoi vedere
l’intero programma ora sulla mia prossima diapositiva
va bene, ecco l’intero programma
e sto per farti attraversare
le linee perché ce ne sono solo cinque
linee fondamentalmente così il primo tutto
giusto il primo qui solo carichi
fino alla fine delle parole si apre la seconda
il file di input e carica le parole di
eliminando normalmente fa molto
di cose è che sta controllando per non
spesso sai per alfanumerico
personaggi sta controllando se
ci sono parole di arresto non sono e
eliminandoli in modo da farlo come a
almeno tre cose qui e questa
linea di codice e si finisce con un
un elenco delle parole che sei
interessato a contare ok
il prossimo è che li prendi
parole e poi sai che ce ne sono molte
parole ripetute quindi ora vogliamo trovare
le uniche parole che vogliamo
riduci e scopri l’unico
le parole quindi questa è un’altra cosa
stiamo facendo qui abbiamo un set del
parole e l’insieme in Python
elimina i duplicati ora c’è questo
linea qui questa linea è una specie di
divertente questa linea ordina le parole uniche
dal numero di occorrenze nella parola
l’ elenco delle parole originali va bene così sono
dandogli un comparatore
funzione una funzione lambda che è a
comparer
e se guarderai attentamente
Che cosa sta succedendo qui è l’operatore di confronto
effettivamente vivo confrontando il suo conteggio
ogni volta che hai bisogno del paragone
sta contando le parole della parola
elenca bene e poi li stampi
ora sono cinque righe di codice okay è
ottimo se provi a eseguire questo ci vuole
circa cinque minuti ok e il problema
è questa questa cosa qui che, fondamentalmente,
ogni volta che si desidera scoprire come
conosci la parola l’occorrenza del
parola Elisabetta torni al
elenco originale delle parole e conta
la parola Elisabetta così per tutto il
confronti che devi fare per
ordinando il conteggio va bene così questo richiede
per sempre è molto pessimo in termini di
le prestazioni sono molto buone perché lo sono
davvero molto breve per cui è molto brutto
per una performance di runtime, ma così c’è
un altro stile su di te, giusto è così
quali sono le caratteristiche di questo
stile bene in questo caso particolare tu
inoltre non fare astrazioni come non lo fai
ho chiamato astrazioni l’obiettivo qui è
doverlo fare in poche righe di codice
come possibile va bene e nel tuo dentro
Per ottenerlo, allora tu
rinunciare alle astrazioni perché
astrazioni alle linee di codice che hai
avere definizioni e cose e il
l’altra cosa che fai è provare
utilizzare il più possibile tutte le avanzate
librerie che puoi trovare
quello di roba per te in effetti se tu
c’era già una libreria in Python
anche lì il termine frequenza è ciò che
faremo e avrai una riga di codice
destra
così così così che si vede e si vede gente
scrittura di codice come questo diritto è molto
programma corto ma ognuna delle linee ha
un enorme carico semantico e non lo è
necessariamente facile da capire cosa c’è
andando avanti lì anche se c’è
solo cinque righe di codice alcune di quelle
le linee sono davvero complicate
capisco che stanno cercando di fare molto
le cose quindi lo chiamo codice golf I
non so se sai cosa si chiama obiettivi
sono chi qui sa quali sono le palle di codice
va bene, molte persone non lo sanno, quindi c’è un
tutta la cultura là fuori su internet
nel mondo dello sviluppo che ha questo
sfida chiamata codice golf che tu
prova a risolvere questi compiti computazionali
dice in queste poche righe di codice come
possibile collegarlo a Google Code Golf
vedrai che ce ne sono di tutti i tipi
la cultura là fuori che tu sai e
in una certa misura quella cultura
influenza molto di quello che sta succedendo
software in corso nel software
sviluppo che le persone hanno sulle spalle
delle loro menti questa idea che meno
le linee di codice sono migliori, giusto dipende
a volte non è meglio o in un altro modo
che potremmo chiamarlo trihard forse tu
guarda questo quando le persone vedono questo
persone che sono appena uscite da studenti non laureati
ed erano molto bravi e quelle persone
chi ha ottenuto come A e loro vantaggi e
sono davvero bravi e ti conoscono
sapere come usare tutto avanzato
librerie e tutte le funzionalità avanzate
della lingua e vengono da te
con questo piccolo programma che è
davvero minuscolo ma nessun altro lo capisce
nella squadra, quindi c’è stile
numero due se pensi che ci sia
altri nomi fammi sapere il numero di stile
tre okay, questo riguarda la pagina in
la metà del codice e ho intenzione di zoomare
qui dentro e dirti come sono questi codici
è progettato qui e ce ne sono alcuni
le variabili globali qui indicano la parola
frequenza le parole e le frequenze
e poi ci sono un sacco di procedure
fondamentalmente con il filtro file normalizzato
può rimuovere le parole di stop frequenze ordinate
okay e poi ecco la funzione principale
e la funzione principale consiste di appena
chiamando quelle procedure leggere il file
filtro in scansione analizzare rimuovere parole di arresto
le frequenze sono ordinate per farmi stampare
ok sono sicuro che tutti qui hanno
programmi scritti in questo stile sì sì
questo è uno stile molto molto ricorrente
facile così così tu quali sono i principali
caratteristiche di questo stile bene
ecco come devi qui è il
vincoli che è necessario applicare se
vuoi produrre programmi in questo
stile in cui dividi il tuo problema
le procedure vanno bene quali sono queste
le procedure procedurali sono astrazioni
che possano prendere l’input che non fanno
necessariamente restituire qualsiasi output e
certamente non c’è assolutamente
requisito che restituiscano l’ output
questo è rilevante per quello che sono
facendo potrebbero tornare potrebbero essere codici di errore
o qualcosa del genere giusto così sono
solo procedure sai poco
pacchetti di istruzioni ci sono di solito
alcuni stati condivisi che queste procedure
operare su e, fondamentalmente, la strada
che tu componga il problema più grande è
per decomposizione in questi più piccoli
procedure e quindi semplicemente chiamandole
procedure fondamentalmente dando queste
comanda quello giusto per uno in modo pensare
quello che chiameremmo questo stile sono
chiamandolo stile da libro di ricette proprio questo è
il tipo di espressioni che vedi
ricette di ricette di cucina mescolano le uova con il
il burro li lascia sul lato che conosci
mescolare il cioccolato con un fiore e poi
questo è esattamente ciò che è molto naturale
per le persone penso di pensarci
libri di cucina ok ecco un altro questo
uno che ho intenzione di ingrandire è circa il
non una pagina e mezzo – ed è davvero
davvero simile a quello che ho appena
presentato ci sono alcune differenze e
i dettagli in realtà fanno abbastanza a
effetto drammatico sul risultato finale ma
ecco di cosa si tratta, quindi dividi anche tu
problema in
pezzi più piccoli, ma ognuno di questi
i pezzi ora prendono input e restituiscono
output che è il tuo vincolo okay
di questi pezzi è una funzione di
ingressi alle uscite e ora quello che fai
ecco quindi qui sono le funzioni e in
infatti le funzioni la divisione che io
è esattamente la stessa di quella
Vi ho mostrato prima, ma il modo in cui si
componi il tuo problema qui è questo
linea qui la parola frequenze e
Mi dispiace aver dovuto rinominare le funzioni
ecco che non sarebbe stato adatto a uno
linea okay, ma fondamentalmente il modo in cui tu
produce il tuo grande problema è di
componendo queste funzioni più piccole
chiamandoli uno dopo l’altro così il
l’output di uno è l’ input al successivo
e così via ok ecco un altro stile
okay, penso a come chiamarlo
stile qui qui il vincolo quindi cosa
sono i vincoli
quindi cosa pensi veramente che ti costringa
vuoi produrre programmi in questo stile
devi decomporre il problema in
termini di funzioni e quando intendo
funzioni intendo davvero funzioni come te
l’ho imparato in algebra come te
imparato in matematica si sono
relazioni dagli input alle uscite okay
non sono procedure che sono
funzioni matematiche e in effetti se
Sono molto severo qui per far rispettare
i miei limiti aggiungono molto
relazioni dagli input agli output
non possono avere alcun effetto nel mondo
okay, non puoi avere effetti in là
stampare cose sullo schermo che influiscono
file system che non dovrebbero essere in questi
funziona bene
sono relazioni che sono la tua borsa
non c’è stato condiviso e cosa
il modo in cui componi o produci il
il problema più grande è fare matematica
composizione della funzione che conosci s dopo G
proprio come avevamo imparato in matematica
Va bene che è uno dei vincoli di stile e
devi scriverlo così da pensare
su quello che chiameresti questo stile I
chiamalo
la caramella giusta di stile della fabbrica della caramella
fabbriche hai queste piccole scatole
che fanno solo una cosa e producono te
sai fare un rivestimento sulle caramelle e prendere
le caramelle alla prossima scatola che fa
qualcos’altro e oh questa è la caramella
stile di fabbrica va bene il numero cinque
qui andiamo pagina e mezzo questo uno
potresti riconoscere qualcuno di voi
non riconoscere questo sta saltando fuori
si rende popolare di recente c’è a
un sacco di piccole funzioni funky la strada
che lo fai ci sono un sacco di
le funzioni qui leggono il file che sono
essenzialmente uguale a quelli che io
ti ha mostrato prima che gli occhi normali possano essere rimossi
ecc. ma ora c’è qualcosa di speciale
su queste funzioni che c’era
solo un ulteriore vincolo va bene e
il vincolo è che ognuno di
queste funzioni se si nota accetta un
parametro aggiuntivo è una funzione
discreto e il modo in cui si suppone che
utilizzare questa funzione è alla fine come
stavi per restituirti il valore
in realtà invia quel valore alla funzione
che hai ricevuto come input e questo è
quello che ritorni okay, potresti pensare a cosa
perché mai qualcuno dovrebbe fare questo mai aspettare?
Sai perché non basta restituire il
valore che stavi per tornare
se questo fosse il caso, lo faresti
finire con uno stile fabbrica di caramelle questo
è uno stile diverso è un ulteriore
vincolo questo è che si dispone di uno
costrizione
Inoltre questo è ciò che hai
funzione che ottieni come parametro e
quello che fai è proprio alla fine
che valore che verrà tornando ragazze
come input per la funzione che tu
okay e quindi sai che è il principale
codice, basta chiamare la prima funzione
leggi il file con gli argomenti e poi
tu gli dai la prossima funzione che
è il filtro chars va bene
stai incatenando le funzioni dandole
come argomenti per la funzione che sei
chiamarti probabilmente hai visto questo
giusto JavaScript lo fa sempre
è stato reso popolare ma questo
questo stile è in realtà uno, grazie a Dio
uno stile che in realtà è chiamato stile
ha uno stile ma non lo dirò
il nome tecnico perché altrimenti
alcune persone qui mi sparerebbero così
Non lo chiamerò così tanto
ecco che ecco i vincoli il
le funzioni prendono questo in più
il parametro F che viene chiamato alla fine
e dato che la funzione è anche cosa
sarebbe normalmente il valore di ritorno più
la prossima funzione in modo da incatenarti
funziona così bene così come pensi
su come lo chiamerai
stile lo chiamerò kick your
compagno di squadra qui fondamentalmente non sei solo
calciare la palla stai calciare la palla
e i tuoi compagni di squadra per prendere la palla
vero è quello che sta succedendo qui o
un altro modo se sei un po ‘di più
incline agli affari femminili come me
si chiama lo stile all’uncinetto che vai e
ottenere la funzione successiva da lì è questo
filo che vai sempre e ottieni il
prossima funzione da destra probabilmente
non so di cosa sto parlando
comunque è esattamente così
vieni questa immagine mi viene all’uncinetto
stile quando vedo quando vedo questo
alcuni di voi potrebbe sapere qual è il
termine tecnico appropriato per questo
è ma non lo userò
okay numero di serie sei bene così questo
è in realtà molto diverso da questo
circa due pagine di codice e fammi zoomare
dentro e cosa sta succedendo qui ora con
qualcosa di completamente diverso va bene così
ora sto pensando al problema come questi
classi di cose
va bene così c’è una cosa chiamata
il gestore di archiviazione dei dati proprio così
ovviamente dal nome si prende cura del
input bene, questa è l’unica cosa che
tratta l’ input sono questi dati
Storage Manager e poi ce n’è un altro
uno che è un word manager di stop e come
il nome dice che è la cosa che prende
cura delle parole di stop e ce n’è un’altra
uno che è chiamato la parola frequenza
manager che si prende cura di tutto
questo è legato al calcolo della parola
frequenze giuste, quindi queste sono queste
manager e controllori e cose in
qui e così il modo in cui si avvia il
programma qui sei tu ne crei uno di
questi il word controller di frequenza
sorta di cosa principale che avvia il
programma e tu chiami sai il
la procedura viene eseguita su di esso e tu lo lasci correre
sai che il codice funziona correttamente
cosa qui la giusta catena di reazioni
qui ora tutti riconoscono questo diritto
in realtà ho qualcos’altro qui solo
per illustrare un altro punto di questo
lo stile è tutto questo
in realtà riutilizzare i codici che sono stati
definito in questo altro tipo di cosa questo
Esercizi di TF qui completamente
irrilevante solo per illustrare il
meccanismo di questo stile che puoi
riutilizzare le procedure che sono state definite
in altre cose va bene così tutti conoscete il
termine tecnico di questo stile, sono io
non lo dirò quindi quali sono i principali
caratteristiche qui principali
caratteristiche ben definite
progetta il problema che pensi del
problema in termini di cose che ci sono
le cose dappertutto vanno bene e lo guardano
cosa sono queste cose sono capsule
le capsule di dati e procedure
destra i dati non sono mai accessibili
direttamente è accessibile solo attraverso
queste procedure va bene sono queste cose
che definiscono quali sono le procedure
esposto all’esterno
e inoltre queste capsule possono dire che lo faccio
la stessa cosa di quello
okay, quindi pensa a come chiamare questo
stile lo chiamo il regno del sostantivo
stile e questo è il riferimento per a
davvero divertente sta dicendo che ci sono i
internet guarda il regno dei nomi I
consiglio molto divertente quindi questo è quello che tu
finire i programmi che sono scritti in
questi vincoli finiscono con nomi
essendo cose molto importanti nella tua
programmi finisci con i manager
e controller e
conosci adattatori e ogni sorta di
cose perché sono così
si pensa che il problema è in termini
Di queste cose modelliamo il problema
in termini di cose e le cose espongono
procedure okay
quindi ecco un altro questo è un
variazione del regno dei nomi
ma con un ulteriore vincolo let
io ti mostro cos’è questo che sta succedendo
su qui oh no mi dispiace davvero
rimosso quello va bene così questo è
in realtà completamente diverso sono contento di esserlo
rimosso quello perché non lo faceva per a
parlarne non aggiungere molto valore di questo
in realtà completamente diverso ok
questo tu pensi al problema in
un modo completamente diverso, ecco qui
ecco cosa sta succedendo nella ecco la
masse principali qui. Cosa stai andando?
Pensa che è un momento che aspetto un grande
file giusto e potrebbe davvero essere davvero
grande quindi potrei potenzialmente fare cose dentro
Parallelo per accelerare a destra, intendo
dividi i dati nel file in cui mi trovo
pezzi e ora ho intenzione di dare ciascuno di
questi pezzi in un lavoratore che lo fa
esattamente la stessa cosa che lo sta facendo
in parallelo e poi alla fine quando
questi lavoratori smettono di fondermi
tutto okay e io produco la parola
frequenze e poi nel frattempo io
parallelizzato il mio compito quindi ce n’è un po ‘
guadagna qui tutto bene quindi ecco cosa c’è
andando avanti c’è una funzione che è
chiamato parole divise che prende esattamente
un pezzo di input e divide il
la parola sostanzialmente cerca di identificare il
le parole vanno bene e poi ottieni queste divisioni
che sei molto importante applicare un
funzione della mappa
chi qui ha applicato una mappa o equivalente
funziona i tuoi programmi
okay, quindi la mappa è una funzione
gli dai una funzione come input e a
lista di dati e puoi fare domanda
quella
funzione minuti ah sai in parallelo
a quella lista per ognuno di questi pezzi
che lo ottieni qui e poi
cosa fai con quei pezzi con quelli
il culo si divide per darlo a un altro
conteggio delle funzioni parole che sta per
ridurre tutte quelle cose che hai
va bene e poi lo stampi alla fine così
ecco le parole divise ed è un po ‘
complicato hai davvero bisogno di guardarlo
sopra e pensa un po ‘ se tutti
qualcuno ha fatto questo tipo di stile
tutti hanno fatto questo tipo di stile
si
ok questo stile è in realtà molto semplice
ma ci sono alcuni dettagli che rendono
è un po ‘diverso va bene è come
tu una persona che sta provando sempre a
ottimizzare le cose va in questa fase della mappa
e cosa oh mio dio potrei farlo così
molto meglio ma poi inizi a pensare
oh cosa sta succedendo sto facendo il
problema molto molto semplice così che sia
lontano il passo di riduzione che viene dopo
okay, ecco il passo ridotto qui
quindi quali sono i vincoli?
i vincoli è che dividi l’input
in pezzi e tu hai questi due
astrazioni si applica una funzione in
parallelo va bene e poi li prendi
risultati parziali e li riduci
in qualche modo in modo coerente
okay, come chiameresti questo stile?
Lo chiamo multiplexer inverso va bene se
prima multiplexing se non sarà
l’elettronica è un concetto che è stato
in giro per alcuni decenni ok
e non c’è nulla di nuovo come ho detto questi
concetti esistono in tutto il posto niente male
nell’elettronica tanto quanto nella programmazione
questo è stato intorno per un po ‘, infatti,
il concetto di MapReduce oops ho fatto solo io
dire che è stato in giro da da
la prima degli anni ’60 è stata la prima volta
introdotto in Lisp molto tempo fa ora
è stato reso popolare con un Hadoop in
infatti c’è una variazione di quello che ho appena
ti ho mostrato e non ho avuto tempo di
guarda attentamente l’ implementazione di
disfunzioni perché ne avresti tanti
di vendere tutto questo non è come io
fai lo fa e si sarebbe giusto così
c’è una variazione di cui hai bisogno
per introdurre un altro altro vincolo
che devi presentare se vuoi
per produrre lo stile Hadoop
ok, quindi stile numero otto
anche lo stile numero otto è molto
diverso è completamente diverso
modo di pensare al problema
diverso da tutto ciò che ho mostrato
prima tu così come pensi
su questo problema in questo stile è quello di
pensa bene quindi ho i dati giusti per
avere dati di input così che cosa sto andando a
fare è davvero intenzione di memorizzare miss
questi dati nei tavoli vanno bene
analizzare i dati e memorizzarli nelle tabelle
e poi quello che voglio veramente fare voglio
contare le parole sì, ma potrei volerlo
conta altre cose che potrei voler ottenere
più conoscenza di questi dati non solo
le frequenze del mondo vanno bene e io voglio
fallo in un modo che è molto facile per me
per dichiarare queste specifiche
e ottenere la conoscenza dei dati ok
quindi quello che sta succedendo qui è quello
prima sto creando uno schema di luce sequel
Sto creando così sto creando il
Lacrime dello schema Ti mostrerò cosa è cosa
lascia che ti mostri di cosa si tratta
fondamentalmente queste tre tabelle del
documenti tabella la parola stabile e il
carattere stabile perché potrei volerlo
contare i caratteri o fare qualcosa
con loro e quindi è così che sono
creando lo schema e quindi sto caricando
il file nel database va bene e quello
è ad un certo punto ecco cosa sono
inserendo i dati va bene qui
inserendo tutto ciò che popola il
database e infine una volta che lo è
in posizione quindi il mio programma è davvero
davvero semplice, dico solo in modo dichiarativo
bene selezionare questo dalle parole raggruppate per
qualcosa o lì da qualcos’altro
super facile a destra non ho bisogno di programmare
in quanto tale sono solo queste dichiarazioni e
poi li stampo
okay, questo è un altro modo di fare
frequenza temporale ora il modo di pensare
di pensare completamente al problema
diverso quindi quali sono i principali
caratteristiche bene il modo in cui tu
pensa al problema è che lì
sono questi si pensa al vengono immessi
dati come entità con relazioni tra
loro e ora il vincolo qui è che tu
devi avere un motore di query che devi
essere in grado di interrogare queste tabelle e
e lo fai usando questo dichiarativo
linguaggio di query molto bello che non lo fai
scrivi programmi come tali che dichiari
quello che vuoi e il motore di query fa
per te va bene
quindi pensa a come lo chiameresti
Lo chiamo tabular okay, quindi me ne sono andato
attraverso otto di questi come ho detto che sono un
Poco ossessivo-compulsivo quando
arriva a questi esercizi e c’è
un mio obiettivo qui è ottenere 33
e ho circa 23 al momento nel
github repo lì sto scrivendo un libro
su questo è un libro per il
il distillato è per la programmazione avanzata
studenti ma anche per professionisti che
per un motivo o per un altro non sono stati esposti
a molte di queste cose quando erano
in undergrad e loro vogliono essere gentili
di cristallizzare voglio dire che non c’è niente
nuovo come tale c’è solo cercando di fare
le persone consapevoli che ci sono molti modi per
pensa ai problemi e in effetti
alcuni di questi modi sono molto vecchi loro
sono stati inventati negli anni ’50 per
esempio, mi sembra di capire il mio repository Github
vedrai che il primo si chiama vecchio
volte che è lo stile della scrittura
programmi che sono stati utilizzati nel 1951
fondamentalmente e c’è ogni sorta di altro
stili c’è lo stile di riposo – ok –
sentito parlare di riposo yeah ok così ho
un test che ho un esempio in cui viene utilizzato
lo stile di riposo quindi c’è di tutto
diversi modi di pensare al
problema e credici o no
le cose si accumulano e non va
lontano
nessuno di questi modi di pensare tutto il
così sono anche per qualche ragione
quello il 19
51 okay gli stili che hai scritto
di programmi che hai scritto 1951 persone
lo stanno ancora scrivendo in questi giorni e loro
sono ancora buono per qualcosa quando tu
avere un vincolo che hai molto
piccola memoria più intendo piccola nel
percepire che è più piccolo dei dati
che devi elaborare ed è necessario
comprimere le cose e si vuole veramente
pensa alla tua memoria e a te
farla franca con molti altri ridondanti
cose in cui metti quelle cose ridondanti
come commenti o qualcosa di ok, nomi di
le variabili li mettono invece nei commenti
di farti sapere che c’è di tutto
cose così il modo di scrivere programmi
Il 1751 è ancora vivo oggi e la stessa cosa
va per oggetti e funzioni e
continuazioni e relazioni e il tuo nome
molte cose diverse sono tutte
le persone verranno solo con nuovi modi
di pensare al problema va bene questo
non finisce qui e, se hai pensato
che gli oggetti erano morti e nostri
la programmazione funzionale è il bello
la cosa è davvero non è non è come
le cose funzionano è solo accumulare e
hai tutti questi stili che sono
buono per alcune cose e non va bene per
altre cose e tocca a te sapere il
progetto e tu e il tuo particolare
situazione per decidere quale stile tu
dovrebbe pensare per quel particolare
caso che cosa stai cercando di
ottimizzare è molto importante, quindi è così
questo è tutto e io benvenuto
contributi a proposito e due giorni
dopo l’ ID ho messo il codice su github
c’erano già persone che contribuivano
come i casi di test e la fabbrica di caramelle
è stato il primo che le persone hanno fornito a
script di shell per farlo, quindi benvenuto
implementazioni in altre lingue che sono
facendo tutto in Python ma tu sai
puoi farlo anche in altre lingue
perché di nuovo gli stili sono indipendenti
delle lingue, quindi questo è tutto
ti ringrazio molto ne prenderò un po ‘
domande come si fa a distinguere
stile e brevetti buona domanda va bene così
stiamo andando alle guerre mondiali di nuovo così io
pensa che essenzialmente questo provi a
trasmettere lo stesso tipo di valore che è
per trasmettere esperienze che le persone hanno
accumulato nel corso degli anni ed è molto
difficile da codificare in queste esperienze
matematica o modi formali così davvero
buon modo di esprimerli in questo è
dando questi esempi proprio così il
il libro dei brevetti ha questi modi di pensare
sul problema che le persone hanno visto
nello sviluppo di software che facciano bene
situazioni specifiche bene, sono una cosa
quello che sto cercando di fare qui è un po ‘
un po ‘più basso di quello se posso dire
quindi, che è quello di catturare alcuni modi di
ingegnerizzare il programma da soli
okay non solo risolvendo problemi specifici
ma in ingegneria in come stai
progetta il tuo codice come pensi
il tuo codice fondamentalmente va bene così che è sorta
di esso è molto correlato direi
è solo diverso se tu se vuoi
per dire diversi modelli se vuoi
usare questa parola e che sono un po ‘
livello inferiore rispetto a quelli che sono in
il libro modelli vi ringrazio molto ho
pensa che il tempo sia scaduto e il resto del
commenti e domande puoi ottenerli
su Twitter va bene
Please follow and like us: