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

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

07.02.2020, 03:59. Показов 6629. Ответов 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,480
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,480
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,480
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,480
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
Ответ Создать тему
Новые блоги и статьи
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru