Информация об изменениях

Сообщение Re[4]: Неуверенные в своей востребованности на рынке труда, от 13.12.2024 6:14

Изменено 13.12.2024 6:15 Shmj

Re[4]: Неуверенные в своей востребованности на рынке труда, при
Здравствуйте, tapatoon, Вы писали:

S>>Нет поддержки деревьев выражений компилятором, как в C# — а это очень удобно.

T>Компиляторы начались на 3-м курсе, а весь 3й курс мы пробухали, поэтому тут сказать не имею)

И правильно, все-равно этого вам не рассказывали. Вот простой пример возможностей C#:

using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        // Компилятор автоматически преобразует лямбда-выражение в дерево выражений
        Expression<Func<int, int, int>> expression = (x, y) => x * y + 10;

        // Анализируем дерево
        Console.WriteLine("Структура дерева выражений:");
        Console.WriteLine(expression);

        // Компилируем дерево в делегат
        var compiled = expression.Compile();

        // Выполняем компилированное выражение
        int result = compiled(3, 4); // 3 * 4 + 10 = 22
        Console.WriteLine($"Результат выполнения: {result}");
    }
}
Re[4]: Неуверенные в своей востребованности на рынке труда,
Здравствуйте, tapatoon, Вы писали:

S>>Нет поддержки деревьев выражений компилятором, как в C# — а это очень удобно.

T>Компиляторы начались на 3-м курсе, а весь 3й курс мы пробухали, поэтому тут сказать не имею)

И правильно, все-равно этого вам не рассказывали. Вот простой пример возможностей C#:

using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        // Компилятор автоматически преобразует лямбда-выражение в дерево выражений
        Expression<Func<int, int, int>> expression = (x, y) => x * y + 10;

        // Анализируем дерево
        Console.WriteLine("Структура дерева выражений:");
        Console.WriteLine(expression);

        // Компилируем дерево в делегат
        var compiled = expression.Compile();

        // Выполняем компилированное выражение
        int result = compiled(3, 4); // 3 * 4 + 10 = 22
        Console.WriteLine($"Результат выполнения: {result}");
    }
}


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