Пардон, а что такое "голый C++" и почему он должен противостоять "визуальным средам" ?
Это завуалированная форма вопроса "что такое современные языки и средства разработки, помогающие написать тетрис для ios за два часа, и почему они должны противостоять C++".
Какие именно "современные языки" вы противопоставляете C++? Java, C#, Python, Ruby, Haskell, Scala, Rust, Go? Какие средства этих языков помогают написать тетрис для ios за два часа, но отсутствуют в C++?
Я знаю одно средство, объединяющее эти языки, но отсутствующее в C++. Это модульность. Оно действительно помогает быстрее написать программу, использующую готовую функциональность, предоставляемую модулями, написанными другими разработчиками. Оно избавляет от возни с отдельным подключением библиотек и заголовочных файлов и километровых makefile.
Только вот не то в C++ 17, не то в следующую за ней версию стандарта вводят модульность, что еще через несколько лет превратит язык для профессионалов-хардкорщиков в свалку недоделанных тетрисов для ios.
-- Чт ноя 19, 2015 00:40:56 --Лучше, наверное, конкретный пример разобрать.
Я это к тому, что многие отсутсвующие фичи, так сказать, на самом деле, достаточно легко заменяются альтернативными паттернами.
Вот мне, например, нравится Spark. Я пишу:
Код:
error = np.asarray(parsedValData
.map(lambda lp: (lp.label, averageTrainYear))
.map(lambda (l, p): squaredError(l, p))
.collect())
Все эти map собираются в дерево вычислений и оптимизируются, тут для C++ проблем нет - в наш век сугубо экзистенциональный ленивые вычисления не пишет только, простите за каламбур, ленивый. В результате, начав выполняться на одной машине, это дерево вместе с копией моего кода едет на кластер, на котором разбит на 100 машин массив из миллиарда строк. Каждая машина пропускает через это дерево свои 10 миллионов строк, доходит до листьев, а в них написано: вызвать лямбду. С реальными значениями внешних переменных (например, averageTrainYear, значение которой присвоено в предыдущей строке). Естественно, лямбда должна выполниться на ста машинах, иначе весь смысл кластеризации пропадает.
Этот код написан на питоне. Код на Java 8 и на Scala примерно так же лаконичен. Как это выглядело бы на C++?