SlideShare a Scribd company logo
1 of 26
Download to read offline
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
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 ...
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 D Programming Language Conference 2022: A Retrospective and Vision for the Future

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 D Programming Language Conference 2022: A Retrospective and Vision for the Future (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

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Recently uploaded (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

D Programming Language Conference 2022: A Retrospective and Vision for the Future

  • 1.
  • 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
  • 4.
  • 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 ...
  • 6.
  • 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