summaryrefslogtreecommitdiff
path: root/presentations
diff options
context:
space:
mode:
Diffstat (limited to 'presentations')
-rw-r--r--presentations/unnormal.md62
-rw-r--r--presentations/unnormal2.md318
2 files changed, 380 insertions, 0 deletions
diff --git a/presentations/unnormal.md b/presentations/unnormal.md
new file mode 100644
index 0000000..f112fa0
--- /dev/null
+++ b/presentations/unnormal.md
@@ -0,0 +1,62 @@
+# Ненормальное программирование
+
+---
+
+# Машина Тьюринга
+
+- Лента, состоящая из ячеек <!-- .element: class="fragment" data-fragment-index="0" -->
+- Управляющее устройство <!-- .element: class="fragment" data-fragment-index="1" -->
+- Хранилище состояния <!-- .element: class="fragment" data-fragment-index="2" -->
+- Правила перехода <!-- .element: class="fragment" data-fragment-index="3" -->
+
+---
+
+# Эзотерические ЯП
+
+![](images/unnormal.png)
+
+---
+
+# Полные по Тьюрингу языки
+
+- C++
+- Rust
+- Haskell
+- Lisp
+
+---
+<!-- .slide: data-auto-animate -->
+
+> Любая достаточно сложная программа на Си или Фортране содержит заново
+> написанную, неспецифицированную, глючную и медленную реализацию половины языка
+> Common Lisp.
+
+- Филипп Гринспен
+
+---
+<!-- .slide: data-auto-animate -->
+
+> Любая достаточно сложная программа на Си или Фортране содержит заново
+> написанную, неспецифицированную, глючную и медленную реализацию половины языка
+> Common Lisp.
+
+- Филипп Гринспен
+
+> ...в том числе и сам Common Lisp.
+
+- Роберт Моррис
+
+---
+
+# Структура простого проекта на C++
+
+- CMakeLists.txt -> Makefile
+- main.cpp
+
+---
+
+# Surprisingly turing-complete
+
+- https://gwern.net/turing-complete
+
+![](images/gwern.gif)
diff --git a/presentations/unnormal2.md b/presentations/unnormal2.md
new file mode 100644
index 0000000..95df8ec
--- /dev/null
+++ b/presentations/unnormal2.md
@@ -0,0 +1,318 @@
+# Ненормальное программирование
+
+---
+
+# Машина Тьюринга
+
+- Лента, состоящая из ячеек <!-- .element: class="fragment" data-fragment-index="0" -->
+- Управляющее устройство <!-- .element: class="fragment" data-fragment-index="1" -->
+- Хранилище состояния <!-- .element: class="fragment" data-fragment-index="2" -->
+- Правила перехода <!-- .element: class="fragment" data-fragment-index="3" -->
+
+---
+
+# Эзотерические ЯП
+
+![](images/unnormal.png)
+
+---
+
+# Surprisingly turing-complete
+
+- https://gwern.net/turing-complete
+
+![](images/gwern.gif)
+
+---
+
+# Ненормальное программирование
+
+---
+<!-- .slide: data-auto-animate -->
+
+![](images/Frame1.png)
+
+---
+<!-- .slide: data-auto-animate -->
+
+![](images/Frame2.png)
+
+---
+<!-- .slide: data-auto-animate -->
+
+![](images/Frame3.png)
+
+---
+<!-- .slide: data-auto-animate -->
+
+![](images/Frame4.png)
+
+---
+<!-- .slide: data-auto-animate -->
+
+![](images/Frame5.png)
+
+---
+<!-- .slide: data-auto-animate -->
+
+![](images/Frame6.png)
+
+---
+<!-- .slide: data-auto-animate -->
+
+![](images/Frame7.png)
+
+---
+<!-- .slide: data-auto-animate -->
+
+![](images/Frame8.png)
+
+---
+
+# PHP
+
+![](images/php1.png)
+
+---
+
+# PHP
+
+![](images/php2.png)
+
+---
+
+# Bash
+
+---
+
+```sh []
+check_curl_for_retry_support
+_retry="$RETVAL"
+get_ciphersuites_for_curl
+_ciphersuites="$RETVAL"
+if [ -n "$_ciphersuites" ]; then
+ _err=$(curl $_retry --proto '=https' --tlsv1.2 --ciphers "$_ciphersuites" --silent --show-error --fail --location "$1" --output "$2" 2>&1)
+ _status=$?
+else
+ echo "Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure"
+ if ! check_help_for "$3" curl --proto --tlsv1.2; then
+ echo "Warning: Not enforcing TLS v1.2, this is potentially less secure"
+ _err=$(curl $_retry --silent --show-error --fail --location "$1" --output "$2" 2>&1)
+ _status=$?
+ else
+ _err=$(curl $_retry --proto '=https' --tlsv1.2 --silent --show-error --fail --location "$1" --output "$2" 2>&1)
+ _status=$?
+ fi
+fi
+if [ -n "$_err" ]; then
+ echo "$_err" >&2
+ if echo "$_err" | grep -q 404$; then
+ err "installer for platform '$3' not found, this may be unsupported"
+ fi
+fi
+return $_status
+```
+
+---
+
+# JavaScript
+
+---
+<!-- .slide: data-auto-animate -->
+
+```js []
+> [] + []
+```
+<!-- .element: data-id="code-animation" -->
+
+---
+<!-- .slide: data-auto-animate -->
+
+```js []
+> [] + []
+""
+```
+<!-- .element: data-id="code-animation" -->
+
+---
+<!-- .slide: data-auto-animate -->
+
+```js []
+> [] + []
+""
+> [] + {}
+```
+<!-- .element: data-id="code-animation" -->
+---
+<!-- .slide: data-auto-animate -->
+
+```js []
+> [] + []
+""
+> [] + {}
+"[object Object]"
+```
+<!-- .element: data-id="code-animation" -->
+
+---
+<!-- .slide: data-auto-animate -->
+
+```js []
+> [] + []
+""
+> [] + {}
+"[object Object]"
+> {} + []
+```
+<!-- .element: data-id="code-animation" -->
+---
+<!-- .slide: data-auto-animate -->
+
+```js []
+> [] + []
+""
+> [] + {}
+"[object Object]"
+> {} + []
+0
+```
+<!-- .element: data-id="code-animation" -->
+
+---
+<!-- .slide: data-auto-animate -->
+
+```js []
+> [] + []
+""
+> [] + {}
+"[object Object]"
+> {} + []
+0
+> {} + {}
+```
+<!-- .element: data-id="code-animation" -->
+
+---
+<!-- .slide: data-auto-animate -->
+
+```js []
+> [] + []
+""
+> [] + {}
+"[object Object]"
+> {} + []
+0
+> {} + {}
+NaN
+```
+<!-- .element: data-id="code-animation" -->
+
+---
+
+# Web
+
+---
+
+![](images/web1.png)
+
+---
+
+![](images/web2.png)
+
+---
+<!-- .slide: data-auto-animate -->
+
+# YAML-программирование
+
+---
+<!-- .slide: data-auto-animate -->
+
+# YAML-программирование
+
+- docker-compose <!-- .element: class="fragment" data-fragment-index="0" -->
+- GitHub Actions/GitLab Runners <!-- .element: class="fragment" data-fragment-index="1" -->
+- Terraform <!-- .element: class="fragment" data-fragment-index="2" -->
+- Kubernetes <!-- .element: class="fragment" data-fragment-index="3" -->
+- Ansible <!-- .element: class="fragment" data-fragment-index="4" -->
+- Jenkins <!-- .element: class="fragment" data-fragment-index="5" -->
+
+---
+
+# C++
+
+---
+
+# Структура простого проекта на C++
+
+- CMakeLists.txt -> Makefile
+- main.cpp
+
+---
+
+<https://github.com/Cheukyin/TemplatedPL>
+
+```cpp []
+cout<< Eval< Call< Lib::Sum, Call< Lib::Filter,
+ Call< Lib::Range, Int<1>, Int<10> >,
+ Lambda< ParamList< Var<0> >,
+ IsEqual< Mod< Var<0>, Int<2> >,
+ Int<0> > > > > >::value::value;
+```
+
+---
+<!-- .slide: data-auto-animate -->
+
+```cpp []
+int i(int(j));
+```
+<!-- .element: data-id="code-animation" -->
+
+---
+<!-- .slide: data-auto-animate -->
+
+```cpp []
+int i(int(j));
+int i(int(j)) {
+ return j * j;
+}
+```
+<!-- .element: data-id="code-animation" -->
+
+---
+<!-- .slide: data-auto-animate -->
+
+```cpp
+int i(int(j));
+int i(int(j)) {
+ return j * j;
+}
+```
+
+```cpp
+%:include <iostream>
+%:define HELLO "HELLO"
+%:define WORLD "WORLD"
+
+main(int argc, char *argv<::>)
+<%
+ if (argc > 1) <%
+ std::cout<<argv<:1:><<std::endl;
+ %> else <%
+ std::cout << HELLO WORLD << std::endl;
+ %>
+%>
+```
+
+---
+
+> There are only two kinds of languages: the ones people complain about and the ones nobody uses.
+
+- Bjarne Stroustrup
+
+---
+
+# Этот слайд захвачен ржавчиной
+
+<https://rustup.rs/>
+
+![](images/rustup.png)