Язык С#, в отличие от C++, не стоит на месте. Команда Anders Hejlsberg'а (автора языка С#), Microsoft продолжает обновлять и шлифовать его. |
Технология LINQ (Language Integrated Queries) вплотную подошла к функциональному программированию. Она пользуется функциями (точнее, делегатами — обобщенным понятием указателей на функции) так же, как языки императивного программирования пользуются переменными числовых типов. Такие языки, как LINQ, SQL, XQuery, являются декларативными, они описывают цель запроса. В то же время, языки программирования вида: C++, C#, Java, PL/I, Ruby, Python являются императивными. Они описывают серию шагов, необходимых для достижения цели.
На мой взгляд, уместны следующие аналогии.
¨ Фундаментальная алгебра определяется как совокупность двух множеств: A = <R, O>, где R — множество объектов, O — множество операций над ними. Например, алгебра вещественных чисел — это совокупность <R, O>, где R — множество чисел, O — множество операций: {+,–,/,▪ }.
¨ Класс, используемый в объектно-ориентированном программировании, — это также совокупность двух множеств: C = <D, M>, где D — множество данных класса, M — множество методов, с помощью которых производятся манипуляции с данными. Аналогия с алгеброй очевидна.
¨ Некоторые разделы элементарной математики оперируют множествами чисел (целых, рациональных, вещественных). Некоторые разделы высшей математики оперируют множествами функций (непрерывных, разрывных, от одного или множества вещественных, или комплексных аргументов).
¨ Программирование (как структурное, так и объектно-ориентированное) относится к функциональному программированию так же, как элементарная математика — к высшей. Это утверждение менее очевидно, но в нем есть доля правды, так как в функциональном программировании мы оперируем функциями так же, как мы оперируем данными в структурном и ОО программировании.
Технология LINQ использует λ-выражения (Lambda Expressions) и деревья выражений (Expression Trees) — понятия, которые появились в функциональном программировании. Деревья выражений пытаются представить код в виде древовидных структур данных. Каждым узлом такого дерева является выражение (Expression), роль которого может выполнять функция, или оператор языка C#. Управляя узлами дерева выражений, можно генерировать λ-выражения, которые широко используются при построении интегрированных запросов к источникам данных различной природы. Роль источника данных LINQ может играть: любая перечислимая структура данных (коллекция), Web-service, XML-файл, или реальная база данных.
Технология LINQ опирается на расширения языка C#, которые были введены в C#, версии 3.0. В следующей версии (.NET Framework 3.5) для поддержки LINQ появились новые классы. В Visual Studio 2008 появились новые шаблоны проектов и средства разработки кода, а в языке C# — новые ключевые слова и синтаксические конструкции. Вначале (.Net Framework 1.0) язык C# имел 77 ключевых слов. Вот они.
abstract |
as |
base |
bool |
break |
byte |
case |
catch |
char |
checked |
class |
const |
continue |
decimal |
default |
delegate |
do |
double |
else |
enum |
event |
explicit |
extern |
false |
finally |
fixed |
float |
for |
foreach |
goto |
if |
implicit |
in |
int |
interface |
internal |
is |
lock |
long |
namespace |
new |
null |
object |
operator |
out |
override |
params |
private |
protected |
public |
readonly |
ref |
return |
sbyte |
sealed |
short |
sizeof |
stackalloc |
static |
string |
struct |
switch |
this |
throw |
true |
try |
typeof |
uint |
ulong |
unchecked |
unsafe |
ushort |
using |
virtual |
volatile |
void |
while |
Для сравнения напомню, что С++ располагает 44 ключевыми словами. Теперь (в .Net Framework 3.5), кроме указанных 77 слов, в языке C# присутствуют 24 контекстных ключевых слова (Contextual Keywords). Вот они.
add |
ascending |
by |
descending |
equals |
from |
get |
global |
group |
into |
join |
let |
on |
orderby |
partial (type) |
partial (method) |
remove |
select |
set |
value |
var |
where (generic type constraint) |
where (query clause) |
yield |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.