Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2

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

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

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

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

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

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

95
 Аватар для Recrut_rf
390 / 335 / 66
Регистрация: 14.10.2014
Сообщений: 1,484
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
390 / 335 / 66
Регистрация: 14.10.2014
Сообщений: 1,484
07.02.2020, 19:08
Цитата Сообщение от L0M Посмотреть сообщение
что вы грамотный специалист, который может работать удалённо
К сожалению, пока я не могу про себя так сказать, но
как справедливо вы заметили:
Цитата Сообщение от L0M Посмотреть сообщение
Проблема сложная, но решаемая
Добавлено через 8 минут
Лично для меня - отсутствие большого количества вакансий (не по стране в целом, а по моему региону) - единственный минус, но отсюда же вытекает и плюс - нормально знающих этот языкъ становится сильно меньше, так как вакансий мало - а значит и зубрить его, поток желающих иссякает. Вот Java - да - курсов - хоть отбавляй, даже в моём городе любая мало-мальски крупная контора открывает свои курсы на базе местных(ого) вузов. Специалистов штампуют прям как на конвейере.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
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,856
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,856
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
390 / 335 / 66
Регистрация: 14.10.2014
Сообщений: 1,484
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,856
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
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
08.02.2020, 07:48
L0M, пробелы нужны 0 ... 10 вместо 0...10. Со второй веткой так же.
0
 Аватар для Recrut_rf
390 / 335 / 66
Регистрация: 14.10.2014
Сообщений: 1,484
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,856
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
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 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,856
08.02.2020, 12:24
Цитата Сообщение от Croessmah Посмотреть сообщение
Оно еще и используется.
Такую штуку (A ... B) можно использовать и для инициализации элементов в массиве
Круто. Я не знал.
Ещё одна недокументированная пасхалка.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru