Есть ли предел высокоуровневости языка?
От: 0x7be СССР  
Дата: 14.01.11 19:15
Оценка:
Коллеги!
Как вы думаете — есть ли некий теоретический предел повышения уровня языка, при условии, что он остается языком общего назначения, то есть в него не вводятся модели, специфичные для предметных областей? Что бы сузить поле для обсуждения вопросами производительности я сейчас хочу пренебречь. Речь идет только о выразительных возможностях языка.

У меня пока своего аргументированного мнения нет, но есть некоторые соображения. Программист в программе должен сообщить полное и непротиворечивое решение, причем не все что он сообщает можно трактовать как, собственно, решение предметной проблемы.

Часть программы неизбежно занимается системными функциями — "борьбой с машиной". Это может быть управление ресурсами, синхронизация, борьба с API и так далее. Это так называемая "accidential complexity", причем связанная с конкретной реализацией того, на чем мы работаем (машина, платформа). Собственно, эти вещи в первую очередь и абстрагируются и достаточно успешно. Мы забываем про указатели и адресную арифметику, сборщик мусора за нас чистит память, операционная система подсовывает новые страницы по запросу и т.п. Ладно, предположим, что мы доабстрагировались до идеальной машины — процессор супербыстрый (бесконечный цикл за 5 секунд выполняет ), памяти неограниченное количество, ввод-вывод телепатический и т.п. Собственно, на "игрушечных" задачах современные компьютеры уже неплохо аппроксимируют такой идеальный комп.

Следующее направление повышения уровня абстракции меня интересует больше — это применение новых парадигм и моделей вычисления. Даже идеальный комп — это императивная машина, в которой мы вынуждены думать в терминах времени и состояния, даже там, где это нам не нужно. Это тоже "accidential complexity" но вызванная уже не реализацией, а концептуальной моделью, которая определяет то, в каких терминах мы думаем о задаче. Тут нам на помощь спешат другие парадигмы — функциональная, логическая, программирование на ограничениях и т.п. Вот тут, собственно, я и упираюсь в своих размышлениях. Есть ли некий предел, за которым нельзя упростить запись решения, не использовав предметно-ориентированную модель?

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

Несколько сумбурно вышло, но, надеюсь, суть донес.
Re: Есть ли предел высокоуровневости языка?
От: Cris Украина  
Дата: 14.01.11 19:21
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Коллеги!

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

самый высокоуровневый язык будет ... это будет наш язык, я точней наши мысли, мы только подумали а компилятор уже наши мысли в машинный код скомпилировал
Re[2]: Есть ли предел высокоуровневости языка?
От: 0x7be СССР  
Дата: 14.01.11 19:22
Оценка:
Здравствуйте, Cris, Вы писали:

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

Не пойдет Естественный язык обладает рядом неоднозначностей. Так что потребуется компилятор с ИИ, а это немного другая тема уже.
Re[3]: Есть ли предел высокоуровневости языка?
От: Cris Украина  
Дата: 14.01.11 19:25
Оценка:
Здравствуйте, 0x7be, Вы писали:

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


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

0>Не пойдет Естественный язык обладает рядом неоднозначностей. Так что потребуется компилятор с ИИ, а это немного другая тема уже.
я же дальше конкретизировал, что под языком я имел в виду наши мысли, а так как у людей мозг работает одинаково(почти) то и структура мыслей должны быть одинаковой практически.

и к тому времени когда до такого дойдут я думаю и компилятор с ИИ придумают, или просто ИИ который будет читать наши мысли и делать все что нам только в голову взбредет
Re[4]: Есть ли предел высокоуровневости языка?
От: Andy77 Ниоткуда  
Дата: 14.01.11 19:52
Оценка:
Здравствуйте, Cris, Вы писали:

C>и к тому времени когда до такого дойдут я думаю и компилятор с ИИ придумают, или просто ИИ который будет читать наши мысли и делать все что нам только в голову взбредет


Хорошо, если только читать...
Re: Есть ли предел высокоуровневости языка?
От: fin_81  
Дата: 14.01.11 20:20
Оценка:
Самый высокоуровневый язык при неограниченном количестве памяти и исполнителей-числодробилок — это ассоциативная память. Создаем ассоциации с данными (что хочу) и с алгоритмами (как хочу). Но тут вырастет другой вопрос, творческий — нужен генератор этих "что" и "как". Вот здесь программирование отдыхает (этот вопрос, вроде, затрагивался в книгах Азимова).
Re[2]: Есть ли предел высокоуровневости языка?
От: 0x7be СССР  
Дата: 14.01.11 20:39
Оценка:
Здравствуйте, fin_81, Вы писали:

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

Алгоритмы и структуры данных надо как-то выражать в языке. Об этом я и говорю — есть ли предел в выразительных способностях языка или нет?
Re: Есть ли предел высокоуровневости языка?
От: alpha21264 СССР  
Дата: 14.01.11 21:17
Оценка: +1
Здравствуйте, 0x7be, Вы писали:

0> Есть ли некий предел, за которым нельзя упростить запись решения, не использовав предметно-ориентированную модель?


Че-то я тебя совсем не понял.
Наша цель — коммунизм.
То есть описывать задачу на ПРЕДМЕТНО ориентированном языке.
То есть на языке задачи.

Например англо-русский перевод мы будем описывать в виде грамматических правил.
Распознавание текста — в виде образцов букв.
Шахматную игру — в виде набора правил игры.
Это и есть идеал к которому мы стремимся.

Течёт вода Кубань-реки куда велят большевики.
Re[3]: Есть ли предел высокоуровневости языка?
От: fin_81  
Дата: 14.01.11 21:18
Оценка: 15 (1) -1 :)
Здравствуйте, 0x7be, Вы писали:

0>Алгоритмы и структуры данных надо как-то выражать в языке. Об этом я и говорю — есть ли предел в выразительных способностях языка или нет?

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

Я не понимаю проблемы (холивары) с языками программирования. Если ты знаешь что хочешь и как хочешь сделать, проблемы с языками (инструментами) нет. Проблема как раз в том, что "что сделать" и "как сделать". Во многих языках зачем-то пытаются реализовать эту творческую часть (парадигмы, метапрограммирование o_O). Ищут "серебряную пулю", которая и задачу придумает и решит. Лучше бы он хорошо выполнял свою основную задачу как "инструмент решения задачи". Шаблоны на с++ — яркий пример того как язык придумывает проблему-задачу, которую должен сам же решить (время компиляции). То же самое можно сделать на обычном си. А клинические случаи лучше и проще решать на языках типа Питона, джаваскрипта. Думаю не спроста эти языки набирают обороты, ядро то у них _ассоциативное_.
Re[2]: Есть ли предел высокоуровневости языка?
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.01.11 21:36
Оценка:
C>самый высокоуровневый язык будет ... это будет наш язык, я точней наши мысли, мы только подумали а компилятор уже наши мысли в машинный код скомпилировал

естественный язык очень безобразный, и слабо подходит на роль высокоуровневого языка.
Re[2]: Есть ли предел высокоуровневости языка?
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.01.11 21:42
Оценка: +1
_>Самый высокоуровневый язык при неограниченном количестве памяти и исполнителей-числодробилок — это ассоциативная память.

высокоуровневость языка достигается за счет введения более общих абстракций, и работы с ними.
соответственно, не понятно — как именно ассоциативная память помогает при выделении абстракций, и работы с ними?
Re[2]: Есть ли предел высокоуровневости языка?
От: 0x7be СССР  
Дата: 14.01.11 21:50
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Че-то я тебя совсем не понял.

A>Наша цель — коммунизм.
A>То есть описывать задачу на ПРЕДМЕТНО ориентированном языке.
A>То есть на языке задачи.
Согласен.
Однако описание DSL + описание решения на этом DSL в итоге дают как минимум столько же информации, сколько и решение этой задачи на языке общего назначения
А вообще у меня скорее теоретический интерес.

A>Например англо-русский перевод мы будем описывать в виде грамматических правил.

A>Распознавание текста — в виде образцов букв.
A>Шахматную игру — в виде набора правил игры.
A>Это и есть идеал к которому мы стремимся.
Верю. Но ведь эти DSL-и надо сначала реализовать
Re: Есть ли предел высокоуровневости языка?
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.01.11 21:50
Оценка: 3 (1) +3
0>Чисто интуитивно, мне думается, что предел есть, поскольку я не могу представить себе вразумительной реализации предельного случая, когда любая программа выражается одним словом

высокоуровневый от низкоуровневого языка отличается не этим.

1 + 1 — пишется именно так почти на всех языках в независимости от уровневости (менять может лишь синтаксис: add(1, 1), add 1, 1 и т.д.)

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

имхо, высокоуровневость бесконечна — т.к. можно вводить всё более и более сложные абстракции.
в той же математике нашандарашили уже кучу абстракций, а современные языки умеют оперировать только самым мизером математических абстракций.
Re: Есть ли предел высокоуровневости языка?
От: nikov США http://www.linkedin.com/in/nikov
Дата: 14.01.11 21:52
Оценка:
Здравствуйте, 0x7be, Вы писали:

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


Можно представить себе чисто декларативный язык. Вместо того, чтобы на нём писать алгоритм сортировки, мы описываем, какой массив считается отсортированным, и что такое перестановка элементов, и просим найти отсортированную перестановку исходного массива, а компилятор уже сам как-то находит эффективный алгоритм для этого. Только пока нет настолько умных компиляторов, которые могли бы решать эту задачу для нетривиальных требований.
Re[4]: Есть ли предел высокоуровневости языка?
От: 0x7be СССР  
Дата: 14.01.11 22:05
Оценка:
Здравствуйте, fin_81, Вы писали:

_>Я не понимаю проблемы (холивары) с языками программирования.

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

_>Если ты знаешь что хочешь и как хочешь сделать, проблемы с языками (инструментами) нет. Проблема как раз в том, что "что сделать" и "как сделать".

Соглашусь, но лишь отчасти. Да, предметная проблема главнее языка.
Но очень хочется, что бы язык как можно меньше мешал её решать
А ещё лучше, что бы немножко помогал

_>Во многих языках зачем-то пытаются реализовать эту творческую часть (парадигмы, метапрограммирование o_O).

А что такого плохого в парадигмах и метапрограммировании?
Вон, в С тоже есть и парадигма и кое-какое метапрограммирование.

_>Ищут "серебряную пулю", которая и задачу придумает и решит. Лучше бы он хорошо выполнял свою основную задачу как "инструмент решения задачи".

Ищу не "серебряную пулю", а молоток получше

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

Можно. А нужно? Если у меня будет возможность, то я решу эту задачу на C#
Кстати, у С++ тонна недостатков, но шаблоны среди них я не вижу. Шаблоны — сильная сторона этого языка.
В том же C# я бы с удовольствием променял бы дженерики на шаблоны.

_>А клинические случаи лучше и проще решать на языках типа Питона, джаваскрипта.

На них, кстати, решают и "неклинические" случаи.

_>Думаю не спроста эти языки набирают обороты, ядро то у них _ассоциативное_.

А что это дает? В смысле, ассоциативность. Я пока как-то не проникся этой идеей. Можешь получше её расписать?
Re[3]: Есть ли предел высокоуровневости языка?
От: fin_81  
Дата: 14.01.11 22:08
Оценка: :)
Здравствуйте, DarkGray, Вы писали:

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

DG>соответственно, не понятно — как именно ассоциативная память помогает при выделении абстракций, и работы с ними?

Выделение абстракций — что-то связать (ассоциировать) с чем-то. Ассоциация — как бы(?) самый высокий уровень абстракции. Я забыл указать основную проблему ассоциативной памяти: чем больше связей (ассоциаций), тем больше время поиска. Современные языки просто ограничивают количество этих связей и сложность (сравнения) ключей, вводя типизацию, ограниченный набор операций, грамматика и тп.
Re[4]: Есть ли предел высокоуровневости языка?
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.01.11 22:53
Оценка:
_>Выделение абстракций — что-то связать (ассоциировать) с чем-то.

нет

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

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


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

ассоциация — это всего лишь связь между двумя элементами.

но в теории информации — только видов связей штук десять, а еще каждой у связи бывают ее характеристики.
также связи бывает не только элемент<->элемент, но и элемент<->множество элементов, множество элементов<->множество элементов и т.д.

ps
связи(и соответственно ассоциации) бывают следующих видов:
включения,
использования,
обобщения/конкретизации,
наследования,
является,
имеет отношение,
и т.д.
Re[2]: Есть ли предел высокоуровневости языка?
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 15.01.11 01:13
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>1 + 1 — пишется именно так почти на всех языках в независимости от уровневости (менять может лишь синтаксис: add(1, 1), add 1, 1 и т.д.)

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

Можно попросить тебя ещё написать несколько предложений по этому поводу? Ну, детализировать там, или пример написать что ли.

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

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

А как быть с тем, что какое-то понятие раньше уже использовалось и обозначает что-то другое? Например, "точка" (геометрическая) — чем дальше развивалась математика, тем большей размерностей (x, y, z, ...) эта точка получала.
Или я не в теме?
Вселенная бесконечна как вширь, так и вглубь.
Re: Есть ли предел высокоуровневости языка?
От: DSblizzard Россия  
Дата: 15.01.11 01:22
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Коллеги!

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

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

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

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

Одно слово, скажем, 10 букв латинского алфавита = 26^10 программ. Плюс-минус. Все известные понятия и программы, вы, наверное, выразите, а вот все возможные — ни за что. Это простейшая математика, никакой интуиции.
Программировать сложно. Но не программировать еще сложнее.
Re[2]: Есть ли предел высокоуровневости языка?
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 15.01.11 01:28
Оценка:
Здравствуйте, DSblizzard, Вы писали:

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


Т.е. надо стремиться к ЕЯ?
Вселенная бесконечна как вширь, так и вглубь.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.