Статьи

Йода говорят как модель для языкового дизайна

В своем блоге на MSDN инженер-разработчик программного обеспечения Microsoft Мэтт Уоррен предложил «говорить по-йодски» в качестве полезной модели для разработки более естественных языков программирования.

Мэтт был одним из главных драйверов развития языка C #. Хотя C # 2.0 все еще ожидает своего официального выпуска в Visual Studio 2005 , проектирование C # 3.0 уже завершено, и Мэтт смотрит в будущее, что будет дальше в дизайне языка программирования.

Одной из основных функций в этой следующей версии является Language Integrated Query (LINQ), цель которого — предоставить всю мощь запросов к базе данных на основных языках программирования. Вот пример LINQ в действии из обзора Microsoft LINQ :



string[] names = { "Burke", "Connor", "Frank", 
                   "Everett", "Albert", "George", 
                   "Harris", "David" };

IEnumerable <string> expr = from s in names 
                           where s.Length == 5
                           orderby s
                           select s.ToUpper();

foreach (string item in expr)
  Console.WriteLine(item);

Хитрость, конечно, заключается в присвоении expr значения с использованием синтаксиса, который напоминает запрос к базе данных SQL. Однако этот синтаксис будет встроен прямо в C # 3.0 (среди других языков .NET) и полностью поддерживается следующей основной версией Visual Studio.

Небольшое противоречивое различие между синтаксисом SQL и LINQ заключается в появлении «from» перед «select». В SQL вы назначаете действие, которое вы хотите выполнить (например, SELECT), прежде чем указывать, где вы хотите выполнить это действие (ОТ) и как (ГДЕ). LINQ обращает вспять это, пытаясь описать запросы более естественным для людей образом.

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

Конечно, у Perl это было почти с самого рождения, и в результате он приобрел репутацию излишне загадочного. Из документации по синтаксису Perl :

Многие из синтаксических элементов Perl являются необязательными. Вместо того, чтобы требовать от вас ставить скобки вокруг каждого вызова функции и объявлять каждую переменную, вы часто можете оставить такие явные элементы отключенными, и Perl выяснит, что вы имели в виду. Это называется «Что я имею в виду», сокращенно DWIM. Это позволяет программистам быть ленивыми и программировать в удобном для них стиле.

Могут ли современные языки .NET, такие как C # и VB.NET, перейти к якобы более естественному «упорядочиванию Yoda», или Microsoft, как предполагает Мэтт, должна будет создать YODA Язык программирования с нуля?