Переход Microsoft на открытый исходный код очень неоднороден, и иногда кажется, что это мало влияет на то, как все работает, но когда дело доходит до C #, кажется, что все действительно изменилось.
Материалы недавнего совещания по дизайну C # 7 были размещены на GitHub, чтобы все могли их прочитать, и вы можете вносить предложения. Это начинается:
На этот раз мы хотим еще больше увеличить открытость:
мы привлекаем сообщество с самого начала цикла проектирования (согласно этим примечаниям!)
в дополнение к заметкам о дизайне (теперь проблемы на GitHub) мы будем поддерживать предложения функций (как отмеченные в документах Markdown), чтобы отразить текущий дизайн функции
мы рассмотрим публикацию записей самих дизайнерских встреч или даже прямую трансляцию
мы рассмотрим возможность добавления в команду разработчиков сторонних разработчиков.
в нем также говорится, что последнее слово всегда будет за Андерсом Хейлсбергом, что для главного архитектора .NET кажется вполне разумным.
Итак, каковы возможности нового C #?
Команда определила ряд возможных тем:
Улучшение работы с данными
Производительность и надежность
Компонентизация
Распределенное программирование
Метапрограммирование
Нуль-толерантный оператор
Самая большая из тем — это лучшая обработка данных, и вот некоторые из предложений на данный момент:
сопоставление с образцом
кортежи
«обозначаемые» анонимные типы
«записи» — компактные способы описания форм
работа с общими структурами данных (Список / Словарь)
члены расширения
нарезка
неизменность
структурная типизация / формы?
Важной единственной особенностью здесь является идея сопоставления с образцом, позволяющая, среди прочего, условное выполнение на основе типа:
switch (o) {
case строка s:
Console.WriteLine (s);
перерыв;
case int i:
Console.WriteLine ($ «Число {i}»);
перерыв;
case Point (int x, int y):
Console.WriteLine («({x}, {y})»);
перерыв;
case null:
Console.WriteLine («<нуль>);
перерыв
}
Также рассматривается нарезка массивов — то есть наличие динамических окон на массивы. Как насчет идеи разрешения ссылочных локальных переменных и возврата? Это позволит вам сказать вернуть ссылку на местоположение в массиве. Хотим ли мы, чтобы указатели в методах были эффективно безопасными, а также сложности присваивания указателей?
Менее спорными являются параметры только для чтения и локальные переменные — то, что есть в других основных языках. Еще одно разумное предложение, которое трудно реализовать, — это идея разрешить лямбда-выражению указывать переменные, которые оно хочет зафиксировать в замыкании, аналогично тому, как работает лямбда-выражение в C ++.
Последнее предложение в описании — позволить контрактам методов стать частью синтаксиса языка. Однако идея идет дальше в том, что условия могут быть скомпилированы в проверки во время выполнения, а также просто предоставлять метаданные для инструментов.
Приятно видеть, что C # выглядит таким воодушевленным после долгого ухода на второй план, в то время как WinRT и C ++ привлекли все внимание. Возможно, Андерс Хейлсберг забудет TypeScript и в будущем вернется к более важным вопросам.
Если вы хотите, чтобы C # продолжал идти по пути с открытым исходным кодом, внесите свой вклад!
Больше информации
Заметки о совещании по C # Design от 21 января 2015 г.
Статьи по Теме
Выпущена Visual Studio 2015 CTP 5
Массовый переход Microsoft на GitHub
.NET Core Подробности — достаточно ли?
Последние версии на C # 6 и VB 12
Возможности C # 6.0
В C # появился новый оператор — безопасная навигация
RyuJIT — компилятор JIT .NET нового поколения
Microsoft советует разработчикам C # изучать JavaScript !?
Команда Microsoft объясняет языковую стагнацию
Чтобы получать информацию о новых статьях на I Programmer, установите панель инструментов I Programmer, подпишитесь на RSS-канал, подпишитесь на нас в Twitter, Facebook, Google+ или Linkedin или подпишитесь на нашу еженедельную новостную рассылку.
Комментарии
Оставьте комментарий или просмотрите существующие комментарии с помощью Disqus
или отправьте свой комментарий по адресу: comments@i-programmer.info