Как стать автором
Обновить

Комментарии 11

Как-то «всё в кучу» получилось. Чтобы, концу прочтения, вспомнить о чём статья, приходится перелистывать к заголовку.
Это да, так уж получилось, я потому и обозвал это экскурсией в язык, вроде как не систематическое введение или обзор а просто показать несколько интересных достопримечательностей.
Мне кажется, что создатели D неверно позиционируют его улучшенный C++. C++ программисты с удивлением смотрят на GC, reflection и вообще наличие рантайма. Я больше чем уверен, что язык ждет успех, если они будут позиционировать D как улучшенную Java. Язык крутой, но ЦА выбрана не верно.
D сообщество (не знаю насчет создателей) как раз не позиционирует себя как выходцев из C++. Вот недавняя цитата с форума (по памяти): "… нам нужно конвертировать побольше людей из C++, пусть они нам напишут...", там очень разные люди есть и я бы сказал что для D сейчас очень важно этих людей сплавить в одно сообщество, чтобы не было противопоставлений "D как Java" против "D как C++" итд. Это нелегко, потому что база языка достаточно мала и большинство занимаются D в свободное время, а на работе пишут на чем-то еще.
В C++ тоже разные люди есть, не раз слышал выкрики из зала — "сделайте наконец в C++ GC и будем как все нормальные люди" — они между прочим тоже часть сообщества. "D как C++++" это скорее моя личная позиция, хотя подозреваю что Walter Bright тоже так считает. Я например Java не перевариваю, ну скучно мне с ней, ничего не могу с собой поделать, однако D меня чем-то зацепил, наверное своей разноплановостью. Тот же GC в нем существует, но к использованию не обязателен в отличие от всех известных мне языков с уборкой мусора.
В общем, D — это первый за много язык с которым мне интересно было познакомиться.
Вот я — наоборот — Java-программист с 5-летним стажем. Хочу хардкора (хотя бы для себя). Что мне выбрать? C++ или D?
Программируя на Java или .NET всегда найдутся задачи, в которых я могу сказать "Это за рамками JVM (CLR). Средствами Java (С#) этого не решить." Я также знаю что на С++ такого нет (как в прочем и на С) — на них можно решить любую задачу (ну не будем упоминать здесь рентабельность). Скажите, пожалуйста, на D также как на С++ можно решить любую задачу или нет?
Да, однозначно, на D можно сделать все что можно сделать на C и как минимум на уровне абстракции не ниже C++, как правило выше. Однако у D еще очень маленькая база — для себя на нем писать уже можно, но если вы вдруг захотите найти профессиональную работу — придется много побегать.
Советовать ничего не буду, если у вас есть интерес и время, попробуйте спроектировать небольшую задачу на обоих языках, хотя бы на уровне архитектуры. Даст реальный опыт и почти наверняка поможет определиться.
У D есть рантайм. Но D компилируется в нативный код. Так что нет, задач, которые нельзя решить не найдется, но есть задачи, с которыми придется помучаться: например, если вы хотите обработчик сигнала с жестким latency <= 1ms. Для этого придется выключать сборщик мусора и не использовать половину стандартной библиотеки.
Вот тут я не согласен, если писать тело обработчика на D как на C и стараться использовать модули из core, то и быстродействие получится сравнимое. Другое дело что потом этот обработчик можно обернуть в красивый интерфейс и получить лучшее из двух миров.
На всех высокоуровневых языках широко распространена практика подлинковки критического кода на C, на D это можно сделать не выходя за рамки языка.
Спасибо вам обоим за ответы, буду пробовать. Иногда от основного рабочего языка действительно становится скучно, хочется посмотреть на что-то иное.
НЛО прилетело и опубликовало эту надпись здесь
часто мечтал об улучшенном С++, но потом появился c#… и понеслось.
Ну а тут слишком уж много "Сахара", как бы не потолстеть
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории