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

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

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

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

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

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

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

95
 Аватар для Recrut_rf
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
07.02.2020, 18:45
Студворк — интернет-сервис помощи студентам
За что я не люблю С++ - за то, что в городе, в котором я живу, он особо никому не нужен, мой любимый , тру православный язык.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.02.2020, 18:50
Цитата Сообщение от Recrut_rf Посмотреть сообщение
За что я не люблю С++ - за то, что в городе, в котором я живу, он особо никому не нужен, мой любимый , тру православный язык.
Дык... Вон в разделе С++ /новички/, эту тему не любят. Выкинули не задумываясь. Поэтому я тоже не люблю С++. В целом не плохой язык, но само отношение... Это не только раздела касается. Это так во всей индустрии. Поэтому и отписываюсь.
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
07.02.2020, 18:53  [ТС]
Recrut_rf, есть удалённая работа. Проблема только в том, что бы доказать потенциальному работодателю, что вы грамотный специалист, который может работать удалённо. Проблема сложная, но решаемая.
0
 Аватар для Recrut_rf
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
07.02.2020, 19:08
Цитата Сообщение от L0M Посмотреть сообщение
что вы грамотный специалист, который может работать удалённо
К сожалению, пока я не могу про себя так сказать, но
как справедливо вы заметили:
Цитата Сообщение от L0M Посмотреть сообщение
Проблема сложная, но решаемая
Добавлено через 8 минут
Лично для меня - отсутствие большого количества вакансий (не по стране в целом, а по моему региону) - единственный минус, но отсюда же вытекает и плюс - нормально знающих этот языкъ становится сильно меньше, так как вакансий мало - а значит и зубрить его, поток желающих иссякает. Вот Java - да - курсов - хоть отбавляй, даже в моём городе любая мало-мальски крупная контора открывает свои курсы на базе местных(ого) вузов. Специалистов штампуют прям как на конвейере.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
07.02.2020, 19:30
Цитата Сообщение от L0M Посмотреть сообщение
А вот с " нестрогой типизацией" в С++ я чего-то не понял. Что вы имеете ввиду?
Частный случай того, что мне не нравится - возможность использования bool как int (и наоборот) без кастинга. Компайлер сам производит неявное преобразование типа при вычислениях. Мне это не нравится, т.к. затрудняет анализ кода, особенно чужого.

Ещё мне не нравится то, что switch() не принимает интервалы (не у всех компайлеров).
Ещё не нравится, что трактовка операторов зависит от операндов: * и /. Ну почему так? Неужели нельзя было как-то по-другому? Сколько гемора доставило мне деление двух целых операндов.
Инклуды/хэдеры - ваще чума. Я очень долго к ним привыкал, но так и не понял, зачем их придумали.
Объявления процедурных типов - полный трэш. Когда я вижу, например, такое:
C++
1
typedef int(*p[3])(int);
меня уже тошнит. Но бывают гораздо более забористые конструкции, это простой пример.

Цитата Сообщение от L0M Посмотреть сообщение
Ну, "медленный компилятор" - вопрос спорный и субъективный. Чем проще язык, тем быстрее компилятор. С++ - сложный язык. И какие-то сравнения с другими языками здесь проводить некорректно.
Пусть будет сравнение delphi и C++Builder из одной IDE.

--------------------
Одна из фундаментальных вещей, которая мне очень нравится в С/С++ - это тернарный оператор. Мне на delphi его очень не хватает, а функции ifthen() или iif() - это эрзац. Надеюсь, когда нибудь его перетащат и в паскаль, как это сделали с возможностью объявления локальных переменных/констант с инициализацией посреди кода, там, где нужно и со своей сублокальной областью видимости.


--------
Я устал тыкать клаву, пойду жрать готовить.
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
07.02.2020, 21:28  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Частный случай того, что мне не нравится - возможность использования bool как int (и наоборот) без кастинга. Компайлер сам производит неявное преобразование типа при вычислениях. Мне это не нравится, т.к. затрудняет анализ кода, особенно чужого.
Ну да, есть такое: неявное приведение типов.
Видимо вы к этому просто ещё не привыкли

Цитата Сообщение от Verevkin Посмотреть сообщение
Ещё мне не нравится то, что switch() не принимает интервалы (не у всех компайлеров).
В С++ нет понятия интервала. По крайней мере пока нет.

Всё, что вам не нравится в С++, обусловлено достаточно вескими причинами. Что бы как-то уменьшить боль и страдание попробуйте пофантазировать на тему: "в комитете по стандартизации сидят одни удаки, я бы это сделал так...". При этом прикиньте как это может быть реализовано и различные варианты использования этого. Потом добавьте обратную совместимость с существующим кодом. Уверяю вас, что энтузиазма у вас сильно поубавится, а заодно и несколько утихнет боль.

Но если таки после всестороннего обдумывания вашей новой фичи вы не найдёте никаких недостатков - welcome! - РГ21 С++ ждёт ваши предложения.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
07.02.2020, 22:27
Цитата Сообщение от L0M Посмотреть сообщение
Ну да, есть такое: неявное приведение типов.
Видимо вы к этому просто ещё не привыкли
Ну, просто я delphi-программист, но частенько приходится на работе писать на Си, причём не с нуля, а допиливая чужие старые сорцы, порой написанные "на отвали" какими-то криворукими инвалидами. Привыкать к такому очень больно, да.
Цитата Сообщение от L0M Посмотреть сообщение
В С++ нет понятия интервала. По крайней мере пока нет.
gcc поддерживает.
Цитата Сообщение от L0M Посмотреть сообщение
Всё, что вам не нравится в С++, обусловлено достаточно вескими причинами.
Не сомневаюсь, что всё это не просто так. Я просто высказал своё мнение, а не общественное. После 25+ лет на delphi, где всё кажется очень логичным и очевидным, это довольно трудно и даже вызывает головную боль. Но чаще - геморрой.
Цитата Сообщение от L0M Посмотреть сообщение
Что бы как-то уменьшить боль и страдание попробуйте пофантазировать
Да я помощи и не просил, просто высказался.
Цитата Сообщение от L0M Посмотреть сообщение
"в комитете по стандартизации сидят одни удаки, я бы это сделал так..."
...я бы ввёл отдельный оператор целочисленного деления, например, и/или оператор указателя/разыменования сделал бы отличимым от оператора умножения.
Цитата Сообщение от L0M Посмотреть сообщение
Потом добавьте обратную совместимость с существующим кодом.
Спасибо, у меня и так дел полно.
1
53 / 31 / 13
Регистрация: 21.05.2017
Сообщений: 109
07.02.2020, 22:33
Цитата Сообщение от Verevkin Посмотреть сообщение
После 25+ лет на delphi
У меня тоже богатый опыт использования дельфей - одно маленькое приложение, написанное году эдак в 2007. Мда, тот еще ужас был. Всё как-то криво, не логично и отвратительно. Другими словами - дело привычки.
Цитата Сообщение от Verevkin Посмотреть сообщение
я бы ввёл отдельный оператор целочисленного деления
И сразу появилась бы толпа придурков, которые бы их путали.
Цитата Сообщение от Verevkin Посмотреть сообщение
Но чаще - геморрой.
Огурцом лечить пробовал?
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
07.02.2020, 22:38
Цитата Сообщение от MasterOfAlteran Посмотреть сообщение
И сразу появилась бы толпа придурков, которые бы их путали.
А вот тут ты ошибаешься. Компайлер перестал бы пропускать присваивания a = x / y, если а - целое.
Цитата Сообщение от MasterOfAlteran Посмотреть сообщение
Огурцом лечить пробовал?
Доктор Малахов, перелогинься, я мы тебя узнали.
0
53 / 31 / 13
Регистрация: 21.05.2017
Сообщений: 109
07.02.2020, 22:43
Цитата Сообщение от Verevkin Посмотреть сообщение
Компайлер перестал бы пропускать присваивания a = x / y, если а - целое.
именно. И сразу бы все форумы были забиты вопросами "нафига" и "как исправить".
Цитата Сообщение от Verevkin Посмотреть сообщение
Доктор Малахов, перелогинься, я мы тебя узнали.
А почему Малахов-то?
Кликните здесь для просмотра всего текста
0
 Аватар для Recrut_rf
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
07.02.2020, 23:06
Цитата Сообщение от Verevkin Посмотреть сообщение
а допиливая чужие старые сорцы, порой написанные "на отвали" какими-то криворукими инвалидами
Сам с таким же столкнулся (правда язык к сожалению не C++). Особая жесть - если документации вообще нет, и специалистов по данному языку тоже нет, а ты - полнейший новичок в программировании. Но сделать надо, а то "секир башка будет"
Но тут дело даже не в плюсах, а в самом отношении к программистам и программированию. Каждый язык очень хорошо заточен под определённый круг задач, и не очень под всё подряд. Разве что на плюсах (и то не факт) можно эффективно писать всё что захочешь. Но когда начальству вдруг взбредёт в голову условно - "написать прошивку под какую нибудь ПЛИС на Java", это не может ничем хорошим закончится.

Мораль - каждому языку - своя сфера применения, пишите на том, что вам нравится - и будет вам счастье
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
08.02.2020, 00:27  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Ещё мне не нравится то, что switch() не принимает интервалы (не у всех компайлеров).
Цитата Сообщение от Verevkin Посмотреть сообщение
gcc поддерживает.
А какой синтаксис? Примерчик можно?

Цитата Сообщение от Verevkin Посмотреть сообщение
Да я помощи и не просил, просто высказался.
Да и я, в общем, не в плане конкретной помощи. Скорее как психологическая поддержка
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
08.02.2020, 02:24
Цитата Сообщение от L0M Посмотреть сообщение
Да и я, в общем, не в плане конкретной помощи. Скорее как психологическая поддержка
Когда мне нужна будет жилетка, шоб поплакаться за жизнь, я тебя найду.
Цитата Сообщение от L0M Посмотреть сообщение
А какой синтаксис? Примерчик можно?
C++
1
2
3
4
5
6
switch (x)
{
  case 0...10: /* говнокод */ break;
  case 11...20: /* говнокод */ break;
  default: /* говнокод */ ;
}
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
08.02.2020, 03:44  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
case 0...10:
Чёт как-то не складывается

Исходник:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
int main()
{
    int x = 1;
    switch (x)
    {
      case 0...10: /* говнокод */ break;
      case 11...20: /* говнокод */ break;
      default: /* говнокод */ ;
    }
}
Вердикт компилятора:
Code
1
2
3
4
5
6
7
8
9
10
11
12
Start
 
prog.cc:10:12: error: too many decimal points in number
   10 |       case 0...10: /* говнокод */ break;
      |            ^~~~~~
prog.cc:11:12: error: too many decimal points in number
   11 |       case 11...20: /* говнокод */ break;
      |            ^~~~~~~
 
1
 
Finish
Онлайн-компилятор https://wandbox.org/: gcc HEAD 10.0.1 20200206 или gcc 9.2.0, C++2a(GNU) или C++2a, Boost 1.72.0 (включен по умолчанию). Дополнительных опций не ставил.

Добавлено через 1 минуту
Пробовал ещё на нескольких онлайн-компиляторах - везде примерно так же. Только версии gcc младше.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
08.02.2020, 07:48
L0M, пробелы нужны 0 ... 10 вместо 0...10. Со второй веткой так же.
0
 Аватар для Recrut_rf
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
08.02.2020, 11:02
Цитата Сообщение от Verevkin Посмотреть сообщение
switch (x)
{
case 0...10: /* говнокод */ break;
case 11...20: /* говнокод */ break;
default: /* говнокод */ ;
}
Ну где я ещё подобную дичь смогу увидеть, конечно только на форуме (и не дай бог на работе). Вот поэтому и захожу сюда время от времени - повышать свои навыки (ну или по крайней мере надеюсь, что повышаю )
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
08.02.2020, 12:11
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Ну где я ещё подобную дичь смогу увидеть, конечно только на форуме (и не дай бог на работе).
И, тем не менее, оно работает.

Можете убедиться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/* Verevkin, CodeBlocks, кодировка файла: UTF-8 BOM */
// d:\Soft\CodeBlocks\share\CodeBlocks\templates\wizard\console\cpp\main.cpp
// #include <iostream> раскомментарить, если надо system() и т.п.
 
#include <stdlib.h>
#include <stdio.h>  
#include <stdint.h>    
#include <conio.h>
#include <string.h>
 
/*
function WordsToStr(const ACount: DWORD): string;
begin
  Result:= IntToStr(ACount);
  case ACount mod 100 of
    11..14: Result:= Result + ' слов';
  else case ACount mod 10 of
         1:    Result:= Result + ' слово';
         2..4: Result:= Result + ' слова';
       else    Result:= Result + ' слов';
       end; //case
  end; // case
end;
*/
 
char* WordsToStr(const uint32_t count, char* dest)
{
  const char* w;
  
  switch(count % 100)
  {
    case 11 ... 14: w = "слов"; break;
    
    default: 
      switch (count % 10) 
      {
        case 1:       w = "слово"; break;
        case 2 ... 4: w = "слова"; break;
        default:      w = "слов";
      } 
  }
  
  sprintf(dest, "%u %s", count, w);
  return dest;
}
 
int main(int argc, char** argv) 
{
    system("chcp 65001 & cls");
    char buf[128]; 
    
    for (int idx = 0; idx != 24; idx++)
      printf("%s\n", WordsToStr(idx, buf));
    
    printf("\n >> Нажми что-нибудь для выхода... ");
    getch();
    return 0;
}
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
08.02.2020, 12:17
Цитата Сообщение от Verevkin Посмотреть сообщение
И, тем не менее, оно работает.
Оно еще и используется.
Такую штуку (A ... B) можно использовать и для инициализации элементов в массиве
C
1
2
3
4
5
6
7
8
9
10
#include  <stdio.h>
 
int main(void)
{
    int arr[10] = {[0 ... 3] = 5, [4 ... 6] = 2, [7 ... 9] = 3};
    for (int i = 0; i < 10; ++i) {
        printf("arr[%d] = %d\n", i, arr[i]);
    }    
    return 0;
}
https://rextester.com/QQIE3439
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
08.02.2020, 12:24
Цитата Сообщение от Croessmah Посмотреть сообщение
Оно еще и используется.
Такую штуку (A ... B) можно использовать и для инициализации элементов в массиве
Круто. Я не знал.
Ещё одна недокументированная пасхалка.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
08.02.2020, 12:30
Цитата Сообщение от Verevkin Посмотреть сообщение
Ещё одна недокументированная пасхалка
Документированная.
https://gcc.gnu.org/onlinedocs... Inits.html

Добавлено через 4 минуты
designated initializers вполне себе стандартизарованная штука.
В C11 можно делать так:
C
1
int arr[10] = {[3] = 5, [7] =5};
Просто в gcc, по аналогии со switch можно использовать диапазон.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2020, 12:30

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru