Форум программистов, компьютерный форум, киберфорум
Обо всем!
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/26: Рейтинг темы: голосов - 26, средняя оценка - 4.50
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2

За что я не люблю С++

07.02.2020, 03:59. Показов 6605. Ответов 95

Студворк — интернет-сервис помощи студентам
Интересно, за что Вы не любите C++?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2020, 03:59
Ответы с готовыми решениями:

За что я не люблю 1С
Когда меня спрашивают, знаю я тот или иной язык, то стараюсь ответить: "Да/нет, я могу/не могу решать задачи с помощью этого языка". ...

Скажите Тане, что я люблю её!
Это не "ещё одна" история любви - это история большой неразделённой любви... Она - богиня. Чувственное, нежное, красивое создание...

Почему я люблю C++
Мне интересно, почему Вы любите C++?

95
фрилансер
 Аватар для Алексей1153
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,296
07.02.2020, 13:50
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от IGPIGP Посмотреть сообщение
возможность создавать нестатические методы, которые фактически не имеют доступа к членам класса
а вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct A
{
    void func()
    {
        return []
        {
 
            //тут не видно this
 
        }();
    }
};
Добавлено через 1 минуту
может, я и не понял. Ну да ладно
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.02.2020, 13:52
Цитата Сообщение от Алексей1153 Посмотреть сообщение
а вот так
не понял. Вы говорите о лямбда? Это функтор. Если вы захватили this то так и будет. Не понял, что вы хотите сказать.
0
фрилансер
 Аватар для Алексей1153
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,296
07.02.2020, 13:57
IGPIGP, нет, я не захватывал

Цитата Сообщение от Алексей1153 Посмотреть сообщение
//тут не видно this
что я хочу сказать - с такой обёрткой достигается сокрытие this
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.02.2020, 13:58
Алексей1153, вы сами задали вопрос:
Цитата Сообщение от Алексей1153 Посмотреть сообщение
только зачем эта функция НЕ статическая
для случая когда отфонарная функция тупо пришивается к thisCall. Я сказал вам что это не про то что я говорил о синтаксисе вызова метода (нормального и имеющего доступ к объкту) как свободной функции но с доп параметром передаваемым дополнительно (ссылка или указатель на экземпляр). И к тому же я показал где говорил о том, что вы говорите спрашивая зачем такая функция:
Цитата Сообщение от IGPIGP Посмотреть сообщение
возможность создавать нестатические методы, которые фактически не имеют доступа к членам класса
0
 Аватар для COKPOWEHEU
4144 / 2722 / 433
Регистрация: 09.09.2017
Сообщений: 12,056
07.02.2020, 13:59
Цитата Сообщение от IGPIGP Посмотреть сообщение
возможность создавать нестатические методы, которые фактически не имеют доступа к членам класса
Так ведь статические методы придуманы именно для этого - чтобы отвязаться от экземпляра класса.
0
фрилансер
 Аватар для Алексей1153
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,296
07.02.2020, 14:00
ладно, не будем углубляться в то, кто что не так понял
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.02.2020, 14:01
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Так ведь статические методы придуманы именно для этого - чтобы отвязаться от экземпляра класса.
Разговор слепо-глухо-непроницательных... Ваша реплика в пользу того о чём я говорил. А не вразрез.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
07.02.2020, 14:15
Цитата Сообщение от IGPIGP Посмотреть сообщение
как свободной функции но с доп параметром передаваемым дополнительно (ссылка или указатель на экземпляр)
И принести еще больше проблем?
C++
1
2
Some obj;
foo(obj);//foo(obj) или obj.foo()?
Очевидно, что стало проще, понятнее, и, что самое главное - читаемость улучшилась.

А может еще быть так:
C++
1
2
3
4
5
6
7
8
9
struct Some
{
    void foo();
};
 
void foo(Some & s);
 
//...
foo(obj);//Ошибка? O_o
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.02.2020, 14:30
Цитата Сообщение от Croessmah Посмотреть сообщение
И принести еще больше проблем?
Такое обсуждение уже было и я там говорил что данный вопрос - фантомная боль, так как может выбросить на свалку кучу готового кода. Хотя если аккуратно то можно и зайца научить курить.
Перегрузки делаются менглированием (декорированием имён). То есть внутренне имена различаются. Кто мешает выбрать символ для явного декорирования. Например символ '$'. Это может поубивать весь код гле методы кто-то начал с такого символа. Это риск, конечно. Но есть ряд символов, которые точно никто не использует для имён. Например двойной (~~) . Думаю, если поискать можно что-то придумать. И тогда:
C++
1
2
obj->foo(/*some params*/);
~~foo(&obj, /*some params*/);
аналогичны.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
07.02.2020, 14:35
Цитата Сообщение от IGPIGP Посмотреть сообщение
аналогичны
Вы же предлагаете идентичный синтаксис вызова. Этот синтаксис уже отличается от синтаксиса вызова функции. То есть один синтаксис p->foo(); поменяли на ~~foo(p);. Получились те же яйки, только снизу. Не говоря уже, что ~~ - это двойное отрицание. Но это не имеет значения, можно любую фиговину придумать. Главное - что синтаксис уже будет не идентичный, а значит затея провалилась. Идентичный синтаксис принесет больше проблем, чем решит.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
07.02.2020, 14:38
Цитата Сообщение от IGPIGP Посмотреть сообщение
Кто мешает выбрать символ для явного декорирования.
А зачем? С++ разрешает писать в стиле Си и не пользоваться функциями внутри классов, а классы использовать чисто для группирования данных.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.02.2020, 15:06
Цитата Сообщение от Croessmah Посмотреть сообщение
Главное - что синтаксис уже будет не идентичный
Он и без декорирования не идентичен. Контекст в котором я говорю прозрачен но не прост. Тут легко "не понимать".
Цитата Сообщение от Azazel-San Посмотреть сообщение
С++ разрешает писать в стиле Си
Это не про вызовы методов класса. А метод класса вызывается с параметром "указатель на объект". Я предлагаю вариант синтаксиса в котором этот указатель передаётся явно, как параметр. Это даёт возможность создать указатель на метод так же как и указатель на свободную функцию. Сейчас указатель на метод - раздвижной костыль. Биндить не нужно при передаче. Мне кажется, могло бы получиться хорошо)
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
07.02.2020, 15:15
Цитата Сообщение от IGPIGP Посмотреть сообщение
Это даёт возможность создать указатель на метод так же как и указатель на свободную функцию.
Тогда придётся везде писать

C++
1
Some::~~foo(&obj, /*some params*/);
что неудобно. Смысл метода класса в том, что мы не только указываем объект, который нужно обработать, но и пространство имён его класса. Для твоего варианта с "переопределяемыми функциями" будет куча проблем для иерархических объектов.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.02.2020, 15:21
Цитата Сообщение от Croessmah Посмотреть сообщение
~~ - это двойное отрицание
Это не важно. Важно то, что невозможно сегдня объявить функцию с таким именем. Значит не будет конфликта с существующим кодом относительно деклараций. Ну а при вызове ни кто не мешает скомпилировать двойное отрицание на вызове если не найден вариант для декорированного метода. Если найдено и то и другое (мало вероятно, но пусть) - ошибка неоднозначности при компиляции. Пусть проггер думает как ему быть (пара скобок поможет отцу русской демократии).
0
07.02.2020, 15:22

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
Тут легко "не понимать".
Я прекрасно понимаю чего Вы хотите. Только почему-то Вы чуть глубже не заглядываете. :)

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.02.2020, 15:31
Цитата Сообщение от TRam_ Посмотреть сообщение
Тогда придётся везде писать
Зачем? В принципе, такое возможно если есть необходимость, но не обязательно.
Цитата Сообщение от TRam_ Посмотреть сообщение
Смысл метода класса в том, что мы не только указываем объект, который нужно обработать, но и пространство имён его класса.
Если учесть что компилятор понимает, что obj - имя объекта, то по нему легко вывести пространство имён где определён класс. А если есть неоднозначность, то возможно и придётся указывать пространство имён. Это не только имён классов касается, а и пространств имён как таковых. В них могут даже имена классов совпадать.
Цитата Сообщение от TRam_ Посмотреть сообщение
Для твоего варианта с "переопределяемыми функциями" будет куча проблем для иерархических объектов.
Когда есть легитимный вызов
C++
1
ptrObjOfBaseClass->foo(/*...*/);
не должно быть принципиальных проблем с интерпретацией
C++
1
~~foo(ptrObjOfBaseClass, /*...*/);
Хотя без проблем ни чего не бывает. Я не настолько крут (я вообще не крут, если честно ), чтобы выкатить на блюдечке готовое решение для такого узла проблем. Так что мнение соответствует формулировке темы - "нравится/не нравится". Но неравнодушные есть и дискуссия идёт. Хотя, мнения пока на стороне "спи моя красавица", но по крайней мере, это интересно.
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
07.02.2020, 17:42  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
За медленный компилятор и нестрогую типизацию.
Ну, "медленный компилятор" - вопрос спорный и субъективный. Чем проще язык, тем быстрее компилятор. С++ - сложный язык. И какие-то сравнения с другими языками здесь проводить некорректно. Ну и, конечно, особенности реализации конкретного компилятора. Хотя и здесь сравнивать сложно: различия могут быть очень весомыми, начиная от количества и качества реализации фичей последних стандартов (да и вообще соответствия Стандарту С++NN как таковому), и заканчивая оптимизацией при компиляции и сборке исполняемого модуля.

А вот с " нестрогой типизацией" в С++ я чего-то не понял. Что вы имеете ввиду? Если можно, с примером кода.
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
07.02.2020, 18:13
Цитата Сообщение от L0M Посмотреть сообщение
А вот с " нестрогой типизацией" в С++ я чего-то не понял. Что вы имеете ввиду? Если можно, с примером кода.
Так говорят вот об таком примерно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
typedef int stariy_rzhaviy_gayka;
typedef int noviy_blestyzschiy_gayka;
 
void chinim_stanok(noviy_blestyzschiy_gayka ng)
{
    cout << "Horosho pocninenniy stanok! " << ng << endl;
}
 
int main()
{
    stariy_rzhaviy_gayka gayka = 25;
    noviy_blestyzschiy_gayka gayka2 = 25;
 
    chinim_stanok(gayka);
    return 0;
}
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.02.2020, 18:24
Цитата Сообщение от ТабуретY Посмотреть сообщение
ак говорят вот об таком примерно
Тут два синонима одного типа. Они взаимозаменяемы потому, что они - одно и то же. Это int. В отношении типов всё строго.
В С++ типизация слаба, потому что не может себя победить. имхо. А компиляторы медленные потому что проекты большие, а системы построения выбирались в си-шные времена. Тогда и пректы еще не выросли и мозги тоже. имхо.
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
07.02.2020, 18:37  [ТС]
Цитата Сообщение от ТабуретY Посмотреть сообщение
Так говорят вот об таком примерно
А что вы хотели? typedef (так же, как и using в аналогичном контексте) не создаёт новый тип. Создаётся только псевдоним (alias) для типа. Продолжая вашу аналогию: у вас есть гайки; вы решили называть их "фигульки" и "пимпочки" - вам так удобнее; но от того, как вы их называете, гайками они быть не перестали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2020, 18:37

Я вас всех люблю
;D;D

Люблю Visual Basic!
Ребят ) сколько себя знаю все хаят Basic. А я вот его люблю. Не знаю почему ) он лёгкий простой и пишеться легко. А в основном прикладные...

Я люблю свою работу!
http://vab.com.ua/jlove/

Люблю природы пышной увяданье
1.

Почему я не люблю Дональда Кнута
Преамбула. Написать сей гнусный пасквиль меня побудили две причины: постоянное слежение за форумом (задаваемыми большинством новичков...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru