Re[4]: IT-батл - доцент МГУ vs студент Rust-офил
От: Pyromancer  
Дата: 06.10.22 12:15
Оценка:
Здравствуйте, B0FEE664, Вы писали:

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


BFE>Меня не надо убеждать — я просто понять хочу. Допустим у нас вообще нет операционной системы. Можно ли без операционной системы сделать запускаемый (статически слинкованый) экзешник на C? Можно, я делал. Можно ли без операционной системы сделать запускаемый экзешник на C++? Такого я не делал — у меня не было такой задачи. Быстрый поиск показывает, что есть операционная система написанная на C++, что, как бы, намекает на.

BFE>Я не вижу причин из-за которых невозможно написать приложение на С++, которое бы не нуждалось в операционной системе. Так что такое "run-time языка"?

Вобщем-то написать приложение запускающееся "без всего" это скорее требование к компилятору/линкеру чем к языку. Надо получить на выходе нативный для процессора код, используюший только прерывания БИОС из стороннего, а на чём оно изначально написано какая разница.
Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: B0FEE664  
Дата: 06.10.22 13:35
Оценка:
Здравствуйте, Pyromancer, Вы писали:

P>Вобщем-то написать приложение запускающееся "без всего" это скорее требование к компилятору/линкеру чем к языку. Надо получить на выходе нативный для процессора код, используюший только прерывания БИОС из стороннего, а на чём оно изначально написано какая разница.


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

BFE>Именно. Я не понимаю, что ещё такое "run-time языка".

Дополнительный код, добавляемый компилятором для реализации части механизмов языка.

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

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

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

Элементарно. Когда ты, пишешь на С++ и создаешь объект, под него должна быть выделена память, для этого нужен алокатор, алокатор памяти — часть run-time, и чтобы выделить тебе условные 20-байт на объект он сначала дергает API операционной системы, что бы у неё получить эту память. Код драйвера — VirtualAlloc / mmap нету — драйвер не работает. При этом создание объектов — часть языка, "language support library" — по нотации их стандарта С++. В случае Си, тупо нет динамической память, которую должен выделять компилятор (либо он делает это на стеке, либо malloc — которую можно отключить, просто убрав этот заголовочный файл).

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

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

BFE>Это так, но ведь это совсем другой аспект.
Да, но даже не знаю какой из них важней. В конце концов рантайм можно и свой подставить (пусть и проще выбрать другой язык). А факт скрытой работы останется.


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

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

В этом-то и разница. В С динамическая алокация памяти — отключаемая фича, её наличие не влияет на язык. В С++ — динамическая аллокация памяти — неотъемлемая часть языка (по стандарту, раздел 21 "Language support library").


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


BFE>Меня не надо убеждать — я просто понять хочу. Допустим у нас вообще нет операционной системы. Можно ли без операционной системы сделать запускаемый (статически слинкованый) экзешник на C? Можно, я делал. Можно ли без операционной системы сделать запускаемый экзешник на C++? Такого я не делал — у меня не было такой задачи. Быстрый поиск показывает, что есть операционная система написанная на C++, что, как бы, намекает на.

BFE>Я не вижу причин из-за которых невозможно написать приложение на С++, которое бы не нуждалось в операционной системе. Так что такое "run-time языка"?
Вспоминая Microsoft с их проектом Singularity — где ОС была написана на C# (не то что рантайм, а целый сборщик мусора) — а смысл писать ОС на С++, если можно на Java, Go или Python?

Я не разделяю критичность доцента. Но, просто нужно знать несколько разных языков и иметь опыт написания приложений на них, что бы такие вопросы не возникали.
Re[4]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 07.10.22 17:26
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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

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

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

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

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

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

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

CC>Это примерно как std, стандартная либа чтоб можно было сразу что то лабать. Хош пользуйся, хош — нет.
Это часть языка по его спецификации (Language support library & etc).

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

CC>

Тебя смутило слово "иногда"?
Re[4]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 07.10.22 17:29
Оценка:
Здравствуйте, Marty, Вы писали:

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

Так он и без class и template — тот же самый С++. "Просто не используются какие-то библиотеки"

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


M>Вот тут не понял твою позицию


доцент чрезмерно критичен. ИМХО в С нет уникальных свойств, делающих его незаменимым любым другим языком. Просто, в некоторых задачах он кажется чуть более предпочтительным остальных языков и не более.
Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.10.22 18:01
Оценка: 1 (1)
Здравствуйте, m2l, Вы писали:

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


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

А наш загрузчик, который умеет обновлять прошивку по UART/CAN, занимает до 1 кб/2ух (в зависимости от STMки) — тоже на плюсах написан, опять же — по незнанию
Маньяк Робокряк колесит по городу
Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.10.22 18:03
Оценка:
Здравствуйте, m2l, Вы писали:

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

m2l>Это часть языка по его спецификации (Language support library & etc).

И что?
Маньяк Робокряк колесит по городу
Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.10.22 18:05
Оценка: +1
Здравствуйте, m2l, Вы писали:

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

m2l>Так он и без class и template — тот же самый С++. "Просто не используются какие-то библиотеки"

Классы и шаблоны сами по себе не зависят ни от каких библиотек
Маньяк Робокряк колесит по городу
Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: Stanislav V. Zudin Россия  
Дата: 07.10.22 18:32
Оценка: +2
Здравствуйте, m2l, Вы писали:

m2l>Элементарно. Когда ты, пишешь на С++ и создаешь объект, под него должна быть выделена память, для этого нужен алокатор, алокатор памяти — часть run-time, и чтобы выделить тебе условные 20-байт на объект он сначала дергает API операционной системы, что бы у неё получить эту память. Код драйвера — VirtualAlloc / mmap нету — драйвер не работает. При этом создание объектов — часть языка, "language support library" — по нотации их стандарта С++. В случае Си, тупо нет динамической память, которую должен выделять компилятор (либо он делает это на стеке, либо malloc — которую можно отключить, просто убрав этот заголовочный файл).


Мне кажется ты путаешь создание объектов и выделение памяти в куче.
Эти действия ортогональны. Сконструировать объект ты можешь на любом куске памяти — на стеке или где-то как-то выделенной, неважно какими средствами.

Да, без средств стандартной библиотеки будет некомфортно, но мы без нее столько лет жили и ничего так, программы работали
_____________________
С уважением,
Stanislav V. Zudin
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.10.22 19:07
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Мне кажется ты путаешь создание объектов и выделение памяти в куче.

SVZ>Эти действия ортогональны. Сконструировать объект ты можешь на любом куске памяти — на стеке или где-то как-то выделенной, неважно какими средствами.

SVZ>Да, без средств стандартной библиотеки будет некомфортно, но мы без нее столько лет жили и ничего так, программы работали



Некоторые товарищи, типа Тёмчика, плюсы не осилили, но мнение имеют
Маньяк Робокряк колесит по городу
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 07.10.22 21:28
Оценка:
Здравствуйте, Marty, Вы писали:

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


Слово почти такое незаметное?
Re[7]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.10.22 21:30
Оценка:
Здравствуйте, m2l, Вы писали:

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


m2l>Слово почти такое незаметное?


Это ты о чем? В твоей простыне вроде его не было, но если и было — то да, оно такое незаметное
Маньяк Робокряк колесит по городу
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 07.10.22 21:32
Оценка:
Здравствуйте, Marty, Вы писали:

M>Классы и шаблоны сами по себе не зависят ни от каких библиотек

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

Ты о чём хочешь поспорить со мной сразу в трех ветках?
Re[7]: IT-батл - доцент МГУ vs студент Rust-офил
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.10.22 21:35
Оценка:
Здравствуйте, m2l, Вы писали:

M>>Классы и шаблоны сами по себе не зависят ни от каких библиотек

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

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



m2l>Ты о чём хочешь поспорить со мной сразу в трех ветках?


Спорить о профнепригодности с профнепригодным?
Маньяк Робокряк колесит по городу
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 08.10.22 12:58
Оценка: -1
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Мне кажется ты путаешь создание объектов и выделение памяти в куче.

SVZ>Эти действия ортогональны. Сконструировать объект ты можешь на любом куске памяти — на стеке или где-то как-то выделенной, неважно какими средствами.

Нет, я имею ввиду именно создание объектов в куче. И я хорошо понимаю, что для class-name var-name компилятор постарается выделить место в стеке (и ты же помнишь, что это возможно не для всех классов?). Но, С++ в котором есть только классы создаваемые на стеке — это весьма своеобразный огрызок. Элементарные list, string, regexp, exception — это всё исчезает. И получается подмножество от С++, причем с явным креном аккурат в общую часть С и С++. Теже new/delete — часть языка. Да можно и без них. Но какой тогда вообще смысл в С++?

SVZ>Да, без средств стандартной библиотеки будет некомфортно, но мы без нее столько лет жили и ничего так, программы работали



Я не из мгу и мне пофиг. Я лишь попытался объяснить что такое рантайм в С++ и зачем он нужен. Если не прав — поправляй это.
Re[8]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 08.10.22 13:40
Оценка:
Здравствуйте, Marty, Вы писали:

m2l>>Ты о чём хочешь поспорить со мной сразу в трех ветках?


M>Спорить о профнепригодности с профнепригодным?

Ничего страшного, это пройдёт

Я отвечаю на вопрос B0FEE664 "что такое run-time языка" и какие ограничения могут возникать из-за этого рантайма.
А ты не отвечаешь ни на чей вопрос, а навешиваешь ярлыки и пытаешься оскорбить.

У нас форум вроде чтобы помогать друг друга, а не самоутверждаться? Ну так помоги B0FEE664 разобраться с тем, что такое run-time языка — или не мешайся другим.
Re[8]: IT-батл - доцент МГУ vs студент Rust-офил
От: m2l  
Дата: 08.10.22 13:46
Оценка: -1
Здравствуйте, Marty, Вы писали:

m2l>>Слово почти такое незаметное?


M>Это ты о чем? В твоей простыне вроде его не было, но если и было — то да, оно такое незаметное


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


Выделил жирным.

Слушай, а как же ты стандарт С++ читал, если четыре предложения не осилил? Или твой уровень знаний С++ не предполагает чтение его стандарта? Типа коллега научил писать "int main" я и пишу?
Re[6]: IT-батл - доцент МГУ vs студент Rust-офил
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 08.10.22 16:15
Оценка: +1
Здравствуйте, Marty, Вы писали:

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


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


M>Хм, интересно, как это я пять лет писал под STM32 на плюсах...

Очевидно, ты линковался с минимальным рантаймом под STM32 который был написано не тобой.
Sic luceat lux!
Re[5]: IT-батл - доцент МГУ vs студент Rust-офил
От: CreatorCray  
Дата: 08.10.22 23:41
Оценка:
Здравствуйте, m2l, Вы писали:

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

Его нет в runtime library языка, это код, который компилятор генерит для конструкций языка.

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

Asm надо только там, где нельзя логику выразить средствами языка, например RDMSR. И то в нынешнее время с добавлением интринсиков даже асм стал не нужен.

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

Нет. Всё то, что можно написать на этом же языке, не является частью языка.

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

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

M>>Классы и шаблоны сами по себе не зависят ни от каких библиотек

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

Таки надо имплементация определённых функций. Их конечно можно прямо у себя и написать, но всё же.
Тогда как классам и шаблонам не надо вообще ничего со стороны.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.