c++ и поведение по умолчанию

15 января 2018

После довольно долгого перерыва я снова пишу на С++ (если не полный рабочий день, то половину точно). До этого последний раз такое было ещё в институте, году в 2007. Язык с тех пор сильно поменялся, ну, и писал я на нём в институте так себе, в духе «C с классами». Как выяснилось, С++ вообще очень даже неплохой язык, но чего я не могу понять, так это почему там такие странные дефолты. (Я, конечно, лукавлю; понятно, что они взялись из-за совместимости с C и другого исторического багажа).

Объединяющая мысль у этих примеров — чтобы добиться того поведения, которого я хочу в 95% случаев, надо писать больше, а это лень и забываешь. И главное, вроде, это и не даёт никакого выигрыша в производительности, даже наоборот — компилятор мог бы лучше соптимизировать, если бы знал, что тут всё константы или нет исключений. И ошибок по невнимательности было бы меньше.

В общем, загадка. Зато variadic templates есть, что мощь, конечно.


type inference и время компиляции

2 мая 2016

Недавно я исследовал проблему аномально большого времени компиляции вполне безобидного кода. Мораль получилась следующая:

Ссылки по теме:


сева

12 января 2014

В четверг мы похоронили Севу (выражаясь более официальным языком — Всеволода Александровича Крищенко, но у нас его так никто не называл; «Всеволод» лично и «Севик» — в разговорах между собой). Сева был одним из самых молодых преподавателей у нас на кафедре и, по совместительству, моим научным руководителем на магистрском дипломе. Ему было 38.

Первый раз мне повезло иметь дело с Севой в 2007 году на проекте локализации Microsoft Visual Studio, где я был одним из переводчиков, а он — менеджером проекта. Несмотря на своё, мягко говоря, критическое отношение к Microsoft, Сева всё делал чётко и аккуратно, приглашал нас к себе домой, где поил чаем и даже как-то дал мне денег в долг, когда первый транш с оплатой нашей работы задержался в пути.

После этого он начал вести у нас курс РСОИ (Распределённые Системы Обработки Информации), который мне до сих пор кажется одним из самых полезных в дальнейшей профессиональной жизни курсов. На нём мы узнали, что в реальной жизни компоненты информационных систем имеют свойство тупить, тормозить, присылать неправильные данные и просто вредительствовать. Что бывают языки с не-С-подобным синтаксисом, да и вообще — неимперативные, а также что для программирования у вас необязательно должна быть IDE. Тогда же по Севиному примеру я пересел на Линукс, начал пользоваться Латехом и DIA (но ненадолго — скоро я уже пересел на Мак).

После этого был ещё один проект локализации и двойной курс ПОС (Проектирование Операционных Систем) и ПВС (Протоколы Вычислительных Сетей), который вёл Сева, параллельно переписывая сам курс и все методички с нуля. На нём я впервые собрал ядро Линукса со своими исправлениями, построил в Netkit сеть из нескольких подсетей, DHCP- и DNS-серверов и файрвола, изучил, как работает ядро XNU на этапе загрузки, пописал на Эрланге и формально верифицировал алгоритм маршрутизации. Помню, каким культурным шоком было это всё для нас, неопытных C#-кодеров.

Наконец, несмотря на мой эпичный факап с магистрским дипломом, Сева взял меня в свою группу магистров буквально за три месяца до защиты. Мы очень хорошо и продуктивно поработали, Сева опять поил меня чаем с печеньями на кафедре, а один раз, когда я сутки не ел из-за отсутствия денег, даже угостил меня шашлыком в «Му-му» на Бауманской. На защите Сева отвлекал разговорами самых суровых членов ГАКа, и я защитился на пятёрку, хотя в начале пути уже был готов отчисляться из универа.

После этого мы виделись буквально пару раз: когда я приходил забирать свой диплом и когда уговорил его продать мне свой Mac Mini на PowerPC, который Сева специально купил, чтобы подлавливать тех студентов, которые использовали Интеловский ассемблер в своих курсовиках (естественно, на этом Маке был установлен Debian, потому что это был Севин Мак). Он сказал, что ему совесть не позволяет брать деньги с бывших студентов, и мы остановились на бутылке 18-летнего Чиваса.

Больше я Севу не видел. Знаю, что он сделал много правильных и полезных вещей на кафедре, и я даже слегка завидовал нынешним студентам, у которых была возможность ходить на Севины лекции и лабы или писать у него диплом. Думал, что было бы неплохо как-нибудь снова заехать на кафедру, выпить чаю с печеньками и потрындеть с Севой о программировании и студенческой жизни. Но не успел.

У меня остались пара фоток Севы (точнее, одна фотка, и одна фотка фотки с доски лучших преподавателей МГТУ) и несколько часов записи его лекций и консультаций по моему диплому, которые я тайком записывал на ноут.

Спасибо, Сева. Я многому научился. Было круто.