Re[38]: MS забило на дотнет. Питону - да, сишарпу - нет?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.08.21 09:54
Оценка: +1 :)
Здравствуйте, vdimas, Вы писали:

V>Компиляция в модули — двоякоострая технология.

V>Экономя на повторной компиляции файлов (хотя, и с этим сейчас эффективно борются через pch), она требовательна к объёму оперативки, т.е. как в нулевых на линухах с 500MB юзер-спейса не взлетит.
Что за бред?
Компиляция в модули известна полсотни лет. Я лично ей пользовался ещё в начале девяностых, на машинках с 500K b юзер-спейса.

V>Она требует компиллируемости всего и сразу, что не всегда удобно в случае лохматых зависимостей м/у проектами одной разработки, т.к. не позволяет работать независимо над отдельными cpp-файлами, как это принято сейчас — в процессе разработки разработчик периодически вызывает компиляцию только тех cpp-файлов, над которыми в данный момент работает.

Конечно же нет.
V>То бишь, в нынешней схеме запросто можно иметь зависимости от некомпилябельных проектов — главное, чтобы интерфейсные h-файлы описывали что требуется, а наполнить "тела" можно и в процессе, что позволяет на плюсах достичь намного лучшего разделения труда, чем в C# и Джаве.

Это речь уже не о модульности, а об особенностях конкретного ЯП.

V>В этих технологиях аналогичное традиционно достигается через натурально перебарщивание с интерфейсами.

Во-первых, откуда "перебарщивание"? Вам так хочется, чтобы модуль А зависел от конкретного типа, определённого в модуле Б?
Похоже, у вас какая-то проблема с архитектурой и дизайном. Нет, я не спорю — такие случаи бывают; но в них обычно идёт речь об основополагающих типах, работа над которыми заканчивается до того, как нам потребуется распараллеливание разработки. То есть это очень странно, что вы не можете просто писать код, работающий с IFoo; вам очень-очень нужно писать код, прибитый к классу Foo, но при этом сам класс Foo всё ещё существует только в виде публичного контракта.
V>Т.е. даже если в архитектуре конечного продукта половина из них и нафик не упёрлась, но без них невозможно эффективно распараллеливать разработку. ))
Непонятно, что вам мешает объявить класс абстрактным на первых порах. Как будет готов — уберёте abstract и всё заработает.
Не говоря уже о том, что в C#/Java — прекрасный рефакторинг, и никто вам не запретит избавиться от интерфейса в финальной версии кода. Это займёт пару минут работы.
V>Это удобно, но это ловушка, бо интерфейсы многих базовых вещей порой заставляют обильно рассыпать в наследниках "Not implemented.." вовсе не по причине забывчивости.
В чём именно "ловушка"?
V>В плюсах в этом сценарии будет ошибка линковки, т.е. будет хорошо видно, что именно еще не реализовано.
Вот именно — проект по-прежнему не работает. Вы же не собираетесь коммитить в общую ветку код, который не прошёл хотя бы базовые тесты? Не говоря уже о том, что он просто не линкуется.
V>Платформа настолько тебя уважает, что пакетный менеджер Nuget вышел на боевую готовность спустя ~15 лет после выхода дотнета.
История не важна — важна текущая ситуация и её производная. Они полностью определяют динамику системы на будущее

S>>В которой заранее потрачены усилия на то, чтобы новичок мог быстро начать приносить пользу

V>ПХП!
Да, кстати, при всей его убогости, ПХП объехал очень многие "передовые" на первый взгляд платформы. Это повод изучить его опыт и перенять полезную часть.

V>До этого задаче "кроссплатформенность" порой выдавали не просто низкий приоритет, а строго отрицательный, — многие проекты разрабатывались с полным игнором возможности собирать их под виндой. ))

V>И вот ты из 2021-го пытаешься взять проект нулевых и удивляешься, а что это у нас с кроссплатформанностью???
Это опять какие-то рассуждения о постороннем.
Кроссплатформенность — штука, известная с шестидесятых. Решения для неё тоже известны с тех же пор; и никак не зависят от доброй воли хейтеров чего бы то ни было.
Просто ситуация, предоставленная сама себе, имеет тенденцию развиваться от плохого к худшему. Подход комитета по стандартизации прямо-таки разжигал разобщённость на ровном месте — начиная от стандарта на name mangling (отсутствие которого является главной причиной отсутствия ABI, и заканчивая зоопарком из CString/QString/std::string. То, что мы наблюдаем — результат старательно выпестованной атмосферы взаимной ненависти.
Глупо делать вид, что это "само так получилось".
В той же Java система JCP обеспечила значительно более низкую разобщённость платформы — несмотря на очевидные провалы в разных областях. Несмотря на то, что бегает Java на ровно тех же платформах "красных", "синих", и "зелёных".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.