|
@@ -8,7 +8,7 @@
|
|
|
}
|
|
|
},
|
|
|
"source": [
|
|
|
- "# Go for science!"
|
|
|
+ "# Go for Science: Programming beyond Python\n"
|
|
|
]
|
|
|
},
|
|
|
{
|
|
@@ -67,9 +67,24 @@
|
|
|
"- *Clean* and *small*:\n",
|
|
|
" - Handful of keywords\n",
|
|
|
" - Automatic formatting\n",
|
|
|
+ "- Designed for concurrency\n",
|
|
|
"- Easy testing (for robust code)\n",
|
|
|
"- Statically compiled binaries\n",
|
|
|
" - Makes it **very** easy to distribute executables to various platforms\n",
|
|
|
+ "\n",
|
|
|
+ "..."
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {
|
|
|
+ "slideshow": {
|
|
|
+ "slide_type": "slide"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "source": [
|
|
|
+ "## Why we think it's cool, part deux\n",
|
|
|
+ "\n",
|
|
|
"- Automatic documentation generation and distribution:\n",
|
|
|
" - Function and package doc strings get automatically hosted on godoc.org\n",
|
|
|
"- Fast evolving but respects backwards compatibility\n",
|
|
@@ -81,6 +96,17 @@
|
|
|
"Most G-Node projects started after 2016 are written in Go: GIN, GIN Client, GIN DOI, GIN Indexing Service, and GIN Validator (if it's GIN, it's probably Go)."
|
|
|
]
|
|
|
},
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {
|
|
|
+ "slideshow": {
|
|
|
+ "slide_type": "slide"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "source": [
|
|
|
+ "![Brace Style](./images/brace-style.jpg)"
|
|
|
+ ]
|
|
|
+ },
|
|
|
{
|
|
|
"cell_type": "markdown",
|
|
|
"metadata": {
|
|
@@ -103,7 +129,7 @@
|
|
|
}
|
|
|
},
|
|
|
"source": [
|
|
|
- "## Why *you* should think it's cool\n",
|
|
|
+ "## Why *you* might think it's cool\n",
|
|
|
"\n",
|
|
|
"- Fast and easy to learn (we went over this already)\n",
|
|
|
"- Good (fast) for number crunching while still feeling like scripting\n",
|
|
@@ -184,10 +210,48 @@
|
|
|
"## Example: Concurrent simulations and analysis"
|
|
|
]
|
|
|
},
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {
|
|
|
+ "slideshow": {
|
|
|
+ "slide_type": "slide"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "source": [
|
|
|
+ "## Concurrency vs. parallelism\n",
|
|
|
+ "\n",
|
|
|
+ "- Concurrency is about dealing with lots of things at once.\n",
|
|
|
+ "- Parallelism is about doing lots of things at once.\n",
|
|
|
+ "- Not the same, but related.\n",
|
|
|
+ "\n",
|
|
|
+ "- Concurrency is about structure, parallelism is about execution.\n",
|
|
|
+ "\n",
|
|
|
+ "- Concurrency provides a way to structure a solution to solve a problem that may (but not necessarily) be parallelizable.\n",
|
|
|
+ "\n",
|
|
|
+ "Taken from https://talks.golang.org/2012/waza.slide#8"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {
|
|
|
+ "slideshow": {
|
|
|
+ "slide_type": "slide"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "source": [
|
|
|
+ "![Concurrency sketch](./images/concurrent-gophers.jpg)\n",
|
|
|
+ "\n",
|
|
|
+ "Taken from https://talks.golang.org/2012/waza.slide#19"
|
|
|
+ ]
|
|
|
+ },
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 6,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "slideshow": {
|
|
|
+ "slide_type": "slide"
|
|
|
+ }
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"ename": "ERROR",
|
|
@@ -276,11 +340,37 @@
|
|
|
]
|
|
|
},
|
|
|
{
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": null,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": []
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {
|
|
|
+ "slideshow": {
|
|
|
+ "slide_type": "slide"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "source": [
|
|
|
+ "## Scientific libraries and projects\n",
|
|
|
+ "\n",
|
|
|
+ "- GoNum: Numerical computing in Go (Go's numpy)\n",
|
|
|
+ "- GoNum/mat64: Linear algebra for float64 matrices\n",
|
|
|
+ "- GoNum/plot: For plotting and visualisation\n",
|
|
|
+ "- Machine learning libraries: go-cluster, go-deep, libsvm, neural-go\n",
|
|
|
+ "- GoBot: IoT and specialised hardware\n",
|
|
|
+ "- Jupyter kernel for Go notebooks (like this presentation)\n",
|
|
|
+ "\n",
|
|
|
+ "Find everything you need at https://github.com/avelino/awesome-go"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {
|
|
|
+ "slideshow": {
|
|
|
+ "slide_type": "slide"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "source": [
|
|
|
+ "# Questions & Comments welcome\n",
|
|
|
+ "\n",
|
|
|
+ "You can find this presentation at https://gin.g-node.org/G-Node/[[something]]"
|
|
|
+ ]
|
|
|
}
|
|
|
],
|
|
|
"metadata": {
|