В настоящее время у системных программистов практически нет выбора какой язык использовать. По хорошему все варианты сводятся или к чистому Си или к Rust, хотя как показывает опыт далеко не всем нравится его синтаксис.
Благодаря усилиями команды разработчиков языка у D теперь появилось совместимое с чистым Си подмножество обладающее не только привычным для любого программиста Си синтаксисом, но и значительно расширяющее функционал языка. Новое подмножество называется «betterC». Это подмножество позволяет перевести написание Си приложение на новый уровень.
Тем, кто занимается системами машинного обучения и компьютерным зрением, хорошо знакома такая библиотека как OpenBLAS (Basic Linear Algebra Subprograms). OpenBLAS написан на C и используется повсеместно там где нужна работа с матрицами. Так же у него есть несколько альтернативных реализаций таких как Eigen и двух закрытых имплементацией от Intel и Apple. Все они написаны на С\С++.
В настоящий момент OpenBLAS используется в матричных манипуляциях в таких языках как Julia и Python (NumPy). OpenBLAS крайне хорошо оптимизирована и значительная её часть вообще написана на ассемблере.
Однако так ли хорош для вычислений чистый C, как это принято считать?
Встречайте Mir GLAS! Нативная реализация библиотеки линейной алгебры на чисто D без единой вставки на ассемблере!
Предисловие: Я пишу на Python более 6 лет и могу назвать себя профессионалом в этом языке. Недавно я даже написал о нем книгу. Однако последние 8 месяцев я переключился на D и уже 4 месяца активно участвую в разработке этого языка по части расширения стандартной библиотеки Phobos. Так же я участвовал в код-ревью модуля std.ndslice о котором и пойдет речь.
std.ndslice так же как и Numpy предназначен для работы с многомерными массивами. Однако в отличие от Numpy ndslice имет крайне низкий оверхэд так как базируется на ranges (диапазонах), которые используются в штатной библиотеке повсеместно. Ranges позволяют избежать лишние процедуры копирования, а так же позволяют красиво организовать ленивые вычисления.
В этой статье мне хотелось бы рассказать о том какие преимущества std.ndslice дает по сравнению с Numpy.
В последнее время на Хабре стало много публикаций на тему Rust и Go и достаточно мало про D. Главной причиной этого является поддержка этих языков Mozilla и Google, которые могут вкладывать большие деньги в свои детища. За D не стоит ни одной столь же крупной компании, однако это не мешает языку активно развиваться. Сейчас я кратко расскажу о последних новостях языка и оставлю кому-то другому возможность провести комплексное сравнение Rust/Go и D.
Предлагаю вашему вниманию дайджест интересных событий из мира D.
Событий за последнее время произошло не мало.
Новости языка
1. Состоялся новый релиз компилятора dmd 2.067.
Среди основных новшеств — значительные улучшения в скорости работы GC. В некоторых случаях количество потребляемой памяти сократилось в два раза. Появилась экспериментальная поддержка полного отключения GC:
app "--DRT-gcopt=profile:1 minPoolSize:16" arguments to app
Такие понятия как лидерство, нелинейность, открытость, самоорганизация, мыслетворчества понемногу начинают входить в современный менеджмент. Начинается все с тех компаний, которые решили не брать готовые лекала и строить на их базе свой бизнес, а создавать свои внутренние правила, которые как мы видимо по прошествии времени становятся эталонами.
Вопросы личной эффективности в той или иной степени заботят каждого из нас. Кто-то одержим этими вопросами и проводит ежедневную борьбу со своим эго в попытках начать делать то, что делать очень не хочется, у кого-то это получается более естественно, и каждый день становится днем жизни, а не борьбы.
Современный менеджмент, как наука организации и управления людьми, как никакая другая дисциплина так глубоко не ощущает все это противоборство, протекающее в человеке. А ведь нейтрализация этой внутренней борьбы означает, что энергия потраченная на эту борьбу может быть направлена на творчество и реализацию новых концепций и идей.
Я работаю в одной молодой консалтинговой компании, которая специализируется на вопросах личной эффективности. В отличие от многих других компаний, которые берут и пытаются применять чьи-то готовые техники, мы разработали свою методологию и свой собственный концепт, который называется Энерджи Менеджмент. Сам концепт Энерджи Менеджмента станет предметом следующей статьи, а сегодня мы затронем вопросы эффективности с точки зрения организации команд, дав в качестве примера две известные компании, которые уже упоминались на хабре, и которые так же как и мы не стали брать готовые шаблоны развития, а сделали что-то свое и с нуля. В следующих статьях я планирую рассказать непосредственно о нашем концепте Энерджи Менеджмент, и его принципиальных отличиях от Тайм-Менеджмента.