описание и реализация алгоритма

 
0
 
Functional languages
ava
mrgloom | 11.07.2012, 17:35
теоретический вопрос.

1.допустим есть описание алгоритма словестное\умственное.
2.есть его описание на более строгом скажем математическом языке или каком то высокоуровневом.
3.и есть его реализация.

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

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

но вопрос в том какой предел на "высокоуровневость" языка? 
Comments (8)
ava
baldina | 14.08.2012, 13:15 #
Цитата (mrgloom @  11.7.2012,  16:35 findReferencedText)
какой предел на "высокоуровневость" языка

видимо предельный язык - человеческий.
ava
mrgloom | 16.08.2012, 12:38 #
Цитата (baldina @  14.8.2012,  13:15 findReferencedText)
Цитата(mrgloom @  11.7.2012,  16:35 )

какой предел на "высокоуровневость" языка



видимо предельный язык - человеческий. 



ну видимо нет, всё таки должен существовать парсер который однозначно воспринимает, то что ему сказали, а для человеческого это не так.
тем более это не самый ёмкий удобный всегда способ скорее всего.
ava
baldina | 16.08.2012, 14:13 #
Цитата (mrgloom @  16.8.2012,  12:38 findReferencedText)
должен существовать парсер который однозначно воспринимает

существуют нечеткие множества, теория возможностей, нейронные сети...

к тому же разговор о пределе. предел это горизонт.
ava
mrgloom | 17.08.2012, 15:50 #
ну вообще изначально я имел ввиду из-за того что мы пишем код программы "что я хочу получить", а "а не как я это получаю путем последовательности действий"  не возможно ли по "описанию" алгоритма находить код в неком общем репозитории?
например получить все чётные X из множества мы лишь описываем, что хотим получить.

конечно можно это заменить на get_all_X_numbers() и найти по описанию и скачать библиотеку, но возможно в разных библиотеках под этим понимается разное.

вообщем я имею ввиду что тут необходим некий лаконичный язык, но однозначно интерпретируемый, пока это похоже подходит только для математики.
ava
baldina | 17.08.2012, 17:07 #
с одной стороны, есть декларативные языки, которые как раз позволяют писать программу, объясняя что нужно получить, не описывая сам алгоритм (Пролог, например).
с другой стороны, существуют "черные ящики", где хранятся реализации алгоритмов, это - библиотеки. в т.ч. есть библиотеки, в которых есть функция "получить все файлы в папке".
организовать хранилище "черных ящиков", в которых реализованы задачи (более высокоуровневые, чем простые алгоритмы), возможно, но есть затруднение: что бы их применять требуется унифицированный интерфейс. применяя библиотеки, унификацию интерфейса обеспечивает программист, вручную.

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

Цитата (mrgloom @  17.8.2012,  15:50 findReferencedText)
лаконичный язык, но однозначно интерпретируемый

вообще-то современные языки этому имхо во многом удовлетворяют:

using namespace std;
using boost::filesystem;
copy(directory_iterator("/tmp"), directory_iterator(), ostream_iterator<directory_entry>(cout, "\n"));


iterator_apply ($it=new DirectoryIterator('/tmp'), function ($it) {
  echo $it->getFilename(), PHP_EOL;
  return true;
}, array($it));

import java.io._
val path = new File("/tmp");
path.listFiles.foreach(println);


import os
print "\n".join(os.listdir("/tmp"))
и т.д...

конечно, в каждом языке (и библиотеке) свои правила и подпрограммы (функции, классы), но ведь правила придется учить и для вашего мета-языка
ava
baldina | 17.08.2012, 17:30 #
кстати, были неоднократные попытки (CLU, С++) включать в язык спецификации требований (к типам и подпрограммам). правда, целью было увеличения правильности программ
ava
mrgloom | 14.01.2014, 10:29 #
ava
msAvtor | 19.06.2014, 20:17 #
существуют нечеткие множества, теория возможностей, нейронные сети...

к тому же разговор о пределе. предел это горизонт. 
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit