Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: CreatorCray  
Дата: 09.10.22 07:22
Оценка: +2
Здравствуйте, m2l, Вы писали:

m2l>Элементарно. Когда ты, пишешь на С++ и создаешь объект, под него должна быть выделена память, для этого нужен алокатор

Нет, не нужен. Потому как объект можно разместить на стеке, или в глобальном namespace.
Так что вся дальнейшая теория пошла прахом, переделывай.

m2l>чтобы выделить тебе условные 20-байт на объект он сначала дергает API операционной системы

Ващета элементарнейше делается наколенный аллокатор который не дёргает из OC вообще ничего. Но тем не менее умеет выделять память в заданных на этапе компиляции рамках.

m2l>В С++ — динамическая аллокация памяти — неотъемлемая часть языка

И такиж нет.

m2l>Вспоминая Microsoft с их проектом Singularity — где ОС была написана на C# (не то что рантайм, а целый сборщик мусора) — а смысл писать ОС на С++, если можно на Java, Go или Python?

Даже дом можно построить из навоза (и таки реально строили), вот только нафига?
Можно даже на brainfuck написать концепт, вот только вопрос в жизнеспособности получившейся "модели человека, полностью неудовлетворённого" (tm)
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[7]: IT-батл - доцент МГУ vs студент Rust-офил
От: CreatorCray  
Дата: 09.10.22 07:22
Оценка:
Здравствуйте, Kernan, Вы писали:

K>Очевидно, ты линковался с минимальным рантаймом под STM32 который был написано не тобой.

Ничо что "рантайм" может быть написан прямо в твоём же коде?
С ним не надо именно линковаться, всё что надо — чтоб линкер хоть где то нашёл нужные ему символы.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: CreatorCray  
Дата: 09.10.22 07:22
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Да, без средств стандартной библиотеки будет некомфортно

Надо заметить что стандартная библиотека таки в целом не то чтобы сильно комфортная.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[7]: IT-батл - доцент МГУ vs студент Rust-офил
От: CreatorCray  
Дата: 09.10.22 07:22
Оценка: +2
Здравствуйте, m2l, Вы писали:

m2l>Элементарные list, string, regexp, exception — это всё исчезает.

Зависит от опыта пишущего

m2l>Теже new/delete — часть языка. Да можно и без них. Но какой тогда вообще смысл в С++?

Да одни только шаблоны и RAII уже сильно улучшают качество жизни по сравниению с С. А new/delete это так, мелочь.
Ты точно на С++ писал всерьёз?

m2l>Я лишь попытался объяснить что такое рантайм в С++ и зачем он нужен.

У тебя не получилось.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: flаt  
Дата: 09.10.22 07:39
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, m2l, Вы писали:


m2l>>Понимаешь? Ты не можешь убрать из С++ создание объектов — это одна из ключевых частей языка. А для их создания нужна "language support library" (тот самый run-time). И его почти нельзя убрать.


M>Хм, интересно, как это я пять лет писал под STM32 на плюсах... Вот если бы ты мне раньше рассказал, то я точно бы на плюсах не смог бы писать, пришлось бы на сишечке мучаться...


Вы (или за вас) просто написали этот рантайм (выделение памяти, как минимум).

M>А наш загрузчик, который умеет обновлять прошивку по UART/CAN, занимает до 1 кб/2ух (в зависимости от STMки) — тоже на плюсах написан, опять же — по незнанию


Ну, или можно писать код без динамической памяти, почему нет.
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: flаt  
Дата: 09.10.22 07:43
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:


CC>Даже дом можно построить из навоза (и таки реально строили), вот только нафига?


Он хорошо держит тепло (см "саман").

Оффтоп
Отредактировано 09.10.2022 7:45 flаt . Предыдущая версия .
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 09.10.22 08:10
Оценка:
Здравствуйте, CreatorCray, Вы писали:

m2l>>Я бы отнёс этот код к рантайму языка.

CC>Его нет в runtime library языка, это код, который компилятор генерит для конструкций языка.
Если оперировать к исходному тезису про zero-runtime, то, что компилятор нагенерировал лапшу непонятного и непредсказуемого кода для какой-то языковой конструкции — эти инструкции, в том числе, и есть лишний run-time. Понятно, что и С не чисто в опкоды транслируется и там компилятор может ого-го как развернуться. Но предполагается, что из-за простоты (бедности) синтаксиса такого "лишнего" кода в С будет меньше.

m2l>>Но справедливости ради, в небольших кусочках ОС даже кернет рантайм будет не приемлем и понадобиться асм.

CC>Asm надо только там, где нельзя логику выразить средствами языка, например RDMSR. И то в нынешнее время с добавлением интринсиков даже асм стал не нужен.
По идеи, что бы нормально пользоваться интринсиками (на уровне больше копипасты со стек оверфлов) нужно чуть-чуть знать асм. Поэтому чистый .asm будет, вставки или интринсики — я бы сильно одно от другого не отделял.

m2l>>Это часть языка по его спецификации

CC>Нет. Всё то, что можно написать на этом же языке, не является частью языка.
Я здесь имею в виду, в формальном отношении, как часть спецификации языка, описывающей что и как генерировать компилятору.

m2l>>Тебя смутило слово "иногда"?

CC>Меня смутило отстуствие слова "иногда" перед словом "категоричные".
Извиняюсь, поправляюсь:

иногда излишне категоричные
Re[8]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 09.10.22 08:13
Оценка:
Здравствуйте, CreatorCray, Вы писали:

m2l>>new и delete сами по себе не зависят ни от каких библиотек


CC>Таки надо имплементация определённых функций. Их конечно можно прямо у себя и написать, но всё же.

CC>Тогда как классам и шаблонам не надо вообще ничего со стороны.

Не помню на вскидку почему, но кажется чуть-чуть сложней чем просто свои new/delete.
Но в целом, ты прав, можно вместо дефолтного run-time языка подсунуть свой и писать на чём угодно для чего угодно. Важен программист, а не язык
Re[8]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 09.10.22 08:14
Оценка:
Здравствуйте, CreatorCray, Вы писали:

m2l>>Я лишь попытался объяснить что такое рантайм в С++ и зачем он нужен.

CC>У тебя не получилось.

Объясни лучше
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 09.10.22 08:19
Оценка:
Здравствуйте, CreatorCray, Вы писали:

m2l>>Элементарно. Когда ты, пишешь на С++ и создаешь объект, под него должна быть выделена память, для этого нужен алокатор

CC>Нет, не нужен. Потому как объект можно разместить на стеке, или в глобальном namespace.
CC>Так что вся дальнейшая теория пошла прахом, переделывай.

Ну да можно. Так ведь можно вообще писать на той части языка, что является общей между С и С++ — собираешь потом как С код, вот и всё.


m2l>>чтобы выделить тебе условные 20-байт на объект он сначала дергает API операционной системы

CC>Ващета элементарнейше делается наколенный аллокатор который не дёргает из OC вообще ничего. Но тем не менее умеет выделять память в заданных на этапе компиляции рамках.

Ну да. Всегда можно заменить рантайм на свой, который делает как тебе надо. И что?

m2l>>В С++ — динамическая аллокация памяти — неотъемлемая часть языка

CC>И такиж нет.

Я выше приводил пункты стандарта. Поэтом опровергай тоже там с указанием пунктов или страниц из спецификации.

m2l>>Вспоминая Microsoft с их проектом Singularity — где ОС была написана на C# (не то что рантайм, а целый сборщик мусора) — а смысл писать ОС на С++, если можно на Java, Go или Python?

CC>Даже дом можно построить из навоза (и таки реально строили), вот только нафига?
CC>Можно даже на brainfuck написать концепт, вот только вопрос в жизнеспособности получившейся "модели человека, полностью неудовлетворённого" (tm)

Тем не менее, мы все убедились, что и C# для этой задачи подходит ничуть не хуже C++ или С.
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 09.10.22 08:52
Оценка: :)
Здравствуйте, Marty, Вы писали:

M>Хм, интересно, как это я пять лет писал под STM32 на плюсах... Вот если бы ты мне раньше рассказал, то я точно бы на плюсах не смог бы писать, пришлось бы на сишечке мучаться...


И что, там можно было new/delete использовать? Или исключения? RTTI? Нет? Так это не C++, а его подмножество, как раз с отрезанным рантаймом.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[8]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 09.10.22 08:57
Оценка:
Здравствуйте, Marty, Вы писали:

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


Нет. Они без динамической памяти не работают. И за ней они обратятся к рантайму.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[8]: IT-батл - доцент МГУ vs студент Rust-офил
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 09.10.22 10:15
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Kernan, Вы писали:


K>>Очевидно, ты линковался с минимальным рантаймом под STM32 который был написано не тобой.

CC>Ничо что "рантайм" может быть написан прямо в твоём же коде?
Написание такого кода это всегда редкостный гемор. С одной стороны, нет нормальных гайдов как это делать, с другой — нет нормальных инструментов.
CC>С ним не надо именно линковаться, всё что надо — чтоб линкер хоть где то нашёл нужные ему символы.
Не всё так просто. Надо ещё правильно размещать секции кода, например, часть инициализации в начале. Могу соврать, конечно, т.к. bare metal занимался очень давно и были это это STM-ки, а SoC-и с довольно нетривиальной инициализацией.
Sic luceat lux!
Re[7]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 09.10.22 11:36
Оценка: +1
Здравствуйте, flаt, Вы писали:

M>>А наш загрузчик, который умеет обновлять прошивку по UART/CAN, занимает до 1 кб/2ух (в зависимости от STMки) — тоже на плюсах написан, опять же — по незнанию


F>Ну, или можно писать код без динамической памяти, почему нет.


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

M>>Хм, интересно, как это я пять лет писал под STM32 на плюсах... Вот если бы ты мне раньше рассказал, то я точно бы на плюсах не смог бы писать, пришлось бы на сишечке мучаться...


УП>И что, там можно было new/delete использовать? Или исключения? RTTI? Нет? Так это не C++, а его подмножество, как раз с отрезанным рантаймом.



И что, он перестал от этого быть C++? Перегрузка — есть, шаблоны функций/классов — есть, виртуальные методы — есть. Этого вполне хватало, и это всё-таки гораздо удобнее, чем писать на голой сишечке
Маньяк Робокряк колесит по городу
Re[9]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 09.10.22 11:43
Оценка: +1
Здравствуйте, ути-пути, Вы писали:

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


УП>Нет. Они без динамической памяти не работают. И за ней они обратятся к рантайму.


Переопределить new/delete, и всё, никакой рантайм не нужен. А если мегабайты текста обрабатывать не надо (а на контроллере обычно и не надо), то эти new/delete и вызваны могут не быть за счет SSO
Маньяк Робокряк колесит по городу
Re[8]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 09.10.22 11:48
Оценка: :)
Здравствуйте, Marty, Вы писали:

M>И что, он перестал от этого быть C++? Перегрузка — есть, шаблоны функций/классов — есть, виртуальные методы — есть.


Да, перестал, став урезанным подмножеством.

M>Этого вполне хватало, и это всё-таки гораздо удобнее, чем писать на голой сишечке


Разумеется удобнее, хотя, подозреваю, насчет виртуальных методов ты приврал: vtable, диспетчеризация, вот это вот все — явно не для мелких МК.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[9]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 09.10.22 12:04
Оценка: +1
Здравствуйте, ути-пути, Вы писали:

УП>Да, перестал, став урезанным подмножеством.


Нет, не перестал. Язык тот же. Библиотеки плюсовые, строки/векторы/мапы — тоже есть, просто мы ими не пользовались. К слову, в одной конторе, где я работал, STL тоже не используется, там всё своё самописное. Значит ли это, что у них тоже урезанный C++?


M>>Этого вполне хватало, и это всё-таки гораздо удобнее, чем писать на голой сишечке


УП>Разумеется удобнее, хотя, подозреваю, насчет виртуальных методов ты приврал: vtable, диспетчеризация, вот это вот все — явно не для мелких МК.


Нет никаких проблем с vtbl даже на тех камешках, где оперативки килобайта 4. Флэшка для кода, кстати, обычно пожирнее
Маньяк Робокряк колесит по городу
Re[10]: IT-батл - доцент МГУ vs студент Rust-офил
От: ути-пути Россия  
Дата: 09.10.22 13:26
Оценка:
Здравствуйте, Marty, Вы писали:

M>Переопределить new/delete, и всё, никакой рантайм не нужен.


Так динамическая память вообще не нужна. Когда у тебя оперативки 128, накладные расходы на кучу слишком заметны.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[7]: IT-батл - доцент МГУ vs студент Rust-офил
От: 4058  
Дата: 09.10.22 18:33
Оценка:
Здравствуйте, m2l, Вы писали:

m2l>Тем не менее, мы все убедились, что и C# для этой задачи подходит ничуть не хуже C++ или С.


И явно не лучше. Весь низкий уровень там всё-равно на ASM и C (который не ++). Рантайм и прочий сопутствующий обвес на расширенном (под эту задачу) C# — Sing.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.