In 1959 C.P. Snow's famous lecture, "The Two Cultures", decried the failure of educated people in the sciences and humanities to work together. Today we have a similar divide opening between those who write software for science and those who write it for "everything else". In this talk, we'll review the current state of affairs and look at what Julia might do to remedy the situation. The hope is that Julia can be a great programming language not just for science, but for programmers everywhere.
2. Are you:
✔ a Scientist
✔ a Programmer
✔ tired from all the Linear Algebra
3. Background
• 1991 – Learn to program (age 11)
• 1996 – Recompile Linux kernel
• 1998 – Do something with Linux other than recompile a kernel
• 2002 – B.S. in Chemistry
• 2008 – Server Software Engineer at Apple
• 2012 – Ph.D. in Chemical Biology
• 2013 – Software Engineering Consultant
• 2014 – Discover Julia
10. History
• American perspective
• Scientists reject need for study of humanities…
• But scientists could benefit from improved
communication skills
11. History
• Humanities – Understand humans and our
interaction with the world
• Sciences – Discover the immutable laws that
govern nature
• Both – Seek to increase the wealth of human
knowledge
12. Scientists vs Programmers
• Tooling
• Version Control
• Editors/IDEs
• Debuggers
http://biorxiv.org/content/early/2016/05/13/048744
14. Scientists vs Programmers
• Priorities
“Yet we should not pass up our
opportunities in that critical 3%.”
“We should forget about small efficiencies,
say about 97% of the time: premature
optimization is the root of all evil.”
– Donald Knuth
17. The Two Cultures
• Scientists – Programming is a tool to generate
interesting results
• Programmers – Software is an artifact that should
be crafted with care
• Both – Make the computer do stuff!
18. Why do I care?
0
700
1400
2100
2800
3500
NumPy SciPy Rails
1000x Lines of Code Contributors
24. How?
• Readability
• Unicode operators? Brilliant…sometimes!
• “Any fool can write code that a computer can
understand. Good programmers write code that
humans can understand.” – Martin Fowler
25. How?
• Array indexing
• Arbitrary indexing? Brilliant!
• “1-based indexing…eww!”
• “I don't know how many of you have ever met
Dijkstra, but you probably know that arrogance in
computer science is measured in nano-
Dijkstras.” – Alan Kay