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

Re: kylix 2





Denis Dzyubenko wrote:

не, tcl намного более фунциональный - в нем каждый оператор (for, while,
set, etc...) является функцией и его можно переопределить (попробуй это
сделать в c++)

И от этого TCL более "функциональный"? Хотя, да, если любой оператор является функцией, то, очевидно, можно говорить о ярком примере "функционального" языка.

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

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

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

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



Кстати,

> AS> Функциональность или "структурность" языков программирования - это
> AS> чистые абстракции. Без функциональности (да-да, именно: я имею в виду
> в данном случае под функциональностью имеется в виду повсеместное
> использование функций вместо операторов

<...>

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

И с этим можно-таки поспорить, учитывая еще и разницу в понимании термина "функциональность" языка программирования.


Я читал в книге "Язык программирования С++, Бьерн Страуструп, 5-е издание именно об ориентированности (параллельно - приспособленности) языка к программированию на основе функций или структур данных (объектов). Там выделялись три современные категории языков и методов программирования - функциональный, структурный и объектно-ориентированный. В первом (он в книге назывался процедурным) проектирование и разработка программы основываются на функциях программы, когда как в структурном - на совокупности данных, которыми оперирует программа. Оба метода позволяют Си и Паскаль. Объектно-ориентированный метод - это развитие структурного (точнее, объединение процедурного и структурного), он заключается в программировании, основанном на абстракции данных в классы объектов и программировании этих объектов (то есть в выделении отдельных функций/процедур данных классов). Для этого лучшим образом приспособлены: С++, Java, Python, Smalltalk и другие, Обычно эти языки и позиционируются как объектно-ориентированные (популярна фраза: "у нас все является объектами"). Подгонками под ООП стали также ObjectPascal, Perl (там предоставляется метод ООП, но в целом они для этого не предназначены).

--
Andrei Sosnin
http://zzx.ath.cx

 <!-- : it all depends on your vision : -->



Reply to: