Блог

В C# 7 можно будет реализовывать методы в интерфейсе

Сейчас во время интервью часто можно услышать вопрос – чем отличается интерфейс от абстрактного класса или просто класса. И ответ достаточно простой – у интерфейса не может быть реализации методов. Классы должны реализовывать все методы своих интерфейсов. Это не полный и не идеальный ответ, но достаточный.

Начиная с C# 7 (может 7.1) этот ответ станет неверным. В нем можно будет у интерфейсов писать реализацию по умолчанию, которую потом классы смогут переопределять. Microsoft показывает такой интерфейса:

Await скоро станет умнее

Сейчас await в C# упрощает работу с асинхронным кодом. Вы просто используете этот оператор с асинхронным методом и ждете потом, когда этот метод вернет значение. Но бывают случаи, когда асинхронный метод передает множество данных. Когда мы загружаем большой файл по сети, его данные поступают постепенно и хочется видеть этот процесс, а не финальный результат. 

В 7-й версии C# это станет возможно. Можно будет писать что-то типа:

foreach await (var something in asyncData) {
}

Сортировка в базе данных или приложении?

Вопрос читателя: Извините, если злоупотребляю Вашим вниманием, но как-то не получается у меня найти ответы на свои вопросы на всевозможных форумах. А может я их просто не умею задавать. 

Может Вы меня наведете на правильную концепцию в вопросе сортировки данных. 

За много лет работы я сроднился с dBase и до сих пор ассоциирую сортировку таблицы с соответствующим тегом, принадлежащего ей компаундного индекса. Видимо от того и теряюсь. 

Простой пример: 

MS SQL -> microORM -> класс, соответствующий структуре выбираемой таблицы -> компонент DataGridView, принявший информацию и отсоединенный от источника данных. 

.NET Core будет поддерживать WPF

В .NET Core 3 должна появиться поддержкак десктопных приложений и IOT. И под десктопными понимается не только WinForms, но и WPF, что очень даже круто. Мне нравится XAML и считаю его великолепным решением для построения визуальных интерфейсов, потому что можно делать интерфейсы, которые легко адаптируются под любые размеры экрана. 

HTML уже давно доказал свою гибкость и XAML - это примерно тот же подход, поэтому круто, что Майкрософт будет поддерживать это и дальше. Зачем они сохраняют WinForms? Вот этого не знаю, я бы отказался от него. Сэкономили бы ресурсы, которые можно было бы направить на более интересные проекты. 

Скрипты для git

На работе у нас перешли с TFS на git и команда архитектуры зачем-то написала power shell скрипты, которые должны были бы облегчить работу с git. Теоретически да, с PS скриптами стало удобно работать тем, кто всегда работал с TFS и никогда не понимал, как работает git, потому что с помощью скриптов идеологию git превратили в tfs, что очень даже...

Но даже если сделать power shell скрипты гибкими, я не вижу в них смысла по двум причинам.

1. git итак не сложный, если понимать, как он работает. Не нужны PS скрипты для того, чтобы выполнить команду fetch и merge, это легко сделать напрямую

Изучаю Xamarin

До сих пор я писал мобильные приложения только под iOS поэтому выбирал Objective-C или Swift и мне нравилось использовать их. Меня несколько раз спрашивали, а почему не Xamarin, ведь тогда я смогу писать и для iOS и для Андроида. 

У меня не было цели писать для нескольких платформ. Я на работе пишу на C# и приходить домой и снова писать на C# не особо хотелось. Мне нужно было разнообразие в виде Swift, ведь это новый мир для меня, который интересно и хочется познавать. 

Но вот понадобилось написать для iOS и Андроид платформ и вот тут я выбрал Visual Studio и его возможность  создавать приложения сразу для нескольких платформ. И пока это интересно. Немного непривычно, но по своему интересно. 

Когда я люблю проекты с исходным кодом

В случае с программами и ОС мне в принципе все равно - открыт исходный код или нет. Я уже долгие годы работаю с Windows, Linux и macOS и у меня не возникало желания поменять код. Конечно же из этих трёх ОС, я даже теоретически смог бы поменять что-то только в Linux, потому что исходники остальных не доступны. Но все равно, тут я говорил о желании, а не о возможности. 

Я просто пользуюсь программами и не думаю о коде. Если нет нужной возможности, то буду искать программу, в которой эта возможность есть, а реализовывать ее самостоятельно не хочется. Каждый должен заниматься своим делом и у меня есть своя работа, у разработчиков ОС и программ, которыми я пользуюсь - своя работа. 

Где же следующий шаг в развитии Swift?

Скоро исполнится 3 года с момента, как Apple открыла свой язык Swift, но за это время не случилось серьезного толчка в развитии. Все изменения, которые были внесены за это время сделали язык лучше, но он все же остался в рамках инфраструктуры Apple. На Swift можно писать приложения для iOS, но он так и не пошел дальше. 

Когда Microsoft представили миру C#, то не смотря на отсутствие поддержки со стороны самого гиганта, нашлись энтузиасты, которые начали переносить его на другие платформы и появился Mono. Это говорит о том, что C# действительно великолепный язык и его люди готовы переносить самостоятельно. 

Веб программирование – слишком сложно

Уже вторую заметку читаю по поводу того, что Web программирование стало сложным. Это произошло не вчера и не на прошлой неделе. Веб разработка действительно становится сложнее, потому что и сайты становятся на много более сложными. 

Лет 20 назад сайты были небольшими из нескольких страниц и для этого достаточно было только HTML. С ростом размеров понадобились более сложные вещи и стали появляться CSS и серьезный рост показала разработка бакэнда. 

Лет 10 назад Web начал отбирать рынок у десктопных приложениях и сильное развитие получает JavaScript и различные фреймворки. А тут еще и Apple забивает гвоздь в крышку гроба Adobe Flash, поэтому JS и HTML5 становятся центральными технологиями. 

Языки программирования 2019

Теперь хотелось бы поговорить про языки программирования, которые стоит изучать в 2019-м году, а про какие можно уже забыть. 

Мобильные языки

Уже практически свершившийся факт, что на мобильном рынке происходит смена языков программирования. Можно уже с большой долей уверенности говорить о том, что Objective-C мертв. Apple переводит все на Swift и этот язык уже окончательно стал основным на iOS.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне