SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
OSDN 2013.
Велосипедостроение:
Старые «новые» идеи,
которые стоит иметь в виду
ruslan@shevchenko.kiev.ua
https://github.com/rssh/
@rssh1
Cтарые «новые» идеи
Language research
Mainstream — то что очевидно
Не-мейнстрим, но золотой фонд
jj: lol where r u romeo
r: wana come over?
j: cant
r: y?
j: idk parents
r: lets kill ourself
j: lol k
r: swag
j: swag
Rome & Julietta. Twitter Style.
Shakespeare ?
Очевидности
int n = 10;
int s = 0;
for(int x = 1; x < n; ++x) {
s+=x;
}
- состояние хранится в именованных переменных
- инструкции выполняются последовательно
- управляющие конструкции являются частью языка
Более естественное представление программы
(60-ые годы прошлого века)
АВМ – Аналоговые вычислительные машины
Задача =
система уравнений в частных производных
Решение = моделирование
(электрическая схема, в которой происходят
процессы, описывающиеся с так-же )
- нет вопросов сложности расчетов
- машина действительно «думает»
- Не все задачи можно привести к такому виду
- Потери точности при масштабировании
- Надо перекоммутировать схему руками
Очевидности
int nn = 10;
int ss = 0;
for(int xx = 1; x < nn; ++xx) {
ss+=xx;
}
- состояние хранится в именованных переменных
- можно ли представить себе
программирование без них ?
int nn = 10;
int ss = 0;
for(int xx = 1; x < nn; ++xx) {
ss+=xx;
}
0 10 1 DO I + LOOP
0 10 1 DO I + LOOP
Forth
Нет переменных – все на стеке
5 3 + .
::: sqrt-closer (square guess -- square guess adjustment)
2dup / over - 2 / ;
: sqrt ( square -- root )
1 begin sqrt-closer dup while + repeat drop nip ;
Forth
::: sqrt-closer (square guess -- square guess adjustment)
2dup / over - 2 / ;
: sqrt ( square -- root )
1 begin sqrt-closer dup while + repeat drop nip ;
x1 = 1
xn+1 = (xn+S/xn)/2
Forth
Чак Моррис
colorForth
Интерпретатор реализован в «железе»
На одной плате — 144 форт-ядра
http://www.greenarrays.com
Размер кода — 1% от аналогичного на С
Очевидности
- инструкции выполняются последовательно
- управляющие конструкции являются частью языка
int x = 1
int d = 1
while(d != 0) {
d = (s/x - x)/2
x = x+d
}
- возможно ли программирование без
последовательности исполнения ?
int x = 1
int d = 1
while(d != 0) {
d = (s/x - x)/2
x = x+d
}
- программирование без
последовательности исполнения.
sqrtd(s,x,0) -> x
sqrtd(s,x,d) -> sqrt(s, x+d, (s/x - x)/2 )
sqrt(s) -> sqrtd(s,1,(s-1)/2)
Переписывающие правила
Переписывающие правила
Http://www.refal.org - исторический интерес
APS – институт кибернетики НАНУ
(сейчас следов в интернете нет)
Maude (лидер рынка):
Termware:
http://www.gradsoft.ua/products/termware_eng.htm
Stermware: https://github.com/rssh/stermware
http://maude.cs.uiuc.edu/
Очевидности
- управляющие конструкции являются частью языка
int x = 1
int d = 1
while(d != 0) {
d = (s/x - x)/2
x = x+d
}
Tcl
- управляющие конструкции можно определять
в языке
set x 1
do {
set d [expr ($s/$x - $x)/2]
while { $d != 0 }
proc do {body whileword condition} {
global errorInfor errorCode
if {![string equal $whileword while]} {
error "should be "do body while condition""
}
while {1} {
set code [catch {uplevel 1 $body} message]
if { !ok( $code) } {
return handleError($code, $body, $message)
}
}
if {![uplevel 1 [list expr $condition]]} {break}
}
}
Tcl
Интерпретатор предлоставляет программисту
API для манипуляции исполнением текущего
модуля
[ uplevel n block ] – исполняет блок в контексте
функции, которая находится на n фреймов
Выше чем текущая
d = ….
uplevel
Макросы
Кмпилятор предлоставляет программисту
API для манипуляции компиляцией текущего
модуля
<[ block ]> – выполняет блок кода при
компиляции и вставляет результат
- Nemerle
- Scala
Scala
- в какой-то степени мейнстрим
- удачный аналог Algol68
(давайте сбросим все что придумала наука
в индустриальный язык)
- Макросы, передача по имени,
зависимые типы ….......
Итого:
Очевидность мейнстрима — обман
Хотите быть хорошим разработчикам
и сдвинуть «точку сборки»
- системотехника
- forth
- переписывающие правила
- tcl
- nemerle
- scala
(скорее как источник идей чем
прямое использование)
Спасибо за внимание
- http://www.github.com/rssh
-R&D http://www.gosave.com
// Руслан Шевченко
<ruslan@shevchenko.kiev.ua>

Weitere ähnliche Inhalte

Ähnlich wie Osdn2013 rssh

Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...Tech Talks @NSU
 
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...Unigine Corp.
 
Введение в Clojure (Никита Прокопов)
Введение в Clojure (Никита Прокопов)Введение в Clojure (Никита Прокопов)
Введение в Clojure (Никита Прокопов)mainstreamless
 
Нейронные сетки: покруче интернета
Нейронные сетки: покруче интернетаНейронные сетки: покруче интернета
Нейронные сетки: покруче интернетаAnatoly Levenchuk
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахromovpa
 
С.Ковалёв -- теория категорий как математическое основание MBSE
С.Ковалёв -- теория категорий как математическое основание MBSEС.Ковалёв -- теория категорий как математическое основание MBSE
С.Ковалёв -- теория категорий как математическое основание MBSEAnatoly Levenchuk
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013ScalaNsk
 
Антон Конушин (НИУ ВШЭ)
Антон Конушин (НИУ ВШЭ)Антон Конушин (НИУ ВШЭ)
Антон Конушин (НИУ ВШЭ)Edutainme
 
2013 03 21_bigdata_seminar_05
2013 03 21_bigdata_seminar_052013 03 21_bigdata_seminar_05
2013 03 21_bigdata_seminar_05Roman Brovko
 
Back to the future: Функциональное программирование вчера и сегодня
Back to the future: Функциональное программирование вчера и сегодняBack to the future: Функциональное программирование вчера и сегодня
Back to the future: Функциональное программирование вчера и сегодняAlexander Granin
 

Ähnlich wie Osdn2013 rssh (11)

Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
 
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
 
Введение в Clojure (Никита Прокопов)
Введение в Clojure (Никита Прокопов)Введение в Clojure (Никита Прокопов)
Введение в Clojure (Никита Прокопов)
 
Нейронные сетки: покруче интернета
Нейронные сетки: покруче интернетаНейронные сетки: покруче интернета
Нейронные сетки: покруче интернета
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
 
С.Ковалёв -- теория категорий как математическое основание MBSE
С.Ковалёв -- теория категорий как математическое основание MBSEС.Ковалёв -- теория категорий как математическое основание MBSE
С.Ковалёв -- теория категорий как математическое основание MBSE
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013
 
динамические конструкторы
динамические конструкторыдинамические конструкторы
динамические конструкторы
 
Антон Конушин (НИУ ВШЭ)
Антон Конушин (НИУ ВШЭ)Антон Конушин (НИУ ВШЭ)
Антон Конушин (НИУ ВШЭ)
 
2013 03 21_bigdata_seminar_05
2013 03 21_bigdata_seminar_052013 03 21_bigdata_seminar_05
2013 03 21_bigdata_seminar_05
 
Back to the future: Функциональное программирование вчера и сегодня
Back to the future: Функциональное программирование вчера и сегодняBack to the future: Функциональное программирование вчера и сегодня
Back to the future: Функциональное программирование вчера и сегодня
 

Mehr von Ruslan Shevchenko

Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]Ruslan Shevchenko
 
Papers We Love / Kyiv : PAXOS (and little about other consensuses )
Papers We Love / Kyiv :  PAXOS (and little about other consensuses )Papers We Love / Kyiv :  PAXOS (and little about other consensuses )
Papers We Love / Kyiv : PAXOS (and little about other consensuses )Ruslan Shevchenko
 
Scala / Technology evolution
Scala  / Technology evolutionScala  / Technology evolution
Scala / Technology evolutionRuslan Shevchenko
 
{co/contr} variance from LSP
{co/contr} variance  from LSP{co/contr} variance  from LSP
{co/contr} variance from LSPRuslan Shevchenko
 
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.Ruslan Shevchenko
 
SE 20016 - programming languages landscape.
SE 20016 - programming languages landscape.SE 20016 - programming languages landscape.
SE 20016 - programming languages landscape.Ruslan Shevchenko
 
Few simple-type-tricks in scala
Few simple-type-tricks in scalaFew simple-type-tricks in scala
Few simple-type-tricks in scalaRuslan Shevchenko
 
Why scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisWhy scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisRuslan Shevchenko
 
Java & low latency applications
Java & low latency applicationsJava & low latency applications
Java & low latency applicationsRuslan Shevchenko
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platformRuslan Shevchenko
 
Behind OOD: domain modelling in post-OO world.
Behind OOD:  domain modelling in post-OO world.Behind OOD:  domain modelling in post-OO world.
Behind OOD: domain modelling in post-OO world.Ruslan Shevchenko
 
scala-gopher: async implementation of CSP for scala
scala-gopher:  async implementation of CSP  for  scalascala-gopher:  async implementation of CSP  for  scala
scala-gopher: async implementation of CSP for scalaRuslan Shevchenko
 
Programming Languages: some news for the last N years
Programming Languages: some news for the last N yearsProgramming Languages: some news for the last N years
Programming Languages: some news for the last N yearsRuslan Shevchenko
 

Mehr von Ruslan Shevchenko (20)

Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]
 
Svitla talks 2021_03_25
Svitla talks 2021_03_25Svitla talks 2021_03_25
Svitla talks 2021_03_25
 
Akka / Lts behavior
Akka / Lts behaviorAkka / Lts behavior
Akka / Lts behavior
 
Papers We Love / Kyiv : PAXOS (and little about other consensuses )
Papers We Love / Kyiv :  PAXOS (and little about other consensuses )Papers We Love / Kyiv :  PAXOS (and little about other consensuses )
Papers We Love / Kyiv : PAXOS (and little about other consensuses )
 
Scala / Technology evolution
Scala  / Technology evolutionScala  / Technology evolution
Scala / Technology evolution
 
{co/contr} variance from LSP
{co/contr} variance  from LSP{co/contr} variance  from LSP
{co/contr} variance from LSP
 
N flavors of streaming
N flavors of streamingN flavors of streaming
N flavors of streaming
 
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
 
SE 20016 - programming languages landscape.
SE 20016 - programming languages landscape.SE 20016 - programming languages landscape.
SE 20016 - programming languages landscape.
 
Few simple-type-tricks in scala
Few simple-type-tricks in scalaFew simple-type-tricks in scala
Few simple-type-tricks in scala
 
Why scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisWhy scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with this
 
Scala jargon cheatsheet
Scala jargon cheatsheetScala jargon cheatsheet
Scala jargon cheatsheet
 
Java & low latency applications
Java & low latency applicationsJava & low latency applications
Java & low latency applications
 
Csp scala wixmeetup2016
Csp scala wixmeetup2016Csp scala wixmeetup2016
Csp scala wixmeetup2016
 
IDLs
IDLsIDLs
IDLs
 
R ext world/ useR! Kiev
R ext world/ useR!  KievR ext world/ useR!  Kiev
R ext world/ useR! Kiev
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platform
 
Behind OOD: domain modelling in post-OO world.
Behind OOD:  domain modelling in post-OO world.Behind OOD:  domain modelling in post-OO world.
Behind OOD: domain modelling in post-OO world.
 
scala-gopher: async implementation of CSP for scala
scala-gopher:  async implementation of CSP  for  scalascala-gopher:  async implementation of CSP  for  scala
scala-gopher: async implementation of CSP for scala
 
Programming Languages: some news for the last N years
Programming Languages: some news for the last N yearsProgramming Languages: some news for the last N years
Programming Languages: some news for the last N years
 

Osdn2013 rssh

  • 1. OSDN 2013. Велосипедостроение: Старые «новые» идеи, которые стоит иметь в виду ruslan@shevchenko.kiev.ua https://github.com/rssh/ @rssh1
  • 2. Cтарые «новые» идеи Language research Mainstream — то что очевидно Не-мейнстрим, но золотой фонд
  • 3. jj: lol where r u romeo r: wana come over? j: cant r: y? j: idk parents r: lets kill ourself j: lol k r: swag j: swag Rome & Julietta. Twitter Style. Shakespeare ?
  • 4. Очевидности int n = 10; int s = 0; for(int x = 1; x < n; ++x) { s+=x; } - состояние хранится в именованных переменных - инструкции выполняются последовательно - управляющие конструкции являются частью языка
  • 5. Более естественное представление программы (60-ые годы прошлого века) АВМ – Аналоговые вычислительные машины
  • 6. Задача = система уравнений в частных производных Решение = моделирование (электрическая схема, в которой происходят процессы, описывающиеся с так-же ) - нет вопросов сложности расчетов - машина действительно «думает» - Не все задачи можно привести к такому виду - Потери точности при масштабировании - Надо перекоммутировать схему руками
  • 7. Очевидности int nn = 10; int ss = 0; for(int xx = 1; x < nn; ++xx) { ss+=xx; } - состояние хранится в именованных переменных - можно ли представить себе программирование без них ?
  • 8. int nn = 10; int ss = 0; for(int xx = 1; x < nn; ++xx) { ss+=xx; } 0 10 1 DO I + LOOP
  • 9. 0 10 1 DO I + LOOP Forth Нет переменных – все на стеке 5 3 + . ::: sqrt-closer (square guess -- square guess adjustment) 2dup / over - 2 / ; : sqrt ( square -- root ) 1 begin sqrt-closer dup while + repeat drop nip ;
  • 10. Forth ::: sqrt-closer (square guess -- square guess adjustment) 2dup / over - 2 / ; : sqrt ( square -- root ) 1 begin sqrt-closer dup while + repeat drop nip ; x1 = 1 xn+1 = (xn+S/xn)/2
  • 11. Forth Чак Моррис colorForth Интерпретатор реализован в «железе» На одной плате — 144 форт-ядра http://www.greenarrays.com Размер кода — 1% от аналогичного на С
  • 12. Очевидности - инструкции выполняются последовательно - управляющие конструкции являются частью языка int x = 1 int d = 1 while(d != 0) { d = (s/x - x)/2 x = x+d }
  • 13. - возможно ли программирование без последовательности исполнения ? int x = 1 int d = 1 while(d != 0) { d = (s/x - x)/2 x = x+d }
  • 14. - программирование без последовательности исполнения. sqrtd(s,x,0) -> x sqrtd(s,x,d) -> sqrt(s, x+d, (s/x - x)/2 ) sqrt(s) -> sqrtd(s,1,(s-1)/2) Переписывающие правила
  • 15. Переписывающие правила Http://www.refal.org - исторический интерес APS – институт кибернетики НАНУ (сейчас следов в интернете нет) Maude (лидер рынка): Termware: http://www.gradsoft.ua/products/termware_eng.htm Stermware: https://github.com/rssh/stermware http://maude.cs.uiuc.edu/
  • 16. Очевидности - управляющие конструкции являются частью языка int x = 1 int d = 1 while(d != 0) { d = (s/x - x)/2 x = x+d }
  • 17. Tcl - управляющие конструкции можно определять в языке set x 1 do { set d [expr ($s/$x - $x)/2] while { $d != 0 }
  • 18. proc do {body whileword condition} { global errorInfor errorCode if {![string equal $whileword while]} { error "should be "do body while condition"" } while {1} { set code [catch {uplevel 1 $body} message] if { !ok( $code) } { return handleError($code, $body, $message) } } if {![uplevel 1 [list expr $condition]]} {break} } }
  • 19. Tcl Интерпретатор предлоставляет программисту API для манипуляции исполнением текущего модуля [ uplevel n block ] – исполняет блок в контексте функции, которая находится на n фреймов Выше чем текущая d = …. uplevel
  • 20. Макросы Кмпилятор предлоставляет программисту API для манипуляции компиляцией текущего модуля <[ block ]> – выполняет блок кода при компиляции и вставляет результат - Nemerle - Scala
  • 21. Scala - в какой-то степени мейнстрим - удачный аналог Algol68 (давайте сбросим все что придумала наука в индустриальный язык) - Макросы, передача по имени, зависимые типы ….......
  • 22. Итого: Очевидность мейнстрима — обман Хотите быть хорошим разработчикам и сдвинуть «точку сборки» - системотехника - forth - переписывающие правила - tcl - nemerle - scala (скорее как источник идей чем прямое использование)
  • 23. Спасибо за внимание - http://www.github.com/rssh -R&D http://www.gosave.com // Руслан Шевченко <ruslan@shevchenko.kiev.ua>