Take Away
A warning that the rate of change in underlying software development paradigms will require new mental approaches to the large software challenges lying ahead of us. The "algol-based" languages used by the vast majority of developers will yield to more scalable functional languages.
In the meantime, continue to grow you skills and constantly learn how to take advantage of tools to get more bang for the time you spend designing and coding.
Introduction
A new look at software development - What will the next 10 years bring?
Dave Astels
Twitter: @dastels
dastels@engineyard.com
Observations:
- You're doing it completely wrong.
- Software is hard
- Software construction is the most complex endeavor ever undertaken by mankind.
- The only software that's worth making is software that does something new.
- It's only getting (more)...
- more complex
- bigger
- distributed
- parallel
- life critical
30 years of software
think about...
- popular languages
- flavors, blends, derivatives
- Fortran->Algol 54/58
- Lisp 58
- Ruby described as new-age lisp.
- Smalltalk from lisp from simula
Some outliers
- Prolog --> Erlang
- ML --> Haskel
Time for a change?
Let the computer do more work.
Declarative Languages
- What you want to do instead of how.
Functional Languages
strong type systems
- language agda
Tools that cooperate
- real-time analysis of our codes.
Do more for the developer
- Giving some insight into the code you're writing.
- Static analysis
Generated test suites
- Identify boundary cases.
Runtime analysis
Will current ideas continue to server us?
Speaker says NO!
evolution/revolution
new way of programming
We need parallel strategies
- problem decomposition
- data structure design
- distributed
- algorithmic organization
We need:
- better languages
- better tools
- tools that help us.
Google's "Go" language
- everything is parallelized.
parallel and distributed baked in
- that actively prevent bugs
closing quotes: (Guy Steele):
- The bag of programming tricks that has served us for 50 years is the wrong way to think going forward and must be thrown out.
- The great tricks of sequential programming don't work.
Summary
- It's a parallel world of parallel problems.
- Have strategies that assume imperfection. How do we write code that way?
No comments:
Post a Comment