diff options
| -rw-r--r-- | dist/dsc.css | 4 | ||||
| -rw-r--r-- | images/Frame1.png | bin | 0 -> 20237 bytes | |||
| -rw-r--r-- | images/Frame2.png | bin | 0 -> 111769 bytes | |||
| -rw-r--r-- | images/Frame3.png | bin | 0 -> 49716 bytes | |||
| -rw-r--r-- | images/Frame4.png | bin | 0 -> 79908 bytes | |||
| -rw-r--r-- | images/Frame5.png | bin | 0 -> 100264 bytes | |||
| -rw-r--r-- | images/Frame6.png | bin | 0 -> 111316 bytes | |||
| -rw-r--r-- | images/Frame7.png | bin | 0 -> 124663 bytes | |||
| -rw-r--r-- | images/Frame8.png | bin | 0 -> 139754 bytes | |||
| -rw-r--r-- | images/gwern.gif | bin | 0 -> 4271 bytes | |||
| -rw-r--r-- | images/php1.png | bin | 0 -> 150824 bytes | |||
| -rw-r--r-- | images/php2.png | bin | 0 -> 100676 bytes | |||
| -rw-r--r-- | images/rustup.png | bin | 0 -> 1248 bytes | |||
| -rw-r--r-- | images/unnormal.png | bin | 0 -> 4887557 bytes | |||
| -rw-r--r-- | images/web1.png | bin | 0 -> 62213 bytes | |||
| -rw-r--r-- | images/web2.png | bin | 0 -> 33317 bytes | |||
| -rw-r--r-- | presentations/unnormal.md | 62 | ||||
| -rw-r--r-- | presentations/unnormal2.md | 318 |
18 files changed, 382 insertions, 2 deletions
diff --git a/dist/dsc.css b/dist/dsc.css index f2f88ac..8ba4135 100644 --- a/dist/dsc.css +++ b/dist/dsc.css @@ -12,8 +12,8 @@ .reveal img, .reveal video, .reveal iframe { - max-width: 95%; - max-height: 95%; + max-width: 65%; + max-height: 65%; } .reveal a { diff --git a/images/Frame1.png b/images/Frame1.png Binary files differnew file mode 100644 index 0000000..4c05171 --- /dev/null +++ b/images/Frame1.png diff --git a/images/Frame2.png b/images/Frame2.png Binary files differnew file mode 100644 index 0000000..c652488 --- /dev/null +++ b/images/Frame2.png diff --git a/images/Frame3.png b/images/Frame3.png Binary files differnew file mode 100644 index 0000000..ecf15ef --- /dev/null +++ b/images/Frame3.png diff --git a/images/Frame4.png b/images/Frame4.png Binary files differnew file mode 100644 index 0000000..44c6ff3 --- /dev/null +++ b/images/Frame4.png diff --git a/images/Frame5.png b/images/Frame5.png Binary files differnew file mode 100644 index 0000000..1b393db --- /dev/null +++ b/images/Frame5.png diff --git a/images/Frame6.png b/images/Frame6.png Binary files differnew file mode 100644 index 0000000..b3a26b8 --- /dev/null +++ b/images/Frame6.png diff --git a/images/Frame7.png b/images/Frame7.png Binary files differnew file mode 100644 index 0000000..6fbd448 --- /dev/null +++ b/images/Frame7.png diff --git a/images/Frame8.png b/images/Frame8.png Binary files differnew file mode 100644 index 0000000..57e3b39 --- /dev/null +++ b/images/Frame8.png diff --git a/images/gwern.gif b/images/gwern.gif Binary files differnew file mode 100644 index 0000000..59a7aa2 --- /dev/null +++ b/images/gwern.gif diff --git a/images/php1.png b/images/php1.png Binary files differnew file mode 100644 index 0000000..160d497 --- /dev/null +++ b/images/php1.png diff --git a/images/php2.png b/images/php2.png Binary files differnew file mode 100644 index 0000000..ba4fed3 --- /dev/null +++ b/images/php2.png diff --git a/images/rustup.png b/images/rustup.png Binary files differnew file mode 100644 index 0000000..ebfb814 --- /dev/null +++ b/images/rustup.png diff --git a/images/unnormal.png b/images/unnormal.png Binary files differnew file mode 100644 index 0000000..042bdda --- /dev/null +++ b/images/unnormal.png diff --git a/images/web1.png b/images/web1.png Binary files differnew file mode 100644 index 0000000..975a608 --- /dev/null +++ b/images/web1.png diff --git a/images/web2.png b/images/web2.png Binary files differnew file mode 100644 index 0000000..8fde9e1 --- /dev/null +++ b/images/web2.png 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" --> + +--- + +# Эзотерические ЯП + + + +--- + +# Полные по Тьюрингу языки + +- 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 + + 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" --> + +--- + +# Эзотерические ЯП + + + +--- + +# Surprisingly turing-complete + +- https://gwern.net/turing-complete + + + +--- + +# Ненормальное программирование + +--- +<!-- .slide: data-auto-animate --> + + + +--- +<!-- .slide: data-auto-animate --> + + + +--- +<!-- .slide: data-auto-animate --> + + + +--- +<!-- .slide: data-auto-animate --> + + + +--- +<!-- .slide: data-auto-animate --> + + + +--- +<!-- .slide: data-auto-animate --> + + + +--- +<!-- .slide: data-auto-animate --> + + + +--- +<!-- .slide: data-auto-animate --> + + + +--- + +# PHP + + + +--- + +# PHP + + + +--- + +# 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 + +--- + + + +--- + + + +--- +<!-- .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/> + + |