SlideShare a Scribd company logo
1 of 26
Download to read offline
DConf 2013 Opening Keynote by Walter Bright
Prehistory
● A hypothetical successor to C named “D” was
talked about on Usenet back in the 80's.
● Nothing much ever came of it
History
● Work began on D in late 1999
● D's first slashdot appearance
● http://developers.slashdot.org/story/01/08/15/23422
3/the-d-programming-language
● D1 released Jan 2007
● First D Conference 2007
DConf 2013 Opening Keynote by Walter Bright
D Today
● Rapid and dramatic development since D1
● International, worldwide development
community
● We're doing the impossible - developing a
major new language from grassroots support
● And what amazing grassroots support it is ...
DConf 2013 Opening Keynote by Walter Bright
Major Sponsors
● Facebook
● Sociomantic
● Remedy Games
● Andrew Edwards
Today
● Copy And Move Semantics
● Ali Çehreli
● Distributed Caching Compiler for D
● Robert Schadek
● Inside Regular Expressions
● Dmitry Olshansky
● Using D Alongside a Game Engine
● Manu Evans
● Concurrent Garbage Collection
● Leandro Lucarella
Tomorrow
● GDC
● Ian Buclaw
● Shared Libraries
● Martin Nowak
● C# to D
● Adam Wilson
● Web Development in D
● Vladimir Panteleev
● A Precise Garbage Collector for D
● Rainer Schütze
● Higgs, an Experimental JIT Compiler in D
● Maxime Chevalier-Boisvert
● Falling Down: the birth of kerönÅ
● Andrew Edwards
Friday
● Metaprogramming in the Real World
● Don Clugston
● Code Analysis for D with AnalyzeD
● Stefan Rohe
● D-Specific Design Patterns
● David Simcha
● LDC
● David Nadlinger
● Effective SIMD for modern architectures
● Manu Evans
● Writing Testable Code
● Ben Gertzfield
● Quo Vadis?
● Andrei Alexandrescu
Vision
● Easy to read & understand code
● Provably correct
● Industrial Quality
Easy To Read & Understand
● code that looks right is right
● minimal boilerplate
● code looks like the problem being solved
Code That Looks Right Is Right
● and code that looks wrong is wrong
void[] read(string name) {
DWORD numread;
auto namez = toMBSz(name);
auto h=CreateFileA(namez,GENERIC_READ,FILE_SHARE_READ,null, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,cast(HANDLE)null);
if (h == INVALID_HANDLE_VALUE) goto err1;
auto size = GetFileSize(h, null);
if (size == INVALID_FILE_SIZE) goto err2;
auto buf = std.gc.malloc(size);
if (buf) std.gc.hasNoPointers(buf.ptr);
if (ReadFile(h,buf.ptr,size,&numread,null) != 1) goto err2;
if (numread != size) goto err2;
if (!CloseHandle(h)) goto err;
return buf[0 .. size];
err2:
CloseHandle(h);
err:
delete buf;
err1:
throw new FileException(name, GetLastError());
}
Pre-Scope Version of file.read()
Using Scope – No Goto's
void[] read(in char[] name, size_t upTo = size_t.max) {
alias TypeTuple!(GENERIC_READ,
FILE_SHARE_READ, (SECURITY_ATTRIBUTES*).init, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
HANDLE.init)
defaults;
auto h = CreateFileA(toMBSz(name), defaults);
cenforce(h != INVALID_HANDLE_VALUE, name);
scope(exit) cenforce(CloseHandle(h), name);
auto size = GetFileSize(h, null);
cenforce(size != INVALID_FILE_SIZE, name);
size = min(upTo, size);
auto buf = GC.malloc(size, GC.BlkAttr.NO_SCAN)[0 .. size];
scope(failure) delete buf;
DWORD numread = void;
cenforce(ReadFile(h,buf.ptr, size, &numread, null) == 1
&& numread == size, name);
return buf[0 .. size];
}
Minimal Boilerplate
“The IDE is great. With one key, I can add 100
lines of boilerplate!”
Looks Like the Problem Being
Solved
import std.stdio;
import std.array;
import std.algorithm;
void main() {
stdin.byLine(KeepTerminator.yes)
map!(a => a.idup).
array.
sort.
copy(
stdout.lockingTextWriter());
}
Provably Correct
● Provable memory safety
● Provable purity and immutability
● Contract programming
– No 'faith based' programming
Provable Memory Safety
● Memory safety means “no memory corruption”
● enabled with @safe attribute
● works by disallowing things like pointer arithmetic
● safety is transitive
● turtles all the way down
Provable Purity and Immutability
● solid foundation for functional programming
● FP has excellent track record of producing
robust, reliable programs
● major aid to understanding code
Toi Mine
Contract Programming
● some things can only be checked at runtime
● contracts are used to validate that assertions
about data are true
● (contracts are NOT for validating user input)
● can also be used by advanced optimizer to
generate better code
Industrial Quality
● No-compromise performance
● Scales to enormous programs
● Management tools
LTHS Industrial Tech Dept
No Compromise Performance
● Semantics that map directly onto
hardware
● basic types are typical native
machine types
● even SIMD types
● Uses modern optimizing back ends
● LLVM, GCC, Digital Mars
● Semantics amenable to powerful
optimization
Scales to Enormous Programs
● Separate compilation
● Strong encapsulation semantics
● no global namespace
● anti-hijacking
● voldemort types
● High speed compilation
Management Tools
● Documentation generation
● Unit test
● Coverage analysis
Conclusion
● D has fantastic support from the community
● Very strong technical content for this
conference
● D will be the premier language for high
performance high productivity computing

More Related Content

What's hot

The D Programming Language - Why I love it!
The D Programming Language - Why I love it!The D Programming Language - Why I love it!
The D Programming Language - Why I love it!ryutenchi
 
Rust Programming Language
Rust Programming LanguageRust Programming Language
Rust Programming LanguageJaeju Kim
 
Introduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IOIntroduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IOLiran Zvibel
 
Advanced Linux Game Programming
Advanced Linux Game ProgrammingAdvanced Linux Game Programming
Advanced Linux Game ProgrammingLeszek Godlewski
 
FregeDay: Design and Implementation of the language (Ingo Wechsung)
FregeDay: Design and Implementation of the language (Ingo Wechsung)FregeDay: Design and Implementation of the language (Ingo Wechsung)
FregeDay: Design and Implementation of the language (Ingo Wechsung)Dierk König
 
Class[2][29th may] [javascript]
Class[2][29th may] [javascript]Class[2][29th may] [javascript]
Class[2][29th may] [javascript]Saajid Akram
 
Natural Language to Visualization by Neural Machine Translation
Natural Language to Visualization by Neural Machine TranslationNatural Language to Visualization by Neural Machine Translation
Natural Language to Visualization by Neural Machine Translationivaderivader
 
Binary art - funky PoCs & visual docs
Binary art - funky PoCs & visual docsBinary art - funky PoCs & visual docs
Binary art - funky PoCs & visual docsAnge Albertini
 
FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...
FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...
FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...Dierk König
 

What's hot (10)

D programming language
D programming languageD programming language
D programming language
 
The D Programming Language - Why I love it!
The D Programming Language - Why I love it!The D Programming Language - Why I love it!
The D Programming Language - Why I love it!
 
Rust Programming Language
Rust Programming LanguageRust Programming Language
Rust Programming Language
 
Introduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IOIntroduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IO
 
Advanced Linux Game Programming
Advanced Linux Game ProgrammingAdvanced Linux Game Programming
Advanced Linux Game Programming
 
FregeDay: Design and Implementation of the language (Ingo Wechsung)
FregeDay: Design and Implementation of the language (Ingo Wechsung)FregeDay: Design and Implementation of the language (Ingo Wechsung)
FregeDay: Design and Implementation of the language (Ingo Wechsung)
 
Class[2][29th may] [javascript]
Class[2][29th may] [javascript]Class[2][29th may] [javascript]
Class[2][29th may] [javascript]
 
Natural Language to Visualization by Neural Machine Translation
Natural Language to Visualization by Neural Machine TranslationNatural Language to Visualization by Neural Machine Translation
Natural Language to Visualization by Neural Machine Translation
 
Binary art - funky PoCs & visual docs
Binary art - funky PoCs & visual docsBinary art - funky PoCs & visual docs
Binary art - funky PoCs & visual docs
 
FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...
FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...
FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo W...
 

Similar to DConf 2013 Opening Keynote by Walter Bright

Tooling Matters - Development tools
Tooling Matters - Development toolsTooling Matters - Development tools
Tooling Matters - Development toolsSimon Dittlmann
 
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...Demi Ben-Ari
 
Glimworm 21 11-13 (1)
Glimworm 21 11-13 (1)Glimworm 21 11-13 (1)
Glimworm 21 11-13 (1)Paul Hopton
 
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)Ron Munitz
 
Flutter - Pixel by Pixel
Flutter - Pixel by PixelFlutter - Pixel by Pixel
Flutter - Pixel by PixelThomas Gazzoni
 
Glimworm 21-11-2013
Glimworm 21-11-2013Glimworm 21-11-2013
Glimworm 21-11-2013relayr
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneursRodrigo Gil
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional ProgrammerDave Cross
 
Full stack development
Full stack developmentFull stack development
Full stack developmentArnav Gupta
 
Mob modcon 2015-android rom cooking tutorial
Mob modcon 2015-android rom cooking tutorialMob modcon 2015-android rom cooking tutorial
Mob modcon 2015-android rom cooking tutorialRon Munitz
 
Open Source Hardware (OSHW)...What About The Tools?
Open Source Hardware (OSHW)...What About The Tools?Open Source Hardware (OSHW)...What About The Tools?
Open Source Hardware (OSHW)...What About The Tools?ChrisGammell
 
Go programming language
Go programming languageGo programming language
Go programming languageAppstud
 
Pen Testing Development
Pen Testing DevelopmentPen Testing Development
Pen Testing DevelopmentCTruncer
 
Computer Programming Overview
Computer Programming OverviewComputer Programming Overview
Computer Programming Overviewagorolabs
 
Reverse Engineering and It’s Basic by Prasenjit Kanti Paul.pptx
Reverse Engineering and It’s Basic by Prasenjit Kanti Paul.pptxReverse Engineering and It’s Basic by Prasenjit Kanti Paul.pptx
Reverse Engineering and It’s Basic by Prasenjit Kanti Paul.pptxnull - The Open Security Community
 
What is version control software and why do you need it?
What is version control software and why do you need it?What is version control software and why do you need it?
What is version control software and why do you need it?Leonid Mamchenkov
 
Bridging the gap in enterprise AI
Bridging the gap in enterprise AIBridging the gap in enterprise AI
Bridging the gap in enterprise AIMax Pumperla
 
Technology Trends, Disruptions and Opportunities
Technology Trends, Disruptions and OpportunitiesTechnology Trends, Disruptions and Opportunities
Technology Trends, Disruptions and OpportunitiesGanesh Raju
 
Demystifying software development
Demystifying software developmentDemystifying software development
Demystifying software developmentDina Neishtadt
 

Similar to DConf 2013 Opening Keynote by Walter Bright (20)

Tooling Matters - Development tools
Tooling Matters - Development toolsTooling Matters - Development tools
Tooling Matters - Development tools
 
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
 
Glimworm 21 11-13 (1)
Glimworm 21 11-13 (1)Glimworm 21 11-13 (1)
Glimworm 21 11-13 (1)
 
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
 
Flutter - Pixel by Pixel
Flutter - Pixel by PixelFlutter - Pixel by Pixel
Flutter - Pixel by Pixel
 
Glimworm 21-11-2013
Glimworm 21-11-2013Glimworm 21-11-2013
Glimworm 21-11-2013
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional Programmer
 
Full stack development
Full stack developmentFull stack development
Full stack development
 
Mob modcon 2015-android rom cooking tutorial
Mob modcon 2015-android rom cooking tutorialMob modcon 2015-android rom cooking tutorial
Mob modcon 2015-android rom cooking tutorial
 
Transitioning to Native
Transitioning to NativeTransitioning to Native
Transitioning to Native
 
Open Source Hardware (OSHW)...What About The Tools?
Open Source Hardware (OSHW)...What About The Tools?Open Source Hardware (OSHW)...What About The Tools?
Open Source Hardware (OSHW)...What About The Tools?
 
Go programming language
Go programming languageGo programming language
Go programming language
 
Pen Testing Development
Pen Testing DevelopmentPen Testing Development
Pen Testing Development
 
Computer Programming Overview
Computer Programming OverviewComputer Programming Overview
Computer Programming Overview
 
Reverse Engineering and It’s Basic by Prasenjit Kanti Paul.pptx
Reverse Engineering and It’s Basic by Prasenjit Kanti Paul.pptxReverse Engineering and It’s Basic by Prasenjit Kanti Paul.pptx
Reverse Engineering and It’s Basic by Prasenjit Kanti Paul.pptx
 
What is version control software and why do you need it?
What is version control software and why do you need it?What is version control software and why do you need it?
What is version control software and why do you need it?
 
Bridging the gap in enterprise AI
Bridging the gap in enterprise AIBridging the gap in enterprise AI
Bridging the gap in enterprise AI
 
Technology Trends, Disruptions and Opportunities
Technology Trends, Disruptions and OpportunitiesTechnology Trends, Disruptions and Opportunities
Technology Trends, Disruptions and Opportunities
 
Demystifying software development
Demystifying software developmentDemystifying software development
Demystifying software development
 

Recently uploaded

Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 

Recently uploaded (20)

Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 

DConf 2013 Opening Keynote by Walter Bright

  • 2. Prehistory ● A hypothetical successor to C named “D” was talked about on Usenet back in the 80's. ● Nothing much ever came of it
  • 3. History ● Work began on D in late 1999 ● D's first slashdot appearance ● http://developers.slashdot.org/story/01/08/15/23422 3/the-d-programming-language ● D1 released Jan 2007 ● First D Conference 2007
  • 5. D Today ● Rapid and dramatic development since D1 ● International, worldwide development community ● We're doing the impossible - developing a major new language from grassroots support ● And what amazing grassroots support it is ...
  • 7. Major Sponsors ● Facebook ● Sociomantic ● Remedy Games ● Andrew Edwards
  • 8. Today ● Copy And Move Semantics ● Ali Çehreli ● Distributed Caching Compiler for D ● Robert Schadek ● Inside Regular Expressions ● Dmitry Olshansky ● Using D Alongside a Game Engine ● Manu Evans ● Concurrent Garbage Collection ● Leandro Lucarella
  • 9. Tomorrow ● GDC ● Ian Buclaw ● Shared Libraries ● Martin Nowak ● C# to D ● Adam Wilson ● Web Development in D ● Vladimir Panteleev ● A Precise Garbage Collector for D ● Rainer Schütze ● Higgs, an Experimental JIT Compiler in D ● Maxime Chevalier-Boisvert ● Falling Down: the birth of kerönÅ ● Andrew Edwards
  • 10. Friday ● Metaprogramming in the Real World ● Don Clugston ● Code Analysis for D with AnalyzeD ● Stefan Rohe ● D-Specific Design Patterns ● David Simcha ● LDC ● David Nadlinger ● Effective SIMD for modern architectures ● Manu Evans ● Writing Testable Code ● Ben Gertzfield ● Quo Vadis? ● Andrei Alexandrescu
  • 11. Vision ● Easy to read & understand code ● Provably correct ● Industrial Quality
  • 12. Easy To Read & Understand ● code that looks right is right ● minimal boilerplate ● code looks like the problem being solved
  • 13. Code That Looks Right Is Right ● and code that looks wrong is wrong
  • 14. void[] read(string name) { DWORD numread; auto namez = toMBSz(name); auto h=CreateFileA(namez,GENERIC_READ,FILE_SHARE_READ,null, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,cast(HANDLE)null); if (h == INVALID_HANDLE_VALUE) goto err1; auto size = GetFileSize(h, null); if (size == INVALID_FILE_SIZE) goto err2; auto buf = std.gc.malloc(size); if (buf) std.gc.hasNoPointers(buf.ptr); if (ReadFile(h,buf.ptr,size,&numread,null) != 1) goto err2; if (numread != size) goto err2; if (!CloseHandle(h)) goto err; return buf[0 .. size]; err2: CloseHandle(h); err: delete buf; err1: throw new FileException(name, GetLastError()); } Pre-Scope Version of file.read()
  • 15. Using Scope – No Goto's void[] read(in char[] name, size_t upTo = size_t.max) { alias TypeTuple!(GENERIC_READ, FILE_SHARE_READ, (SECURITY_ATTRIBUTES*).init, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, HANDLE.init) defaults; auto h = CreateFileA(toMBSz(name), defaults); cenforce(h != INVALID_HANDLE_VALUE, name); scope(exit) cenforce(CloseHandle(h), name); auto size = GetFileSize(h, null); cenforce(size != INVALID_FILE_SIZE, name); size = min(upTo, size); auto buf = GC.malloc(size, GC.BlkAttr.NO_SCAN)[0 .. size]; scope(failure) delete buf; DWORD numread = void; cenforce(ReadFile(h,buf.ptr, size, &numread, null) == 1 && numread == size, name); return buf[0 .. size]; }
  • 16. Minimal Boilerplate “The IDE is great. With one key, I can add 100 lines of boilerplate!”
  • 17. Looks Like the Problem Being Solved import std.stdio; import std.array; import std.algorithm; void main() { stdin.byLine(KeepTerminator.yes) map!(a => a.idup). array. sort. copy( stdout.lockingTextWriter()); }
  • 18. Provably Correct ● Provable memory safety ● Provable purity and immutability ● Contract programming – No 'faith based' programming
  • 19. Provable Memory Safety ● Memory safety means “no memory corruption” ● enabled with @safe attribute ● works by disallowing things like pointer arithmetic ● safety is transitive ● turtles all the way down
  • 20. Provable Purity and Immutability ● solid foundation for functional programming ● FP has excellent track record of producing robust, reliable programs ● major aid to understanding code Toi Mine
  • 21. Contract Programming ● some things can only be checked at runtime ● contracts are used to validate that assertions about data are true ● (contracts are NOT for validating user input) ● can also be used by advanced optimizer to generate better code
  • 22. Industrial Quality ● No-compromise performance ● Scales to enormous programs ● Management tools LTHS Industrial Tech Dept
  • 23. No Compromise Performance ● Semantics that map directly onto hardware ● basic types are typical native machine types ● even SIMD types ● Uses modern optimizing back ends ● LLVM, GCC, Digital Mars ● Semantics amenable to powerful optimization
  • 24. Scales to Enormous Programs ● Separate compilation ● Strong encapsulation semantics ● no global namespace ● anti-hijacking ● voldemort types ● High speed compilation
  • 25. Management Tools ● Documentation generation ● Unit test ● Coverage analysis
  • 26. Conclusion ● D has fantastic support from the community ● Very strong technical content for this conference ● D will be the premier language for high performance high productivity computing