|
7 / 6 / 1
Регистрация: 29.10.2021
Сообщений: 14
|
|||||||||||||||||||||||||||||||
Что бы вы изменили в дизайне c++?29.10.2021, 17:52. Показов 4165. Ответов 66
Тема ни о чём, просто напишите что думаете или мечтаете
Я очень люблю c++, альтернатив ему никаких и близко не вижу. И вот задумался, а что если...? У каждого программиста есть мечта создать свой собственный язык программирования с пасьянсом и барышнями, не так ли? Кажется, язык моей мечты очень близок к с++, но, как мне кажется, плюсики обладают некоторыми минусиками. Если бы вы могли переделать что-либо в дизайне с++ (не оглядываясь на обратную совместимость и прочее такое, просто с корнями перелопатить всё), то что бы вы изменили? А какие новые возможности бы добавили? (сборщик мусора сразу в мусорку) Заранее извиняюсь за весь бред ниже Вот некоторые мои предложения. Что думаете? В чём я обделался? 0: Отказаться от совместимости с Сиии 1: Перемещение и копирование, классы и структуры Вам не кажется, что семантика перемещения, все эти бесконечные конструкторы... дрянь? Вам не кажется странным, что классы и структуры - по факту одно и то же? Все объекты будут по умолчанию перемещаться, а точнее, просто тривиально копироваться с помощью memcpy(). Вместо конструкторов копирования будут вызываться явные методы (например object.clone()) Классы и структуры будут отличаться по своему поведению. Структура не изменит своего настоящего поведения. Структура переместилась в новое место - старая структура никуда не делась и продолжила свою работу. Позже для неё вызвался деструктор. По факту, для каждой копии вызывается деструктор. То есть на один конструктор несколько деструкторов.
После перемещения класс забывается. Всё, его уже не существует и для него ничего не вызывается. Это будет жестко контролироваться компилятором.
2: Приведения типов Все неявные приведения типов будут запрещены. Никаких if ((int)x) Оставить лишь один приведения - оператор as как заменитель static_cast + каст указателей, например
Вместо dynamic_cast была бы функция стандартной библиотеки, типа isInstanceOf<T>(T* object)->bool 3: встроенные типы как объекты Разве не круто написать...?
У меня просто вопрос, возможно ли их вообще сделать в компилируемом языке типа c++? Ведь для их использования нужно каждый раз компилировать всю программу целиком. Тогда о компиляции по отдельным единицам можно забыть и её время вырастет до небес? А возможно ли встраивать информацию о них в уже скомпилированные единицы? Как с этим справляется шарп? 5: Char бесполезен Зачем делать отдельный тип для символов (да ещё городить огород из всяких char16_t char32_t), если можно использовать целые числа? А строки просто обернуть в класс string, который по факту vector<uint8_t> 6: ++ -- Ну...
++ можно ставить только справа от переменной, и означает он += 1. Всё. Не надо нам никаких "Ну он увеличивает, потом возвращает, а этот возвращает, потом увеличивает" Аналогично -- 7: Указатели Я бы вообще убрал чистые указатели. Есть ссылки, есть unique/shared. Для особых случаев можно в стандартной библиотеке добавить раздел для отстрелов ног, включить туда функции работы с памятью напрямую (но вместо указателей адреса size_t) Достаточно 8: Я хочу сахара Кортежи не через зад, а с именованными параметрами
Именованные параметры функций (если у функции миллиард необязательных параметров, а тебе нужно установить лишь последний из них) Геттеры и сеттеры. Вместо функции int getX() {... будет свойство int get X() {... Добавлено через 9 минут Я совсем забыл.. 9: Автовывод операторов Перегрузили + - автоматически перегрузился += Перегрулили == - автоматически перегрузился != Перегрузили < и == - автоматически перегрузился <= Почему нет? Добавлено через 1 минуту PS Ну а шаблоны - это вообще длиннющий разговор, достойный отдельной темы
0
|
|||||||||||||||||||||||||||||||
| 29.10.2021, 17:52 | |
|
Ответы с готовыми решениями:
66
Что бы вы изменили? Что бы вы изменили в конфигурации этого ПК! Что нужно поменять в дизайне сайта |
|
Злостный нарушитель
10915 / 5843 / 1289
Регистрация: 12.03.2015
Сообщений: 26,947
|
||
| 30.10.2021, 17:17 | ||
|
Я когда вспоминаю описание процедурных типов, у меня начинает голова болеть. ![]() З.Ы. По долгу службы мне приходится писать софт и на Си, и на Паскале. Вот я и сравниваю.
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 30.10.2021, 17:20 | ||
|
https://www.youtube.com/watch?v=JoVQTPbD6UY Если уж говорить серьезно, то текст шутки просто не выдерживает фактологической проверки. Если рассмотреть сведения, которые представлены в статье, то легко можно обнаружить фактические противоречия, которые первым делом указывают на то, что статья - фейк. https://www.youtube.com/watch?v=EY6q5dv_B-o
0
|
||
|
Злостный нарушитель
10915 / 5843 / 1289
Регистрация: 12.03.2015
Сообщений: 26,947
|
|
| 30.10.2021, 17:25 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 30.10.2021, 17:26 | |||
|
Например, в статье утверждается, что заявление было сделано на конференции "UnixWorld Software Development Forum". Давайте поищем, что это за конференция такая? Очень скоро мы обнаружим, что все ссылки с упоминанием этой конференции ведут только на эту шуточную статью. Неужели, если бы она правда существовала, это было бы так?
0
|
|||
|
Злостный нарушитель
10915 / 5843 / 1289
Регистрация: 12.03.2015
Сообщений: 26,947
|
|||
| 30.10.2021, 17:34 | |||
|
Пусть статья - фейк, но в ней есть правильный акцент на то, что язык Си сделан сложным намеренно. Добавлено через 3 минуты
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 30.10.2021, 17:41 | ||
|
По сравнению с тем, что было до Си - это было гораздо проще. Люди мыслят сообразно времени, в котором живут. Вот здесь современный человек пытается управлять машиной 20-х годов, можно посмотреть за его впечатлениями: https://youtu.be/Lr_aZ20W4k4?t=1031 Намеренно сделали управление таким сложным? Там ведь и ошибка в управлении может привести к травме или выходу из строя машины. Просто посмотри видео https://www.youtube.com/watch?v=JoVQTPbD6UY Они с первых секунд говорят, что стремились сделать использование компьютера проще. И ведь учитывать стоит не только восприятие человеком, но и возможности реализации.
0
|
||
|
Злостный нарушитель
10915 / 5843 / 1289
Регистрация: 12.03.2015
Сообщений: 26,947
|
|||
| 30.10.2021, 18:02 | |||
|
Добавлено через 14 минут Я думаю, что из-за искусственного усложнения и возникают пачками вот такие вопросы на форумах: Не могу передать объект класса в функцию
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||
| 30.10.2021, 18:11 | ||||
|
Например, разумеется Си был намеренно сделан близким к типичным машинным инструкциям, но только чтобы упростить переход программистов на ассемблере на него. Т.е. да, изначально большая высокоуровневость упростила бы язык абстрактно, но не для тех, на кого он был ориентирован - программистов операционной системы. Добавлено через 3 минуты
0
|
||||
|
Злостный нарушитель
10915 / 5843 / 1289
Регистрация: 12.03.2015
Сообщений: 26,947
|
||
| 30.10.2021, 18:11 | ||
|
И я пытаюсь кого-то в чём-то переубедить. Я чисто субъективно пытаюсь понять, ЗАЧЕМ синтасис хорошего языка программирования сделали таким кривым и непонятным. И ВСЁ. Только это.
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 30.10.2021, 18:13 | |
|
0
|
|
|
Злостный нарушитель
10915 / 5843 / 1289
Регистрация: 12.03.2015
Сообщений: 26,947
|
||
| 30.10.2021, 18:14 | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 30.10.2021, 18:15 | ||
|
Нужно просто разобраться что есть такое было PDP-11 и все встанет на свои места. Не нужно оценивать Си с колокольни современных систем, это будет большой ошибкой.
Добавлено через 56 секунд
0
|
||
|
Злостный нарушитель
10915 / 5843 / 1289
Регистрация: 12.03.2015
Сообщений: 26,947
|
|
| 30.10.2021, 18:17 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 30.10.2021, 18:20 | ||
|
Почему? Да потому что разные архитектуры по-разному к этому относятся. И чтобы нам сделать общее для всех решение - нужно его эмулировать программно. И что мы в итоге получаем? Усложнение кода, который нам сделал компилятор, его более медленную работу. Для каких-то задач это может быть приемлемым компромиссом, но только не для задачи написания операционной системы.
0
|
||
| 30.10.2021, 18:21 | |
|
0
|
|
|
Злостный нарушитель
10915 / 5843 / 1289
Регистрация: 12.03.2015
Сообщений: 26,947
|
|||||||
| 30.10.2021, 18:31 | |||||||
|
Имхо, это, как раз, нормальное поведение программы. Если рукожопый программист не знает, как хранятся и обрабатываются процессором данные, то он сам дурак. Да и причём тут семантика, которую мы тут обсуждаем? Добавлено через 5 минут Вот это UB или не UB?
0
|
|||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 30.10.2021, 18:32 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 30.10.2021, 18:34 | ||
|
Его не было раньше, а сейчас это вообще абсолютно предсказуемая ошибка компиляции.
0
|
||
|
Злостный нарушитель
10915 / 5843 / 1289
Регистрация: 12.03.2015
Сообщений: 26,947
|
||
| 30.10.2021, 18:35 | ||
|
0
|
||
| 30.10.2021, 18:35 | |
|
Как найти то что можно улучшить в дизайне, юзабилити сайта? Негодяи изменили заставку =) Стрелки изменили назначение В БД access изменили тип данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|