Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: Mr.Delphist  
Дата: 03.10.22 13:15
Оценка: +1
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Студент пишет 1000 строчек кода в сутки.


Вспоминается анекдот про блондинку-секретаршу (БС) на собеседовании:

Шеф: с какой скоростью текст печатаете?
БС: 500 букв в минуту...
Шеф: ??! Вау!
БС: (вздыхает) ...такая фигня получается...

Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: vsb Казахстан  
Дата: 03.10.22 13:27
Оценка:
Здравствуйте, ути-пути, Вы писали:

N>>3. Полный zero runtime. По-моему, обычно это уже спортивный результат, а не практически обусловленный.


УП>До сих пор широко распространены микроконтроллеры с десятками-сотнями байтов памяти. В основном из-за совместимости, но все равно, их еще много. Там это вполне практически обусловлено.


Для них разве пишут на С? Насколько я знаю, там просто на ассемблере пишут и всё. Сотня байтов памяти это же несколько десятков машинных команд.
Re: IT-батл - доцент МГУ vs студент Rust-офил
От: B0FEE664  
Дата: 03.10.22 14:23
Оценка:
Здравствуйте, Shmj, Вы писали:

S>

S>Но дело даже не в этой экономии (размера исполняемого файла — Прим. авт.)…
S>Намного важнее сам принцип: язык Си позволяет полностью отказаться от возможностей стандартной библиотеки. Кроме Си, таким свойством — абсолютной независимостью от библиотечного кода, также иногда называемым zero runtime — обладают на сегодняшний день только языки ассемблеров; ни один язык высокого уровня не предоставляет такой возможности.


Я ничего не понял. Почему надо не зависеть от библиотечного кода? Если на С++ мы делаем статическую линковку, то мы получаем абсолютно независимый исполняемый файл. Этого достаточно или надо что-то ещё?
И каждый день — без права на ошибку...
Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 03.10.22 14:33
Оценка: +1
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Студент пишет 1000 строчек кода в сутки.


А корчеватель еще больше.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 03.10.22 14:36
Оценка:
Здравствуйте, Baiker, Вы писали:

B>К слову, на языке Ди написана даже целая ОСь XOmB, так что клоуны с "ваш язык Ди плохой, патамучта там GC" постыдно идут нафиг.


И кому нужна эта ось? Думаю, даже у немерле целевая аудитория на порядки шире.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 03.10.22 15:49
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Я ничего не понял. Почему надо не зависеть от библиотечного кода? Если на С++ мы делаем статическую линковку, то мы получаем абсолютно независимый исполняемый файл. Этого достаточно или надо что-то ещё?


Потому что "вы не платите за то, чего не используете".
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: IT-батл - доцент МГУ vs студент Rust-офил
От: B0FEE664  
Дата: 03.10.22 15:59
Оценка:
Здравствуйте, ути-пути, Вы писали:

BFE>>Я ничего не понял. Почему надо не зависеть от библиотечного кода? Если на С++ мы делаем статическую линковку, то мы получаем абсолютно независимый исполняемый файл. Этого достаточно или надо что-то ещё?

УП>Потому что "вы не платите за то, чего не используете".

Ээээ.... Это задача линковщика — выкинуть всё лишнее.
И каждый день — без права на ошибку...
Re[4]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 03.10.22 17:06
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Ээээ.... Это задача линковщика — выкинуть всё лишнее.


Рантайм, как правило, монолитен, его нельзя выкинуть частично. А в большинстве языков он еще и довольно большой: в нем куча того, что в С реализуется библиотеками.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Отредактировано 03.10.2022 17:09 ути-пути . Предыдущая версия .
Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 03.10.22 20:07
Оценка:
Здравствуйте, ути-пути, Вы писали:

BFE>>Ээээ.... Это задача линковщика — выкинуть всё лишнее.


УП>Рантайм, как правило, монолитен, его нельзя выкинуть частично. А в большинстве языков он еще и довольно большой: в нем куча того, что в С реализуется библиотеками.


С чего бы?

Ну, а если вдаваться в детали, то обычно зависит, как объектники собирались, каждая функция в отдельную секцию, или в одну кучу. Ну и тут смотря что ты под рантаймом подразумеваешь
Маньяк Робокряк колесит по городу
Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: CreatorCray  
Дата: 04.10.22 05:03
Оценка:
Здравствуйте, ути-пути, Вы писали:

УП>Рантайм, как правило, монолитен, его нельзя выкинуть частично.

Ты про какой язык то? Для С и С++ это утверждение в целом неверно
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 04.10.22 05:06
Оценка:
Здравствуйте, Marty, Вы писали:

M>С чего бы?


Откуда мне знать?

M>Ну, а если вдаваться в детали, то обычно зависит, как объектники собирались, каждая функция в отдельную секцию, или в одну кучу. Ну и тут смотря что ты под рантаймом подразумеваешь


Это та библиотека, которая является частью языка. Например, строки, которых в C нет. А еще тот код, который что-то там инициализирует до входа в main.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 04.10.22 06:39
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Ты про какой язык то? Для С и С++ это утверждение в целом неверно


У C и C++ — это код, исполняемый до входа в main, он более чем монолитен, выкинуть его по частям не получится.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[7]: IT-батл - доцент МГУ vs студент Rust-офил
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 04.10.22 07:37
Оценка: +1
Здравствуйте, ути-пути, Вы писали:

CC>>Ты про какой язык то? Для С и С++ это утверждение в целом неверно

УП>У C и C++ — это код, исполняемый до входа в main, он более чем монолитен, выкинуть его по частям не получится.

Запросто выкидывается, надо только подготовить это (обычно, платформенно-зависимыми средствами). Я видел несколько примеров.
Например, iostreams могут использовать локализацию, но если не вызвано setlocale(), то весь блок с локалями не подключается. Или, при отсутствии вызова pthread_create(), всякие pthread_self() заменяются на, грубо говоря, return 1.
Типовой подход в Unix — функции с целевыми именами представлены "слабой ссылкой" линкера
на реализации-пустышки. Если тянется какая-то функция по сильной ссылке, подтягиваются перекрытия с реальным телом.
The God is real, unless declared integer.
Re[7]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 04.10.22 09:06
Оценка: +1
Здравствуйте, ути-пути, Вы писали:

M>>Ну, а если вдаваться в детали, то обычно зависит, как объектники собирались, каждая функция в отдельную секцию, или в одну кучу. Ну и тут смотря что ты под рантаймом подразумеваешь


УП>Это та библиотека, которая является частью языка. Например, строки, которых в C нет. А еще тот код, который что-то там инициализирует до входа в main.


Строки вроде хидер-онли. Код инициализации — ну, обычно это вызов конструкторов глобальных объектов, нет глобальных объектов, нет и этого кода. Или, например, iostreams. Вот это точно не хидер-онли. Но если их не использовать, то и линковаться ничего не будет. В итоге того рантайма, который жизненно необходим, оказывается с гулькин фиг
Маньяк Робокряк колесит по городу
Re[8]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 04.10.22 11:50
Оценка:
Здравствуйте, Marty, Вы писали:

M>Строки вроде хидер-онли.


Это в C++, а в C их вообще нет. А вот практически во всех других языках — есть, и являются частью рантайма, а не библиотеками.

M>В итоге того рантайма, который жизненно необходим, оказывается с гулькин фиг


В С — да, маленький рантайм, в других языках — большой. Но по частям не расчленяется ни там, ни там. При этом С без рантайма вполне работоспособен.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[9]: IT-батл - доцент МГУ vs студент Rust-офил
От: CreatorCray  
Дата: 05.10.22 00:32
Оценка:
Здравствуйте, ути-пути, Вы писали:

УП>В С — да, маленький рантайм, в других языках — большой. Но по частям не расчленяется ни там, ни там.

Неверно. В С прилинкуется только то, что используется.
В других языках, если они претендуют на использование как системных, должно быть так же.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 05.10.22 16:31
Оценка: +1
Здравствуйте, B0FEE664, Вы писали:

BFE>Я ничего не понял. Почему надо не зависеть от библиотечного кода? Если на С++ мы делаем статическую линковку, то мы получаем абсолютно независимый исполняемый файл. Этого достаточно или надо что-то ещё?


Потому что ты не совсем понимаешь, что такое run-time языка. В твоём примере на С++ мы получим файл со статически слинкованым рантаймом. Просто потому, что RTTI, new/delete, исключения и т.д. и т.п. — это и есть рантайм. Это буквально часть языка. Всё-таки C++ без new/delete — это не совсем обычный C++?

А почему это надо ответ простой. Когда мы пишем тоже ядро ОС или драйвер для него, или прочие низкоуровневые штуки — то штатный рантайм языка программирования оказывается неработоспособен. Он-то расчитан на работу с операционной системой, а не на то, что программа сама является операционной системой. И второй аспект — рантайм делает скрытую работу, и это усложняет написание кода и не всегда допустимо в принципе. Где-нибудь в планировщике, дернутом с высоким IRQL, например нельзя делать какие-то вещи (те же исключения создавать) — и программист должен явно понимать, во что будет откомпилирован код.

Не хочу убеждать, что это прям супер-надо. Но, если ты с таким не сталкивался, сделай скидку на то, что кому-то может быть надо. И категоричные утверждения, что давайте всё напишем на С++ иногда упираются в отсутствие опыта с другими технологическими стеками.
Re[3]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.10.22 20:45
Оценка:
Здравствуйте, m2l, Вы писали:

m2l>Потому что ты не совсем понимаешь, что такое run-time языка. В твоём примере на С++ мы получим файл со статически слинкованым рантаймом. Просто потому, что RTTI, new/delete, исключения и т.д. и т.п. — это и есть рантайм. Это буквально часть языка. Всё-таки C++ без new/delete — это не совсем обычный C++?


C++ без new и delete — тот же самый C++. Просто не используются какие-то библиотеки


m2l>Не хочу убеждать, что это прям супер-надо. Но, если ты с таким не сталкивался, сделай скидку на то, что кому-то может быть надо. И категоричные утверждения, что давайте всё напишем на С++ иногда упираются в отсутствие опыта с другими технологическими стеками.


Вот тут не понял твою позицию
Маньяк Робокряк колесит по городу
Re[3]: IT-батл - доцент МГУ vs студент Rust-офил
От: CreatorCray  
Дата: 06.10.22 10:04
Оценка:
Здравствуйте, m2l, Вы писали:

m2l>Просто потому, что RTTI, new/delete, исключения и т.д. и т.п. — это и есть рантайм.

В библиотеках будут только функции-хелперы, и их там будет весьма немного. Существенную часть реализации этих фич будет таки генерировать компилятор.

m2l>Это буквально часть языка. Всё-таки C++ без new/delete — это не совсем обычный C++?

Надо таки заметить что на самом деле в самих имплементациях new/delete кода с гулькин нос — это тупо врапперы над системным аллокатором.
А вот частью самого языка будет тот код, который генерит компилятор для вызова конструкторов и десттрукторов. И он не библиотечный а именно что генерируемый по месту.

m2l>Когда мы пишем тоже ядро ОС или драйвер для него, или прочие низкоуровневые штуки — то штатный рантайм языка программирования оказывается неработоспособен.

Да банально берётся заточенный под кернел рантайм. Понятие "штатный" довольно размыто. Есть API+ABI а реализация уже какая захочешь.

m2l> Он-то расчитан на работу с операционной системой, а не на то, что программа сама является операционной системой.

Это примерно как std, стандартная либа чтоб можно было сразу что то лабать. Хош пользуйся, хош — нет.

m2l>И категоричные утверждения, что давайте всё напишем на С++ иногда упираются в отсутствие опыта с другими технологическими стеками.

... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[3]: IT-батл - доцент МГУ vs студент Rust-офил
От: B0FEE664  
Дата: 06.10.22 10:33
Оценка: +1
Здравствуйте, m2l, Вы писали:

BFE>>Я ничего не понял. Почему надо не зависеть от библиотечного кода? Если на С++ мы делаем статическую линковку, то мы получаем абсолютно независимый исполняемый файл. Этого достаточно или надо что-то ещё?

m2l>Потому что ты не совсем понимаешь, что такое run-time языка.
Именно. Я не понимаю, что ещё такое "run-time языка".

m2l>В твоём примере на С++ мы получим файл со статически слинкованым рантаймом. Просто потому, что RTTI, new/delete, исключения и т.д. и т.п. — это и есть рантайм. Это буквально часть языка. Всё-таки C++ без new/delete — это не совсем обычный C++?

Допустим.

m2l>А почему это надо ответ простой. Когда мы пишем тоже ядро ОС или драйвер для него, или прочие низкоуровневые штуки — то штатный рантайм языка программирования оказывается неработоспособен. Он-то расчитан на работу с операционной системой, а не на то, что программа сама является операционной системой.

Это откуда следует?
У меня такое впечатление, что вы путаете API системы с чем-то ещё. Возьмём, к примеру, функцию fopen — она не будет работать в C если операционная система не имеет файловой системы. Так в чём отличие от C++?

m2l>И второй аспект — рантайм делает скрытую работу, и это усложняет написание кода и не всегда допустимо в принципе.

Это так, но ведь это совсем другой аспект.

m2l>Где-нибудь в планировщике, дернутом с высоким IRQL, например нельзя делать какие-то вещи (те же исключения создавать) — и программист должен явно понимать, во что будет откомпилирован код.

И что? Например, может для C быть запрещена динамическая аллокация памяти. Можно ли при этом писать программу на C? Можно. И на С++ можно. В чём разница? В исключениях? Ну так их можно не использовать.

m2l>Не хочу убеждать, что это прям супер-надо. Но, если ты с таким не сталкивался, сделай скидку на то, что кому-то может быть надо. И категоричные утверждения, что давайте всё напишем на С++ иногда упираются в отсутствие опыта с другими технологическими стеками.


Меня не надо убеждать — я просто понять хочу. Допустим у нас вообще нет операционной системы. Можно ли без операционной системы сделать запускаемый (статически слинкованый) экзешник на C? Можно, я делал. Можно ли без операционной системы сделать запускаемый экзешник на C++? Такого я не делал — у меня не было такой задачи. Быстрый поиск показывает, что есть операционная система написанная на C++, что, как бы, намекает на.
Я не вижу причин из-за которых невозможно написать приложение на С++, которое бы не нуждалось в операционной системе. Так что такое "run-time языка"?
И каждый день — без права на ошибку...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.