2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Квинтессенция языков программирования.
Сообщение07.05.2015, 22:49 


07/05/15

110
Язык, вобравший в себя величайшие идеи лучших языков.

Io is a prototype-based programming language inspired by Smalltalk (all values are objects, all messages are dynamic), Self (prototype-based), NewtonScript (differential inheritance), Act1 (actors and futures for concurrency), LISP (code is a runtime inspectable/modifiable tree) and Lua (small, embeddable).

http://iolanguage.org/

Кстати, весьма полезен для понимания JS, особенно, его ООП. Фактически, в JS кастрированная версия модели ООП Io, слегка разукрашенная блекджеком

PS В этой фразе "LISP (code is a runtime inspectable/modifiable tree)" подразумеваются, видимо, традиционные лиспы с fexpr'ами. Современные мейнстримные лиспы, естественно, не обладают данным св-м.

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение08.05.2015, 09:48 


11/12/14
893
Не углублялся, но по началу забавно, да, выглядит.
Я в своё время под влиянием JS и частично лиспа хотел выдумать отдалённо что-то похожее (даже начал пытаться реализовывать, но попух на отсутствии опыта в разработке скриптов и паре всплывших моментов).
Идея была в том что всё есть выражения, специальных форм очень мало. Фигурные скобки таким образом становились не нужны, круглые скобки становились одновременно и декораторами выражений и statement-блоками, при этом как результат возвращается последнее выражение.
Например
Код:
function (x, y) ( x + y );

Есть выражение, которое возращает функцию от двух аргументов, а специальная форма:
Код:
function name(x, y)
(
   x + y
);

есть синтаксический (для привычки) сахар над:
Код:
name = function( x, y ) ( x + y );

таким образом name просто пристёгивается в момент "объявления" функции в контекст где она такое выражение будет встречено. Более того, т.к. вы выражении обрамляющие круглы скобки не обязательны, то это можно переписать как:
Код:
function name( x, y ) x + y;

В общем да, функциональщина напрягает мозги в сторону какой то унификации выражений и всех так сказать конструктов. :)

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение08.05.2015, 15:54 
Заблокирован
Аватара пользователя


07/08/06

3474
nondeterminism в сообщении #1012253 писал(а):
Язык, вобравший в себя величайшие идеи лучших языков.

Какие, например? И как у него с параллельными вычислениями? Потому как в последнее время процессоры всё больше прирастают числом, а не тактовой частотой.

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 04:46 


07/05/15

110
aa_dav в сообщении #1012377 писал(а):
Идея была в том что всё есть выражения, специальных форм очень мало.

В Io вообще нет специальных форм
Цитата:
В общем да, функциональщина напрягает мозги в сторону какой то унификации выражений и всех так сказать конструктов. :)

Io не имеет ровно никакого отношения к ФП

-- 09.05.2015, 05:50 --

AlexDem в сообщении #1012481 писал(а):
Какие, например?

например
Цитата:
all values are objects, all messages are dynamic, prototype-based, differential inheritance, actors and futures for concurrency, code is a runtime inspectable/modifiable tree

Цитата:
И как у него с параллельными вычислениями?

Цитата:
actors and futures for concurrency

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 05:53 


11/12/14
893
nondeterminism в сообщении #1012653 писал(а):
В Io вообще нет специальных форм


Присваивания таки есть.

-- 09.05.2015, 06:59 --

nondeterminism в сообщении #1012653 писал(а):
Io не имеет ровно никакого отношения к ФП


Я немного не о том что он из себя представляет. Я о том, что подвиги мысли типа "всё есть функции" пришло наверное всё таки из ФП. В JS шаг в сторону "всё есть объекты (включая функции)" тоже был сделан. Так что тут мы имеем продолжение эдакое ряда.

-- 09.05.2015, 07:02 --

P.S.
Да и кстати, если средствами языка нельзя написать method и block "as is", то это всё таки самые настоящие специальные формы, не надо наводить тень на плетень.

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 06:51 


07/05/15

110
aa_dav в сообщении #1012655 писал(а):
Присваивания таки есть.


присваивания не обязаны быть спецформами
Цитата:
Я о том, что подвиги мысли типа "всё есть функции" пришло наверное всё таки из ФП.

Возможно, из ФП пришли какие то "подвиги" куда-то, но к данной теме это не имеет ни малейшего отношения. В Ъ языках все есть объект.
Цитата:

В JS шаг в сторону "всё есть объекты (включая функции)" тоже был сделан.

шаг может и сделан, но к сожалению в js не все есть объект
Цитата:
Так что тут мы имеем продолжение эдакое ряда.

да, только фп тут опять же не причем. это продолжение идей смоллтока и селфа

Цитата:
P.S.
Да и кстати, если средствами языка нельзя написать method и block "as is", то это всё таки самые настоящие специальные формы, не надо наводить тень на плетень.

Да, и кстати, в Io это можно сделать

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:20 


11/12/14
893
nondeterminism в сообщении #1012657 писал(а):
да, только фп тут опять же не причем. это продолжение идей смоллтока и селфа


Цитата:
...LISP (code is a runtime inspectable/modifiable tree)...

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:20 


23/05/12

1245
Отсутствует компилятор IO написанный на IO, что странно для языка языков :-)

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:24 


11/12/14
893
nondeterminism в сообщении #1012657 писал(а):
Да, и кстати, в Io это можно сделать


Ну прикольно.

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:39 


07/05/15

110
aa_dav в сообщении #1012659 писал(а):
nondeterminism в сообщении #1012657 писал(а):
да, только фп тут опять же не причем. это продолжение идей смоллтока и селфа


Цитата:
...LISP (code is a runtime inspectable/modifiable tree)...

LISP ни разу не ФП-язык, это отчасти касается только scheme, да и то, только в том смысле, что там много кода "по традиции" пишется в функциональном стиле.

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:40 


23/05/12

1245
Синтаксис языка концептуаально правилен, имхо.
<имя> <сообщение> - больше ничегот не надо, сравните с нижеследующим:

Цитата:
"стрелка" это упорядоченная пара объектов произвольной природы $(a,b)$, где $a$ назовем начальным объектом, $b$ конечным объектом
Процесс конструирования стрелки назовем абстрагированием.
Начальный объект назовем абстрагируемое/означаемое/объект/значение, конечный объект назовем абстракция/означающее/имя/имя. post994108.html#p994108

Стрелку/Arrow обратную к абстрагированию $(a,b)$ назовем специализацией или связыванием $(b,a)$ .
Поскольку мы не накладывали никаких ограничений на объекты, то легко видеть, что понятие абстракции относительно, в некотором смысле. Вот так мы легко разобрались и формализовали! понятие абстракция. post994367.html#p994367

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:53 


11/12/14
893
nondeterminism в сообщении #1012662 писал(а):
LISP ни разу не ФП-язык


Ну ну...
Так или иначе, лично я, впервые заметил именно на ФП, что "всё выглядит как функция" можно сильно усилить как "всё есть функция".
Вот есть у нас АСТ си-подобного языка:
Код:
while
|       \
>      тело
|  \
a   10

А почему бы не условится, что while это никакое не специальное ключевое слово, а такое же ВЫРАЖЕНИЕ, как узел ">" в АСТ? И любое выражение возвращает значение. Любое вообще. В чём тогда смысл фигурных скобок? Да они ничем не лучше круглых же! Убираем, унифицируем, ляпота.

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:58 


07/05/15

110
aa_dav в сообщении #1012665 писал(а):
nondeterminism в сообщении #1012662 писал(а):
LISP ни разу не ФП-язык


Ну ну...
Так или иначе, лично я, впервые заметил именно на ФП, что "всё выглядит как функция" можно сильно усилить как "всё есть функция".
Вот есть у нас АСТ си-подобного языка:
Код:
while
|       \
>      тело
|  \
a   10

А почему бы не условится, что while это никакое не специальное ключевое слово, а такое же ВЫРАЖЕНИЕ, как узел ">" в АСТ? И любое выражение возвращает значение. Любое вообще. В чём тогда смысл фигурных скобок? Да они ничем не лучше круглых же! Убираем, унифицируем, ляпота.

Цитата:
In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.

Цитата:
А почему бы не условится, что while это никакое не специальное ключевое слово, а такое же ВЫРАЖЕНИЕ

В Io так и условились

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:59 
Заблокирован
Аватара пользователя


07/08/06

3474
nondeterminism в сообщении #1012653 писал(а):
AlexDem в сообщении #1012481 писал(а):
Какие, например?
например
Цитата:
all values are objects, all messages are dynamic, prototype-based, differential inheritance, actors and futures for concurrency, code is a runtime inspectable/modifiable tree
Это всё слишком общо. Чем хороши все значения в виде объектов? Это ведь значит, что наложено ограничение: скалярные типы запрещены. Если ограничение не привносит преимуществ, то зачем оно нужно. Дерево вычислений - что имеется в виду? Т.е. а где код нельзя представить в виде дерева? Потому как любое выражение можно. Модифицируемость этого дерева - а синтаксис языка не определяет это дерево однозначно?

nondeterminism в сообщении #1012653 писал(а):
Цитата:
И как у него с параллельными вычислениями?
Цитата:
actors and futures for concurrency
Что значат эти "futures"? Реализован ли конкретный механизм конкурирующего доступа к данным?

 Профиль  
                  
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 08:02 


11/12/14
893
nondeterminism в сообщении #1012666 писал(а):
В Io так и условились


Ну а я о чём??

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group