Re: Есть ли предел высокоуровневости языка?
От: Kerbadun  
Дата: 15.01.11 01:51
Оценка: 4 (1) +3
Допустим, у меня задача — сложить два числа.

Любой язык с функцией сложения чисел будет предельно высокоуровневым для этой задачи.

Получается, высокоуровневость зависит от задачи.

Собственно, высокоуровневость языка и определяется количеством примитивов языка, необходимых для реализации задачи.

Если в языке для выполнения некоторой задачи имеется ровно один примитив, то этот язык будет для данной задачи предельно высокоуровневым.

Кстати, насчет языка. Ведь определение функции в языке программирования расширяет этот язык, вводит новый символ!

Например, функция Sort() — это абстрактный символ языка для обозначения операции выполнения сортировки и неважно, встроена ли эта функция в язык, описана в стандартной библиотеке или библиотеке пользователя. Следует заметить, что само название этой функции вообще имеет смысл только для человека, понимающего английский язык. С точки зрения программы это просто еще один абстрактный символ языка.

В некотором контексте программы все доступные в этом контексте функции и типы можно считать частью языка.

Когда он умрет, его мозг заспиртуют в стакане
Re[3]: Есть ли предел высокоуровневости языка?
От: DSblizzard Россия  
Дата: 15.01.11 02:05
Оценка:
Здравствуйте, Real 3L0, Вы писали:

R3>Здравствуйте, DSblizzard, Вы писали:


DS>>Одно слово, скажем, 10 букв латинского алфавита = 26^10 программ. Плюс-минус. Все известные понятия и программы, вы, наверное, выразите, а вот все возможные — ни за что. Это простейшая математика, никакой интуиции.


R3>Т.е. надо стремиться к ЕЯ?


Не слишком понял, как получился такой вывод. Я агитирую за переход к ЕЯ по таким причинам:
Ограниченные возможности человека по запоминанию и пониманию новых абстракций
Объединение усилий. Над программированием на ЕЯ будет работать не меньше человек, чем сейчас работает над Java
Больший масштаб применения. Программировать смогут врачи, менеджеры и т. д.
Программировать сложно. Но не программировать еще сложнее.
Re[5]: Есть ли предел высокоуровневости языка?
От: fin_81  
Дата: 15.01.11 07:56
Оценка:
Здравствуйте, DarkGray, Вы писали:

_>>Выделение абстракций — что-то связать (ассоциировать) с чем-то.

DG>нет
DG>очень низкоуровневая модель — мало чем помогающая

>> Ассоциация — как бы(?) самый высокий уровень абстракции.


DG>нет. ассоциация — одна из элементарных абстракций, реализуется почти всеми современными языками в виде прямых ссылок на объект, а также в виде контейнера dictionary/map


надо 1+2
первый уровень (высший) абстракции
1 — число (данные)
2 — число (данные)
+ — сложить (данные-действие)

следующий уровень
1 — 00000001 (множество бит)
2 — 00000001 (множество бит)
+ — реализация алгоритма сложения столбиком для двоичных чисел

Мне как программисту проще работать с первым уровнем абстракции, не хочу переходить на следующий, где появляются более сложные абстракции — множество, бит, сложение столбиком. Что выше — простота или сложность?

У меня простые ассоциации: если числа и сложить (данные), то нужен калькулятор. Мне не нужны более сложные абстракции. Если нет этих ассоциаций, то наступает время творческого поиска — как бы мне представить эти "числа", и как их "сложить".

Любую связь любой арности можно связать посредством связи между двумя объектами. То что O(n^2) — по условию задачи у нас ресурсы не ограничены.

В чем сила ассоциативного языка: есть вопрос-задача, сразу есть ответ.
В чем слабость: нет ответа — долгий "творческий" поиск по графу связей (абстракций).

Современные ЯП из-за не хватки ресурсов или
— ограничивают "ширину" поиска, они ищут "в глубь", сразу уходят в дебри абстракций предметной области. Императивные языки.
— ограничивают "глубину" поиска, ищут "в ширь". Декларативные языки.
Re[2]: Есть ли предел высокоуровневости языка?
От: 0x7be СССР  
Дата: 15.01.11 07:59
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>высокоуровневый язык — позволяет "нативно" оперировать сложными абстракциями.

В этом есть зерно. Вон, Пролог построен вокруг достаточно сложно абстракции — поисковой задачи.

DG>имхо, высокоуровневость бесконечна — т.к. можно вводить всё более и более сложные абстракции.

DG>в той же математике нашандарашили уже кучу абстракций, а современные языки умеют оперировать только самым мизером математических абстракций.
Понятное мнение, спасибо
Re[2]: Есть ли предел высокоуровневости языка?
От: 0x7be СССР  
Дата: 15.01.11 08:02
Оценка:
Здравствуйте, nikov, Вы писали:

N>Можно представить себе чисто декларативный язык. Вместо того, чтобы на нём писать алгоритм сортировки, мы описываем, какой массив считается отсортированным, и что такое перестановка элементов, и просим найти отсортированную перестановку исходного массива, а компилятор уже сам как-то находит эффективный алгоритм для этого. Только пока нет настолько умных компиляторов, которые могли бы решать эту задачу для нетривиальных требований.

Ну вообще такие языки представлять особо не надо, они уже есть. Решение задач сортировки в виде "найди среди всех пермутаций списка удовлетворяющую таким-то условиям" вполне может быть записано на Прологе. Но сама спецификация результата тоже может быть достаточно сложной и с ней возникнут те же проблемы — потребуются средства модульности, абстракции и т.п.
Re[2]: Есть ли предел высокоуровневости языка?
От: 0x7be СССР  
Дата: 15.01.11 08:09
Оценка:
Здравствуйте, DSblizzard, Вы писали:

DS>Нет

Понятно

DS>От специфичности вы никак не избавитесь. При достаточном повышении уровня языка он сам по себе становится предметной областью, не менее сложной и специфичной, чем любая другая.

Ну это немного не то. Я говорю о прикладных областях, о тех, для которых DSL-и пишутся.

DS>Одно слово, скажем, 10 букв латинского алфавита = 26^10 программ. Плюс-минус. Все известные понятия и программы, вы, наверное, выразите, а вот все возможные — ни за что. Это простейшая математика, никакой интуиции.

Ну это такой HQ9++ получится с 26^10 слов
Re[6]: Есть ли предел высокоуровневости языка?
От: fin_81  
Дата: 15.01.11 08:30
Оценка:
Здравствуйте, fin_81, Вы писали:

В общем, я свою позицию высказал. Часть похоже на правду, часть — на бред, не мне решать. За сим умолкаю, послушаю других.
Re[2]: Есть ли предел высокоуровневости языка?
От: 0x7be СССР  
Дата: 15.01.11 08:38
Оценка:
Здравствуйте, Kerbadun, Вы писали:

K>Допустим, у меня задача — сложить два числа.

K>Любой язык с функцией сложения чисел будет предельно высокоуровневым для этой задачи.
Действительно.

K>Получается, высокоуровневость зависит от задачи.

K>Собственно, высокоуровневость языка и определяется количеством примитивов языка, необходимых для реализации задачи.
K>Если в языке для выполнения некоторой задачи имеется ровно один примитив, то этот язык будет для данной задачи предельно высокоуровневым.
+500

K>Кстати, насчет языка. Ведь определение функции в языке программирования расширяет этот язык, вводит новый символ!

Не во всех языках такие символы "равноправны" с конструкциями языка, а только там, где есть нормально метапрограммирование. Кроме того, дело-то не только в примитивах, но и в средствах их комбинации и абстракции.

Например, если у меня есть задача сложить ТРИ числа, то появляется разница между тем, как можно скомбинировать два сложения:

temp = Add(a ,b);
result = Add(temp, c);

или
result = Add(a, Add(b ,c));
Re: Есть ли предел высокоуровневости языка?
От: MasterZiv СССР  
Дата: 15.01.11 12:19
Оценка:
On 14.01.2011 22:15, 0x7be wrote:

> подсовывает новые страницы по запросу и т.п. Ладно, предположим, что мы

> доабстрагировались до идеальной машины — процессор супербыстрый (бесконечный
> цикл за 5 секунд выполняет ), памяти неограниченное количество, ввод-вывод
> телепатический и т.п. Собственно, на "игрушечных" задачах современные компьютеры
> уже неплохо аппроксимируют такой идеальный комп.

Ты грубоко неправ. Я запустил бесконечный цикл на самой быстрой из моих машин,
но он в 5 секунд не уложился. Даже в 5 минут не уложился. Так что твои оценки
мощности современных компьютеров очень далеки от реальности.
Posted via RSDN NNTP Server 2.1 beta
Re: Есть ли предел высокоуровневости языка?
От: MasterZiv СССР  
Дата: 15.01.11 12:23
Оценка: +2
On 14.01.2011 22:15, 0x7be wrote:

> Как вы думаете — есть ли некий теоретический предел повышения уровня языка, при

> условии, что он остается языком общего назначения, то есть в него не вводятся
> модели, специфичные для предметных областей?

Я бы сказал, что повышение уровня современных языков идёт именно в сторону
конкретных предметных областей и в направлении от языков общего назначения. Типа
язык для написания GUI, язык для задания запросов, язык для хранимых процедур в
БД, язык описания бизнес-правил вашей системы автоматизации и т.п.

Там предел очевидно есть -- та самая предметная область.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Есть ли предел высокоуровневости языка?
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 15.01.11 13:16
Оценка: 26 (3) +1
R3>Можно попросить тебя ещё написать несколько предложений по этому поводу? Ну, детализировать там, или пример написать что ли.

сложная абстракция вводит набор понятий, их взаимодействие, следствия, выводы, правила и т.д.
если язык — все это поддерживает сам, то можно говорить о "нативной" поддержке абстракции языком, иначе приходится абстракцию поддерживать самому разработчику, разработчику приходится "учить" язык новой абстракции — при этом используя лишь набор абстракций. которые уже понятны языку.
но тут возникает проблема:
1. что ряд абстракций не выразимы через более простые абстракции, и их необходимо вводить напрямую.
2. в современные языки введена очень небольшая часть абстракций, современные языки даже не понимают абстракцию "число", для них это лишь абстрактный символ. худо-бедно в языки введена лишь абстракция "категории"

возьмем, например, абстракцию "упорядоченная последовательность".
для современных языков (как верно заметил Kerbadun) — это понятие пустой звук, это лишь символ, из которого ничего не следует.

если язык "нативно" поддерживает абстракцию "упорядоченная последовательность", то язык умеет сам оперировать следующими выводами:
items.Sort().Take(3) есть items.MinElements(3)
items.Sort().Reverse() => items.Sort(desc)
sorted_items_больше_нуля.Concat(sorted_items_меньше_нуля).Sort() => sorted_items_меньше_нуля.concat(sorted_items_больше_нуля)
items.Sort(x=>x.name).Sort(x=>x.age) => items.Sort(x=>x.age, x=>x.name) для stable-сортировки
и
items.Sort(x=>x.name).Sort(x=>x.age) => items.Sort(x=>x.age) для не-stable-сортировки

сам понимает, что последовательность "1, 2, 4", это есть упорядоченная последовательность
и т.д.

опять же все вышеперечисленные выводы язык может делать, только если в язык введены абстракции "оптимальность", "вычислительная сложность", "множества" и т.д.

можно взять так же абстракцию "иммутабельность"
на любом языке эту абстракцию можно эмулировать,
но лишь на языках (например, большинстве фя-шных), которые эту абстракцию поддерживают "нативно" — это будет делаться легко, и весь выигрыш от использования данной абстракции будет обеспечивать сам язык, не требуя участия программиста.

DG>>имхо, высокоуровневость бесконечна — т.к. можно вводить всё более и более сложные абстракции.

DG>>в той же математике нашандарашили уже кучу абстракций, а современные языки умеют оперировать только самым мизером математических абстракций.

R3>А как быть с тем, что какое-то понятие раньше уже использовалось и обозначает что-то другое? Например, "точка" (геометрическая) — чем дальше развивалась математика, тем большей размерностей (x, y, z, ...) эта точка получала.

R3>Или я не в теме?

абстракция "точка" — она одна.
точка — это элемент пространства. пространства имеют набор независимых координатных осей. чем больше в пространстве независимых координатных осей — тем выше размерность.

да, в процессе познания мира, абстракция точки менялась, доуточнялась, избавлялась от шелухи и т.д. — при этом оставаясь одной и той же абстракцией.

можно взять абстракцию "числа" — да, с каждым новым витков развития математики, абстракция числа достраивалась: натуральные числа -> ноль -> отрицательные числа -> рациональные числа -> иррациональные числа -> комплексные числа, но это все одна абстракция "числа" (либо более узкая, либо более широкая).
Re[2]: Есть ли предел высокоуровневости языка?
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 15.01.11 13:36
Оценка: 4 (1)
DS>Одно слово, скажем, 10 букв латинского алфавита = 26^10 программ. Плюс-минус. Все известные понятия и программы, вы, наверное, выразите, а вот все возможные — ни за что. Это простейшая математика, никакой интуиции.

это лишь вопрос правильной постановки задачи.

задача ставится следующим образом:
введение
давайте возьмем все имеющиеся знания и запишем.
постановка
предложить принципы архиватора, а так же словарь для данного архиватора — которые сожмет эти знание лучше всего.

в результате:
принципы архиватора => это и есть абстракции, которые необходимо знать, и которыми необходимо уметь оперировать (должны быть встроены в язык)
словарь => это набор слов, на которых строится язык.

зы
естественный язык — очень избыточен, там для одних и тех же понятий может использоваться 10, 100, 1000 слов синонимов.

например, описание информации крутится вокруг небольшого набора понятий:
элемент
характеристики (элемента)
связь
обобщение
вариация
конкретизация
условие

и соответственно для описания этих понятий достаточно 3-х бит (т.е. даже на один символ естественного языка не набралось)

а следующие слова являются лишь синонимами для данных понятий:
объект -> элемент
класс -> обобщение объекта выраженное в виде элемента
метаданные -> набор обобщенных элементов
атрибуты -> характеристики метаданных
и т.д.
Re[3]: Есть ли предел высокоуровневости языка?
От: nikov США http://www.linkedin.com/in/nikov
Дата: 15.01.11 17:47
Оценка:
Здравствуйте, 0x7be, Вы писали:

N>>Можно представить себе чисто декларативный язык. Вместо того, чтобы на нём писать алгоритм сортировки, мы описываем, какой массив считается отсортированным, и что такое перестановка элементов, и просим найти отсортированную перестановку исходного массива, а компилятор уже сам как-то находит эффективный алгоритм для этого. Только пока нет настолько умных компиляторов, которые могли бы решать эту задачу для нетривиальных требований.


0>Ну вообще такие языки представлять особо не надо, они уже есть. Решение задач сортировки в виде "найди среди всех пермутаций списка удовлетворяющую таким-то условиям" вполне может быть записано на Прологе.


Записать-то можно, но найдет ли компилятор достаточно эффективное решение (или будет перебирать все перестановки)?
Re[4]: Есть ли предел высокоуровневости языка?
От: 0x7be СССР  
Дата: 15.01.11 18:15
Оценка:
Здравствуйте, nikov, Вы писали:

N>Записать-то можно, но найдет ли компилятор достаточно эффективное решение (или будет перебирать все перестановки)?

Ну, я сейчас специально оговорился, что речь веду только о выразительной способности языка, намеренно забывая о вопросах эффективности. Впрочем, действительно, ТАКАЯ программа на Прологе будет в перебирать все перестановки
Re: Хотелось бы просто привести пример
От: Wolverrum Ниоткуда  
Дата: 15.01.11 21:22
Оценка:
http://www.linux.org.ru/forum/development/5794823
и. скажем, http://www.linux.org.ru/jump-message.jsp?msgid=5794823&cid=5796251

Интересная особенность: более высокоуровневый алгоритм (ЕЯ) не обязательно более лаконичен (чем лисп, в нашем примере).

Ну и по теме.
Предел высокоуровневости есть — он ограничен нашими заниями.
Иначе, выходит, можно было бы сконструировать программу, которая оперировала бы понятиями (невыразимыми в ЕЯ, значит). недоступными нашему пониманию, по сути — модель вычислителя более сложного, чем человеческий мозг.
Re[2]: Хотелось бы просто привести пример
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 15.01.11 21:52
Оценка:
W>Иначе, выходит, можно было бы сконструировать программу, которая оперировала бы понятиями (невыразимыми в ЕЯ, значит). недоступными нашему пониманию, по сути — модель вычислителя более сложного, чем человеческий мозг.

почти каждый переход логически не верен.
Re[3]: Хотелось бы просто привести пример
От: Wolverrum Ниоткуда  
Дата: 15.01.11 22:59
Оценка:
Здравствуйте, DarkGray,

А что мы видим по ходу треда? Под ростом уровня абстракций подразумевается приближение к программированию на ЕЯ: "самый высокоуровневый язык будет ... это будет наш язык", "То есть на языке задачи." и т.п. ЕЯ — как "идеальный ЯП".

А вот и предел — программа может оперировать в рамках текущего словаря ЕЯ: хоть некоторые предложения ЕЯ и грамматически верные, но семантически они (еще, уже) пусты (это я имел в виду под фразой "невыразимыми в ЕЯ, значит", мож плохо выразился ). Словарь, в свою очередь, задает рамки знаний ("Предел высокоуровневости есть — он ограничен нашими заниями.") и наоборот — знания задают словарь (эскимосы различают что-то около 20 видов снега, хотя в русском языке их менее полудюжины, а вот в связи с нашими знаниями в ядерной физике слово "цвет" приобрело новое значение — думаю Вы поняли, что я имею в виду). Не?

А что, если программа может и НЕ оперировать в рамках текущего словаря ЕЯ?
Вот "программа" на ЕЯ: "Сделай то — не знаю что"; и машина выдаст результат навроде "хливких шорьков" — как это можно будет понимать, а главное — как использовать (построить модель использования)? "Пыряться по наве" (положим, это единственное действие которое можно произвести над предыдущим результатом) не прикажешь — эти понятия, по сути, нам еще не известны... Вот и "потолок" ЕЯ. То есть, ситуация с получением непонятных человеку результатов — более чем реальна ("можно было бы сконструировать программу, которая оперировала бы понятиями (невыразимыми в ЕЯ, значит). недоступными нашему пониманию"), "хливких шорьков" в орфографическом словаре ведь нет? Нет.
Re[4]: Слова для снега
От: SergeCpp Россия http://zoozahita.ru
Дата: 15.01.11 23:16
Оценка: 1 (1)
Здравствуйте, Wolverrum!

W>...эскимосы различают что-то около 20 видов снега, хотя в русском языке их менее полудюжины...


Про слова для снега (там много, поэтому лишь ссылка): http://rsdn.ru/forum/life/3727563.1.aspx
Автор: SergeCpp
Дата: 07.03.10
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
снег
Re: Слово
От: SergeCpp Россия http://zoozahita.ru
Дата: 15.01.11 23:22
Оценка: :)
Здравствуйте, 0x7be!

0>...я не могу представить себе вразумительной реализации предельного случая, когда любая программа выражается одним словом...


1 В начале было Слово, и Слово было у Бога, и Слово было Бог.
2 Оно было в начале у Бога.
3 Всё чрез Него начало быть, и без Него ничто не начало быть, что начало быть.

Иоанн, глава 1

0>...И совершено непонятно, насколько мы далеки от этой границы.


Бесконечно
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
слово
Re[4]: Хотелось бы просто привести пример
От: Lloyd Россия  
Дата: 15.01.11 23:27
Оценка: 2 (1) +1
Здравствуйте, Wolverrum, Вы писали:

W>эскимосы различают что-то около 20 видов снега, хотя в русском языке их менее полудюжины



...

Если уж речь пошла об антропологических «утках», то, дискутируя о языке и мышлении, нельзя не упомянуть о Великой мистификации эскимосского словаря. Вопреки распространенному мнению, эскимосы имеют не больше слов для обозначения снега, чем носители английского. Они отнюдь не пользуются четырьмястами слов для обозначения снега, как порой пишут; этих слов ни двести, ни сто, ни сорок восемь, ни даже девять. Один из словарей приводит всего лишь два таких слова. Скрупулезно подсчитывая, эксперты могут насчитать где-то около дюжины, но по таким меркам английский не намного уступает, поскольку в нем имеются: snow 'снег', sleet 'снежная крупа', slush 'мокрый снег', hail 'град', hardpack 'наст 9 , powder 'пороша',у7шуу 'снежный шквал', blizzard 'метель', avalanche 'лавина', dusting 'поземка' или такой неологизм Брюса Шоглера, метеоролога из Бостонской телепрограммы, как snizzling 'снегопакость'.

Тогда откуда же пошел этот миф? Во всяком случае, его автор отнюдь не тот, кто и в самом деле штудировал эскимосско-алеутскую семью полисинтетических языков, на которых говорят аборигены от Сибири до Гренландии. Антрополог Лора Мартин документально зафиксировала, что эта легенда родилась в городском кабинете, становясь все более впечатляющей с каждым пересказом. В 1911 г. Боас как-то случайно обмолвился, что эскимосы имеют четыре не связанных между собой корня слов для обозначения снега. Уорф приукрасил этот рассказ, упомянув уже цифру семь и намекнув, что можно насчитать и больше. Его статья широко разошлась по разным изданиям, потом стала цитироваться в учебниках и популярных книжках по языкознанию, что привело к невероятному раздуванию первоначально упомянутых цифр в книгах, статьях и газетных колонках «Удивительное рядом».

...

Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.