Сообщение Re[25]: MS забило на дотнет. Питону - да, сишарпу - нет? от 03.08.2021 19:46
Изменено 03.08.2021 19:53 vdimas
Re[25]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, Sinclair, Вы писали:
V>>Почему CMake?
V>>Я же написал — это уже "второй эшелон".
S>Вы написали, что CMake — это утилита ресолвинга зависимостей. Вот я хочу увидеть проект, в котором CMake зарезолвит зависимости.
Бери любой на CMake.
(будем считать, что я тебя "подловил", т.к. здесь ты просил заресолвить, а не восстановить их локально)
V>>Если в линуховых make configure есть ресторинг — то да.
V>>В виндовых для С++ проектов восстановления зависимостей делается через nuget restore.
S>Хм. А кросс-платформенных проектов С++ не существует?
Существуют.
В которых куча поддиректорий в поддиректории build, например.
V>>У меня такое в Питоне — зависимости не устанавливаются автоматом.
S>При всей моей нелюбви к питону, установка зависимостей в нём всё же предусмотрена из коробки. Это если мы говорим о питоновых зависимостях.
Это если разработчик предусмотрел какие-нить requirements.txt.
В плюсах ровно с аналогичной сложностью можно перечислить зависимости для yum, apt, zypper, pacman, NuGet и т.д., т.е. автоматизировать их установку.
V>>В джаве аналогично — зависимости не устанавливаются автоматом, хотя проектов на Java всё еще больше, чем на C#.
S>А как же maven?
Я не говорил, что в джаве нет пакетных менеджеров, их там несколько популярных, в т.ч. упомянутый maven.
Но не сложилось единого мирового реестра.
Просто для поржать — вот дефолотный "центральный" репозиторий:
https://repo.maven.apache.org/maven2/
Пролистай до конца.
Это всё.
V>>Да и студия до VS 2017 спотыкалась в процессе restore, в сети миллион обсуждений эпохи MSVS 2015.
S>
Да понятно, что ответить тебе нечего.
Скорее всего потому, что на тот момент ты не пользовался той функциональностью, про которую спрашиваешь сейчас.
А она тогда была реализована через packages-config.
И только в одном из обновлений VS 2017 появился новый MSBuld, в котором появился элемент PackageReference и соответсвующая стадия сборки — restore.
Т.е. произошла интеграция системы сборки с пакетным менеджером.
До этого пакетный менеджер жил отдельно от системы сборки, как оно есть в node.js, питоне и т.д., где для восстановления зависимостей необходимо ручками пинать пакетный менеджер.
V>>Мы давно используем NuGet для обслуживания нейтивных зависимостей под виндами.
V>>Т.е., у тебя было недостаточно эрудиции относительно NuGet, но ты рассчитывал использовать его как аргумент, что является нарушением инженерной этики.
S>Нет, мне было интересно, как обстоят дела с управлением зависимостями в С++.
S>Хорошо, что есть nuget.
Ес-но.
Именно поэтому я не мог ошибиться, что ты подразумевал именно NuGet, т.к. на сегодня не существует другого пакетного менеджера, интегрированного в систему сборки проектов.
(по крайней мере в мейнстриме)
S>Не вполне понимаю, как управлять зависимостями на линуксе.
Легко — перечисляя в файле зависимости и подавая этот файл родному пакетному менеджеру как аргумент, т.е. ровно так же как в питоне или node.js.
И это верно не только для C++, ес-но.
Но вся зоопарковость Linux тут проявляется в полной мере, т.к. одни и те же пакеты в разных сборках Linux могут называться по-разному.
И наличие того или иного пакета зависит от воли ментейнеров данной сборки Linux.
Собсно, необходимость быть независимым от всего этого зоопарка заставила питон и node.js обзавестись дублирующей функциональностью пакетных менеждеров.
А вот с нейтивными либами похуже (любыми нейтивными, не только С/С++) — там традиционно серьезная зависимость от конкретной платформы.
S>Впрочем, похоже это неважно, т.к. кроссплатформенного тулчейна для С++ всё равно не существует.
Можно сказать, что существет — LLVM.
Ой, это же опять "виртуальный процессор"!
А может, в кавычках и кроется ответ на подобные вопросы?
Ты ж, вроде, неглупый человек...
V>>Почему CMake?
V>>Я же написал — это уже "второй эшелон".
S>Вы написали, что CMake — это утилита ресолвинга зависимостей. Вот я хочу увидеть проект, в котором CMake зарезолвит зависимости.
Бери любой на CMake.
(будем считать, что я тебя "подловил", т.к. здесь ты просил заресолвить, а не восстановить их локально)
V>>Если в линуховых make configure есть ресторинг — то да.
V>>В виндовых для С++ проектов восстановления зависимостей делается через nuget restore.
S>Хм. А кросс-платформенных проектов С++ не существует?
Существуют.
В которых куча поддиректорий в поддиректории build, например.
V>>У меня такое в Питоне — зависимости не устанавливаются автоматом.
S>При всей моей нелюбви к питону, установка зависимостей в нём всё же предусмотрена из коробки. Это если мы говорим о питоновых зависимостях.
Это если разработчик предусмотрел какие-нить requirements.txt.
В плюсах ровно с аналогичной сложностью можно перечислить зависимости для yum, apt, zypper, pacman, NuGet и т.д., т.е. автоматизировать их установку.
V>>В джаве аналогично — зависимости не устанавливаются автоматом, хотя проектов на Java всё еще больше, чем на C#.
S>А как же maven?
Я не говорил, что в джаве нет пакетных менеджеров, их там несколько популярных, в т.ч. упомянутый maven.
Но не сложилось единого мирового реестра.
Просто для поржать — вот дефолотный "центральный" репозиторий:
https://repo.maven.apache.org/maven2/
Пролистай до конца.
Это всё.
V>>Да и студия до VS 2017 спотыкалась в процессе restore, в сети миллион обсуждений эпохи MSVS 2015.
S>
Да понятно, что ответить тебе нечего.
Скорее всего потому, что на тот момент ты не пользовался той функциональностью, про которую спрашиваешь сейчас.
А она тогда была реализована через packages-config.
И только в одном из обновлений VS 2017 появился новый MSBuld, в котором появился элемент PackageReference и соответсвующая стадия сборки — restore.
Т.е. произошла интеграция системы сборки с пакетным менеджером.
До этого пакетный менеджер жил отдельно от системы сборки, как оно есть в node.js, питоне и т.д., где для восстановления зависимостей необходимо ручками пинать пакетный менеджер.
V>>Мы давно используем NuGet для обслуживания нейтивных зависимостей под виндами.
V>>Т.е., у тебя было недостаточно эрудиции относительно NuGet, но ты рассчитывал использовать его как аргумент, что является нарушением инженерной этики.
S>Нет, мне было интересно, как обстоят дела с управлением зависимостями в С++.
S>Хорошо, что есть nuget.
Ес-но.
Именно поэтому я не мог ошибиться, что ты подразумевал именно NuGet, т.к. на сегодня не существует другого пакетного менеджера, интегрированного в систему сборки проектов.
(по крайней мере в мейнстриме)
S>Не вполне понимаю, как управлять зависимостями на линуксе.
Легко — перечисляя в файле зависимости и подавая этот файл родному пакетному менеджеру как аргумент, т.е. ровно так же как в питоне или node.js.
И это верно не только для C++, ес-но.
Но вся зоопарковость Linux тут проявляется в полной мере, т.к. одни и те же пакеты в разных сборках Linux могут называться по-разному.
И наличие того или иного пакета зависит от воли ментейнеров данной сборки Linux.
Собсно, необходимость быть независимым от всего этого зоопарка заставила питон и node.js обзавестись дублирующей функциональностью пакетных менеждеров.
А вот с нейтивными либами похуже (любыми нейтивными, не только С/С++) — там традиционно серьезная зависимость от конкретной платформы.
S>Впрочем, похоже это неважно, т.к. кроссплатформенного тулчейна для С++ всё равно не существует.
Можно сказать, что существет — LLVM.
Ой, это же опять "виртуальный процессор"!
А может, в кавычках и кроется ответ на подобные вопросы?
Ты ж, вроде, неглупый человек...
Re[25]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, Sinclair, Вы писали:
V>>Почему CMake?
V>>Я же написал — это уже "второй эшелон".
S>Вы написали, что CMake — это утилита ресолвинга зависимостей. Вот я хочу увидеть проект, в котором CMake зарезолвит зависимости.
Бери любой на CMake.
(будем считать, что я тебя "подловил", т.к. здесь ты просил заресолвить, а не восстановить их локально)
V>>Если в линуховых make configure есть ресторинг — то да.
V>>В виндовых для С++ проектов восстановления зависимостей делается через nuget restore.
S>Хм. А кросс-платформенных проектов С++ не существует?
Существуют.
В которых куча поддиректорий в поддиректории build, например.
V>>У меня такое в Питоне — зависимости не устанавливаются автоматом.
S>При всей моей нелюбви к питону, установка зависимостей в нём всё же предусмотрена из коробки. Это если мы говорим о питоновых зависимостях.
Это если разработчик предусмотрел какие-нить requirements.txt.
В плюсах ровно с аналогичной сложностью можно перечислить зависимости для yum, apt, zypper, pacman, NuGet и т.д., т.е. автоматизировать их установку.
V>>В джаве аналогично — зависимости не устанавливаются автоматом, хотя проектов на Java всё еще больше, чем на C#.
S>А как же maven?
Я не говорил, что в джаве нет пакетных менеджеров, их там несколько популярных, в т.ч. упомянутый maven.
Но не сложилось единого мирового реестра.
Просто для поржать — вот дефолотный "центральный" репозиторий:
https://repo.maven.apache.org/maven2/
Пролистай до конца.
Это всё.
V>>Да и студия до VS 2017 спотыкалась в процессе restore, в сети миллион обсуждений эпохи MSVS 2015.
S>
Да понятно, что ответить тебе нечего.
Скорее всего потому, что на тот момент ты не пользовался той функциональностью, про которую спрашиваешь сейчас.
А она тогда была реализована через packages-config.
И только в одном из обновлений VS 2017 появился новый MSBuld, в котором появился элемент PackageReference и соответсвующая стадия сборки — restore.
Т.е. произошла интеграция системы сборки с пакетным менеджером.
До этого пакетный менеджер жил отдельно от системы сборки, как оно есть в node.js, питоне и т.д., где для восстановления зависимостей необходимо ручками пинать пакетный менеджер.
V>>Мы давно используем NuGet для обслуживания нейтивных зависимостей под виндами.
V>>Т.е., у тебя было недостаточно эрудиции относительно NuGet, но ты рассчитывал использовать его как аргумент, что является нарушением инженерной этики.
S>Нет, мне было интересно, как обстоят дела с управлением зависимостями в С++.
S>Хорошо, что есть nuget.
Ес-но.
Именно поэтому я не мог ошибиться, что ты подразумевал именно NuGet, т.к. на сегодня не существует другого пакетного менеджера, интегрированного в систему сборки проектов.
(по крайней мере в мейнстриме)
S>Не вполне понимаю, как управлять зависимостями на линуксе.
Легко — перечисляя в файле зависимости и подавая этот файл родному пакетному менеджеру как аргумент, т.е. ровно так же как в питоне или node.js.
И это верно не только для C++, ес-но.
Но вся зоопарковость Linux тут проявляется в полной мере, т.к. одни и те же пакеты в разных сборках Linux могут называться по-разному.
И наличие того или иного пакета зависит от воли ментейнеров данной сборки Linux.
Собсно, необходимость быть независимым от всего этого зоопарка заставила питон и node.js обзавестись дублирующей функциональностью пакетных менеджеров.
А вот с нейтивными либами похуже (любыми нейтивными, не только С/С++) — там традиционно серьезная зависимость от конкретной платформы.
S>Впрочем, похоже это неважно, т.к. кроссплатформенного тулчейна для С++ всё равно не существует.
Можно сказать, что существет — LLVM.
Ой, это же опять "виртуальный процессор"!
А может, в кавычках и кроется ответ на подобные вопросы?
Ты ж, вроде, неглупый человек...
V>>Почему CMake?
V>>Я же написал — это уже "второй эшелон".
S>Вы написали, что CMake — это утилита ресолвинга зависимостей. Вот я хочу увидеть проект, в котором CMake зарезолвит зависимости.
Бери любой на CMake.
(будем считать, что я тебя "подловил", т.к. здесь ты просил заресолвить, а не восстановить их локально)
V>>Если в линуховых make configure есть ресторинг — то да.
V>>В виндовых для С++ проектов восстановления зависимостей делается через nuget restore.
S>Хм. А кросс-платформенных проектов С++ не существует?
Существуют.
В которых куча поддиректорий в поддиректории build, например.
V>>У меня такое в Питоне — зависимости не устанавливаются автоматом.
S>При всей моей нелюбви к питону, установка зависимостей в нём всё же предусмотрена из коробки. Это если мы говорим о питоновых зависимостях.
Это если разработчик предусмотрел какие-нить requirements.txt.
В плюсах ровно с аналогичной сложностью можно перечислить зависимости для yum, apt, zypper, pacman, NuGet и т.д., т.е. автоматизировать их установку.
V>>В джаве аналогично — зависимости не устанавливаются автоматом, хотя проектов на Java всё еще больше, чем на C#.
S>А как же maven?
Я не говорил, что в джаве нет пакетных менеджеров, их там несколько популярных, в т.ч. упомянутый maven.
Но не сложилось единого мирового реестра.
Просто для поржать — вот дефолотный "центральный" репозиторий:
https://repo.maven.apache.org/maven2/
Пролистай до конца.
Это всё.
V>>Да и студия до VS 2017 спотыкалась в процессе restore, в сети миллион обсуждений эпохи MSVS 2015.
S>
Да понятно, что ответить тебе нечего.
Скорее всего потому, что на тот момент ты не пользовался той функциональностью, про которую спрашиваешь сейчас.
А она тогда была реализована через packages-config.
И только в одном из обновлений VS 2017 появился новый MSBuld, в котором появился элемент PackageReference и соответсвующая стадия сборки — restore.
Т.е. произошла интеграция системы сборки с пакетным менеджером.
До этого пакетный менеджер жил отдельно от системы сборки, как оно есть в node.js, питоне и т.д., где для восстановления зависимостей необходимо ручками пинать пакетный менеджер.
V>>Мы давно используем NuGet для обслуживания нейтивных зависимостей под виндами.
V>>Т.е., у тебя было недостаточно эрудиции относительно NuGet, но ты рассчитывал использовать его как аргумент, что является нарушением инженерной этики.
S>Нет, мне было интересно, как обстоят дела с управлением зависимостями в С++.
S>Хорошо, что есть nuget.
Ес-но.
Именно поэтому я не мог ошибиться, что ты подразумевал именно NuGet, т.к. на сегодня не существует другого пакетного менеджера, интегрированного в систему сборки проектов.
(по крайней мере в мейнстриме)
S>Не вполне понимаю, как управлять зависимостями на линуксе.
Легко — перечисляя в файле зависимости и подавая этот файл родному пакетному менеджеру как аргумент, т.е. ровно так же как в питоне или node.js.
И это верно не только для C++, ес-но.
Но вся зоопарковость Linux тут проявляется в полной мере, т.к. одни и те же пакеты в разных сборках Linux могут называться по-разному.
И наличие того или иного пакета зависит от воли ментейнеров данной сборки Linux.
Собсно, необходимость быть независимым от всего этого зоопарка заставила питон и node.js обзавестись дублирующей функциональностью пакетных менеджеров.
А вот с нейтивными либами похуже (любыми нейтивными, не только С/С++) — там традиционно серьезная зависимость от конкретной платформы.
S>Впрочем, похоже это неважно, т.к. кроссплатформенного тулчейна для С++ всё равно не существует.
Можно сказать, что существет — LLVM.
Ой, это же опять "виртуальный процессор"!
А может, в кавычках и кроется ответ на подобные вопросы?
Ты ж, вроде, неглупый человек...