2014 dxdy logo

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

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




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

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 
Не углублялся, но по началу забавно, да, выглядит.
Я в своё время под влиянием 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 
Аватара пользователя
nondeterminism в сообщении #1012253 писал(а):
Язык, вобравший в себя величайшие идеи лучших языков.

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

 
 
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 04:46 
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 
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 
aa_dav в сообщении #1012655 писал(а):
Присваивания таки есть.


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

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

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

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

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

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

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

 
 
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:20 
nondeterminism в сообщении #1012657 писал(а):
да, только фп тут опять же не причем. это продолжение идей смоллтока и селфа


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

 
 
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:20 
Отсутствует компилятор IO написанный на IO, что странно для языка языков :-)

 
 
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:24 
nondeterminism в сообщении #1012657 писал(а):
Да, и кстати, в Io это можно сделать


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

 
 
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:39 
aa_dav в сообщении #1012659 писал(а):
nondeterminism в сообщении #1012657 писал(а):
да, только фп тут опять же не причем. это продолжение идей смоллтока и селфа


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

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

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

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

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

 
 
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:53 
nondeterminism в сообщении #1012662 писал(а):
LISP ни разу не ФП-язык


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

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

 
 
 
 Re: Квинтессенция языков программирования.
Сообщение09.05.2015, 07:58 
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 
Аватара пользователя
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 
nondeterminism в сообщении #1012666 писал(а):
В Io так и условились


Ну а я о чём??

 
 
 [ Сообщений: 24 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group