TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #1317 1.68K
День 1068.
Оглядываясь Назад на C#. Окончание
Начало
Продолжение

Примерно в 2005 году в Microsoft сделали амбициозный шаг и представили концепцию обобщений. Их реализация в C# существенно изменила ландшафт языка и среды выполнения, предоставив более сильный функционал по сравнению с реализацией в Java, появившейся годом ранее. C++, Python, Rust, Swift и Go теперь тоже поддерживают обобщения, и без них будущее C# определённо было бы под вопросом. Сейчас нельзя и представить C# без обобщений и их преемников, и они также рассматривались как важный шаг в преодолении разрыва между чисто академическими языками и языками, используемыми в коммерческих целях.

В том же году легендарный C++ программист Херб Саттер написал свою культовую статью «Бесплатный обед закончился», в которой он предсказал крах систем, строго полагавшихся на то, что скорость процессоров будет постоянно увеличиваться, позволяя программам работать быстрее без дополнительных оптимизаций. В Microsoft осознали, что любой вид асинхронного программирования, существовавший в то время, был трудным почти для всех разработчиков. C# получил модель async/await в 2011 году в предварительной версии и официально в 2012 году. (Хотя Microsoft ещё в 2010 году добавили Task Parallel Library для решения схожих задач). Трудно сказать, откуда другие языки черпали вдохновение, но несколько языков последовали за C# и также добавили этот шаблон:
- Python в 2015,
- Typescript в 2015,
- JavaScript в 2017,
- Rust в 2019,
- C++ в 2020,
- Swift в 2021.

Помимо всего этого, на протяжении многих лет в Microsoft работали над сокращением многословности языка, чтобы повысить удобочитаемость и общую продуктивность с точки зрения чистого печатания. В C# всегда можно было передавать функции в качестве аргументов, но синтаксис в первых версиях был громоздким и препятствовал широкому распространению этого приёма. Введение в 2007 году лямбда-функций (в C# 3.0) решило эту проблему, открыв путь для широкого распространения LINQ. Сократили геттеры и сеттеры свойств, которые требовали от разработчика вручную создавать поле и писать инструкции для обновления и получения значения. Переписали компилятор, чтобы разрешить перехватывать процесс сборки для анализа и добавления нового кода. Вот лишь некоторые из улучшений.

Оглядываясь назад, более чем 20 лет спустя, C# действительно сохранил свой костяк с момента возникновения, но некоторые аспекты также полностью изменились по мере того, как менялись мнения о теории программирования. Ещё в 90-х функциональное программирование считалось в основном академическим занятием, но сегодня стало очень популярным. Изначально C# позиционировал себя как объектно-ориентированный язык, но с годами изменился, чтобы быть в первую очередь объектно-ориентированным языком, но с дополнениями, поддерживающими функциональный характер разработки. Некоторые задаются вопросом, движется ли он по тому же пути, что и PERL, который кажется хаотичным набором огромного количества способов выполнить одну и ту же задачу, но в то же время без адаптации к реалиям язык обречён на то, чтобы быть забытым, как и многие его предшественники.

Источник: https://kemiller2002.github.io/c-sharp/2021/12/24/reflection.html
  • 👍 7
More from @netdeveloperdiary
  1. Oct 15, 2026Post #3374
  2. Oct 14, 2026Post #3373
  3. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  4. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  5. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  6. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →