Suche senden
Hochladen
Stefan Richter - Writing simple, readable and robust code: Examples in Java, Clojure, and Go - code.talks 2015
•
1 gefällt mir
•
1,769 views
AboutYouGmbH
Folgen
code.talks 2015 hosted by ABOUT YOU
Weniger lesen
Mehr lesen
Internet
Melden
Teilen
Melden
Teilen
1 von 49
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
AboutYouGmbH
Fscons scalable appplication transfers
Fscons scalable appplication transfers
Daniel Stenberg
Introduction to the LLVM Compiler System
Introduction to the LLVM Compiler System
zionsaint
LLVM Compiler - Link Time Optimization
LLVM Compiler - Link Time Optimization
Vivek Pansara
TypeScript
TypeScript
Oswald Campesato
TypeScript Best Practices
TypeScript Best Practices
felixbillon
A Type-level Ruby Interpreter for Testing and Understanding
A Type-level Ruby Interpreter for Testing and Understanding
mametter
Ruxmon.2013-08.-.CodeBro!
Ruxmon.2013-08.-.CodeBro!
Christophe Alladoum
Empfohlen
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
Dennis Benkert & Matthias Lübken - Patterns in a containerized world? - code....
AboutYouGmbH
Fscons scalable appplication transfers
Fscons scalable appplication transfers
Daniel Stenberg
Introduction to the LLVM Compiler System
Introduction to the LLVM Compiler System
zionsaint
LLVM Compiler - Link Time Optimization
LLVM Compiler - Link Time Optimization
Vivek Pansara
TypeScript
TypeScript
Oswald Campesato
TypeScript Best Practices
TypeScript Best Practices
felixbillon
A Type-level Ruby Interpreter for Testing and Understanding
A Type-level Ruby Interpreter for Testing and Understanding
mametter
Ruxmon.2013-08.-.CodeBro!
Ruxmon.2013-08.-.CodeBro!
Christophe Alladoum
Typescript Basics
Typescript Basics
Manikandan [M M K]
TypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack Developers
Rutenis Turcinas
Kubernetes Internals
Kubernetes Internals
Shimi Bandiel
LLVM
LLVM
guest3e5046
Should i Go there
Should i Go there
Shimi Bandiel
Neodev
Neodev
Shimi Bandiel
Introduction to TypeScript
Introduction to TypeScript
KeithMurgic
TypeScript 2 in action
TypeScript 2 in action
Alexander Rusakov
Getting started with typescript
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
Typescript
Typescript
Nikhil Thomas
New c sharp4_features_part_iv
New c sharp4_features_part_iv
Nico Ludwig
TypeScript - An Introduction
TypeScript - An Introduction
NexThoughts Technologies
Clang: More than just a C/C++ Compiler
Clang: More than just a C/C++ Compiler
Samsung Open Source Group
Getting started with typescript and angular 2
Getting started with typescript and angular 2
Knoldus Inc.
Blocks & GCD
Blocks & GCD
rsebbe
Typescript for the programmers who like javascript
Typescript for the programmers who like javascript
Andrei Sebastian Cîmpean
Type script - advanced usage and practices
Type script - advanced usage and practices
Iwan van der Kleijn
Introduction to TypeScript by Winston Levi
Introduction to TypeScript by Winston Levi
Winston Levi
Asynchronous IO in Rust - Enrico Risa - Codemotion Rome 2017
Asynchronous IO in Rust - Enrico Risa - Codemotion Rome 2017
Codemotion
TypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
01 Java Is Architecture Neutral
01 Java Is Architecture Neutral
rajuglobal
Best practices to optimize code and build robust and scalable web applications
Best practices to optimize code and build robust and scalable web applications
dheerajpiet
Weitere ähnliche Inhalte
Was ist angesagt?
Typescript Basics
Typescript Basics
Manikandan [M M K]
TypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack Developers
Rutenis Turcinas
Kubernetes Internals
Kubernetes Internals
Shimi Bandiel
LLVM
LLVM
guest3e5046
Should i Go there
Should i Go there
Shimi Bandiel
Neodev
Neodev
Shimi Bandiel
Introduction to TypeScript
Introduction to TypeScript
KeithMurgic
TypeScript 2 in action
TypeScript 2 in action
Alexander Rusakov
Getting started with typescript
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
Typescript
Typescript
Nikhil Thomas
New c sharp4_features_part_iv
New c sharp4_features_part_iv
Nico Ludwig
TypeScript - An Introduction
TypeScript - An Introduction
NexThoughts Technologies
Clang: More than just a C/C++ Compiler
Clang: More than just a C/C++ Compiler
Samsung Open Source Group
Getting started with typescript and angular 2
Getting started with typescript and angular 2
Knoldus Inc.
Blocks & GCD
Blocks & GCD
rsebbe
Typescript for the programmers who like javascript
Typescript for the programmers who like javascript
Andrei Sebastian Cîmpean
Type script - advanced usage and practices
Type script - advanced usage and practices
Iwan van der Kleijn
Introduction to TypeScript by Winston Levi
Introduction to TypeScript by Winston Levi
Winston Levi
Asynchronous IO in Rust - Enrico Risa - Codemotion Rome 2017
Asynchronous IO in Rust - Enrico Risa - Codemotion Rome 2017
Codemotion
TypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
Was ist angesagt?
(20)
Typescript Basics
Typescript Basics
TypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack Developers
Kubernetes Internals
Kubernetes Internals
LLVM
LLVM
Should i Go there
Should i Go there
Neodev
Neodev
Introduction to TypeScript
Introduction to TypeScript
TypeScript 2 in action
TypeScript 2 in action
Getting started with typescript
Getting started with typescript
Typescript
Typescript
New c sharp4_features_part_iv
New c sharp4_features_part_iv
TypeScript - An Introduction
TypeScript - An Introduction
Clang: More than just a C/C++ Compiler
Clang: More than just a C/C++ Compiler
Getting started with typescript and angular 2
Getting started with typescript and angular 2
Blocks & GCD
Blocks & GCD
Typescript for the programmers who like javascript
Typescript for the programmers who like javascript
Type script - advanced usage and practices
Type script - advanced usage and practices
Introduction to TypeScript by Winston Levi
Introduction to TypeScript by Winston Levi
Asynchronous IO in Rust - Enrico Risa - Codemotion Rome 2017
Asynchronous IO in Rust - Enrico Risa - Codemotion Rome 2017
TypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the pain
Andere mochten auch
01 Java Is Architecture Neutral
01 Java Is Architecture Neutral
rajuglobal
Best practices to optimize code and build robust and scalable web applications
Best practices to optimize code and build robust and scalable web applications
dheerajpiet
High Performance Data Analytics with Java on Large Multicore HPC Clusters
High Performance Data Analytics with Java on Large Multicore HPC Clusters
Saliya Ekanayake
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
Leonardo Borges
A Dive Into Clojure
A Dive Into Clojure
Carlo Sciolla
不自然なcar/ナチュラルにconsして
不自然なcar/ナチュラルにconsして
mitsutaka mimura
Clojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVM
sunng87
Patterns
Patterns
David Nolen
A little exercise with clojure macro
A little exercise with clojure macro
Zehua Liu
Writing Macros
Writing Macros
RueiCi Wang
Macros in Clojure
Macros in Clojure
sohta
入門ClojureScript
入門ClojureScript
sohta
Ecom trend
Ecom trend
Huy Dang
Continuation Passing Style and Macros in Clojure - Jan 2012
Continuation Passing Style and Macros in Clojure - Jan 2012
Leonardo Borges
Clojure的魅力
Clojure的魅力
dennis zhuang
Clojure概览
Clojure概览
dennis zhuang
Niels Leenheer - Weird browsers - code.talks 2015
Niels Leenheer - Weird browsers - code.talks 2015
AboutYouGmbH
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
sohta
Introduction to JAVA
Introduction to JAVA
javatrainingonline
Core java lessons
Core java lessons
vivek shah
Andere mochten auch
(20)
01 Java Is Architecture Neutral
01 Java Is Architecture Neutral
Best practices to optimize code and build robust and scalable web applications
Best practices to optimize code and build robust and scalable web applications
High Performance Data Analytics with Java on Large Multicore HPC Clusters
High Performance Data Analytics with Java on Large Multicore HPC Clusters
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
A Dive Into Clojure
A Dive Into Clojure
不自然なcar/ナチュラルにconsして
不自然なcar/ナチュラルにconsして
Clojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVM
Patterns
Patterns
A little exercise with clojure macro
A little exercise with clojure macro
Writing Macros
Writing Macros
Macros in Clojure
Macros in Clojure
入門ClojureScript
入門ClojureScript
Ecom trend
Ecom trend
Continuation Passing Style and Macros in Clojure - Jan 2012
Continuation Passing Style and Macros in Clojure - Jan 2012
Clojure的魅力
Clojure的魅力
Clojure概览
Clojure概览
Niels Leenheer - Weird browsers - code.talks 2015
Niels Leenheer - Weird browsers - code.talks 2015
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
Introduction to JAVA
Introduction to JAVA
Core java lessons
Core java lessons
Ähnlich wie Stefan Richter - Writing simple, readable and robust code: Examples in Java, Clojure, and Go - code.talks 2015
Exciting JavaScript - Part II
Exciting JavaScript - Part II
Eugene Lazutkin
What`s New in Java 8
What`s New in Java 8
Mohsen Zainalpour
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
Marcel Bruch
Core JavaScript
Core JavaScript
Lilia Sfaxi
Introduction Of C++
Introduction Of C++
Sangharsh agarwal
introduction to server-side scripting
introduction to server-side scripting
Amirul Shafeeq
Getting started with CATIA V5 Macros
Getting started with CATIA V5 Macros
Emmett Ross
Programming in Java: Getting Started
Programming in Java: Getting Started
Martin Chapman
JAVASCRIPT PPT [Autosaved].pptx
JAVASCRIPT PPT [Autosaved].pptx
AchieversITAravind
Full Stack Online Course in Marathahalli| AchieversIT
Full Stack Online Course in Marathahalli| AchieversIT
AchieversITAravind
The Ring programming language version 1.5.2 book - Part 176 of 181
The Ring programming language version 1.5.2 book - Part 176 of 181
Mahmoud Samir Fayed
New c sharp4_features_part_vi
New c sharp4_features_part_vi
Nico Ludwig
The Ring programming language version 1.5.4 book - Part 180 of 185
The Ring programming language version 1.5.4 book - Part 180 of 185
Mahmoud Samir Fayed
Looping and switch cases
Looping and switch cases
MeoRamos
In-depth look at the Flex compiler and HFCD
In-depth look at the Flex compiler and HFCD
Stop Coding
JavaScript Miller Columns
JavaScript Miller Columns
Jonathan Fine
Bcsl 031 solve assignment
Bcsl 031 solve assignment
Indira Gnadhi National Open University (IGNOU)
64-bit Loki
64-bit Loki
PVS-Studio
JavaScript
JavaScript
Ivano Malavolta
Java - A broad introduction
Java - A broad introduction
Birol Efe
Ähnlich wie Stefan Richter - Writing simple, readable and robust code: Examples in Java, Clojure, and Go - code.talks 2015
(20)
Exciting JavaScript - Part II
Exciting JavaScript - Part II
What`s New in Java 8
What`s New in Java 8
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
Core JavaScript
Core JavaScript
Introduction Of C++
Introduction Of C++
introduction to server-side scripting
introduction to server-side scripting
Getting started with CATIA V5 Macros
Getting started with CATIA V5 Macros
Programming in Java: Getting Started
Programming in Java: Getting Started
JAVASCRIPT PPT [Autosaved].pptx
JAVASCRIPT PPT [Autosaved].pptx
Full Stack Online Course in Marathahalli| AchieversIT
Full Stack Online Course in Marathahalli| AchieversIT
The Ring programming language version 1.5.2 book - Part 176 of 181
The Ring programming language version 1.5.2 book - Part 176 of 181
New c sharp4_features_part_vi
New c sharp4_features_part_vi
The Ring programming language version 1.5.4 book - Part 180 of 185
The Ring programming language version 1.5.4 book - Part 180 of 185
Looping and switch cases
Looping and switch cases
In-depth look at the Flex compiler and HFCD
In-depth look at the Flex compiler and HFCD
JavaScript Miller Columns
JavaScript Miller Columns
Bcsl 031 solve assignment
Bcsl 031 solve assignment
64-bit Loki
64-bit Loki
JavaScript
JavaScript
Java - A broad introduction
Java - A broad introduction
Mehr von AboutYouGmbH
Tech talk 01.06.2017
Tech talk 01.06.2017
AboutYouGmbH
Retention Strategies in Mobile E-Commerce
Retention Strategies in Mobile E-Commerce
AboutYouGmbH
Rethinking Fashion E-Commerce
Rethinking Fashion E-Commerce
AboutYouGmbH
ABOUT YOU get on board
ABOUT YOU get on board
AboutYouGmbH
Lars Jankowfsky - Learn or Die - code.talks 2015
Lars Jankowfsky - Learn or Die - code.talks 2015
AboutYouGmbH
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
AboutYouGmbH
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
AboutYouGmbH
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
AboutYouGmbH
Kai Voigt - Big Data zum Anfassen - code.talks 2015
Kai Voigt - Big Data zum Anfassen - code.talks 2015
AboutYouGmbH
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
AboutYouGmbH
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
AboutYouGmbH
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
AboutYouGmbH
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
AboutYouGmbH
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
AboutYouGmbH
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
AboutYouGmbH
Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
AboutYouGmbH
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
AboutYouGmbH
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
AboutYouGmbH
Dr. Florian Krause - Der Kunde im Fokus: Personalisierte Aussteuerung von Inh...
Dr. Florian Krause - Der Kunde im Fokus: Personalisierte Aussteuerung von Inh...
AboutYouGmbH
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
AboutYouGmbH
Mehr von AboutYouGmbH
(20)
Tech talk 01.06.2017
Tech talk 01.06.2017
Retention Strategies in Mobile E-Commerce
Retention Strategies in Mobile E-Commerce
Rethinking Fashion E-Commerce
Rethinking Fashion E-Commerce
ABOUT YOU get on board
ABOUT YOU get on board
Lars Jankowfsky - Learn or Die - code.talks 2015
Lars Jankowfsky - Learn or Die - code.talks 2015
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Dr. Jeremias Rößler - Wenn Affen Testen - Das Ende der Bananensoftware - code...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Zeljko Kvesic - Scrum in verteilten Teams / Agil über die Landesgrenzen - cod...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Uwe Friedrichsen - CRDT und mehr - über extreme Verfügbarkeit und selbstheile...
Kai Voigt - Big Data zum Anfassen - code.talks 2015
Kai Voigt - Big Data zum Anfassen - code.talks 2015
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Dr. Andreas Lattner - Aufsetzen skalierbarer Prognose- und Analysedienste mit...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller...
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Wolfram Kriesing - EcmaScript6 for real - code.talks 2015
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
Stefanie Grewenig & Johannes Thönes - Internet ausdrucken mit JavaScript - c...
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
Alex Korotkikh - From 0 to N: Lessons Learned - code.talks 2015
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
Christian Haider & Helge Nowak - Mehr Demokratie durch Haushaltstransparenz ...
Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
Moritz Siuts & Robert von Massow - Data Pipeline mit Apache Kafka - code.tal...
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
Carina Bittihn & Linda Dettmann - Same Same but Different - code.talks 2015
Dr. Florian Krause - Der Kunde im Fokus: Personalisierte Aussteuerung von Inh...
Dr. Florian Krause - Der Kunde im Fokus: Personalisierte Aussteuerung von Inh...
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
Kürzlich hochgeladen
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
soniya singh
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Delhi Call girls
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
Diya Sharma
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
sexy call girls service in goa
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
soniya singh
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
APNIC
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
aditipandeya
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
soniya singh
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
shivangimorya083
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
Neha Pandey
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
horny (9316020077 ) Goa Call Girls Service by VIP Call Girls in Goa
horny (9316020077 ) Goa Call Girls Service by VIP Call Girls in Goa
sexy call girls service in goa
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girls
stephieert
Call Girls In Noida 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In Noida 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
ruhi
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Damian Radcliffe
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
kumarajju5765
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
tanu pandey
Kürzlich hochgeladen
(20)
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
horny (9316020077 ) Goa Call Girls Service by VIP Call Girls in Goa
horny (9316020077 ) Goa Call Girls Service by VIP Call Girls in Goa
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girls
Call Girls In Noida 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In Noida 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, Clojure, and Go - code.talks 2015
1.
Writing Simple, Readable
and Robust Code: Examples in Java, Clojure, and Go freiheit.com technologies - Hamburg, September 30, 2015 code.talks 2015
2.
© freiheit.com 2 Hi!
I am Stefan Richter. I started programming on an Apple ][ in 1983. Since 1998, I run my own software company, which is specialized in large Internet systems. WHO AM I? Working as a professional programmer Running my own company 20102005199819951990198719831966 Apple II, Pascal, C64, 6502 VAX, Unix, C, 4GLs, Smalltalk, Lisp, Scheme Unix, C, 4 GLs, (Windows NT, VB (!)) Linux, Java, Python, Ruby, Objective-C, C/C++, Common Lisp, Clojure, JavaScript, Go ... Future University studies and work as a programmer in research institutes
3.
SO LET’S GET
STARTED AND HAVE SOME FUN! :)
4.
According to Wikipedia
a domain- specific language (DSL) is a “... programming language or specification language dedicated to a particular problem domain [...].“ © freiheit.com 4
5.
I guess, we
find DSLs so compelling because sooner or later every programmer dreams of creating his/her own programming language. ;) © freiheit.com 5
6.
Let’s take an
example from a person you all know: Martin Fowler. In 2005, he posted an article on his homepage about domain-specific languages ... © freiheit.com 6
7.
© freiheit.com 7
8.
Fowler creates a
DSL to read files in a fixed-length format and to convert each line into an object. This is the file format and the mapping spec: 8© freiheit.com
9.
He uses C#,
but as C# is more or less a Java clone you will agree that the Java code would look almost exactly the same. © freiheit.com 9
10.
Line by line,
he reads the file and dispatches the conversion to a strategy class. 10© freiheit.com
11.
The strategy class
is parameterized with the type code and the target class ... 11© freiheit.com
12.
The individual fields
in each line are read by a FieldExtractor class ... 12© freiheit.com
13.
To process the
line, the strategy creates the target class and uses the extractors to get the field data ... 13© freiheit.com
14.
The FieldExtractor pulls
out the data and sets the correct field in the target class by using reflection ... 14© freiheit.com
15.
Now you have
an API that can be configured at compile time ... 15© freiheit.com
16.
If you would
like to do this in a declarative style, you need an XML configuration ... (arrggh) 16© freiheit.com
17.
Fowler’s example shows
about 70 lines of code (LOC). But the code is not complete. I guess, the complete example would be around 200 LOC Java. © freiheit.com 17
18.
HMM. SO MUCH
CODE FOR A SIMPLE PROBLEM.
19.
Ideally, you would
like to have something like this as a mini DSL: 19© freiheit.com
20.
The Common Lisp
Community picked up Fowler’s article, because he mentioned Lisp favorably. © freiheit.com 20
21.
Rainer Joswig then
proposed this DSL in comp. lang.lisp: 21© freiheit.com
22.
His solution is
a 12 LOC Lisp macro …, 22© freiheit.com ... which expands to this code:
23.
Let’s examine how
macros work. We’ll use the Common Lisp code as an example. It’s very close to how macros look like in Clojure! I’ll show you later! :) © freiheit.com 23
24.
• Basically, a
Lisp macro is a code generator. But you can’t compare Lisp macros with C macros or any other macro or template system. • Lisp programs are trees of expressions. Code is data. Data is code. • This is why a Lisp program can modify itself. • In a nutshell - “How to read Lisp macros“: • Macros don’t evaluate their parameters. • The backtick (`) says: „Don’t evaluate the following code.“ • The comma (,) says: „Evaluate the following code and replace it with the result.“ • Then: Evaluate all resulting code together. • Read Peter Seibel’s „Practical Common Lisp“ to learn more ... 24© freiheit.com
25.
• defclass creates
a new CLOS class. In CLOS methods are defined independently of the class definition, but getter/setter can be defined implicitly. • Methods are specialized on their parameters. So each method can be specialized to more than one class! Think about this for a moment ... • You can even specialize a method depending on what exact value is passed as a parameter. So you can have special methods for specific parameter values. In this example, parse-line-for-class is called, when you pass a class with the name “service-call“. (Which in turn is generated by this macro, too). • This method then takes the class, instantiates it and sets (side effect) its member variables by taking the format specification and using a substring function to extract the right bits and pieces from the input line. (This is not pure functional style, but this is how you use Common Lisp with CLOS.) 25© freiheit.com
26.
To read from
a file and apply the mappings Rainer Joswig then wrote this code: 26© freiheit.com
27.
Obviously, the Common
Lisp version works almost the same as Martin Fowler’s C# version, with much less code. Rainer Joswig’s solution is functionally complete. Let’s do this in Clojure now! © freiheit.com 27
28.
One thing: Some
people in the Clojure community say that you should not use macros. You will soon see why. But I disagree! Macros are one of the reasons why you should favor Lisp-like languages over other languages. © freiheit.com 28
29.
NOW THAT YOU
ARE EXPERTS ON COMMON LISP MACRO, I WILL SHOW YOU THE FIRST CLOJURE VERSION STRAIGHT AWAY!
30.
30© freiheit.com • We
create a list of the field names because we need them two times in the code. • defrecord creates a Clojure data structure with the look and feel of a hash table. • But it is much more: Under the hood, this is a Java class! And even more! • This is why you need a constructor function to create a “record“. I generate the name of the constructor function by appending “.“ to the record name. • I create a multimethod, which is specialized on the value of the mapping parameter. So Clojure “knows“, which method to call based on the input ... • Then, I create a list of all values from the input line (in the same order as their field names) and apply this list to the constructor of the record, which is returned as the function value.
31.
To make it
complete: defmethod needs a defmulti to provide a dispatching function. 31© freiheit.com • Meaning: Take the first four characters of the value of the parameter “line“ (which should be a java.lang. String) and then call the multimethod, which is specialized on this value. • (Note: Of course, you have to handle the cases: What happens when you have an empty line, an unknown mapping or a comment line. But I leave this out here to keep the example simple, even though this is just five lines more including another defmethod, which handles all these :default cases).
32.
32© freiheit.com • In
a nutshell “How to read Clojure macros“: • The backtick (`) says: „Don‘t evaluate the following code.“ • The tilde (~) says: „Evaluate the following code and replace it with the result.“ • ~@ means: “Evaluate the following code and replace it with the result, but don’t put parentheses around the result.“ (This is called „splicing“.) • The hash sign (#) at the end of a variable is used to automatically create unique variable names in the code created by the macro. This is called auto-gensyms. This way you can prevent name clashes with call parameters.
33.
Finally, this Clojure
macro expands to the following code. Can you see the automatically generated variable names? 33© freiheit.com
34.
Now we can
define mappings as follows: 34© freiheit.com Actually, the leading 0 doesn’t work here. Leading zeros are reserved for octal numbers.
35.
LET US BUILD SOMETHING
TO CONVENIENTLY USE THESE MAPPINGS!
36.
This is a
classic with-macro that you often find in the Common Lisp world. 36© freiheit.com • It reads the file identified by file name line by line. • It calls our multimethod parse line for each line. • It binds the result to a variable that you can hand over to the macro (binding). • And only if parsing the line has a result (no empty line, no comment line or unknown binding), it executes the body, meaning the code that you can hand over to this macro, which can contain the variable, which contains the binding. • Then it returns a list of the results. • Sounds difficult, but with the example on the next page you will find it to be very simple.
37.
In this example,
we just extract the customer name from each line. 37© freiheit.com • For each valid line in the file specified by file name (*testdata* contains the file name as a string) a Clojure record is created. • Each result is bound in this case to the symbol/variable “obj“. • In the body code you can use this symbol/variable to access this Clojure record. • In this case, we use it to extract the customer name from the record. • with-mappings then returns a list of the results.
38.
Isn’t this awesome?!
We have just defined two new programming constructs and added them to our programming language: defmapping, with-mappings. © freiheit.com 38
39.
The complete example
is about 30 LOC of Clojure. You don’t need any special tools (Language Workbench). It’s all right there in the Clojure language. And you just need Emacs to unleash this power ... © freiheit.com 39
40.
Now I can
extend this without breaking the existing code. © freiheit.com 40
41.
Let’s add a
serializer to create JSON from the data ... © freiheit.com 41
42.
We define a
protocol and add an implementation to the record definition. 42© freiheit.com
43.
Now we can
convert the data to JSON. 43© freiheit.com And we can even change the serialize method „in place“ and on the fly.
44.
© freiheit.com GOTO
Conference Copenhagen, 2011 “LISP ISN’T A LANGUAGE, IT’S A BUILDING MATERIAL.“ - ALAN KAY
45.
And Clojure gives
you powerful abstractions that you won’t find in any other programming language. Some stuff is only possible in a Lisp-like language ... with all these parenthesis. ;) © freiheit.com 45
46.
© freiheit.com GOTO
Conference Copenhagen, 2011 IT IS COOL. I LOVE THIS. BUT IS THIS REALLY SIMPLE? LET’S DO THIS IN GO!
47.
© freiheit.com GOTO
Conference Copenhagen, 2011 LIVE CODING
48.
THANK YOU freiheit.com technologies Budapester
Str. 45 20359 Hamburg, Germany kontakt@freiheit.com T +49 40 890584 0 F +49 40 890584 20
49.
Hackers wanted. Join us: jobs@freiheit.com
Jetzt herunterladen