OSDN 2013.
Велосипедостроение:
Старые «новые» идеи,
которые стоит иметь в виду
ruslan@shevchenko.kiev.ua
https://github.co...
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...
Очевидности
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)
2...
Forth
::: sqrt-closer (square guess -- square guess adjustment)
2dup / over - 2 / ;
: sqrt ( square -- root )
1 begin sqrt...
Forth
Чак Моррис
colorForth
Интерпретатор реализован в «железе»
На одной плате — 144 форт-ядра
http://www.greenarrays.com
...
Очевидности
- инструкции выполняются последовательно
- управляющие конструкции являются частью языка
int x = 1
int d = 1
w...
- возможно ли программирование без
последовательности исполнения ?
int x = 1
int d = 1
while(d != 0) {
d = (s/x - x)/2
x =...
- программирование без
последовательности исполнения.
sqrtd(s,x,0) -> x
sqrtd(s,x,d) -> sqrt(s, x+d, (s/x - x)/2 )
sqrt(s)...
Переписывающие правила
Http://www.refal.org - исторический интерес
APS – институт кибернетики НАНУ
(сейчас следов в интерн...
Очевидности
- управляющие конструкции являются частью языка
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 ...
Tcl
Интерпретатор предлоставляет программисту
API для манипуляции исполнением текущего
модуля
[ uplevel n block ] – исполн...
Макросы
Кмпилятор предлоставляет программисту
API для манипуляции компиляцией текущего
модуля
<[ block ]> – выполняет блок...
Scala
- в какой-то степени мейнстрим
- удачный аналог Algol68
(давайте сбросим все что придумала наука
в индустриальный яз...
Итого:
Очевидность мейнстрима — обман
Хотите быть хорошим разработчикам
и сдвинуть «точку сборки»
- системотехника
- forth...
Спасибо за внимание
- http://www.github.com/rssh
-R&D http://www.gosave.com
// Руслан Шевченко
<ruslan@shevchenko.kiev.ua>
Upcoming SlideShare
Loading in …5
×

Osdn2013 rssh

451 views

Published on

OSDN2013 talk

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
451
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Osdn2013 rssh

  1. 1. OSDN 2013. Велосипедостроение: Старые «новые» идеи, которые стоит иметь в виду ruslan@shevchenko.kiev.ua https://github.com/rssh/ @rssh1
  2. 2. Cтарые «новые» идеи Language research Mainstream — то что очевидно Не-мейнстрим, но золотой фонд
  3. 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. 4. Очевидности int n = 10; int s = 0; for(int x = 1; x < n; ++x) { s+=x; } - состояние хранится в именованных переменных - инструкции выполняются последовательно - управляющие конструкции являются частью языка
  5. 5. Более естественное представление программы (60-ые годы прошлого века) АВМ – Аналоговые вычислительные машины
  6. 6. Задача = система уравнений в частных производных Решение = моделирование (электрическая схема, в которой происходят процессы, описывающиеся с так-же ) - нет вопросов сложности расчетов - машина действительно «думает» - Не все задачи можно привести к такому виду - Потери точности при масштабировании - Надо перекоммутировать схему руками
  7. 7. Очевидности int nn = 10; int ss = 0; for(int xx = 1; x < nn; ++xx) { ss+=xx; } - состояние хранится в именованных переменных - можно ли представить себе программирование без них ?
  8. 8. int nn = 10; int ss = 0; for(int xx = 1; x < nn; ++xx) { ss+=xx; } 0 10 1 DO I + LOOP
  9. 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. 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. 11. Forth Чак Моррис colorForth Интерпретатор реализован в «железе» На одной плате — 144 форт-ядра http://www.greenarrays.com Размер кода — 1% от аналогичного на С
  12. 12. Очевидности - инструкции выполняются последовательно - управляющие конструкции являются частью языка int x = 1 int d = 1 while(d != 0) { d = (s/x - x)/2 x = x+d }
  13. 13. - возможно ли программирование без последовательности исполнения ? int x = 1 int d = 1 while(d != 0) { d = (s/x - x)/2 x = x+d }
  14. 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. 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. 16. Очевидности - управляющие конструкции являются частью языка int x = 1 int d = 1 while(d != 0) { d = (s/x - x)/2 x = x+d }
  17. 17. Tcl - управляющие конструкции можно определять в языке set x 1 do { set d [expr ($s/$x - $x)/2] while { $d != 0 }
  18. 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. 19. Tcl Интерпретатор предлоставляет программисту API для манипуляции исполнением текущего модуля [ uplevel n block ] – исполняет блок в контексте функции, которая находится на n фреймов Выше чем текущая d = …. uplevel
  20. 20. Макросы Кмпилятор предлоставляет программисту API для манипуляции компиляцией текущего модуля <[ block ]> – выполняет блок кода при компиляции и вставляет результат - Nemerle - Scala
  21. 21. Scala - в какой-то степени мейнстрим - удачный аналог Algol68 (давайте сбросим все что придумала наука в индустриальный язык) - Макросы, передача по имени, зависимые типы ….......
  22. 22. Итого: Очевидность мейнстрима — обман Хотите быть хорошим разработчикам и сдвинуть «точку сборки» - системотехника - forth - переписывающие правила - tcl - nemerle - scala (скорее как источник идей чем прямое использование)
  23. 23. Спасибо за внимание - http://www.github.com/rssh -R&D http://www.gosave.com // Руслан Шевченко <ruslan@shevchenko.kiev.ua>

×