Pull to refresh

Comments 7

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

Моё мнение — код должен обеспечивать инфраструктуру, должен быть движком. А всю подобную логику можно и нужно вынести в данные. Подгрузить онтологий, синтаксических парсеров, солверов, выстраивать правила разбора и вывода.

Рассуждение — это процесс анализа фактов, понимание смысла, причины и следствия. Здесь никакого анализа нет. Для машины все правила выглядят одинаково, тут просто поиск соответствия паттернам, факт соответствия паттерну имеет смысл только для человека.

Кстати, чем описанный язык разметки отличается от Пролога?

Проблема в том, что описания, привязанные к каждому вычислению, могут расти экспоненциально.
Например, X {описание X} + Y {описание Y} = Z {сумма {описание X} и {описание Y}}

Если в алгоритме тысячи итераций, память будет забита гигабайтами описаний, в которых человек не разберётся.
Проблема реализации в том, что такой язык все еще не естественный. И по сути это:
meaningful.query('добавить {} Земля {} в {} planets', { execute: true });
не сильно отличается от
planets.push(Earth);
Да и {скобки} все еще напоминают о тупости программ. Если бы можно было в добавить Земля в planets находить ключевые слова, (добавить, в) решение уже можно было бы использовать.
Было бы из-за того, что решение

function getVolumeOfBall(diameter) {
    if (diameter === 2)
        return 4.1887902047864;
    if (diameter === 142984)
        return 1530597322872155.8;
}

не подходит. Код должен мыслить иначе:

function getVolumeOfBall(diameter) {
    return Math.PI * 4 / 3 * Math.pow(diameter / 2, 3);
}

А без этого программирование так и останется написанием кода, пусть и коверканным русским языком.

PS.
expect(planets).toEqual([ 'Земля', 'Юпитер' ]);
Тогда уж лучше будет
meaningful.query("{группа} Земля, Юпитер {должна являться значением} planets", {execute: true});


PPS.
eval(list + '.push(\'' + element + '\')');

Убивал Наказывал бы за такой код. Ну почему, почему нельзя сделать так?
window[list].push(element);
Sign up to leave a comment.

Articles