[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: kylix 2



Evening, Andrei. 

Andrei Sosnin <demonsly@hot.ee> 17:56 8/1/2003 wrote:

>> в принципе да, tcl функциональный язык - каждый оператор на самом деле
>> является функцией. Если не задумываться об этом, все таки синтаксис
>> у tcl и например Си похож

 AS> В С++ тоже каждый оператор является функцией... Но он все равно больше
 AS> "структурный", чем функциональный.

Мда? Какие аргументы у оператора for, например? Действительно ли это
функция? какие значения она возвращает? Можно ли передать ее в качестве
аргумента в другую функцию, например так:

void foo(void* fun) { (*fun)(i=0;i<10;i++) {...} };

main() { foo(for); }.


 AS> Знаете, тут применима, в принципе, та же идея, что и в споре об
 AS> определении, что такое программа (помните? :-).
Нет. Можно напомнить?

 AS> Функциональность или "структурность" языков программирования - это
 AS> чистые абстракции. Без функциональности (да-да, именно: я имею в виду
 AS> ориентированность на функциональное программирование) любой язык
 AS> программирования становится языком структуризации данных (как,
 AS> например, XML, SGML, HTML, TeX, ...). То есть, по крайней мере,
 AS> функциональными языками являются все языки программирования, как TCL,
 AS> Python, C, C++, Lisp, JavaScript: они включают в себе такую
 AS> возможность -
 AS> программирование функций.
У вас, простите, каша в голове :)
Вопрос - является ли, с вашей точки зрения, наличие first-class functions
характерной чертой функциональных языков программирования? А то, сдается,
нету единства в толковании терминов.

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

 AS> Вероятно, вопрос заключается в том, на что данный язык более сильно
 AS> ориентирован, и тут уже можно долго и упорно спорить, ибо слишком
 AS> сложным оказывается сравнение, например, C++ и Python - который из них
 AS> "более структурный". Хотя, с другой стороны, мне кажется довольно
 AS> очевидным, что, например, C является более ориентированным (читай:
 AS> припособленным) на функциональное программирование, чем, скажем, C++
 AS> или Python.

И как на C правильно реализуется map и fold? А так, чтобы было type-safe? А
рекурсивные функции? А с tail-recursive оптимизацией?

ЗЫ
Пост-фактум прошу прощения за то, что письмо состоит из одних "каверзных"
вопросов. Но я не ставил себе целью объяснить - скорее, зародить сомнение :)

-- 
Dmitry Astapov //ADEpt                               E-mail: adept@umc.com.ua
GPG KeyID/fprint: F5D7639D/CA36 E6C4 815D 434D 0498  2B08 7867 4860 F5D7 639D



Reply to: