Skip to content

Commit b7557d2

Browse files
committed
stdlib-talk: up
1 parent 990e9e1 commit b7557d2

File tree

2 files changed

+149
-41
lines changed

2 files changed

+149
-41
lines changed
116 KB
Loading

FortranCon2020-stdlib/stdlib_talk.tex

Lines changed: 149 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,43 @@
11
\documentclass{beamer}
22
\usetheme{Madrid}
3+
\beamertemplatenavigationsymbolsempty
4+
\setbeamertemplate{blocks}[rounded][shadow=true]
5+
6+
\usepackage{listings}
7+
8+
\usepackage{amssymb}
9+
\usepackage{amsmath}
10+
11+
\definecolor{mygreen}{rgb}{0,0.6,0}
12+
13+
\lstset{
14+
basicstyle=\footnotesize,
15+
breakatwhitespace=false,
16+
breaklines=false,
17+
captionpos=b,
18+
commentstyle=\color{blue},
19+
extendedchars=true,
20+
keepspaces=true,
21+
keywordstyle=\color{mygreen},
22+
language=Fortran,
23+
numbers=left,
24+
numbersep=2pt,
25+
numberstyle=\tiny\color{gray},
26+
rulecolor=\color{black},
27+
showspaces=false,
28+
showstringspaces=false,
29+
showtabs=false,
30+
stepnumber=1,
31+
tabsize=2,
32+
title=\lstname
33+
}
334

435
\usepackage{setspace}
536
\setstretch{1.5}
637

738
\title{Fortran Standard Library}
839
\author[]{Jeremie Vandenplas\\[3mm]
9-
Bálint Aradi
40+
Bálint Aradi,
1041
Izaak Beekman,
1142
Ondrej Certik,
1243
Milan Curcic,
@@ -25,108 +56,185 @@
2556
\begin{frame}[c]{Fortran Standard}
2657
\begin{itemize}
2758
\item Published by the International Organization for Standardization (ISO)
28-
\item Can be extended with new intrinsic procedures and modules
59+
\item Limited set of intrinsic procedures
60+
\item Possibility to add new intrinsic procedures and modules
2961
\begin{itemize}
3062
\item After standardization and implementation in compilers
3163
\end{itemize}
32-
\item Issue: no Standard Library
64+
\item No Standard Library
3365
\end{itemize}
66+
\center
67+
\textcolor{red}{\textbf{Consequence: we all reinvent the wheel continuously!}}
3468
\end{frame}
3569

3670

3771
\begin{frame}[c]{Aim}
3872
\center
39-
Develop and provide\\
40-
a community driven and agreed upon de facto\\
41-
"standard" library \\
73+
\Large
74+
\textcolor{blue}{Develop} and \textcolor{blue}{provide}\\
75+
a \textcolor{blue}{community} driven and agreed upon de facto\\
76+
\textcolor{blue}{standard library}\\
4277
for Modern Fortran
4378
\end{frame}
4479

4580

46-
\begin{frame}[c]{Fortran Standard Library}
81+
\begin{frame}[c]{Fortran Standard Library - stdlib}
82+
\Large
4783
\begin{itemize}
48-
\item Project of the new Fortran-lang community
49-
\item Abbreviation: stdlib
84+
\item One of the four pillars of \textcolor{blue}{fortran-lang}
85+
\item \textcolor{blue}{MIT} License
5086
\item GitHub: https://github.com/fortran-lang/stdlib
51-
\item Website: https://stdlib.fortran-lang.org
52-
\item MIT License
87+
\item API docs: https://stdlib.fortran-lang.org
5388
\end{itemize}
5489
\end{frame}
5590

5691

5792
\begin{frame}[t]{General scope}
58-
Similar to SciPy or to the default built-in Matlab scientific environment
93+
Similar to \textcolor{blue}{SciPy} or
94+
to the default built-in \textcolor{blue}{Matlab scientific environment}
5995

60-
Among others:
96+
\textcolor{mygreen}{Three} topics
6197
\begin{itemize}
62-
\item Algorithms
98+
\item \textcolor{blue}{Algorithms}
6399
\begin{itemize}
64100
\item Merging, searching, sorting, ...
65101
\end{itemize}
66-
\item Mathematics
102+
\item \textcolor{blue}{Mathematics}
67103
\begin{itemize}
68104
\item Linear algebra, sparse matrices, special functions, fast Fourier transform, random numbers, statistics, ordinary differential equations, numerical integration, optimization, ...
69105
\end{itemize}
70-
\item Utilities
106+
\item \textcolor{blue}{Utilities}
71107
\begin{itemize}
72108
\item Containers, strings, files, OS/environment integration, unit testing, assertions, logging, ...
73109
\end{itemize}
74110
\end{itemize}
75111
\end{frame}
76112

77113

78-
\begin{frame}[c]{GitHub}
79-
114+
\begin{frame}[c]{Currently implemented in stdlib}
115+
\begin{block}{~\vspace{0.5cm}}
116+
\vspace{-0.8cm}
117+
\begin{tabular}{ccc}
118+
\textcolor{white}{\bf Module} &\textcolor{white}{\bf Description} &\textcolor{white}{\bf \# procedures} \\
119+
ascii & & 16\\
120+
error & Catching and handling errors & 2\\
121+
io & Input/output helper and convenience & 3\\
122+
kinds & & -\\
123+
linalg & Linear algebra & 3\\
124+
optval & Fallback value for optional arguments & 1\\
125+
quadrature & Numerical integration & 4\\
126+
stats & Descriptive statistics & 5\\
127+
system & & 1 \\
128+
\end{tabular}
129+
\end{block}
80130
\end{frame}
81131

82132

83-
\begin{frame}[c]{Website}
84-
\begin{itemize}
85-
\item Automatically generated by FORD %https://github.com/Fortran-FOSS-Programmers/ford
86-
\end{itemize}
133+
\begin{frame}[fragile]{Examples}
134+
\begin{lstlisting}
135+
...
136+
use stdlib_experimental_io, only: loadtxt, savetxt
137+
use stdlib_experimental_linalg, only: diag
138+
use stdlib_experimental_stats, only: moment
139+
...
140+
real, allocatable :: A(:,:)
141+
call loadtxt('example.dat', A)
142+
...
143+
print*, diag(A)
144+
...
145+
call savetxt('moment.dat',&
146+
moment(A, order = 3, dim = 1, mask = (A > 5.)))
147+
... \end{lstlisting}
87148
\end{frame}
88149

89150

90-
\begin{frame}[c]{Currently implemented}
91-
\begin{itemize}
92-
\item
93-
\end{itemize}
151+
\begin{frame}[fragile]{Example - optval}
152+
\begin{lstlisting}
153+
...
154+
use stdlib_experimental_optval, only: optval
155+
...
156+
real function root(x, n)
157+
real, intent(in) :: x
158+
integer, intent(in), optional :: n
159+
root = x**(1.0/optval(n, 2))
160+
end function
161+
\end{lstlisting}
162+
\end{frame}
163+
164+
165+
\begin{frame}[c]{API docs (https://stdlib.fortran-lang.org)}
166+
\begin{center}
167+
\includegraphics[width=0.9\textwidth]{apidocsstdlib}
168+
\end{center}
94169
\end{frame}
95170

96171

97-
\begin{frame}[c]{Many contributors on GitHub}
172+
\begin{frame}[c]{API docs (https://stdlib.fortran-lang.org)}
173+
Automatically generated by \textcolor{blue}{FORD} %https://github.com/Fortran-FOSS-Programmers/ford
98174
\begin{itemize}
99-
\item $>$ 110 issues
100-
\begin{itemize}
101-
\item $>$ xxx participants
102-
\end{itemize}
103-
\item $>$ 100 pull requests
175+
\item Source codes
176+
\item \textcolor{blue}{Markdown specs} for all procedures
104177
\begin{itemize}
105-
\item $>$ 15 contributors
178+
\item \textit{Description}
179+
\item \textit{Syntax}
180+
\item \textit{Arguments}
181+
\item \textit{Output} / \textit{Return value}
182+
\item \textit{Example}
106183
\end{itemize}
184+
\end{itemize}
185+
186+
\end{frame}
187+
188+
189+
\begin{frame}[c]{Contributions through GitHub}
190+
https://github.com/fortran-lang/stdlib\\
191+
\textcolor{blue}{Source codes}
192+
\begin{itemize}
193+
\item 16 contributors
194+
\item $>$ 100 Pull Requests
195+
\end{itemize}
196+
\textcolor{blue}{Issues / ideas / comments}
197+
\begin{itemize}
198+
\item 47 contributors
199+
\item $>$ 110 GitHub issues
107200
\end{itemize}
108201
\end{frame}
109202

110203

111204
\begin{frame}[c]{How to contribute to stdlib?}
112-
Through GitHub
205+
\textcolor{blue}{Through GitHub}\\
113206
\begin{itemize}
114207
\item Issues
115-
\item Pull Requests (codes)
208+
\begin{itemize}
209+
\item Proposition of ideas, issues, comments
210+
\end{itemize}
211+
\item Pull Requests
212+
\begin{itemize}
213+
\item To contribute to the source code and specs
214+
\end{itemize}
116215
\end{itemize}
216+
\textcolor{blue}{Code of Conduct}\\
217+
\end{frame}
117218

118-
Workflow for contributing to the code:
219+
\begin{frame}[c]{Contributing to the source code?}
220+
\textcolor{blue}{Workflow}
119221
\begin{enumerate}
120-
\item Idea
121-
\item API
122-
\item Specification
123-
\item Implementation
124-
\item Release
222+
\item Proposition of an \textbf{idea}
223+
\item Proposition of the \textbf{API}
224+
\item Discussion of the \textbf{specs}
225+
\item Pull request of an \textbf{implementation} in the experimental namespace + associated unit tests
226+
\item Stable \textbf{release} of procedures in the experimental namespace
125227
\end{enumerate}
126228
\end{frame}
127229

230+
128231
\begin{frame}[c]{Acknowledgments}
129232

130233
\end{frame}
131234

235+
\begin{frame}[c]{}
236+
\centering \Huge
237+
\emph{Thank you!}
238+
\end{frame}
239+
132240
\end{document}

0 commit comments

Comments
 (0)