
Va bene a tutti quindi penso che ho intenzione di
il mio nome è Stefan tilaka Sono qui
per tenerti sveglio dopo pranzo, voglio
non parlare di una singola programmazione
linguaggio ma più di uno
linguaggio di programmazione più di uno
linguaggio di programmazione nella testa di a
sviluppatore singolo e più di uno
linguaggio di programmazione in un sistema che non sono
qui perché sono un designer di lingue
perché io non sono non sono qui per presentare
qualsiasi particolare linguaggio di programmazione
perché mi piacciono molte programmazioni
lingue mi piace pensare di essere qui
perché sono un utente di programmazione
lingue che mi piace esplorare nuove cose
piace provare nuove lingue e vedere
come sono diversi da quello che so
e sono anche molto spesso nell’I
molto spesso hanno il compito di vendere
le decisioni di vendita ai decisori di
vendere idee a loro in modo che girino
loro in una decisione quindi questo discorso è
per lo più sta per essere su alcuni un po ‘
cose tecniche alcune cose morbide e
sull’opportunità o meno di questa intera idea di
usando più di un linguaggio di programmazione
è buono o cattivo e io ho
sette tesi intorno a queste sette cose
ma ho raccolto mi piacerebbe volevo
per arrivare a 10 ma non ho potuto trovare
10 quindi è 7 il prossimo numero magico
che potrei scegliere così dovrai sopportarlo
con me con me per quelle sette cose
e variano molto dal livello
e dalla quantità di tempo che sono
andando a spendere con loro e come ho detto
alcuni di loro sono più tecnici e alcuni
di loro sono più morbidi quindi vediamo di farci
iniziare con il primo il primo che ho
pensare è uno che è molto ovvio se
lo sei se ne stai guardando
particolare linguaggio di programmazione con a
qualsiasi programmazione di programmazione particolare
linguaggio che è come e perché è questo
diverso da quello che so non sono tutti
lingue che usiamo uguali in ogni caso e di
Certo che hanno ragione così sono le lingue
uguale in un certo senso perché possiamo
con qualsiasi linguaggio ragionevole che possiamo fare
tutto ciò che possiamo fare con qualsiasi altro
linguaggio ragionevole ma non appena è
Completando Turing possiamo fare tutto
con esso ma non sono uguali quale è
la mia prima tesi se guardi il
numero di lingue che abbiamo
disponibile questa è solo una lista molto piccola
di cose che probabilmente concorderai lì
è una differenza abbastanza grande tra
assemblatore e cosa ho qui o
forse Haskell sono molto diversi
Se
nelle lingue posso scrivere bene non me ma
qualcuno che è capace in quelli
le lingue saranno probabilmente in grado di scrivere
qualsiasi programma per fare qualsiasi cosa in entrambi
quelle lingue ma non lo sarà
lo stesso programma e io non voglio dire che
interessato al numero di caratteri
o il numero di righe dovrà
digitare sarà diverso
programma perché in una certa misura il
linguaggio di programmazione usiamo influenze
ciò che possiamo fare questo è noto come il
ipotesi di ipotesi di Sapir-Whorf che
è qualcosa dalla linguistica, quindi questi
due persone superiori e Worf si avvicinò
con l’idea che il linguaggio influenza
il pensiero scrive il vocabolario
hai gli schemi che hai il
idiomi che sono disponibili per te
influenza ciò che puoi pensare scrivi il
cosa interessante è quella in linguistica
questo è stato ufficialmente smentito giusto
così i linguisti non ci credono più
ma penso che sia molto vero in
linguaggi di programmazione penso che ci sia un
enorme influenza sul linguaggio di programmazione
ha su cosa possiamo effettivamente pensare se
conosciamo solo una singola programmazione
linguaggio penso che siamo molto limitati
questa è una cosa che voglio arrivare
da oggi c’è una bella idea
esperimento fatto da un ragazzo chiamato Paul
grayham che alcuni di voi potrebbero sapere quale
è il linguaggio blob quanti di voi
conosci il linguaggio blob qui qualcuno va bene
quindi lascia che ti spieghi questo molto brevemente
è un linguaggio che è quello che è stato
chiamato blob per non offendere nessuno giusto
quindi questa potrebbe essere la tua lingua preferita
presume che ogni sviluppatore abbia un
lingua preferita è la lingua che
ti piace usare e tu sei molto
è familiare con quello che usi
nel tuo lavoro quotidiano quello che tu
non devo pensare a ciò che è giusto e questo
la lingua si trova in questo continuum
a un certo livello di complessità o a
un certo livello di numero di funzionalità che
ha ma questa è questa è la tua lingua
ha certe caratteristiche e non lo è
avere altri perché ce ne sono altri
i linguaggi di programmazione ci possono essere
un linguaggio di programmazione che ha meno
funzionalità ad esempio la tua lingua potrebbe
essere orientato agli oggetti in questa lingua X
non è non ha oggetti e lì
sono altre lingue che sono oltre
la destra questa lingua per esempio
potrebbe avere una caratteristica del tuo Lang che
non ha per esempio i programmatori
il diritto di lambda potrebbe avere qualcosa di simile
non hai adesso e se lo sei
il tipico programmatore che presumo
non sei perché stai frequentando a
conferenza come questa ma supponiamo
Allora eri il tipico programmatore
la tua opinione immediata di quelli
le lingue andranno bene giù
ecco qualcosa che è irrimediabilmente
limitato come dovrei lavorare con
quello giusto la mia lingua è molto di più
potente ho tutte quelle cose e
se dovessi lavorare con quella lingua io
costruirebbe tutta quella roba per me
esempio orientamento all’oggetto vorrei
perché è così che penso proprio così
Aggiungerò l’ orientamento dell’oggetto al
linguaggio che non ce l’ha
le persone lo hanno fatto per esempio con C
e ovviamente tutto sull’altro
il lato è pieno di caratteristiche che nessuno
Voglio dire, intendo chi vorrebbe chi
bisogno che perché non ne hanno bisogno
proprio qui nel vostro giorno per giorno di lavoro
non hai bisogno di quella funzione in modo che tu tenda a
visualizza le lingue che hanno ulteriori
cose che sono la tua lingua prima
complesso inutile gonfio e pieno di
roba accademica che nessuno vuole e
lingue che non ne hanno meno
caratteristiche come inutili che è la chiave ma
l’idea chiave non ho intenzione di leggere tutto
di questo a te puoi leggerlo nel suo
post sul blog e penso che ci sia un sacco di
a dire il vero penso che abbiamo un
mentalità diversa a seconda del
linguaggio di programmazione usiamo un C
programmatore cose diversamente da a
Programmatore di Ruby o un programmatore Java di
Certo che stanno entrambi costruendo programmi
in una programmazione completa di turing
linguaggio quindi un certo punto nel tempo e alcuni
livello questo sarà uguale ma è
non è lo stesso approccio
le lingue differiscono molto dalle lingue diverse
in molti aspetti diversi proprio lì
sono molte cose che possono differire da
linguaggio per parlare i paradigmi in
supporto è un linguaggio funzionale è a
linguaggio procedurale ce l’ha
supporto all’orientamento all’oggetto lo fa
supporto programmazione generica sono i
verbosità richiesta per esprimere qualcosa
giusto quante cose devo scrivere
che devo precisare tutto il
tipi o altro nella paura o ci sono
forse nessun tipo statico, quindi il tipo
il sistema è molto diverso
fattore di differenziazione tra diversi
linguaggi di programmazione quindi la quantità di
Cerimonia, credo che Neil abbia chiamato questo
termine che andremo a vedere alcuni esempi di
che quanto quanto caldaia caldaia
giocare devo scrivere per ottenere qualcosa
lavorare bene è l’altro
aspetto abbiamo la velocità sia il
la velocità di sviluppo così come il runtime
velocità di quello che stiamo mentre stiamo costruendo
e quando lo stiamo facendo bene
questa è una grande differenza tra
le lingue e spesso queste sono
inversamente correlato quindi se è qualcosa
che consente di creare qualcosa di più veloce è
potrebbe non funzionare così velocemente e se è difficile
per fare allora forse il tuo programma sarà
più veloce anche se arriveremo a quello che sono
non del tutto sicuro sono d’accordo con questo
ipotesi allora avremo solo un molto
curva di apprendimento diversa a destra forse
molto ripida forse non è un problema a tutti di
impara la lingua se ne conosci un’altra
va bene così la stabilità può essere a
differenza la lingua può cambiare
perché è stato sviluppato molto attivamente a
il rilascio di due punti nove potrebbe essere molto
diverso da un rilascio di due punti otto
in alcune lingue proprio così non può
capita che ci sia un sacco di cose
differenza in quelle lingue e alcune
di noi non ne siamo consapevoli, quindi non lo so
sapere quanti in questo pubblico sono Java
programmatori e alzi la mano se
stai programmando Java, quindi lo farei
aspetto che sia la maggioranza quindi non mi sento
um offese se metto su questa diapositiva di a
ragazzo che è una citazione da un ragazzo chiamato
Steve Agee
dove come un grande post sul blog ha chiamato il
regno di nomi e ha fatto ha fatto
questa osservazione che penso sia
almeno parzialmente vero, pensa in modo specifico
il mondo java ha la tendenza a vedere
bene di nuovo forse non questo pubblico ma
i molti sviluppatori di java tendono a farlo
vedere java è l’unica lingua l’unica
cosa che non sai nemmeno altro
e non è neppure a conoscenza di molti altri
idee che sono lì intorno e lasciami
mostrarti con un esempio quanto sono diversi
questo è questo è ispirato da a
video un discorso che ola beanie ha fatto questo è
un po ‘di codice java non riesco a fare il
gioco in questo momento, ma forse puoi dirmelo
quello che fa qualcuno sa cosa
questo fa così sto ancora contando cosa
questo fa perché ti ci vuole così
a lungo per scoprire cosa significa questo
forse sei tutto timido e non vuoi
gridare con noi dispiace troppo
parole che è un ottimo commento lì
sono così tante parole su quella diapositiva a destra
ordina ciò che per lunghezza ordina il
stringhe per lunghezze a destra e cosa fa
lo fa con loro
stampali fuori separati da virgola
rispondi che è esattamente ciò che questo codice
io sono io non sono io non sono un attualmente sono
non un programmatore Java quindi forse c’è un
modo più efficiente per scrivere questo ma io
non pensare che possa ottenere di più
efficiente di quello ora paragonarlo a
il codice Ruby equivalente è molto
meno parole giuste molto meno parole,
dice che qui c’è una lista che li ordina
lunghezza e unirli a loro con una virgola ora di
Naturalmente questo è un po ‘di barare a destra
Non sto usando lo stesso livello di
librerie che ho in entrambe le lingue
è diverso in Java in Ruby che potrei
costruisco facilmente un metodo di join su
alcune utility class e forse import make
è statico in modo che io possa importarlo in rosso
e restringi il mio codice java
più corto ma mostra che c’è un
differenza nelle lingue, sono io
nemmeno a discutere che una lingua sia
meglio dell’altro perché sono
la cosa principale che voglio discutere è quella
sono diversi ma non è la stessa cosa
cosa dare un’occhiata ad un altro esempio di
Codice rubino questo è dalla documentazione
dalla struttura delle rotaie che è ordinata
di un framework Java EE sì gratuito
Ruby almeno è una pila completa
quadro ha un sacco di cose in esso
e una delle cose che
ha un modo di esprimere le relazioni
tra entità così che cosa stai vedendo
qui sembra quasi un DSL proprio così
potresti chiamarlo potremmo ragionevolmente
chiamalo DSL interno perché lo è
molto leggibile e molto vicino al
dominio giusto dice che un progetto
appartiene al nostro portafoglio e ne ha uno
project manager e appartiene a uno o
molte categorie che è leggibile e
questo è quello che è qualcosa che Ruby
rende molto facile farlo è proprio così
molto facile da costruire interno vs else in
Ruby di nuovo puoi costruire qualcosa
simile in altre lingue che puoi costruire
qualcosa di simile in Java o C sharp ma
ancora una volta si tratta di è una è una parte della
la cultura fa parte del modo in cui i programmi sono
costruito in Ruby che ci permette di fare questo
e ci sono altri lotti e molto altro ancora
esempi di ciò è un nodo.js
Programma JavaScript che è un HTTP completo
file server no è solo completo
server ed è pieno non ci sto neanche andando
per spiegare tutto ciò che è su questo
Scorri ma puoi vedere quei meccanismi
che sono disponibili in JavaScript
essere usato come funzioni anonime
giusto stiamo passando un anonimo
funzione alla funzione che crea a
server e quella funzione anonima è
responsabile della gestione delle richieste e
risposte giuste così
questo è quello che è qualcosa
questo è ciò che JavaScript rende molto facile
orientato al callback orientato agli eventi
programmazione non sto dicendo che se questo
se tu se hai mille righe di
ciò che questo non sarà un
pasticcio completo possiamo discuterne
separatamente ma è ancora una volta è a
diversi set di opzioni che si hanno
disponibile un modo diverso di esprimere
i tuoi pensieri dipendono dal
linguaggio di programmazione posso continuare con
questo per molto tempo questo è un
l’esempio più freddo è un grep completo
riga di comando sostituita bene non a
completo ma in qualche modo di un comando di grep
sostituzione della linea giusta e si può anche
anche se non puoi vedere tutti i dettagli
e anche se è un po ‘difficile da aspettarsi
che sei in grado di seguire tutto ciò
se non hai mai visto la chiusura che è come
hai indovinato l’ elenco in esecuzione sulla JVM
puoi vederlo in alcune cose alcune
aree il diverso modo di avvicinarsi
roba così per esempio abbiamo qualcosa
di lì una funzione chiamata stampa
partite che ora prendiamo in mano
i file che si applicano e si uniscono e mappano
quelli giusti sono funzioni di ordine superiore
disponibile in una programmazione funzionale
linguaggio che ti permette ed essere nel
l’ esempio della mappa per mappare una funzione
su una lista giusta è una cosa a
idioma comune in una programmazione funzionale
linguaggio e mi porta a scrivere questo
problema in un modo molto diverso
diversamente diverso da quello che io cosa
fare in una lingua non funzionale non c’è
più alla vita che agli oggetti quando siamo
usando una programmazione orientata agli oggetti
lingua del programma di flusso principale
linguaggio che siamo abituati ad avere questo
astrazione destra stiamo costruendo il
tipo linguaggio costruzione classi classe e
tipi che è la cosa che costruiamo
destra costruiamo di più e sempre di più
loro perché questa è la principale astrazione
abbiamo perché se non abbiamo
qualcosa dobbiamo costruirlo usando il
strutture che abbiamo così per esempio
se non abbiamo una chiusura
useremo una classe e useremo un modello per
per farlo lo darò ancora un po ‘
chiusura perché voglio che tu ti abitui
a quello per vederlo perché amo
il linguaggio su cui tanto è giusto pensare
come si farebbe come ti tappi di legno
il modo in cui lavoreresti con i dati
strutture in un linguaggio di programmazione
come Java diciamo che voglio fare a
piccola biblioteca che si occupa di punti
allora questo è probabilmente quello che vorrei iniziare
facendo bene inizierò se è stato un
classe molto piccola che incapsula questo
single il singolo tipo il singolo
oggetto di informazione un punto mentre in a
linguaggio come chiusura vorrei
qualcosa di simile ora di nuovo questo è un
confronto e sistema totalmente ingiusti
è perché non sta facendo questo
la stessa cosa che è quello che sto ricevendo
a destra non sta facendo la stessa cosa
perché usando questa lingua diversa
Faresti le cose diversamente questo
in altre lingue si potrebbe semplicemente riutilizzare un
la struttura dei dati esistenti è persistente
la struttura dei dati in questo caso è a
vettore giusto quindi creeremo un vettore
con due elementi per rappresentare un punto
se lo facciamo otteniamo alcuni benefici
perché queste strutture dati in questo
la chiusura della lingua d’esempio è certa
avere alcuni tratti che sono preziosi per
la maggior parte dei programmi sono immutabili
riusabili vedremo che sono
compatibile perché questo è solo un
La struttura dati generica che sto usando
questo per incapsulare le loro informazioni così
invece di come lo farei nel
Mondo Java che aggiunge un metodo in questo caso
da calcolare sono una distanza dal
classe che non ho mai capito
perché appartiene lì, ma qualunque cosa sia
probabilmente dove lo avresti messo nel tuo Java
programma nella variante di chiusura
avresti lo stesso lo stesso codice
stessa logica ovviamente perché è giusta
giusto, ma lo metterei in un
posto diverso sarebbe in a
funzione in questo momento può questa funzione
calcolare la distanza tra due
punti e ora penso che lo siano
cose interessanti ho questi dati
approccio strutturale e ora posso fare
roba che la chiusura può fare con i dati
strutture perché queste sono generiche
le funzioni generiche funzionano con questa roba
giusto quindi ho qualcosa in cultura
questa è una cosa molto carina che è
una sequenza infinita è un infinito
sequenza in questo caso un infinito
sequenza sequenziale di numeri casuali
giusto così forse se voglio scrivere un
funzione che mi consente di creare
punti casuali che ora userò per costruire
coppie di punti casuali ora questo è un
elenco infinito di punti casuali e
Ne prenderò 10 da adesso ne ho 10
punti Ho appena costruito punti usando il
funzioni generiche disponibili in
la libreria standard per me e ancora I
posso andare avanti per ore circa il
cosa qui questo è solo un po ‘così
esempio forzato, ho un numero
del numero di punti che voglio calcolare
la circonferenza circonferenziale del
poligono che è lì quindi ho tutto
quei punti e ora io
di una lista infinita di ciò che ripeto
loro infinitamente più e più volte
questo è ciò che fa questa funzione e poi
Sposto quell’unico posto al al
giusto e poi ho questi e poi io
costruisci punti da questo e poi ho incontrato
la distanza funks funziona su tutto
di quelle cose una dopo l’altra e
quindi alla fine riassumo ciò che è
qualcosa che posso fare perché questo è
il modo in cui penso in questa lingua non lo sono
cercando di vendere più vicino, anche se
è la lingua migliore che conosco adesso
non provando a farlo quello che sto cercando di fare
sottolinea che è come se stessi programmando
in chiusura mi avvicino ai problemi in a
diverso modo giusto è un modo diverso
di programmazione rispetto a quello che usi
che sostiene la mia mia teoria che quelli
le lingue non sono uguali saltiamo sopra
che mi permetta di evidenziare un altro aspetto
di questa cosa generica del culo che è se io
avere qualcosa di simile qui questo è un
mappa di chiusura ancora usando questo come un
esempio posso accedere agli elementi in
quella mappa molto facilmente così questo è il modo
Vorrei incapsulare un comp più complesso
struttura dei dati e chiusura non lo farei
creare un tipo per questo non lo farei
creare una classe mi piacerebbe semplicemente usare il
strutture dati generiche per fare ciò che
alla fine significa che posso fare solo
ripassa quello a cui posso accedere
tali elenchi in modo molto generico
è un po ‘come solo accoppiare me stesso
a una piccola parte della struttura dei dati
che cambia di nuovo la semantica del mio
programma è quasi come se questi dati
struttura assomiglia a questa roba sul
giusto qualcuno sa di cosa si tratta
giusto, è giusto JSON, quindi ce ne sono due
funzioni e chiusure che mi permettono di
vai da una mappa a Jason da Jason a a
mappa e di nuovo è eccellente
esempio di qualcosa che è davvero
diverso in diverse programmazioni
lingue se io se devo scrivere a
servizio che consuma o produce JSON a
linguaggio come questo e ce ne sono molti
altri la sedia questa caratteristica di
avere dati generici facilmente accessibili
strutture è estremamente facile da lavorare
con
mentre trovo nel dolore totale in a
linguaggio tipizzato staticamente con cui lavorare
qualcosa come JSON perché il
il modo idiomatico di avvicinarsi sarebbe
per generare codice che ha classi che
mappare le cose che sono nella jason
Mappa destra in modo ogni volta che cambio il
struttura del jason che dovrò
cambia la struttura della classe che ho impostato
ora so che non devo di nuovo no
dicendo che non è possibile
fare tutto in ogni lingua che sono
dicendo che non è il default, non il
modo standard di fare le cose, quindi questo è un
grande differenza tra un maggiore
differenza tra le lingue inclini che
Volevo evidenziare e penso che sia
è solo un segno che potrebbe
essere più importante di quanto si pensi che cosa
il linguaggio di programmazione che usi può discutere
quei modelli che progettano i nostri modelli
odore di design giusto così tanti di voi io
Immagino vedrà che in questo libro si tratta di un
E ‘un si tratta di un molto molto noto
libro vorrei averlo scritto
bestseller perché è bello scrivere a
best-seller in questo settore quasi
non succede mai ma anche se lo è
grave è stato un libro molto influente
um puoi argomentare che i pattern sono a
debolezza e un ragazzo del Perl
la comunità fa quello dove potrebbe avere
è stato seduto in questo post che sostiene
se fossero stati disegnati modelli di design
inventò nel 1972 uno dei design
i modelli sarebbero stati subroutine
perché nel 1972 i linguaggi di programmazione
non necessariamente ho non sono sicuro
sulla mia storia qui ma non l’ho fatto
necessariamente hanno subroutine integrate
forse il 1965 qualunque sia un modo per farlo
quello sarebbe descrivere questo come a
modello giusto per inserire alcune variabili
la pila o alcuni registri che hai inserito
un indirizzo di ritorno di quello che chiamate a
funzione e prenderà il
parametri e farà qualcosa e
si tornerà al l’indirizzo di ritorno I
significa che è uno schema giusto noi non abbiamo mai
accetterebbe la lingua richiesta
noi per farlo davvero, ma accettiamo
lingue che ci richiedono di codificare lotti
di altri modelli comuni
qual è la ragione per cui stiamo accettando che
c’è un vecchio documento di Peter Norvig
chi è ora penso che la testa della ricerca
ricerca o qualcosa su Google berry o
ha dato un’occhiata al libro e descritto
come sono mappati i modelli del libro
caratteristiche di dinamica e funzionale
di nuovo i linguaggi di programmazione sono un grande
fan di linguaggi dinamici e funzionali
lingue, ma è ancora una volta questo modello
questa idea si traduce in due
lingue giuste se c’è qualcosa
che potete vedere voi stessi facendo più e
più volte forse è una buona idea
pensa se potrebbe essere o meno
una parte del tuo del tuo che dovrebbe essere
parte del tuo linguaggio di programmazione e
forse ce n’è uno diverso
questo diverso
ora prometto in astratto di un discorso
che ho dato alcuni esempi così dentro
tra tutte le mie cose teoriche
alcuni esempi lanciati e questo è
il primo quindi penso sia un bene
caso che mostri chi e quando e dove
potrebbe essere in grado di trarre profitto da diversi
lingue quindi questo è un progetto che abbiamo fatto
dove ha effettivamente avuto la modellazione
informazioni esportate da uno strumento caso
e volevo importarlo in un
caso diverso per lasciare la prima cosa
prodotto xmi e l’ultimo capo di
java se non chiedi non farlo non farlo
fai progetti come questo, ma se tu
dovevo questa era una cosa interessante
il ragazzo che ha costruito quel progetto ha preso il
approccio di fare l’interessante
riempire la trasformazione del modello
trasformazione in Lisp perché è
perfetto per questo è un caso d’uso perfetto
ma naturalmente avrebbe potuto costruirlo
anche in Java ha scelto di fare l’ XML
analizzando la struttura dei dati alla base
normalizzazione della struttura dei dati in
Java e poi consegnarlo a un Java
basato Lisp non è stato coltivato così bene che
è stato un po ‘ indietro e quindi produrre
Qualcosa che è che viene poi letta da
Programma Java per usare l’API Java così tu
avere lingue diverse con differenti
punti di forza e dovresti essere in grado di scegliere
quello che ha senso per te
Detto tutto ciò ci rende Io sono molto
convinto che i linguaggi di programmazione
fare la differenza, ma dipende da cosa
livello che stai guardando quindi se qualcuno
ha l’ argomento che le lingue no
importa che io abbia un punto
a seconda di cosa stiamo parlando
quindi se stai guardando il
tutta una serie di cose che si deve
guarda ad esempio se costruisci un
app web moderna quindi ovviamente il
il linguaggio di programmazione è solo un piccolo
cosa va bene e sono d’accordo che
non dovrebbe essere non dovrebbe essere il più
Decisione importante che lo hai fatto
l’unica cosa su cui ti concentri bene
quindi da questa prospettiva tu guardi
a tutto il sottotitolo il tutto
sistema o sottosistema o il tutto
l’architettura forse non è la lingua
questo è importante ma sono ancora molto
diverso e penso che importi molto
ora è tutto abbastanza teorico
abbiamo differenze tra le lingue
e questo è interessante che potremmo forse
scegli sempre la lingua migliore per a
caso particolare, naturalmente, possiamo aver ragione
perché la lingua ha un ecosistema
circondandolo e l’ecosistema è
quasi altrettanto importante di tutto il tecnico
caratteristiche di quel particolare linguaggio
giusto e quegli ecosistemi comprendono a
molte cose diverse quindi abbiamo un
ambiente di sviluppo
se sei abituato allo sviluppo
ambienti disponibili in un ecosistema
è molto difficile andare in un altro
ecosistema che ha un’idea diversa di
che ambiente di sviluppo in realtà
è che potresti essere una sorpresa per te, ma
molte persone pensano che Vi sia l’atto come un
ottimo ambiente di sviluppo Emacs
è un eccellente ambiente di sviluppo
Conosco pochissimi programmatori Java che usano
Emacs come loro IDE penso di sapere cosa e
è strano ma comunque lo sviluppo è
solo una parte come le nostre librerie
stai usando bene stai usando un sacco di
biblioteche e ti semplificano la vita
tutti sarebbero d’accordo che lo farebbe
sarebbe d’accordo con questo, avendo un
un ampio set di librerie è molto
cosa importante e non sono facili
condiviso se si salta tra ecosistemi
giusto hanno API e s differenti
approcci diversi e diversi
gli ecosistemi hanno diversi punti di forza in
i tipi di librerie che forniscono
alcuni di loro non hanno quasi nessuna biblioteca
il che è un peccato, tu hai diversi
ambienti di runtime che possono portare
la propria VM possono lavorare con a
diverso VM giusto abbiamo un diverso
comunità di comunità e cultura penso
sono differenze sottostimate tra
i linguaggi di programmazione sono enormi
differenza tra la comunità Perl
e la comunità Python nel Ruby
quelli della comunità sono tutti dinamicamente
credo di aver digitato ancora dinamicamente
non ero sicuro dopo quell’ultimo discorso ma
lingue tipicamente dinamicamente tipizzate
che alcune persone amano chiamare lo scripting
lingue che condividono molto
caratteristiche che tutti hanno supporto
per l’orientamento all’oggetto sono tutti molto
velocemente sono tutti molto utilizzabili molto
pragmatico ma le comunità sono molto
molto diverso quindi è davvero un forte
forte differenza tra l’approccio
ci vai, quindi devi essere sicuro
lo prendi in considerazione quando tu
decidere quale linguaggio di programmazione o
i linguaggi di programmazione da usare adesso
ecco un cattivo esempio che è anche un
esempio di progetto un grande progetto bancario
che abbiamo fatto e ovviamente non era uno
dei nostri dipendenti che hanno incasinato questo
qualcun altro
naturalmente chi era un grande programmatore
incidente un programmatore sorprendente e un
fan a mezza scala e mi piace Haskell the
linguaggio non lo capisco ma io
come se fosse così io non sono io non oppongo esso
tutto a qualcuno che usa Haskell ma questo
ragazzo ha usato Haskell e solo lui ha usato
Haskell e una squadra di 15 persone e lui
ha usato Haskell per costruire esterni vs ELL
quella
in pratica ha creato nuovi linguaggi e
potresti usare quella lingua per creare
qualcosa che è stato salvato in binario e
quindi letto dalla libreria Java da Java
programma e ha creato un oleodotto dove
roba era da Excel convogliato da più
fasi di strumenti best-of-breed da creare
qualcosa che era un DSL interno
non è stato analizzato con Haskell e creato
roba binario che sarebbe il programma Java
leggere che era un disordine irraggiungibile in
questo particolare contesto potrebbe avere
stato grattato se fosse stato solo lui
perché era assolutamente in grado di lavorare
sia in Haskell che in Java
ecosistema bene non sono del tutto sicuro di lui
è stato in grado di lavorare nell’ecosistema Java
ma sicuramente l’Haskell, ma così è
non è una buona idea che devi prenderlo
in considerazione e se nessuno nel
progetto vuole usare altro ma
questo particolare linguaggio di programmazione
li ha convinti prima di te
introdurlo non farlo da solo
perché ti odieranno, posso farlo
promettere che
quindi nessuna lingua è un’isola giusta a
il linguaggio ha un sacco di cose che arrivano
con esso ed è necessario tenerne
conto pure che ho detto che penso sia
cambiando un po ‘così abbiamo quelli
macchine virtuali multi-lingua quelle
piattaforme multi-lingua scrivono net di base
e la JVM che ci dà qualche modo
riutilizzare parti del nostro ecosistema
non tutte le parti di esso hanno ragione
molte lingue diverse in esecuzione
dotnet sul runtime.net che ora abbiamo
molte lingue in esecuzione su JVM
di nuovo sta migliorando tutto il tempo
fortunatamente l’ oracolo non ha fermato questo
quindi abbiamo un sacco di supporto per
diversi tipi di lingue lo faranno
solo migliorare in futuro e se tu
guarda cosa può piacere a Charles Nutter
fai in questi giorni a un target da cui JVM
JRuby è davvero impressionante
creare un codice davvero molto efficiente
perché il runtime è stato esteso a
supportare le cose che possono usare per fare
in modo molto efficiente, quindi se tu
guarda quelle cose che ho menzionato
puoi vedere che almeno alcuni di loro
non sono tanto un problema come loro
erano prima così alcuni di loro sono
indirizzato da questo multi-lingua
tipo di cose almeno le librerie e
ambiente di runtime forse a volte anche
l’ ambiente di sviluppo anche se lo sono
non sono troppo sicuro, intendo che sono consapevole di ciò
su questo almeno sotto JVM per ogni
libreria di scripting c’è una sorta di IDE
supporto in Eclipse e un’idea che sono
non sono sicuro che qualcuno che davvero
per usare quel linguaggio di programmazione lo faremo
in realtà lo usano, quindi la maggior parte di loro si attacca
con i loro editori esistenti che ho
un altro esempio di progetto penso che
dovrebbe essere il numero tre non il numero due
che è un era un semplice progetto JRuby
che funzionava sulla JVM e che era in grado di farlo
riutilizzare semplicemente alcune delle librerie Java
è stato un buon ambiente di runtime
ha anche avuto un buon effetto per noi che noi
sono stati in grado di utilizzare JRuby senza realmente
dire al cliente che non è interamente
vero, abbiamo detto loro che ci useremo
questo linguaggio elaborato ma tu non lo farai
non noterà perché verrà eseguito nel
esattamente lo stesso ambiente di avere tutti
le tue cose esistenti corrono così il fatto
che possiamo scegliere come target un runtime diverso
l’ambiente ci ha permesso di farlo in un
linguaggio di programmazione che abbiamo trovato è stato
più adatto per questo particolare
progetto e che è stata sicuramente una vittoria
ancora non lo credo
è successo a molto ma arriveremo a uno di
i miei principali motivi per cui non penso
questo è un punto importante ma almeno
l’ambiente di runtime e di cosa
ti porta in più scenari in cui tu
può effettivamente farlo mentre io ancora
trovare un problema per ottenere qualcosa di simile
Erlang in società perché questo
richiede un’installazione diversa
runtime diverso quindi devono
compilare qualcosa tutto ciò sembra strano
a persone che sono abituate a gestire JVM
roba basata proprio a volte che conta
quindi questi ambienti multi lingua
abilitare è la sua diversità che tu
non sarebbe in grado di sostenere o
che non saresti in grado di vendere
attraverso i clienti o verso o verso una decisione
decisori se non fosse per questi
per questi runtime ora torniamo a
Torniamo al titolo dell’altro
parlare che aveva qualcosa a che fare con
poliglotta ISM credo di averlo cambiato così
programmazione poliglotta penso che uno dei
le cose che le persone non riescono a fare è fare un
distinzione tra poliglotta poliglotta
programmatore e un poliglotta e poliglotta
programmando voglio dire quelli sono due
cose diverse un poliglotta
in generale è qualcuno che è in grado di
usa più lingue quando viene
dal mondo della lingua, quindi qualcuno che
parla dieci lingue fluentemente come a
poliglotta è la cosa più bella che mi piacerebbe
essere in grado di parlare tristemente dieci lingue
Io non posso a malapena a make make era
due quindi penso che sia una cosa del genere
dovremmo aspirare a Penso che
è una cosa molto ragionevole da fare
questo perché quando lo fai tu
imparare ad affrontare le cose con
viste diverse a destra una volta che hai usato un
lisp vedrete il codice in cui scrivete
Java a cui penserai diversamente
astrazioni diverse se sei come me
una volta che hai usato Lisp, torni a
Java e dì blah e prova a trovarne
libreria che vi permetterà di farlo
e poi decidi che non è un
buona idea perché non è un’idea Matic così
abbandonerai la libreria di nuovo qualunque cosa
ti aiuta a pensare a queste cose
potrebbe aiutarti a prendere una decisione
quando andare alla programmazione poliglotta
modello potrebbe anche aiutare a semplicemente
vedi bene questo è qualcosa in cui
dovremmo avere una libreria che segue
lo schema che abbiamo in questo
linguaggio particolare ma è anche
interessante per chiedere quale lingua si fa
usa bene così che molti di voi usano a
linguaggio di programmazione unico nel loro
lavoro quotidiano quindi penso che tu sia
indovinando quello che sto ottenendo a destra il
la domanda dovrebbe piuttosto essere quanti
lingue usi perché nessuno
nessuno usa almeno una lingua
nessun progetto significativo che io sia
consapevole di avere una moltitudine di
lingue diverse che usi correttamente
alcuni di loro forse non dovrebbero essere chiamati
lingue sono aperto alla discussione lì
ma ci sono molti modi per esprimere
roba e ce ne sono alcuni
Arturiano completa alcuni di loro non lo sono
ma ci sono diverse lingue giuste
almeno in ogni progetto web che conosco
avrai qualche codice JavaScript da qualche parte dentro
fondamentalmente ogni progetto Java che abbiamo
qualche cosa per aggiungere dinamiche lo faremo
arrivare a quello pure così abbiamo un sacco di
cose diverse che già abbiamo
usare sequel è praticamente in ogni progetto
e il monitoraggio è completo da
programma un po ‘di programmazione se lo combini
con una logica procedurale renderebbe
pl / sql quindi ovviamente hai qualcosa
che è completa quindi ci sono un sacco di
lingue diverse che già usi
e tutti pensano che va bene
quindi è allettante dire che useremo semplicemente
il miglior strumento per il lavoro, usiamolo
qualunque cosa abbia più senso e ottenere
sbarazzarsi di questa monocultura che credo
una brutta cosa anche se guardi il
definizione del dizionario da manuale originale
di ciò che una monocultura ha ragione a
monocultura significa che sei tu
tutto deve essere lo stesso che è
questo è il valore più importante
che hai tutto il resto
non importante fino a quando
è scritto in quella lingua
va tutto bene, penso sia brutto no
importa se stai parlando
database o ambienti di runtime
linguaggi di programmazione dei sistemi operativi
librerie di framework qualunque cosa io pensi
la monocultura è sempre una cosa molto rischiosa
e proprio non lo so
esemplificazione di questo è questo logo
qualcuno ricorda che qualcuno qui
abbastanza vecchio da aver programmato nel 1996 così
questo era il logo Java al 100%
Sole indietro al tempo usato per descrivere
un programma che hanno creato dove
Era un era lì per un motivo perché
hanno avuto questa questa causa questa lotta
era Microsoft sul fatto che lo fosse o no
ok per estendere java con proprietario
roba ma a qualcuno in tempo questo
divenne una sorta di sigillo di approvazione se
il mio programma è costruito in Java e in Java
solo allora è fantastico che è un po ‘
strano non vedo che come un valore I
non penso sia bello se qualcosa è
costruito in quel modo particolare giusto
questo non lo trovo particolarmente
convincente
soprattutto dal solito il tuo database
non è scritto in Java nemmeno oggi e
anche la JVM non è scritta in Java
quindi non ero davvero convinto che fosse così
una grande idea ma abbiamo ancora qualcosa
come quello nelle nostre menti specificamente in
il mondo Java si tende a credere che
ogni idea interessante è fantastica, se lo è
fatto in Java se c’è una grande piattaforma
quello risolverebbe tutti i miei bisogni che non posso
usalo perché non è Java è
perché diamo valore alla programmazione
linguaggio troppo credo che stiamo facendo
un errore qui e ho cercato di
Illustri che non è molto bello
illustrazione ma spero di ottenere il mio punto
in tutto se si guarda a questo al
stack tecnologico che stai usando quando
ti avvicini a un progetto hai un numero
di diversi aspetti un numero di
cose diverse che devi guardare
a destra e se cambio qualcosa se io
aggiungere funzionalità quindi potrebbe significare che io
devo aggiungere qualcosa alla biotecnologia
impilare a destra ho un diverso tipo di
tecnologia remota di tipo diverso di interfaccia utente
modellino un tipo di database diverso, quindi lo farò
aggiungere qualcosa terrò la lingua e
il tempo di esecuzione è lo stesso, ma aggiungerò
quadri e librerie e forse costruire
qualche codice giusto va bene, stiamo bene
con quello
siamo tutti felici utenti di Andry di
librerie
ma noi non facciamo la stessa cosa con il
lingue ora potrebbe essere che se aggiungo
una lingua che aumenterà questa volontà
questo farà sì che questo creerà qualcosa
le persone con carico cognitivo dovranno imparare
che le persone devono avere per acquisire
le competenze per lavorare con quella programmazione
linguaggio ma farlo potrebbe effettivamente
portare a qualcosa che è meno
complesso di quello che devi fare se tu
farlo usando solo librerie e
quadri in quel momento ho scoperto che essere
vero in un certo numero di progetti anche se lo è
è difficile arrivare a questo punto ma
il linguaggio di programmazione è solo uno dei
sintassi del programma ed è proprio così
solo una piccola parte di quello che sei
lavorando con il giusto tu pensi che se io
uso gli atti del linguaggio di programmazione e assumo
un nuovo un nuovo ragazzo la prossima settimana non possono
funziona con il mio sistema è ed è solo
sbagliato pensare che saranno in grado
di lavorare con il sistema perché
Devo comunque imparare tutte le altre cose
proprio loro possono conoscere la lingua che è
solo un aspetto, ma hanno ancora a
impara tutto il resto se c’è
ancora molto da imparare perché si deve
costruire tutto questo da soli, invece di
usarlo perché è costruito in
linguaggio allora ti farà del male
a lungo termine, quindi penso che le lingue abbiano un
punto dolce da qualche parte quindi ecco alcuni
i criteri di esempio non li prendono anche
seriamente giusto è solo un esempio di
dove brillano lingue diverse e io
penso che Java brilli principalmente perché ha
questa caratteristica di essere conosciuto da così tanti
persone e se sceglieresti Java tu
di solito non c’è bisogno di giustificare il fatto che
decisione che significa anche che forse tu
può concentrarsi su altre decisioni che tu
anche a cui interessa che ne richiedano alcuni
giustificazione quindi a volte Java è
perfetto lo stesso vale per un c-sharp
o altra lingua principale o altro
il linguaggio è quello che è il nostro blob
Erlang è un eccellente linguaggio eccellente
pensa che Steve farà un fulmine
parlo con Steve che i nazisti faranno a
un lampo nella pausa su Erlang
il curling è un sistema fantastico, se ne hai
per costruire un sistema distribuito che ha
per essere installato e funzionante per tutto il tempo in cui
vuoi sostituire le cose mentre è
correndo a destra hanno diverse versioni di
lo stesso codice lo stesso server in esecuzione
istanza è un ambiente fantastico
non è esattamente la lingua che è così
fantastico è solo un set completo di
lingua e le biblioteche e tutti loro
di loro sanno come è andato
cosa
per per la cultura tre decenni, come si può
indovinare è la lingua che mi piace molto io
penso che sia uno scopo generale
si dovrebbe usare per ogni cosa, se si
non farlo almeno consideralo una volta
hai complessi problemi algoritmici
e magari vuole utilizzare un multi-core
ambiente perché è fantastico perché
ti permette di scrivere multi-thread
programmi al lavoro non penso che sia così
questa è una cosa naturale e Ruby solo per
scegli uno potrebbe aggiungere groovy o Python o
Perl qualunque cosa si potrebbe scegliere che per
la sua produttività è così veloce
la lingua non produce il più veloce
programmi in esecuzione ma è una gioia per
l’uso che fa può farti molto
produttivo almeno per certe cose
e possiamo discutere che per lungo
tempo quindi secondo me nessuno usa un singolo
linguaggio di programmazione comunque proprio così
questa è un’illusione comunque così abbiamo
persone che usano più lingue multiple noi
dovrebbe essere aperto di più e io vado
per arrivarci di nuovo in pochi
minuti non sto suggerendo a tutti
sceglie la loro lingua preferita come loro
per favore ogni volta che proprio non lo fanno
non lo sto suggerendo perché lo sono
Sono troppo realistico per supporre che potrebbe
mai lavorare ma non deve esserlo
non deve essere una monocultura
perché è malsano
la mia prossima tesi riguarda la stabilità
intorno agli strati nell’applicazione questo era
che sia stato ispirato anche da da un
olivine II post un po ‘di tempo fa, anche se noi
ho scelto diversi livelli ma quello di base
l’idea è che se tu se guardi il tuo
applicazione se è una comp se è a
applicazione complessa
probabilmente ha diversi livelli in alcuni
modo di non parlare della logica di presentazione
e la logica aziendale e la persistenza sono
parlando di cosa è stato risolto e cosa è
qual è la dinamica giusta per le parti nella tua
applicazione che si desidera essere in grado di
riconfigurare anche quando è distribuito
quelle sono diverse parti del tuo di
la tua applicazione e il core engine il
i principali macchinari che hai costruito 10
anni fa e stanno ancora riutilizzando il prodotto
la gente sa di cosa sto parlando
perché di solito hai quella stalla
strato inferiore inferiore interno qui, quindi se tu
guarda quelle cose che puoi dire
che ci sono certe cose che sono
forte freddo e alcune cose sono più morbide
giusto questo è quello che volevo dire
qui e quelli possono essere molto diversi
quelli possono essere cose molto diverse così
un modo per avvicinarsi a questo sarebbe
scegliere un runtime forse è solo questo
una JVM a cui stiamo solo utilizzando una corsa generica
un runtime specifico e attenersi a quello
e poi costruiremo il nostro dominio principale
usare Java forse è una specie di
Approccio Divi abbiamo questo comune
linguaggio che se quello che abbiamo stabilito
e tutti usano le stesse librerie
e questa è una sorta di conoscenza fondamentale di
Non so che applicazione di fatturazione
e un dominio di fatturazione e quindi abbiamo a
scenario specifico in cui potremmo essere filo
questo insieme per uno scenario particolare
e puoi vedere che c’è qualcosa
software nel livello superiore che è questo
XML tipo di cosa ora non sto usando XML
come linguaggio di programmazione eccomi qui
dicendo che estrai parti del tuo
programma invece di metterli in Java
li metti in un modulo software in
XML perché puoi modificarlo in fase di runtime
e si può effettivamente fare qualcosa che
potrebbe essere tu sei una configurazione di primavera
o potrebbe essere probabilmente file di proprietà
o qualsiasi altra cosa e puoi accettare slide
varianti ora questo è interessante
DSL Conosco molti progetti che facciamo tutti
loro stessi ma li conosco anch’io
altro da altri clienti e altri
aziende in cui abbiamo utilizzato le ESL
lingue specifiche del dominio e ci sono
tutta la rabbia se sei se sei nel
Il mondo di Eclipse che stai costruendo a
DSL utilizzando un EMF il prossimo testo e tutto
quelle strutture è assolutamente
affascinante per me che è più facile
ottenere una DSL in un progetto che è stato
costruito utilizzando EMF rispetto a un diverso
linguaggio di programmazione che non ho mai capito
perché è così perché in realtà
Sto usando il linguaggio che ho inventato
e ti sto dicendo che è meglio di
usando uno che ha inventato qualcun altro
anche se quell’altra lingua ha un
mucchio di libri e persone e
conferenze e tanto carbone e tutto
che ora sono di nuovo un mix che sto facendo
Sto mescolando le cose qui ovviamente
si spera che il linguaggio specifico del dominio
veramente specifico del dominio ma spesso lo è
non spesso finiamo per costruire la roba
in quei dsls
che dobbiamo rendere le cose configurabili
per renderli software che se li avessimo costruiti
loro nel nostro nelle nostre lingue statiche
di seguito e questo potrebbe benissimo essere
qualcosa di diverso che potresti avere
j ruby o qualsiasi altra lingua JVM dinamica
e lo stesso vale forse per avere
una miscela di c-sharp e vb.net o
qualunque diritto tu possa avere diverso
lingue nel tuo ambiente
presentalo e penso che sia molto
cosa molto interessante quando guardi
a progetti complessi trovi sempre
questo trovi sempre quelle cose
dove eri si aggiunge questa dinamica questi
aspetti dinamici perché ne hai bisogno
nella vita reale hai bisogno di avere qualcosa
dinamico mi porta ad un’altra citazione
posso vedere che sono un grande fan delle citazioni che è
da questo ragazzo chiamato pieno di Greenspan
e c’è anche un verbo di questo verde
spanning così divertito ha usato la chiarezza comune
è l’esempio ma non è necessariamente
legato a ciò l’ idea è che se tu
avere un sistema sufficientemente complesso cosa
hai intenzione di fare è che stai andando a
costruire una programmabilità
in esso si sta andando a costruire qualcosa
quello che in realtà può agire come a
linguaggio di programmazione e ho visto
numerose occasioni in cui qualcuno
iniziato con un linguaggio piccolo forse solo
qualcosa per impostare le variabili proprio questo è
questo è sei questo è cinque questo è
dieci e poi loro scoprono oh I
potrebbe usare una dichiarazione if qui adesso
facciamo un ciclo okay ci stiamo arrivando
molto vicino ora abbiamo la modularità
e abbiamo subroutine ora che abbiamo
creato il nostro linguaggio di programmazione
semplicemente perché abbiamo bisogno di qualcosa che sia
disponibile per noi in fase di esecuzione e io sono
chiedendo cosa sappiamo noi sviluppatori
che gli sviluppatori di meno questi
le lingue no e ne voglio un po ‘in fretta
una critica che sento molto è che quelli
le lingue non stanno andando bene
Abbastanza giusto abbiamo bisogno di scrivere il nostro codice
in un linguaggio che funziona bene io
non è possibile creare un sistema che ridimensiona e
che esegue e in un linguaggio giocattolo ma
quello che finiamo è che abbiamo il nostro
linguaggi statici fantasiosi e poi noi
crea le nostre piccole implementazioni
e lo facciamo molto male in generale
perché non siamo designer di lingue
alcune persone in questa stanza lo accettano
accettalo in modo che punti morbidi e difficili suggeriscano
lingue diverse che hai
diversi aspetti nel tuo sistema e
quelli con cui potrebbe essere meglio servito erano
diverso con lingue diverse
avvicinarsi alla risposta andiamo
con il numero sei il numero sei è l’idea
che in un sistema distribuito che ha un
il linguaggio di programmazione singolo diventa meno
importante credo fermamente che io
credo che ci fosse un punto nel tempo in cui
abbiamo avuto l’idea che la standardizzazione del
linguaggio di programmazione ha fatto parte del
strategia di architettura aziendale giusta
usiamo semplicemente useremo EJB ovunque e
tutti saranno felici e persone
ho scoperto che anche se hai usato EJB
ovunque
non è possibile ottenere il server delle applicazioni da
un fornitore per lavorare con l’ applicazione
da un altro pozzo in realtà non potevi
persino ottenere due versioni della stessa app
server dello stesso fornitore con cui parlare
l’un l’altro così alla fine siamo finiti
con qualcosa di diverso penso se noi
guarda in un sistema distribuito qualcosa
questo è in qualche modo collegato, quindi dobbiamo
concentrarsi sulle connessioni tra
quei sistemi e ciò che è dentro è lontano
meno importanti di quanto pensiamo ma loro
può essere costruito utilizzando lingue diverse
spero che non mi importi
speriamo che sia vero per gli altri
decisioni tecnologiche così mi piacerebbe
usa uno di quei sistemi per usare forse a
nessun sequel datastore in un altro sistema a
utilizzare un database relazionale utilizzare ciò che è
meglio lì e penso che l’idea
idea l’ idea centrale che sto provando
attraverso è che se avete sistemi di
diverse dimensioni utilizzate diverse
strategie di modellizzazione giuste se
è una cosa molto piccola che puoi ottenere
con forse un singolo file se il sistema
cresce diventa più complicato che usi
diversi mezzi di modularizzazione
ad un certo punto nel tempo qualunque cosa sia
quelli sono forse numeri di Ruby in alcuni
nel momento in cui colpisci il confine dove
ha più senso di avere più di
una sola applicazione è la stessa in Java
anche io non so quanti di voi
avere una base di codice con più ho a
sistema singolo con una base di codice di più
di un milione di linee nessuno qui ce ne sono alcuni
persone mi dispiace davvero davvero per te
nessuno sceglie di farlo che nessuno vuole
avere un unico sistema con un milione
o cinque milioni o dieci milioni di righe
quello che vuoi avere qualcosa che è
modulare che ha cose diverse
perché quei bastardi che ne hanno cinque
milioni di linee sono totalmente
immutabile non si può fare bene no
totalmente ma davvero molto difficile da cambiare
di modernizzare per entrare nel prossimo
secolo così ancora una volta sembra come se fossi
suggerendo che non hai alcuna regola
Penso che dovresti avere un sacco di regole
quindi ho delle regole sul lato sinistro qui
che sono forse cross-system
regole architettoniche in cui decidi come
i tuoi sistemi parlano tra loro e
allora hai regole sul lato destro
quali sono forse che forse limitano il
numero di linguaggi di programmazione che tu
posso usare capisco che in un grande
organizzazione vuoi limitare il
numero di lingue a due o forse
tre o qualunque diritto ogni volta che il
si spera che il numero giusto non sia solo uno
perché penso che non è una buona idea
Non sto suggerendo di non farlo
standardizzare di nuovo quella roba che fa parte
del tipo di vendita di cosa sto provando
fare bene non è una buona idea da dire
persone che non dovrebbero essere standardizzate
perché tutti sanno che sta andando a
essere difficile trovare persone che vogliono lavorare
in un ambiente ma tutti usano
quello che in realtà mmm che i suoni
abbastanza interessante ma non penso
chiunque vorrebbe farlo così
l’idea di base che voglio passare qui è
che dovresti avere due liste a destra
la lista dovrebbe essere ciò che si imposta nella pietra
i prossimi dieci anni e uno è un insieme di
linee guida valide al momento e
quello può cambiare il prossimo anno in modo che a
il sistema da oggi può cambiare e può
parlare ancora con un sistema che sta usando
le linee guida modificate domani e noi
ne ho un esempio interessante
dove abbiamo un mucchio di molto modulari
architettura in cui abbiamo entrambi JRuby
e sistemi Java che comunicano
tramite HTTP restful un sacco di mio
tecnologie preferite in questo particolare
esempio e questo funziona davvero
beh è un ambiente davvero carino
perché siamo in grado di usare le persone che abbiamo
avere le competenze che abbiamo con diversi
tecnologie e abbiamo ancora un comune
architettura e un approccio comune I
pensa a questa idea che il modo moderno
di fare sistemi distribuiti ti dà
certa libertà è molto potente
destra mi interessa a condizione che
interfaccia e ottenere questo tipo di
disconnettersi dalla discussione linguistica
lasciatemi fare un altro esempio del perché
non hai un singolo sistema che deve
darti qualche XML basato sul database
perché non dovrebbe essere forse usando il
Strutture del database Oracle XML proprio come
a lungo come nessuno dall’esterno vede
questo perché non usare il modo più efficiente
e lo stesso vale per la programmazione
lingue linguistiche e molto altro
anche le cose sono rimaste una cosa
che è ovviamente il più importante
qualcuno ha sempre tutti sempre
dice qual è il popolo giusto così noi
abbiamo un sacco di cose tecniche che abbiamo
alcune discussioni architettoniche che abbiamo
somiglianze le differenze tra
linguaggi di programmazione ma ovviamente il
persone con cui effettivamente lavorare
quelle cose sono le più importanti
aspetto qui intorno e ci sono
ci sono cose interessanti come per
ad esempio le abilità che tu che tu
ho già detto questo prima delle abilità
che tu hai bisogno di imparare un nuovo
linguaggio di programmazione tutte le abilità in
quel nuovo linguaggio di programmazione potrebbe non esserlo
c’è già così devi imparare il
lingua, ma se si prende la compagnia aerea OTP
un esempio di Erlang la lingua
è di per sé la parte più semplice che penso sia
interamente possibile insegnare a qualcuno
Erlang durante un fine settimana non è un duro
linguaggio a tutti è un piccolo molto semplice
linguaggio che non ha molto
caratteristiche e una brutta sintassi ma è
facile da imparare e una volta che hai imparato
che non sai come programmare
Erlang perché quello che devi imparare se
si vuole costruire un sistema distribuito
sono le librerie tutte le cose che sono
ora ci sono quelle librerie che avresti
per impararli in qualsiasi ambiente giusto
se qui se fosse un altro ambiente
con un altro linguaggio di programmazione della
lo stesso sarebbe vero anche se è il tuo
ambiente standard ma devi
impara come usare quella roba è vera
per ogni ambiente non è a tempo
solo il linguaggio quindi penso che sia un
cosa interessante c’è anche un’altra
aspetto che è più di nuovo dal
dal lato politico delle cose a
argomento standard contro l’uso
diversi linguaggi di programmazione che tu
non sarà in grado di trovare persone nel
mercato che può aiutarti a scriverlo
questa è una preoccupazione valida, penso
a volte se lavori nell’altro modo
in giro conosco un sacco di persone che lo farebbero
inizia a lavorare con te immediatamente se
hai offerto loro un lavoro culturale perché
ad alcune persone piace lavorare con persone diverse
lingue e sono molto attratti da
aziende che provano qualcosa lì così
potrebbe essere la tua strategia di assunzione segreta per
fai esattamente che la comunità è molto
cosa importante penso che tu sia
quindi costruire determinati tipi di sistemi
la comunità può essere un fattore decisivo
perché hai scelto la comunità
ha la maggiore esperienza nella costruzione di questo
tipo di sistema e prende solo il
linguaggio di programmazione e le librerie
con esso giusto se tu se questo è questo
è la comunità che è davvero davvero
buone e forse operazioni di automazione
poi vai con quello forse è per quello
Python o Perl non ne sono del tutto sicuri
forse in questi giorni è anche il rubia no
sai forse se sei in web based
sistemi che leggi come i binari
comunità e l’indie e il
innovazione forse dovresti andare
con quello solo per quel motivo per il
quadro in contrasto con la lingua
forse questa è la batteria , dipende così
almeno la comunità è decisiva
Credo che il fattore e si dovrebbe prendere quel
in considerazione è necessario valutare il
pregiudizi che le persone hanno ragione
a volte sono giustificati a volte
non sono a volte è un semplice
questione di provare cose e vedere
è veramente lento come tutti
continua a dirmi è forse solo molto
facile da fare
questo tipo di cose con un diverso
la lingua e l’ esperienza interessante durano
settimana in cui sono stato aggiunto un cliente e noi
mostrato loro se sono molto
cliente conservatore e li abbiamo mostrati
un prototipo che abbiamo costruito usando
Java lato server e servizio su HTML
generazione e un po ‘di JavaScript
discretamente sotto gentilezza e uno di
i ragazzi hanno detto bene che abbiamo questo altro
sistema che qualcun altro ha costruito questo
è molto meglio lo fa
tutto sul client e io non sono un
grande fan di queste app a pagina singola così noi
parlato di questo e scoperto che
quello che era grande non era il fatto che fosse così
ha fatto tutto di un cliente ciò che era
grande era il fatto che avesse modo di fare
meno linee di codice e lui non aveva
quello perché ha fatto cose sul client
lo ha fatto perché è stato scritto in
JavaScript quindi la stessa applicazione in
JavaScript aveva circa un terzo di
linee di codice che sono le stesse di a
sistema scritto in Java
una volta che hai notato che inizi a chiedere
se è davvero una cosa ragionevole
fare bene , provare le cose e
dare un’occhiata a loro dopo che hai
valutato li aiuta molto
a superare quei pregiudizi a volte tu
hanno molte dipendenze dalle dipendenze
può essere può essere davvero tecnico che possono
anche essere in termini di persone che lo sono
attaccato alle cose giuste le persone dipendono
su certe cose qualcuno è un
master programmatore in linguaggio blob e
stai suggerendo di usare il linguaggio perché?
Saranno un novizio quindi chi
vuole passare dall’essere un esperto a
essere un novizio solo perché un po ‘casuale
tizio suggerisce una lingua diversa
meglio se dipendi da questo
linguaggio per farlo penso che sia un po ‘
I programmatori Java diranno di sì
sta parlando dei ragazzi COBOL forse
Sono a volte è molto frustrante
cosa questo può essere coinvolto entrambi
indicazioni di nuovo lo scenario da
pochi minuti fa, se tu se lo permettessi
codice di qualcuno in una lingua che odiano
saranno molto molto frustrati
sarà davvero difficile da fare
loro amano la lingua semplicemente lasciando
loro giocano con esso a volte funziona ma
se hanno davvero un forte forte
reazione alcune cose sono una questione di
opinione come se tu sei un fan di
lingue tipizzate staticamente alcune persone
sono molto difficili da convincere di qualsiasi cosa
altrimenti lo stesso è vero nell’altro modo
in giro così giusto così forse puoi
provare almeno una volta, ma se qualcuno ha fatta
la loro mente per sempre non prova a cambiare
quello e avere qualcuno usa qualcosa
nuovo potrebbe renderli freschi
negoziati, ma lo stesso vale nel
invertire anche se qualcuno davvero
vuole fare cose nuove e fantasiose e tu
non dargli la possibilità o la possibilità
per farlo diventeranno frustrati
perché devono usare la stessa roba
più e più volte così frustrazione e
la motivazione ovviamente è molto vicina
collegato potresti essere in grado di farlo
motivare moderatamente qualcuno perché
finalmente sono autorizzati a usarlo
fantasia nuova lingua per dimostrare quanto sia grande
questo è ciò che la lingua non è
importa davvero la quantità di energia
energia che puoi creare usando quello è
incredibile così come le solite persone contano di più
è noto come non molto sorpreso da vedere
quello e con quello ho un mio tutto il mio
sette pezzi elencati qui e concludo
e vorrei aprirmi per qualsiasi domanda
i commenti sono benvenuti e
disaccordi a qualcuno si
Giusto quindi penso che la domanda fosse cosa
l’effetto a lungo termine non lo è
troppo rischioso per scegliere una lingua dove tu
non so se sarà
lì in tre anni
assolutamente potrebbe essere troppo rischioso da fare
che non so che sei uno scenario
giusto se vuoi scegliere una lingua
che sta per essere lì da 10 anni
ora hai regole diverse allora se tu
se non importa, se sei se
sai dire che lo riscriveremo
in una lingua diversa, allora anche
Dipende da quello che l’ambiente di esecuzione è
con le librerie sono ciò che il
costo aggiuntivo sarebbe quello che il
dove usi esattamente il serbatoio per
tutto o solo per una piccola parte di
il sistema in cui alcune lingue sono state
lì per così tanto tempo che non penso
c’è il rischio che se ne vanno via
giusto per esempio um Ruby e Python e
Perl e poi Java sono tutte lingue
che sto pensando sono abbastanza al sicuro
scommetto, penso che siano anche Scala e chiusura
Probabilmente scommesse sicure in questi giorni perché
ne hanno abbastanza di una comunità
supportali e ne hanno abbastanza
gli utenti sono interessati a fare qualcuno
ma, ancora una volta, la tua valutazione del rischio potrebbe
essere diverso dal mio , forse quello
restringerà il numero netto di
lingue da cui puoi scegliere, ma lì
è sicuramente più di uno da fare
qualunque altra domanda si
così che è una domanda molto buona a volte
non sono le parti buone che io
di cui dovresti preoccuparti
perché rendono la pena usare il
linguaggio forse sono le parti cattive che
rendere la pena evitando che io personalmente
penso che ci siano sicuramente alcune aree
dove non la useresti in lingue
quindi non ho niente preparato per
che così per esempio non userei un
digitato dinamicamente più di uno scripting
linguaggio per scrivere un rendimento elevato
sistema operativo intendo che è un po ‘
ovvio, forse è forse che ho
una sorta di messa a fuoco ristretta e non a
davvero una buona risposta a questo perché la maggior parte
dei sistemi con cui sono coinvolto
sistemi basati sul web e in web-based
prestazioni dei sistemi della programmazione
la lingua è solo una molto piccola
cosa della prestazione generale nel
architettura quindi devi di solito no
preoccuparsi troppo di ciò è rischioso cosa
Sto dicendo qui ma di solito è quello
caso non ho una cosa particolare
ma è una grande cosa per seguire I
non ho una risposta che devo ammettere
che qualsiasi altra cosa va bene, allora grazie mille
per il tuo tempo hai una buona conferenza
il mio nome è Stefan tilaka Sono qui
per tenerti sveglio dopo pranzo, voglio
non parlare di una singola programmazione
linguaggio ma più di uno
linguaggio di programmazione più di uno
linguaggio di programmazione nella testa di a
sviluppatore singolo e più di uno
linguaggio di programmazione in un sistema che non sono
qui perché sono un designer di lingue
perché io non sono non sono qui per presentare
qualsiasi particolare linguaggio di programmazione
perché mi piacciono molte programmazioni
lingue mi piace pensare di essere qui
perché sono un utente di programmazione
lingue che mi piace esplorare nuove cose
piace provare nuove lingue e vedere
come sono diversi da quello che so
e sono anche molto spesso nell’I
molto spesso hanno il compito di vendere
le decisioni di vendita ai decisori di
vendere idee a loro in modo che girino
loro in una decisione quindi questo discorso è
per lo più sta per essere su alcuni un po ‘
cose tecniche alcune cose morbide e
sull’opportunità o meno di questa intera idea di
usando più di un linguaggio di programmazione
è buono o cattivo e io ho
sette tesi intorno a queste sette cose
ma ho raccolto mi piacerebbe volevo
per arrivare a 10 ma non ho potuto trovare
10 quindi è 7 il prossimo numero magico
che potrei scegliere così dovrai sopportarlo
con me con me per quelle sette cose
e variano molto dal livello
e dalla quantità di tempo che sono
andando a spendere con loro e come ho detto
alcuni di loro sono più tecnici e alcuni
di loro sono più morbidi quindi vediamo di farci
iniziare con il primo il primo che ho
pensare è uno che è molto ovvio se
lo sei se ne stai guardando
particolare linguaggio di programmazione con a
qualsiasi programmazione di programmazione particolare
linguaggio che è come e perché è questo
diverso da quello che so non sono tutti
lingue che usiamo uguali in ogni caso e di
Certo che hanno ragione così sono le lingue
uguale in un certo senso perché possiamo
con qualsiasi linguaggio ragionevole che possiamo fare
tutto ciò che possiamo fare con qualsiasi altro
linguaggio ragionevole ma non appena è
Completando Turing possiamo fare tutto
con esso ma non sono uguali quale è
la mia prima tesi se guardi il
numero di lingue che abbiamo
disponibile questa è solo una lista molto piccola
di cose che probabilmente concorderai lì
è una differenza abbastanza grande tra
assemblatore e cosa ho qui o
forse Haskell sono molto diversi
Se
nelle lingue posso scrivere bene non me ma
qualcuno che è capace in quelli
le lingue saranno probabilmente in grado di scrivere
qualsiasi programma per fare qualsiasi cosa in entrambi
quelle lingue ma non lo sarà
lo stesso programma e io non voglio dire che
interessato al numero di caratteri
o il numero di righe dovrà
digitare sarà diverso
programma perché in una certa misura il
linguaggio di programmazione usiamo influenze
ciò che possiamo fare questo è noto come il
ipotesi di ipotesi di Sapir-Whorf che
è qualcosa dalla linguistica, quindi questi
due persone superiori e Worf si avvicinò
con l’idea che il linguaggio influenza
il pensiero scrive il vocabolario
hai gli schemi che hai il
idiomi che sono disponibili per te
influenza ciò che puoi pensare scrivi il
cosa interessante è quella in linguistica
questo è stato ufficialmente smentito giusto
così i linguisti non ci credono più
ma penso che sia molto vero in
linguaggi di programmazione penso che ci sia un
enorme influenza sul linguaggio di programmazione
ha su cosa possiamo effettivamente pensare se
conosciamo solo una singola programmazione
linguaggio penso che siamo molto limitati
questa è una cosa che voglio arrivare
da oggi c’è una bella idea
esperimento fatto da un ragazzo chiamato Paul
grayham che alcuni di voi potrebbero sapere quale
è il linguaggio blob quanti di voi
conosci il linguaggio blob qui qualcuno va bene
quindi lascia che ti spieghi questo molto brevemente
è un linguaggio che è quello che è stato
chiamato blob per non offendere nessuno giusto
quindi questa potrebbe essere la tua lingua preferita
presume che ogni sviluppatore abbia un
lingua preferita è la lingua che
ti piace usare e tu sei molto
è familiare con quello che usi
nel tuo lavoro quotidiano quello che tu
non devo pensare a ciò che è giusto e questo
la lingua si trova in questo continuum
a un certo livello di complessità o a
un certo livello di numero di funzionalità che
ha ma questa è questa è la tua lingua
ha certe caratteristiche e non lo è
avere altri perché ce ne sono altri
i linguaggi di programmazione ci possono essere
un linguaggio di programmazione che ha meno
funzionalità ad esempio la tua lingua potrebbe
essere orientato agli oggetti in questa lingua X
non è non ha oggetti e lì
sono altre lingue che sono oltre
la destra questa lingua per esempio
potrebbe avere una caratteristica del tuo Lang che
non ha per esempio i programmatori
il diritto di lambda potrebbe avere qualcosa di simile
non hai adesso e se lo sei
il tipico programmatore che presumo
non sei perché stai frequentando a
conferenza come questa ma supponiamo
Allora eri il tipico programmatore
la tua opinione immediata di quelli
le lingue andranno bene giù
ecco qualcosa che è irrimediabilmente
limitato come dovrei lavorare con
quello giusto la mia lingua è molto di più
potente ho tutte quelle cose e
se dovessi lavorare con quella lingua io
costruirebbe tutta quella roba per me
esempio orientamento all’oggetto vorrei
perché è così che penso proprio così
Aggiungerò l’ orientamento dell’oggetto al
linguaggio che non ce l’ha
le persone lo hanno fatto per esempio con C
e ovviamente tutto sull’altro
il lato è pieno di caratteristiche che nessuno
Voglio dire, intendo chi vorrebbe chi
bisogno che perché non ne hanno bisogno
proprio qui nel vostro giorno per giorno di lavoro
non hai bisogno di quella funzione in modo che tu tenda a
visualizza le lingue che hanno ulteriori
cose che sono la tua lingua prima
complesso inutile gonfio e pieno di
roba accademica che nessuno vuole e
lingue che non ne hanno meno
caratteristiche come inutili che è la chiave ma
l’idea chiave non ho intenzione di leggere tutto
di questo a te puoi leggerlo nel suo
post sul blog e penso che ci sia un sacco di
a dire il vero penso che abbiamo un
mentalità diversa a seconda del
linguaggio di programmazione usiamo un C
programmatore cose diversamente da a
Programmatore di Ruby o un programmatore Java di
Certo che stanno entrambi costruendo programmi
in una programmazione completa di turing
linguaggio quindi un certo punto nel tempo e alcuni
livello questo sarà uguale ma è
non è lo stesso approccio
le lingue differiscono molto dalle lingue diverse
in molti aspetti diversi proprio lì
sono molte cose che possono differire da
linguaggio per parlare i paradigmi in
supporto è un linguaggio funzionale è a
linguaggio procedurale ce l’ha
supporto all’orientamento all’oggetto lo fa
supporto programmazione generica sono i
verbosità richiesta per esprimere qualcosa
giusto quante cose devo scrivere
che devo precisare tutto il
tipi o altro nella paura o ci sono
forse nessun tipo statico, quindi il tipo
il sistema è molto diverso
fattore di differenziazione tra diversi
linguaggi di programmazione quindi la quantità di
Cerimonia, credo che Neil abbia chiamato questo
termine che andremo a vedere alcuni esempi di
che quanto quanto caldaia caldaia
giocare devo scrivere per ottenere qualcosa
lavorare bene è l’altro
aspetto abbiamo la velocità sia il
la velocità di sviluppo così come il runtime
velocità di quello che stiamo mentre stiamo costruendo
e quando lo stiamo facendo bene
questa è una grande differenza tra
le lingue e spesso queste sono
inversamente correlato quindi se è qualcosa
che consente di creare qualcosa di più veloce è
potrebbe non funzionare così velocemente e se è difficile
per fare allora forse il tuo programma sarà
più veloce anche se arriveremo a quello che sono
non del tutto sicuro sono d’accordo con questo
ipotesi allora avremo solo un molto
curva di apprendimento diversa a destra forse
molto ripida forse non è un problema a tutti di
impara la lingua se ne conosci un’altra
va bene così la stabilità può essere a
differenza la lingua può cambiare
perché è stato sviluppato molto attivamente a
il rilascio di due punti nove potrebbe essere molto
diverso da un rilascio di due punti otto
in alcune lingue proprio così non può
capita che ci sia un sacco di cose
differenza in quelle lingue e alcune
di noi non ne siamo consapevoli, quindi non lo so
sapere quanti in questo pubblico sono Java
programmatori e alzi la mano se
stai programmando Java, quindi lo farei
aspetto che sia la maggioranza quindi non mi sento
um offese se metto su questa diapositiva di a
ragazzo che è una citazione da un ragazzo chiamato
Steve Agee
dove come un grande post sul blog ha chiamato il
regno di nomi e ha fatto ha fatto
questa osservazione che penso sia
almeno parzialmente vero, pensa in modo specifico
il mondo java ha la tendenza a vedere
bene di nuovo forse non questo pubblico ma
i molti sviluppatori di java tendono a farlo
vedere java è l’unica lingua l’unica
cosa che non sai nemmeno altro
e non è neppure a conoscenza di molti altri
idee che sono lì intorno e lasciami
mostrarti con un esempio quanto sono diversi
questo è questo è ispirato da a
video un discorso che ola beanie ha fatto questo è
un po ‘di codice java non riesco a fare il
gioco in questo momento, ma forse puoi dirmelo
quello che fa qualcuno sa cosa
questo fa così sto ancora contando cosa
questo fa perché ti ci vuole così
a lungo per scoprire cosa significa questo
forse sei tutto timido e non vuoi
gridare con noi dispiace troppo
parole che è un ottimo commento lì
sono così tante parole su quella diapositiva a destra
ordina ciò che per lunghezza ordina il
stringhe per lunghezze a destra e cosa fa
lo fa con loro
stampali fuori separati da virgola
rispondi che è esattamente ciò che questo codice
io sono io non sono io non sono un attualmente sono
non un programmatore Java quindi forse c’è un
modo più efficiente per scrivere questo ma io
non pensare che possa ottenere di più
efficiente di quello ora paragonarlo a
il codice Ruby equivalente è molto
meno parole giuste molto meno parole,
dice che qui c’è una lista che li ordina
lunghezza e unirli a loro con una virgola ora di
Naturalmente questo è un po ‘di barare a destra
Non sto usando lo stesso livello di
librerie che ho in entrambe le lingue
è diverso in Java in Ruby che potrei
costruisco facilmente un metodo di join su
alcune utility class e forse import make
è statico in modo che io possa importarlo in rosso
e restringi il mio codice java
più corto ma mostra che c’è un
differenza nelle lingue, sono io
nemmeno a discutere che una lingua sia
meglio dell’altro perché sono
la cosa principale che voglio discutere è quella
sono diversi ma non è la stessa cosa
cosa dare un’occhiata ad un altro esempio di
Codice rubino questo è dalla documentazione
dalla struttura delle rotaie che è ordinata
di un framework Java EE sì gratuito
Ruby almeno è una pila completa
quadro ha un sacco di cose in esso
e una delle cose che
ha un modo di esprimere le relazioni
tra entità così che cosa stai vedendo
qui sembra quasi un DSL proprio così
potresti chiamarlo potremmo ragionevolmente
chiamalo DSL interno perché lo è
molto leggibile e molto vicino al
dominio giusto dice che un progetto
appartiene al nostro portafoglio e ne ha uno
project manager e appartiene a uno o
molte categorie che è leggibile e
questo è quello che è qualcosa che Ruby
rende molto facile farlo è proprio così
molto facile da costruire interno vs else in
Ruby di nuovo puoi costruire qualcosa
simile in altre lingue che puoi costruire
qualcosa di simile in Java o C sharp ma
ancora una volta si tratta di è una è una parte della
la cultura fa parte del modo in cui i programmi sono
costruito in Ruby che ci permette di fare questo
e ci sono altri lotti e molto altro ancora
esempi di ciò è un nodo.js
Programma JavaScript che è un HTTP completo
file server no è solo completo
server ed è pieno non ci sto neanche andando
per spiegare tutto ciò che è su questo
Scorri ma puoi vedere quei meccanismi
che sono disponibili in JavaScript
essere usato come funzioni anonime
giusto stiamo passando un anonimo
funzione alla funzione che crea a
server e quella funzione anonima è
responsabile della gestione delle richieste e
risposte giuste così
questo è quello che è qualcosa
questo è ciò che JavaScript rende molto facile
orientato al callback orientato agli eventi
programmazione non sto dicendo che se questo
se tu se hai mille righe di
ciò che questo non sarà un
pasticcio completo possiamo discuterne
separatamente ma è ancora una volta è a
diversi set di opzioni che si hanno
disponibile un modo diverso di esprimere
i tuoi pensieri dipendono dal
linguaggio di programmazione posso continuare con
questo per molto tempo questo è un
l’esempio più freddo è un grep completo
riga di comando sostituita bene non a
completo ma in qualche modo di un comando di grep
sostituzione della linea giusta e si può anche
anche se non puoi vedere tutti i dettagli
e anche se è un po ‘difficile da aspettarsi
che sei in grado di seguire tutto ciò
se non hai mai visto la chiusura che è come
hai indovinato l’ elenco in esecuzione sulla JVM
puoi vederlo in alcune cose alcune
aree il diverso modo di avvicinarsi
roba così per esempio abbiamo qualcosa
di lì una funzione chiamata stampa
partite che ora prendiamo in mano
i file che si applicano e si uniscono e mappano
quelli giusti sono funzioni di ordine superiore
disponibile in una programmazione funzionale
linguaggio che ti permette ed essere nel
l’ esempio della mappa per mappare una funzione
su una lista giusta è una cosa a
idioma comune in una programmazione funzionale
linguaggio e mi porta a scrivere questo
problema in un modo molto diverso
diversamente diverso da quello che io cosa
fare in una lingua non funzionale non c’è
più alla vita che agli oggetti quando siamo
usando una programmazione orientata agli oggetti
lingua del programma di flusso principale
linguaggio che siamo abituati ad avere questo
astrazione destra stiamo costruendo il
tipo linguaggio costruzione classi classe e
tipi che è la cosa che costruiamo
destra costruiamo di più e sempre di più
loro perché questa è la principale astrazione
abbiamo perché se non abbiamo
qualcosa dobbiamo costruirlo usando il
strutture che abbiamo così per esempio
se non abbiamo una chiusura
useremo una classe e useremo un modello per
per farlo lo darò ancora un po ‘
chiusura perché voglio che tu ti abitui
a quello per vederlo perché amo
il linguaggio su cui tanto è giusto pensare
come si farebbe come ti tappi di legno
il modo in cui lavoreresti con i dati
strutture in un linguaggio di programmazione
come Java diciamo che voglio fare a
piccola biblioteca che si occupa di punti
allora questo è probabilmente quello che vorrei iniziare
facendo bene inizierò se è stato un
classe molto piccola che incapsula questo
single il singolo tipo il singolo
oggetto di informazione un punto mentre in a
linguaggio come chiusura vorrei
qualcosa di simile ora di nuovo questo è un
confronto e sistema totalmente ingiusti
è perché non sta facendo questo
la stessa cosa che è quello che sto ricevendo
a destra non sta facendo la stessa cosa
perché usando questa lingua diversa
Faresti le cose diversamente questo
in altre lingue si potrebbe semplicemente riutilizzare un
la struttura dei dati esistenti è persistente
la struttura dei dati in questo caso è a
vettore giusto quindi creeremo un vettore
con due elementi per rappresentare un punto
se lo facciamo otteniamo alcuni benefici
perché queste strutture dati in questo
la chiusura della lingua d’esempio è certa
avere alcuni tratti che sono preziosi per
la maggior parte dei programmi sono immutabili
riusabili vedremo che sono
compatibile perché questo è solo un
La struttura dati generica che sto usando
questo per incapsulare le loro informazioni così
invece di come lo farei nel
Mondo Java che aggiunge un metodo in questo caso
da calcolare sono una distanza dal
classe che non ho mai capito
perché appartiene lì, ma qualunque cosa sia
probabilmente dove lo avresti messo nel tuo Java
programma nella variante di chiusura
avresti lo stesso lo stesso codice
stessa logica ovviamente perché è giusta
giusto, ma lo metterei in un
posto diverso sarebbe in a
funzione in questo momento può questa funzione
calcolare la distanza tra due
punti e ora penso che lo siano
cose interessanti ho questi dati
approccio strutturale e ora posso fare
roba che la chiusura può fare con i dati
strutture perché queste sono generiche
le funzioni generiche funzionano con questa roba
giusto quindi ho qualcosa in cultura
questa è una cosa molto carina che è
una sequenza infinita è un infinito
sequenza in questo caso un infinito
sequenza sequenziale di numeri casuali
giusto così forse se voglio scrivere un
funzione che mi consente di creare
punti casuali che ora userò per costruire
coppie di punti casuali ora questo è un
elenco infinito di punti casuali e
Ne prenderò 10 da adesso ne ho 10
punti Ho appena costruito punti usando il
funzioni generiche disponibili in
la libreria standard per me e ancora I
posso andare avanti per ore circa il
cosa qui questo è solo un po ‘così
esempio forzato, ho un numero
del numero di punti che voglio calcolare
la circonferenza circonferenziale del
poligono che è lì quindi ho tutto
quei punti e ora io
di una lista infinita di ciò che ripeto
loro infinitamente più e più volte
questo è ciò che fa questa funzione e poi
Sposto quell’unico posto al al
giusto e poi ho questi e poi io
costruisci punti da questo e poi ho incontrato
la distanza funks funziona su tutto
di quelle cose una dopo l’altra e
quindi alla fine riassumo ciò che è
qualcosa che posso fare perché questo è
il modo in cui penso in questa lingua non lo sono
cercando di vendere più vicino, anche se
è la lingua migliore che conosco adesso
non provando a farlo quello che sto cercando di fare
sottolinea che è come se stessi programmando
in chiusura mi avvicino ai problemi in a
diverso modo giusto è un modo diverso
di programmazione rispetto a quello che usi
che sostiene la mia mia teoria che quelli
le lingue non sono uguali saltiamo sopra
che mi permetta di evidenziare un altro aspetto
di questa cosa generica del culo che è se io
avere qualcosa di simile qui questo è un
mappa di chiusura ancora usando questo come un
esempio posso accedere agli elementi in
quella mappa molto facilmente così questo è il modo
Vorrei incapsulare un comp più complesso
struttura dei dati e chiusura non lo farei
creare un tipo per questo non lo farei
creare una classe mi piacerebbe semplicemente usare il
strutture dati generiche per fare ciò che
alla fine significa che posso fare solo
ripassa quello a cui posso accedere
tali elenchi in modo molto generico
è un po ‘come solo accoppiare me stesso
a una piccola parte della struttura dei dati
che cambia di nuovo la semantica del mio
programma è quasi come se questi dati
struttura assomiglia a questa roba sul
giusto qualcuno sa di cosa si tratta
giusto, è giusto JSON, quindi ce ne sono due
funzioni e chiusure che mi permettono di
vai da una mappa a Jason da Jason a a
mappa e di nuovo è eccellente
esempio di qualcosa che è davvero
diverso in diverse programmazioni
lingue se io se devo scrivere a
servizio che consuma o produce JSON a
linguaggio come questo e ce ne sono molti
altri la sedia questa caratteristica di
avere dati generici facilmente accessibili
strutture è estremamente facile da lavorare
con
mentre trovo nel dolore totale in a
linguaggio tipizzato staticamente con cui lavorare
qualcosa come JSON perché il
il modo idiomatico di avvicinarsi sarebbe
per generare codice che ha classi che
mappare le cose che sono nella jason
Mappa destra in modo ogni volta che cambio il
struttura del jason che dovrò
cambia la struttura della classe che ho impostato
ora so che non devo di nuovo no
dicendo che non è possibile
fare tutto in ogni lingua che sono
dicendo che non è il default, non il
modo standard di fare le cose, quindi questo è un
grande differenza tra un maggiore
differenza tra le lingue inclini che
Volevo evidenziare e penso che sia
è solo un segno che potrebbe
essere più importante di quanto si pensi che cosa
il linguaggio di programmazione che usi può discutere
quei modelli che progettano i nostri modelli
odore di design giusto così tanti di voi io
Immagino vedrà che in questo libro si tratta di un
E ‘un si tratta di un molto molto noto
libro vorrei averlo scritto
bestseller perché è bello scrivere a
best-seller in questo settore quasi
non succede mai ma anche se lo è
grave è stato un libro molto influente
um puoi argomentare che i pattern sono a
debolezza e un ragazzo del Perl
la comunità fa quello dove potrebbe avere
è stato seduto in questo post che sostiene
se fossero stati disegnati modelli di design
inventò nel 1972 uno dei design
i modelli sarebbero stati subroutine
perché nel 1972 i linguaggi di programmazione
non necessariamente ho non sono sicuro
sulla mia storia qui ma non l’ho fatto
necessariamente hanno subroutine integrate
forse il 1965 qualunque sia un modo per farlo
quello sarebbe descrivere questo come a
modello giusto per inserire alcune variabili
la pila o alcuni registri che hai inserito
un indirizzo di ritorno di quello che chiamate a
funzione e prenderà il
parametri e farà qualcosa e
si tornerà al l’indirizzo di ritorno I
significa che è uno schema giusto noi non abbiamo mai
accetterebbe la lingua richiesta
noi per farlo davvero, ma accettiamo
lingue che ci richiedono di codificare lotti
di altri modelli comuni
qual è la ragione per cui stiamo accettando che
c’è un vecchio documento di Peter Norvig
chi è ora penso che la testa della ricerca
ricerca o qualcosa su Google berry o
ha dato un’occhiata al libro e descritto
come sono mappati i modelli del libro
caratteristiche di dinamica e funzionale
di nuovo i linguaggi di programmazione sono un grande
fan di linguaggi dinamici e funzionali
lingue, ma è ancora una volta questo modello
questa idea si traduce in due
lingue giuste se c’è qualcosa
che potete vedere voi stessi facendo più e
più volte forse è una buona idea
pensa se potrebbe essere o meno
una parte del tuo del tuo che dovrebbe essere
parte del tuo linguaggio di programmazione e
forse ce n’è uno diverso
questo diverso
ora prometto in astratto di un discorso
che ho dato alcuni esempi così dentro
tra tutte le mie cose teoriche
alcuni esempi lanciati e questo è
il primo quindi penso sia un bene
caso che mostri chi e quando e dove
potrebbe essere in grado di trarre profitto da diversi
lingue quindi questo è un progetto che abbiamo fatto
dove ha effettivamente avuto la modellazione
informazioni esportate da uno strumento caso
e volevo importarlo in un
caso diverso per lasciare la prima cosa
prodotto xmi e l’ultimo capo di
java se non chiedi non farlo non farlo
fai progetti come questo, ma se tu
dovevo questa era una cosa interessante
il ragazzo che ha costruito quel progetto ha preso il
approccio di fare l’interessante
riempire la trasformazione del modello
trasformazione in Lisp perché è
perfetto per questo è un caso d’uso perfetto
ma naturalmente avrebbe potuto costruirlo
anche in Java ha scelto di fare l’ XML
analizzando la struttura dei dati alla base
normalizzazione della struttura dei dati in
Java e poi consegnarlo a un Java
basato Lisp non è stato coltivato così bene che
è stato un po ‘ indietro e quindi produrre
Qualcosa che è che viene poi letta da
Programma Java per usare l’API Java così tu
avere lingue diverse con differenti
punti di forza e dovresti essere in grado di scegliere
quello che ha senso per te
Detto tutto ciò ci rende Io sono molto
convinto che i linguaggi di programmazione
fare la differenza, ma dipende da cosa
livello che stai guardando quindi se qualcuno
ha l’ argomento che le lingue no
importa che io abbia un punto
a seconda di cosa stiamo parlando
quindi se stai guardando il
tutta una serie di cose che si deve
guarda ad esempio se costruisci un
app web moderna quindi ovviamente il
il linguaggio di programmazione è solo un piccolo
cosa va bene e sono d’accordo che
non dovrebbe essere non dovrebbe essere il più
Decisione importante che lo hai fatto
l’unica cosa su cui ti concentri bene
quindi da questa prospettiva tu guardi
a tutto il sottotitolo il tutto
sistema o sottosistema o il tutto
l’architettura forse non è la lingua
questo è importante ma sono ancora molto
diverso e penso che importi molto
ora è tutto abbastanza teorico
abbiamo differenze tra le lingue
e questo è interessante che potremmo forse
scegli sempre la lingua migliore per a
caso particolare, naturalmente, possiamo aver ragione
perché la lingua ha un ecosistema
circondandolo e l’ecosistema è
quasi altrettanto importante di tutto il tecnico
caratteristiche di quel particolare linguaggio
giusto e quegli ecosistemi comprendono a
molte cose diverse quindi abbiamo un
ambiente di sviluppo
se sei abituato allo sviluppo
ambienti disponibili in un ecosistema
è molto difficile andare in un altro
ecosistema che ha un’idea diversa di
che ambiente di sviluppo in realtà
è che potresti essere una sorpresa per te, ma
molte persone pensano che Vi sia l’atto come un
ottimo ambiente di sviluppo Emacs
è un eccellente ambiente di sviluppo
Conosco pochissimi programmatori Java che usano
Emacs come loro IDE penso di sapere cosa e
è strano ma comunque lo sviluppo è
solo una parte come le nostre librerie
stai usando bene stai usando un sacco di
biblioteche e ti semplificano la vita
tutti sarebbero d’accordo che lo farebbe
sarebbe d’accordo con questo, avendo un
un ampio set di librerie è molto
cosa importante e non sono facili
condiviso se si salta tra ecosistemi
giusto hanno API e s differenti
approcci diversi e diversi
gli ecosistemi hanno diversi punti di forza in
i tipi di librerie che forniscono
alcuni di loro non hanno quasi nessuna biblioteca
il che è un peccato, tu hai diversi
ambienti di runtime che possono portare
la propria VM possono lavorare con a
diverso VM giusto abbiamo un diverso
comunità di comunità e cultura penso
sono differenze sottostimate tra
i linguaggi di programmazione sono enormi
differenza tra la comunità Perl
e la comunità Python nel Ruby
quelli della comunità sono tutti dinamicamente
credo di aver digitato ancora dinamicamente
non ero sicuro dopo quell’ultimo discorso ma
lingue tipicamente dinamicamente tipizzate
che alcune persone amano chiamare lo scripting
lingue che condividono molto
caratteristiche che tutti hanno supporto
per l’orientamento all’oggetto sono tutti molto
velocemente sono tutti molto utilizzabili molto
pragmatico ma le comunità sono molto
molto diverso quindi è davvero un forte
forte differenza tra l’approccio
ci vai, quindi devi essere sicuro
lo prendi in considerazione quando tu
decidere quale linguaggio di programmazione o
i linguaggi di programmazione da usare adesso
ecco un cattivo esempio che è anche un
esempio di progetto un grande progetto bancario
che abbiamo fatto e ovviamente non era uno
dei nostri dipendenti che hanno incasinato questo
qualcun altro
naturalmente chi era un grande programmatore
incidente un programmatore sorprendente e un
fan a mezza scala e mi piace Haskell the
linguaggio non lo capisco ma io
come se fosse così io non sono io non oppongo esso
tutto a qualcuno che usa Haskell ma questo
ragazzo ha usato Haskell e solo lui ha usato
Haskell e una squadra di 15 persone e lui
ha usato Haskell per costruire esterni vs ELL
quella
in pratica ha creato nuovi linguaggi e
potresti usare quella lingua per creare
qualcosa che è stato salvato in binario e
quindi letto dalla libreria Java da Java
programma e ha creato un oleodotto dove
roba era da Excel convogliato da più
fasi di strumenti best-of-breed da creare
qualcosa che era un DSL interno
non è stato analizzato con Haskell e creato
roba binario che sarebbe il programma Java
leggere che era un disordine irraggiungibile in
questo particolare contesto potrebbe avere
stato grattato se fosse stato solo lui
perché era assolutamente in grado di lavorare
sia in Haskell che in Java
ecosistema bene non sono del tutto sicuro di lui
è stato in grado di lavorare nell’ecosistema Java
ma sicuramente l’Haskell, ma così è
non è una buona idea che devi prenderlo
in considerazione e se nessuno nel
progetto vuole usare altro ma
questo particolare linguaggio di programmazione
li ha convinti prima di te
introdurlo non farlo da solo
perché ti odieranno, posso farlo
promettere che
quindi nessuna lingua è un’isola giusta a
il linguaggio ha un sacco di cose che arrivano
con esso ed è necessario tenerne
conto pure che ho detto che penso sia
cambiando un po ‘così abbiamo quelli
macchine virtuali multi-lingua quelle
piattaforme multi-lingua scrivono net di base
e la JVM che ci dà qualche modo
riutilizzare parti del nostro ecosistema
non tutte le parti di esso hanno ragione
molte lingue diverse in esecuzione
dotnet sul runtime.net che ora abbiamo
molte lingue in esecuzione su JVM
di nuovo sta migliorando tutto il tempo
fortunatamente l’ oracolo non ha fermato questo
quindi abbiamo un sacco di supporto per
diversi tipi di lingue lo faranno
solo migliorare in futuro e se tu
guarda cosa può piacere a Charles Nutter
fai in questi giorni a un target da cui JVM
JRuby è davvero impressionante
creare un codice davvero molto efficiente
perché il runtime è stato esteso a
supportare le cose che possono usare per fare
in modo molto efficiente, quindi se tu
guarda quelle cose che ho menzionato
puoi vedere che almeno alcuni di loro
non sono tanto un problema come loro
erano prima così alcuni di loro sono
indirizzato da questo multi-lingua
tipo di cose almeno le librerie e
ambiente di runtime forse a volte anche
l’ ambiente di sviluppo anche se lo sono
non sono troppo sicuro, intendo che sono consapevole di ciò
su questo almeno sotto JVM per ogni
libreria di scripting c’è una sorta di IDE
supporto in Eclipse e un’idea che sono
non sono sicuro che qualcuno che davvero
per usare quel linguaggio di programmazione lo faremo
in realtà lo usano, quindi la maggior parte di loro si attacca
con i loro editori esistenti che ho
un altro esempio di progetto penso che
dovrebbe essere il numero tre non il numero due
che è un era un semplice progetto JRuby
che funzionava sulla JVM e che era in grado di farlo
riutilizzare semplicemente alcune delle librerie Java
è stato un buon ambiente di runtime
ha anche avuto un buon effetto per noi che noi
sono stati in grado di utilizzare JRuby senza realmente
dire al cliente che non è interamente
vero, abbiamo detto loro che ci useremo
questo linguaggio elaborato ma tu non lo farai
non noterà perché verrà eseguito nel
esattamente lo stesso ambiente di avere tutti
le tue cose esistenti corrono così il fatto
che possiamo scegliere come target un runtime diverso
l’ambiente ci ha permesso di farlo in un
linguaggio di programmazione che abbiamo trovato è stato
più adatto per questo particolare
progetto e che è stata sicuramente una vittoria
ancora non lo credo
è successo a molto ma arriveremo a uno di
i miei principali motivi per cui non penso
questo è un punto importante ma almeno
l’ambiente di runtime e di cosa
ti porta in più scenari in cui tu
può effettivamente farlo mentre io ancora
trovare un problema per ottenere qualcosa di simile
Erlang in società perché questo
richiede un’installazione diversa
runtime diverso quindi devono
compilare qualcosa tutto ciò sembra strano
a persone che sono abituate a gestire JVM
roba basata proprio a volte che conta
quindi questi ambienti multi lingua
abilitare è la sua diversità che tu
non sarebbe in grado di sostenere o
che non saresti in grado di vendere
attraverso i clienti o verso o verso una decisione
decisori se non fosse per questi
per questi runtime ora torniamo a
Torniamo al titolo dell’altro
parlare che aveva qualcosa a che fare con
poliglotta ISM credo di averlo cambiato così
programmazione poliglotta penso che uno dei
le cose che le persone non riescono a fare è fare un
distinzione tra poliglotta poliglotta
programmatore e un poliglotta e poliglotta
programmando voglio dire quelli sono due
cose diverse un poliglotta
in generale è qualcuno che è in grado di
usa più lingue quando viene
dal mondo della lingua, quindi qualcuno che
parla dieci lingue fluentemente come a
poliglotta è la cosa più bella che mi piacerebbe
essere in grado di parlare tristemente dieci lingue
Io non posso a malapena a make make era
due quindi penso che sia una cosa del genere
dovremmo aspirare a Penso che
è una cosa molto ragionevole da fare
questo perché quando lo fai tu
imparare ad affrontare le cose con
viste diverse a destra una volta che hai usato un
lisp vedrete il codice in cui scrivete
Java a cui penserai diversamente
astrazioni diverse se sei come me
una volta che hai usato Lisp, torni a
Java e dì blah e prova a trovarne
libreria che vi permetterà di farlo
e poi decidi che non è un
buona idea perché non è un’idea Matic così
abbandonerai la libreria di nuovo qualunque cosa
ti aiuta a pensare a queste cose
potrebbe aiutarti a prendere una decisione
quando andare alla programmazione poliglotta
modello potrebbe anche aiutare a semplicemente
vedi bene questo è qualcosa in cui
dovremmo avere una libreria che segue
lo schema che abbiamo in questo
linguaggio particolare ma è anche
interessante per chiedere quale lingua si fa
usa bene così che molti di voi usano a
linguaggio di programmazione unico nel loro
lavoro quotidiano quindi penso che tu sia
indovinando quello che sto ottenendo a destra il
la domanda dovrebbe piuttosto essere quanti
lingue usi perché nessuno
nessuno usa almeno una lingua
nessun progetto significativo che io sia
consapevole di avere una moltitudine di
lingue diverse che usi correttamente
alcuni di loro forse non dovrebbero essere chiamati
lingue sono aperto alla discussione lì
ma ci sono molti modi per esprimere
roba e ce ne sono alcuni
Arturiano completa alcuni di loro non lo sono
ma ci sono diverse lingue giuste
almeno in ogni progetto web che conosco
avrai qualche codice JavaScript da qualche parte dentro
fondamentalmente ogni progetto Java che abbiamo
qualche cosa per aggiungere dinamiche lo faremo
arrivare a quello pure così abbiamo un sacco di
cose diverse che già abbiamo
usare sequel è praticamente in ogni progetto
e il monitoraggio è completo da
programma un po ‘di programmazione se lo combini
con una logica procedurale renderebbe
pl / sql quindi ovviamente hai qualcosa
che è completa quindi ci sono un sacco di
lingue diverse che già usi
e tutti pensano che va bene
quindi è allettante dire che useremo semplicemente
il miglior strumento per il lavoro, usiamolo
qualunque cosa abbia più senso e ottenere
sbarazzarsi di questa monocultura che credo
una brutta cosa anche se guardi il
definizione del dizionario da manuale originale
di ciò che una monocultura ha ragione a
monocultura significa che sei tu
tutto deve essere lo stesso che è
questo è il valore più importante
che hai tutto il resto
non importante fino a quando
è scritto in quella lingua
va tutto bene, penso sia brutto no
importa se stai parlando
database o ambienti di runtime
linguaggi di programmazione dei sistemi operativi
librerie di framework qualunque cosa io pensi
la monocultura è sempre una cosa molto rischiosa
e proprio non lo so
esemplificazione di questo è questo logo
qualcuno ricorda che qualcuno qui
abbastanza vecchio da aver programmato nel 1996 così
questo era il logo Java al 100%
Sole indietro al tempo usato per descrivere
un programma che hanno creato dove
Era un era lì per un motivo perché
hanno avuto questa questa causa questa lotta
era Microsoft sul fatto che lo fosse o no
ok per estendere java con proprietario
roba ma a qualcuno in tempo questo
divenne una sorta di sigillo di approvazione se
il mio programma è costruito in Java e in Java
solo allora è fantastico che è un po ‘
strano non vedo che come un valore I
non penso sia bello se qualcosa è
costruito in quel modo particolare giusto
questo non lo trovo particolarmente
convincente
soprattutto dal solito il tuo database
non è scritto in Java nemmeno oggi e
anche la JVM non è scritta in Java
quindi non ero davvero convinto che fosse così
una grande idea ma abbiamo ancora qualcosa
come quello nelle nostre menti specificamente in
il mondo Java si tende a credere che
ogni idea interessante è fantastica, se lo è
fatto in Java se c’è una grande piattaforma
quello risolverebbe tutti i miei bisogni che non posso
usalo perché non è Java è
perché diamo valore alla programmazione
linguaggio troppo credo che stiamo facendo
un errore qui e ho cercato di
Illustri che non è molto bello
illustrazione ma spero di ottenere il mio punto
in tutto se si guarda a questo al
stack tecnologico che stai usando quando
ti avvicini a un progetto hai un numero
di diversi aspetti un numero di
cose diverse che devi guardare
a destra e se cambio qualcosa se io
aggiungere funzionalità quindi potrebbe significare che io
devo aggiungere qualcosa alla biotecnologia
impilare a destra ho un diverso tipo di
tecnologia remota di tipo diverso di interfaccia utente
modellino un tipo di database diverso, quindi lo farò
aggiungere qualcosa terrò la lingua e
il tempo di esecuzione è lo stesso, ma aggiungerò
quadri e librerie e forse costruire
qualche codice giusto va bene, stiamo bene
con quello
siamo tutti felici utenti di Andry di
librerie
ma noi non facciamo la stessa cosa con il
lingue ora potrebbe essere che se aggiungo
una lingua che aumenterà questa volontà
questo farà sì che questo creerà qualcosa
le persone con carico cognitivo dovranno imparare
che le persone devono avere per acquisire
le competenze per lavorare con quella programmazione
linguaggio ma farlo potrebbe effettivamente
portare a qualcosa che è meno
complesso di quello che devi fare se tu
farlo usando solo librerie e
quadri in quel momento ho scoperto che essere
vero in un certo numero di progetti anche se lo è
è difficile arrivare a questo punto ma
il linguaggio di programmazione è solo uno dei
sintassi del programma ed è proprio così
solo una piccola parte di quello che sei
lavorando con il giusto tu pensi che se io
uso gli atti del linguaggio di programmazione e assumo
un nuovo un nuovo ragazzo la prossima settimana non possono
funziona con il mio sistema è ed è solo
sbagliato pensare che saranno in grado
di lavorare con il sistema perché
Devo comunque imparare tutte le altre cose
proprio loro possono conoscere la lingua che è
solo un aspetto, ma hanno ancora a
impara tutto il resto se c’è
ancora molto da imparare perché si deve
costruire tutto questo da soli, invece di
usarlo perché è costruito in
linguaggio allora ti farà del male
a lungo termine, quindi penso che le lingue abbiano un
punto dolce da qualche parte quindi ecco alcuni
i criteri di esempio non li prendono anche
seriamente giusto è solo un esempio di
dove brillano lingue diverse e io
penso che Java brilli principalmente perché ha
questa caratteristica di essere conosciuto da così tanti
persone e se sceglieresti Java tu
di solito non c’è bisogno di giustificare il fatto che
decisione che significa anche che forse tu
può concentrarsi su altre decisioni che tu
anche a cui interessa che ne richiedano alcuni
giustificazione quindi a volte Java è
perfetto lo stesso vale per un c-sharp
o altra lingua principale o altro
il linguaggio è quello che è il nostro blob
Erlang è un eccellente linguaggio eccellente
pensa che Steve farà un fulmine
parlo con Steve che i nazisti faranno a
un lampo nella pausa su Erlang
il curling è un sistema fantastico, se ne hai
per costruire un sistema distribuito che ha
per essere installato e funzionante per tutto il tempo in cui
vuoi sostituire le cose mentre è
correndo a destra hanno diverse versioni di
lo stesso codice lo stesso server in esecuzione
istanza è un ambiente fantastico
non è esattamente la lingua che è così
fantastico è solo un set completo di
lingua e le biblioteche e tutti loro
di loro sanno come è andato
cosa
per per la cultura tre decenni, come si può
indovinare è la lingua che mi piace molto io
penso che sia uno scopo generale
si dovrebbe usare per ogni cosa, se si
non farlo almeno consideralo una volta
hai complessi problemi algoritmici
e magari vuole utilizzare un multi-core
ambiente perché è fantastico perché
ti permette di scrivere multi-thread
programmi al lavoro non penso che sia così
questa è una cosa naturale e Ruby solo per
scegli uno potrebbe aggiungere groovy o Python o
Perl qualunque cosa si potrebbe scegliere che per
la sua produttività è così veloce
la lingua non produce il più veloce
programmi in esecuzione ma è una gioia per
l’uso che fa può farti molto
produttivo almeno per certe cose
e possiamo discutere che per lungo
tempo quindi secondo me nessuno usa un singolo
linguaggio di programmazione comunque proprio così
questa è un’illusione comunque così abbiamo
persone che usano più lingue multiple noi
dovrebbe essere aperto di più e io vado
per arrivarci di nuovo in pochi
minuti non sto suggerendo a tutti
sceglie la loro lingua preferita come loro
per favore ogni volta che proprio non lo fanno
non lo sto suggerendo perché lo sono
Sono troppo realistico per supporre che potrebbe
mai lavorare ma non deve esserlo
non deve essere una monocultura
perché è malsano
la mia prossima tesi riguarda la stabilità
intorno agli strati nell’applicazione questo era
che sia stato ispirato anche da da un
olivine II post un po ‘di tempo fa, anche se noi
ho scelto diversi livelli ma quello di base
l’idea è che se tu se guardi il tuo
applicazione se è una comp se è a
applicazione complessa
probabilmente ha diversi livelli in alcuni
modo di non parlare della logica di presentazione
e la logica aziendale e la persistenza sono
parlando di cosa è stato risolto e cosa è
qual è la dinamica giusta per le parti nella tua
applicazione che si desidera essere in grado di
riconfigurare anche quando è distribuito
quelle sono diverse parti del tuo di
la tua applicazione e il core engine il
i principali macchinari che hai costruito 10
anni fa e stanno ancora riutilizzando il prodotto
la gente sa di cosa sto parlando
perché di solito hai quella stalla
strato inferiore inferiore interno qui, quindi se tu
guarda quelle cose che puoi dire
che ci sono certe cose che sono
forte freddo e alcune cose sono più morbide
giusto questo è quello che volevo dire
qui e quelli possono essere molto diversi
quelli possono essere cose molto diverse così
un modo per avvicinarsi a questo sarebbe
scegliere un runtime forse è solo questo
una JVM a cui stiamo solo utilizzando una corsa generica
un runtime specifico e attenersi a quello
e poi costruiremo il nostro dominio principale
usare Java forse è una specie di
Approccio Divi abbiamo questo comune
linguaggio che se quello che abbiamo stabilito
e tutti usano le stesse librerie
e questa è una sorta di conoscenza fondamentale di
Non so che applicazione di fatturazione
e un dominio di fatturazione e quindi abbiamo a
scenario specifico in cui potremmo essere filo
questo insieme per uno scenario particolare
e puoi vedere che c’è qualcosa
software nel livello superiore che è questo
XML tipo di cosa ora non sto usando XML
come linguaggio di programmazione eccomi qui
dicendo che estrai parti del tuo
programma invece di metterli in Java
li metti in un modulo software in
XML perché puoi modificarlo in fase di runtime
e si può effettivamente fare qualcosa che
potrebbe essere tu sei una configurazione di primavera
o potrebbe essere probabilmente file di proprietà
o qualsiasi altra cosa e puoi accettare slide
varianti ora questo è interessante
DSL Conosco molti progetti che facciamo tutti
loro stessi ma li conosco anch’io
altro da altri clienti e altri
aziende in cui abbiamo utilizzato le ESL
lingue specifiche del dominio e ci sono
tutta la rabbia se sei se sei nel
Il mondo di Eclipse che stai costruendo a
DSL utilizzando un EMF il prossimo testo e tutto
quelle strutture è assolutamente
affascinante per me che è più facile
ottenere una DSL in un progetto che è stato
costruito utilizzando EMF rispetto a un diverso
linguaggio di programmazione che non ho mai capito
perché è così perché in realtà
Sto usando il linguaggio che ho inventato
e ti sto dicendo che è meglio di
usando uno che ha inventato qualcun altro
anche se quell’altra lingua ha un
mucchio di libri e persone e
conferenze e tanto carbone e tutto
che ora sono di nuovo un mix che sto facendo
Sto mescolando le cose qui ovviamente
si spera che il linguaggio specifico del dominio
veramente specifico del dominio ma spesso lo è
non spesso finiamo per costruire la roba
in quei dsls
che dobbiamo rendere le cose configurabili
per renderli software che se li avessimo costruiti
loro nel nostro nelle nostre lingue statiche
di seguito e questo potrebbe benissimo essere
qualcosa di diverso che potresti avere
j ruby o qualsiasi altra lingua JVM dinamica
e lo stesso vale forse per avere
una miscela di c-sharp e vb.net o
qualunque diritto tu possa avere diverso
lingue nel tuo ambiente
presentalo e penso che sia molto
cosa molto interessante quando guardi
a progetti complessi trovi sempre
questo trovi sempre quelle cose
dove eri si aggiunge questa dinamica questi
aspetti dinamici perché ne hai bisogno
nella vita reale hai bisogno di avere qualcosa
dinamico mi porta ad un’altra citazione
posso vedere che sono un grande fan delle citazioni che è
da questo ragazzo chiamato pieno di Greenspan
e c’è anche un verbo di questo verde
spanning così divertito ha usato la chiarezza comune
è l’esempio ma non è necessariamente
legato a ciò l’ idea è che se tu
avere un sistema sufficientemente complesso cosa
hai intenzione di fare è che stai andando a
costruire una programmabilità
in esso si sta andando a costruire qualcosa
quello che in realtà può agire come a
linguaggio di programmazione e ho visto
numerose occasioni in cui qualcuno
iniziato con un linguaggio piccolo forse solo
qualcosa per impostare le variabili proprio questo è
questo è sei questo è cinque questo è
dieci e poi loro scoprono oh I
potrebbe usare una dichiarazione if qui adesso
facciamo un ciclo okay ci stiamo arrivando
molto vicino ora abbiamo la modularità
e abbiamo subroutine ora che abbiamo
creato il nostro linguaggio di programmazione
semplicemente perché abbiamo bisogno di qualcosa che sia
disponibile per noi in fase di esecuzione e io sono
chiedendo cosa sappiamo noi sviluppatori
che gli sviluppatori di meno questi
le lingue no e ne voglio un po ‘in fretta
una critica che sento molto è che quelli
le lingue non stanno andando bene
Abbastanza giusto abbiamo bisogno di scrivere il nostro codice
in un linguaggio che funziona bene io
non è possibile creare un sistema che ridimensiona e
che esegue e in un linguaggio giocattolo ma
quello che finiamo è che abbiamo il nostro
linguaggi statici fantasiosi e poi noi
crea le nostre piccole implementazioni
e lo facciamo molto male in generale
perché non siamo designer di lingue
alcune persone in questa stanza lo accettano
accettalo in modo che punti morbidi e difficili suggeriscano
lingue diverse che hai
diversi aspetti nel tuo sistema e
quelli con cui potrebbe essere meglio servito erano
diverso con lingue diverse
avvicinarsi alla risposta andiamo
con il numero sei il numero sei è l’idea
che in un sistema distribuito che ha un
il linguaggio di programmazione singolo diventa meno
importante credo fermamente che io
credo che ci fosse un punto nel tempo in cui
abbiamo avuto l’idea che la standardizzazione del
linguaggio di programmazione ha fatto parte del
strategia di architettura aziendale giusta
usiamo semplicemente useremo EJB ovunque e
tutti saranno felici e persone
ho scoperto che anche se hai usato EJB
ovunque
non è possibile ottenere il server delle applicazioni da
un fornitore per lavorare con l’ applicazione
da un altro pozzo in realtà non potevi
persino ottenere due versioni della stessa app
server dello stesso fornitore con cui parlare
l’un l’altro così alla fine siamo finiti
con qualcosa di diverso penso se noi
guarda in un sistema distribuito qualcosa
questo è in qualche modo collegato, quindi dobbiamo
concentrarsi sulle connessioni tra
quei sistemi e ciò che è dentro è lontano
meno importanti di quanto pensiamo ma loro
può essere costruito utilizzando lingue diverse
spero che non mi importi
speriamo che sia vero per gli altri
decisioni tecnologiche così mi piacerebbe
usa uno di quei sistemi per usare forse a
nessun sequel datastore in un altro sistema a
utilizzare un database relazionale utilizzare ciò che è
meglio lì e penso che l’idea
idea l’ idea centrale che sto provando
attraverso è che se avete sistemi di
diverse dimensioni utilizzate diverse
strategie di modellizzazione giuste se
è una cosa molto piccola che puoi ottenere
con forse un singolo file se il sistema
cresce diventa più complicato che usi
diversi mezzi di modularizzazione
ad un certo punto nel tempo qualunque cosa sia
quelli sono forse numeri di Ruby in alcuni
nel momento in cui colpisci il confine dove
ha più senso di avere più di
una sola applicazione è la stessa in Java
anche io non so quanti di voi
avere una base di codice con più ho a
sistema singolo con una base di codice di più
di un milione di linee nessuno qui ce ne sono alcuni
persone mi dispiace davvero davvero per te
nessuno sceglie di farlo che nessuno vuole
avere un unico sistema con un milione
o cinque milioni o dieci milioni di righe
quello che vuoi avere qualcosa che è
modulare che ha cose diverse
perché quei bastardi che ne hanno cinque
milioni di linee sono totalmente
immutabile non si può fare bene no
totalmente ma davvero molto difficile da cambiare
di modernizzare per entrare nel prossimo
secolo così ancora una volta sembra come se fossi
suggerendo che non hai alcuna regola
Penso che dovresti avere un sacco di regole
quindi ho delle regole sul lato sinistro qui
che sono forse cross-system
regole architettoniche in cui decidi come
i tuoi sistemi parlano tra loro e
allora hai regole sul lato destro
quali sono forse che forse limitano il
numero di linguaggi di programmazione che tu
posso usare capisco che in un grande
organizzazione vuoi limitare il
numero di lingue a due o forse
tre o qualunque diritto ogni volta che il
si spera che il numero giusto non sia solo uno
perché penso che non è una buona idea
Non sto suggerendo di non farlo
standardizzare di nuovo quella roba che fa parte
del tipo di vendita di cosa sto provando
fare bene non è una buona idea da dire
persone che non dovrebbero essere standardizzate
perché tutti sanno che sta andando a
essere difficile trovare persone che vogliono lavorare
in un ambiente ma tutti usano
quello che in realtà mmm che i suoni
abbastanza interessante ma non penso
chiunque vorrebbe farlo così
l’idea di base che voglio passare qui è
che dovresti avere due liste a destra
la lista dovrebbe essere ciò che si imposta nella pietra
i prossimi dieci anni e uno è un insieme di
linee guida valide al momento e
quello può cambiare il prossimo anno in modo che a
il sistema da oggi può cambiare e può
parlare ancora con un sistema che sta usando
le linee guida modificate domani e noi
ne ho un esempio interessante
dove abbiamo un mucchio di molto modulari
architettura in cui abbiamo entrambi JRuby
e sistemi Java che comunicano
tramite HTTP restful un sacco di mio
tecnologie preferite in questo particolare
esempio e questo funziona davvero
beh è un ambiente davvero carino
perché siamo in grado di usare le persone che abbiamo
avere le competenze che abbiamo con diversi
tecnologie e abbiamo ancora un comune
architettura e un approccio comune I
pensa a questa idea che il modo moderno
di fare sistemi distribuiti ti dà
certa libertà è molto potente
destra mi interessa a condizione che
interfaccia e ottenere questo tipo di
disconnettersi dalla discussione linguistica
lasciatemi fare un altro esempio del perché
non hai un singolo sistema che deve
darti qualche XML basato sul database
perché non dovrebbe essere forse usando il
Strutture del database Oracle XML proprio come
a lungo come nessuno dall’esterno vede
questo perché non usare il modo più efficiente
e lo stesso vale per la programmazione
lingue linguistiche e molto altro
anche le cose sono rimaste una cosa
che è ovviamente il più importante
qualcuno ha sempre tutti sempre
dice qual è il popolo giusto così noi
abbiamo un sacco di cose tecniche che abbiamo
alcune discussioni architettoniche che abbiamo
somiglianze le differenze tra
linguaggi di programmazione ma ovviamente il
persone con cui effettivamente lavorare
quelle cose sono le più importanti
aspetto qui intorno e ci sono
ci sono cose interessanti come per
ad esempio le abilità che tu che tu
ho già detto questo prima delle abilità
che tu hai bisogno di imparare un nuovo
linguaggio di programmazione tutte le abilità in
quel nuovo linguaggio di programmazione potrebbe non esserlo
c’è già così devi imparare il
lingua, ma se si prende la compagnia aerea OTP
un esempio di Erlang la lingua
è di per sé la parte più semplice che penso sia
interamente possibile insegnare a qualcuno
Erlang durante un fine settimana non è un duro
linguaggio a tutti è un piccolo molto semplice
linguaggio che non ha molto
caratteristiche e una brutta sintassi ma è
facile da imparare e una volta che hai imparato
che non sai come programmare
Erlang perché quello che devi imparare se
si vuole costruire un sistema distribuito
sono le librerie tutte le cose che sono
ora ci sono quelle librerie che avresti
per impararli in qualsiasi ambiente giusto
se qui se fosse un altro ambiente
con un altro linguaggio di programmazione della
lo stesso sarebbe vero anche se è il tuo
ambiente standard ma devi
impara come usare quella roba è vera
per ogni ambiente non è a tempo
solo il linguaggio quindi penso che sia un
cosa interessante c’è anche un’altra
aspetto che è più di nuovo dal
dal lato politico delle cose a
argomento standard contro l’uso
diversi linguaggi di programmazione che tu
non sarà in grado di trovare persone nel
mercato che può aiutarti a scriverlo
questa è una preoccupazione valida, penso
a volte se lavori nell’altro modo
in giro conosco un sacco di persone che lo farebbero
inizia a lavorare con te immediatamente se
hai offerto loro un lavoro culturale perché
ad alcune persone piace lavorare con persone diverse
lingue e sono molto attratti da
aziende che provano qualcosa lì così
potrebbe essere la tua strategia di assunzione segreta per
fai esattamente che la comunità è molto
cosa importante penso che tu sia
quindi costruire determinati tipi di sistemi
la comunità può essere un fattore decisivo
perché hai scelto la comunità
ha la maggiore esperienza nella costruzione di questo
tipo di sistema e prende solo il
linguaggio di programmazione e le librerie
con esso giusto se tu se questo è questo
è la comunità che è davvero davvero
buone e forse operazioni di automazione
poi vai con quello forse è per quello
Python o Perl non ne sono del tutto sicuri
forse in questi giorni è anche il rubia no
sai forse se sei in web based
sistemi che leggi come i binari
comunità e l’indie e il
innovazione forse dovresti andare
con quello solo per quel motivo per il
quadro in contrasto con la lingua
forse questa è la batteria , dipende così
almeno la comunità è decisiva
Credo che il fattore e si dovrebbe prendere quel
in considerazione è necessario valutare il
pregiudizi che le persone hanno ragione
a volte sono giustificati a volte
non sono a volte è un semplice
questione di provare cose e vedere
è veramente lento come tutti
continua a dirmi è forse solo molto
facile da fare
questo tipo di cose con un diverso
la lingua e l’ esperienza interessante durano
settimana in cui sono stato aggiunto un cliente e noi
mostrato loro se sono molto
cliente conservatore e li abbiamo mostrati
un prototipo che abbiamo costruito usando
Java lato server e servizio su HTML
generazione e un po ‘di JavaScript
discretamente sotto gentilezza e uno di
i ragazzi hanno detto bene che abbiamo questo altro
sistema che qualcun altro ha costruito questo
è molto meglio lo fa
tutto sul client e io non sono un
grande fan di queste app a pagina singola così noi
parlato di questo e scoperto che
quello che era grande non era il fatto che fosse così
ha fatto tutto di un cliente ciò che era
grande era il fatto che avesse modo di fare
meno linee di codice e lui non aveva
quello perché ha fatto cose sul client
lo ha fatto perché è stato scritto in
JavaScript quindi la stessa applicazione in
JavaScript aveva circa un terzo di
linee di codice che sono le stesse di a
sistema scritto in Java
una volta che hai notato che inizi a chiedere
se è davvero una cosa ragionevole
fare bene , provare le cose e
dare un’occhiata a loro dopo che hai
valutato li aiuta molto
a superare quei pregiudizi a volte tu
hanno molte dipendenze dalle dipendenze
può essere può essere davvero tecnico che possono
anche essere in termini di persone che lo sono
attaccato alle cose giuste le persone dipendono
su certe cose qualcuno è un
master programmatore in linguaggio blob e
stai suggerendo di usare il linguaggio perché?
Saranno un novizio quindi chi
vuole passare dall’essere un esperto a
essere un novizio solo perché un po ‘casuale
tizio suggerisce una lingua diversa
meglio se dipendi da questo
linguaggio per farlo penso che sia un po ‘
I programmatori Java diranno di sì
sta parlando dei ragazzi COBOL forse
Sono a volte è molto frustrante
cosa questo può essere coinvolto entrambi
indicazioni di nuovo lo scenario da
pochi minuti fa, se tu se lo permettessi
codice di qualcuno in una lingua che odiano
saranno molto molto frustrati
sarà davvero difficile da fare
loro amano la lingua semplicemente lasciando
loro giocano con esso a volte funziona ma
se hanno davvero un forte forte
reazione alcune cose sono una questione di
opinione come se tu sei un fan di
lingue tipizzate staticamente alcune persone
sono molto difficili da convincere di qualsiasi cosa
altrimenti lo stesso è vero nell’altro modo
in giro così giusto così forse puoi
provare almeno una volta, ma se qualcuno ha fatta
la loro mente per sempre non prova a cambiare
quello e avere qualcuno usa qualcosa
nuovo potrebbe renderli freschi
negoziati, ma lo stesso vale nel
invertire anche se qualcuno davvero
vuole fare cose nuove e fantasiose e tu
non dargli la possibilità o la possibilità
per farlo diventeranno frustrati
perché devono usare la stessa roba
più e più volte così frustrazione e
la motivazione ovviamente è molto vicina
collegato potresti essere in grado di farlo
motivare moderatamente qualcuno perché
finalmente sono autorizzati a usarlo
fantasia nuova lingua per dimostrare quanto sia grande
questo è ciò che la lingua non è
importa davvero la quantità di energia
energia che puoi creare usando quello è
incredibile così come le solite persone contano di più
è noto come non molto sorpreso da vedere
quello e con quello ho un mio tutto il mio
sette pezzi elencati qui e concludo
e vorrei aprirmi per qualsiasi domanda
i commenti sono benvenuti e
disaccordi a qualcuno si
Giusto quindi penso che la domanda fosse cosa
l’effetto a lungo termine non lo è
troppo rischioso per scegliere una lingua dove tu
non so se sarà
lì in tre anni
assolutamente potrebbe essere troppo rischioso da fare
che non so che sei uno scenario
giusto se vuoi scegliere una lingua
che sta per essere lì da 10 anni
ora hai regole diverse allora se tu
se non importa, se sei se
sai dire che lo riscriveremo
in una lingua diversa, allora anche
Dipende da quello che l’ambiente di esecuzione è
con le librerie sono ciò che il
costo aggiuntivo sarebbe quello che il
dove usi esattamente il serbatoio per
tutto o solo per una piccola parte di
il sistema in cui alcune lingue sono state
lì per così tanto tempo che non penso
c’è il rischio che se ne vanno via
giusto per esempio um Ruby e Python e
Perl e poi Java sono tutte lingue
che sto pensando sono abbastanza al sicuro
scommetto, penso che siano anche Scala e chiusura
Probabilmente scommesse sicure in questi giorni perché
ne hanno abbastanza di una comunità
supportali e ne hanno abbastanza
gli utenti sono interessati a fare qualcuno
ma, ancora una volta, la tua valutazione del rischio potrebbe
essere diverso dal mio , forse quello
restringerà il numero netto di
lingue da cui puoi scegliere, ma lì
è sicuramente più di uno da fare
qualunque altra domanda si
così che è una domanda molto buona a volte
non sono le parti buone che io
di cui dovresti preoccuparti
perché rendono la pena usare il
linguaggio forse sono le parti cattive che
rendere la pena evitando che io personalmente
penso che ci siano sicuramente alcune aree
dove non la useresti in lingue
quindi non ho niente preparato per
che così per esempio non userei un
digitato dinamicamente più di uno scripting
linguaggio per scrivere un rendimento elevato
sistema operativo intendo che è un po ‘
ovvio, forse è forse che ho
una sorta di messa a fuoco ristretta e non a
davvero una buona risposta a questo perché la maggior parte
dei sistemi con cui sono coinvolto
sistemi basati sul web e in web-based
prestazioni dei sistemi della programmazione
la lingua è solo una molto piccola
cosa della prestazione generale nel
architettura quindi devi di solito no
preoccuparsi troppo di ciò è rischioso cosa
Sto dicendo qui ma di solito è quello
caso non ho una cosa particolare
ma è una grande cosa per seguire I
non ho una risposta che devo ammettere
che qualsiasi altra cosa va bene, allora grazie mille
per il tuo tempo hai una buona conferenza
Please follow and like us: