Re[9]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 15.01.19 11:55
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>А тут есть гарантия, что не будет исключения или чего-то подобного между первой и второй строкой?


Есть — в Go нет исключений как таковых, но есть паники. Паника может возникнуть в `createFile`, либо уже в `writeFile`, но не между ними, так как там просто нечему паниковать.
Re[10]: Haters gonna hate but with proofs
От: Skorodum Россия  
Дата: 15.01.19 12:04
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Есть — в Go нет исключений как таковых, но есть паники. Паника может возникнуть в `createFile`, либо уже в `writeFile`, но не между ними, так как там просто нечему паниковать.

А другой поток?
Re[8]: Haters gonna hate but with proofs
От: Igore Россия  
Дата: 15.01.19 12:06
Оценка:
Здравствуйте, netch80, Вы писали:

N>>>3. Вместо того, чтобы сначала плодить проблемы работы с памятью, а потом их ловить — причём может оказаться, что диверсант сидит в чужом проприетарном коде, и ты фиг запинаешь его авторов исправить свою ошибку — можно изначально использовать инструмент, у которого этих проблем нет.

N>>>Собственно на этом выезжают managed среды, начиная с BASIC и Java: какой бы говнокод на них не писался и не импортировался, он не доведёт обстановку до совсем нерабочего состояния, если не использовать спец. средства, которые легко детектируются. А в unmanaged — наоборот.
I>>Ну, как бэ, как человек который искал и устранял утечки памяти в JS и C#, могу сказать что в С++ с этим попроще(именно нахождение),

N>О каких утечках памяти речь в JS и C#? В managed слое, или в переходном к unmanaged?

В кроссылках, когда один объект ссылается на другой, и при удалении GC это оставляет жить, в итоге ПО съедало всю память и падало.

I>> хотя и опыта в С++ у меня намного больше, а последнии годы я вообще не сталкивался с такой проблемой как утечка памяти в С++.

N>Вам, наверно, везёт, что не приходится использовать посторонние библиотеки?
Вот перечень стороних:
rapidjson, boost, qt5, xerces, xalan, xsec, sqlite, odb, openssl, curl, protobuf, ncreport, zlib, soci, librsync
Отредактировано 15.01.2019 12:07 Igore . Предыдущая версия .
Re[11]: Haters gonna hate but with proofs
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 15.01.19 12:11
Оценка: +1
Здравствуйте, Skorodum, Вы писали:

S>А другой поток?


А что с ним? Почему он как-то может повлиять?
Re: Haters gonna hate but with proofs
От: Ip Man Китай  
Дата: 15.01.19 15:27
Оценка: 1 (1) +3
Здравствуйте, bc_kaya, Вы писали:

_>Хотел бы поинтересоваться у знающих людей, за что весь мир недолюбливает плюсы.


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

Теперь объективное мнение:

1. Отсутствие рефлексии, и, как следствие — dependency injection. То же с моками в юнит тестах. gtest позволяет их делать для шаблонов или абстрактных классов, но после Mockito это как ВАЗ после BMW
2. Сюда же — медленная скорость разработки качественного кода в сравнении с той же Java и больше возможностей грохнуть программу.
3. Метапрограммирование. Сейчас придут спецы, которые скажут, что это просто. Да нифига, это самая сложная часть С++ (хотя и самая интересная, по мне).


Но — с другой стороны, спрос на С++ есть в узких нишах (напр. в финансах), и, по-моему, спрос на хороших специалистов значительно превышает предложение.
Re[3]: Haters gonna hate but with proofs
От: CodeMonkey  
Дата: 15.01.19 18:47
Оценка:
Здравствуйте, ononim, Вы писали:

CM>>Уродская система разделения на h/cpp файлы.

O>Ее нет.

И куда же она вдруг пропала?
Re[4]: Haters gonna hate but with proofs
От: ononim  
Дата: 16.01.19 08:48
Оценка: +4
CM>>>Уродская система разделения на h/cpp файлы.
O>>Ее нет.
CM>И куда же она вдруг пропала?
Ее никогда и не было. Это human-level абстракция.
Как много веселых ребят, и все делают велосипед...
Re: Haters gonna hate but with proofs
От: BacCM Россия  
Дата: 16.01.19 11:02
Оценка:
Здравствуйте, bc_kaya, Вы писали:

_>Хотел бы поинтересоваться у знающих людей, за что весь мир недолюбливает плюсы. Конкретно у меня данный язык вызывает симпатию (возможно потому, что это мой самый первый более менее освоенный язык программирования);

_>Поделитесь впечатлением и опытом программирования с использованием языка С++?

https://www.youtube.com/watch?v=9-_TLTdLGtc

Притом автор не просто какой-то хрен с горы, и любит плюсы
Re: Haters gonna hate but with proofs
От: BacCM Россия  
Дата: 16.01.19 11:10
Оценка: :)))
Потому, что с кривыми руками особенно после всяких пайтонов и джиэсов можно такого наворотить, что просто ужос.


Одна из моих любимых задачек про плюсы для новичков в этом деле.


#include <iostream>


// Что будет выведено в консоль
int main()
{
    int a, b;
    a = 1,2,3,4,a = 5,6,7;
    std::cout << "a= " << a << std::endl;

    a = (1,2,3,4),a = (5,6,7);
    std::cout << "a= " << a << std::endl;

    a = (1,2,3,4,a = 5,6,7);
    std::cout << "a= " << a << std::endl;

    (a, b) = 100, 200;
    std::cout << "a= " << a << " b=" << b << std::endl;

    (a, b) = (100, 200);
    std::cout << "a= " << a << " b=" << b << std::endl;

    int v[2][3] = {{10, 20, 30}, {100, 200, 300}};
    std::cout << "v[1,1]= " << v[1,1] << std::endl;
    
    return 0;
}


Беда в том, что местами код взят из реальной жизни.
Например конструкции типа x = 3,1415;
или x[1,2] = 5;
Re[2]: Haters gonna hate but with proofs
От: Voivoid Россия  
Дата: 16.01.19 12:39
Оценка: +2 :)
Здравствуйте, BacCM, Вы писали:

BCM>Одна из моих любимых задачек про плюсы для новичков в этом деле.

  use warnings, luke
g++ -Wall -Wextra -Wpedantic -Werror -Wduplicated-cond -Wduplicated-branches -Wlogical-op -Wrestrict -Wnull-dereference -Wold-style-cast -Wuseless-cast -Wdouble-promotion -Wshadow -Wformat=2 -Wconversion -Wsign-conversion -Wfloat-equal -Wcast-qual -Winit-self -Wpointer-arith -Wswitch -Wswitch-enum -Woverloaded-virtual -Wundef ./main.cpp
./main.cpp: In function ‘int main()’:
./main.cpp:8:13: error: right operand of comma operator has no effect [-Werror=unused-value]
a = 1,2,3,4,a = 5,6,7;
^
./main.cpp:8:15: error: right operand of comma operator has no effect [-Werror=unused-value]
a = 1,2,3,4,a = 5,6,7;
^
./main.cpp:8:21: error: right operand of comma operator has no effect [-Werror=unused-value]
a = 1,2,3,4,a = 5,6,7;
^
./main.cpp:8:25: error: right operand of comma operator has no effect [-Werror=unused-value]
a = 1,2,3,4,a = 5,6,7;
^
./main.cpp:8:26: error: right operand of comma operator has no effect [-Werror=unused-value]
a = 1,2,3,4,a = 5,6,7;
^
./main.cpp:11:12: error: left operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4),a = (5,6,7);
^
./main.cpp:11:14: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4),a = (5,6,7);
^
./main.cpp:11:16: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4),a = (5,6,7);
^
./main.cpp:11:26: error: left operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4),a = (5,6,7);
^
./main.cpp:11:28: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4),a = (5,6,7);
^
./main.cpp:14:12: error: left operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4,a = 5,6,7);
^
./main.cpp:14:14: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4,a = 5,6,7);
^
./main.cpp:14:16: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4,a = 5,6,7);
^
./main.cpp:14:22: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4,a = 5,6,7);
^
./main.cpp:14:26: error: right operand of comma operator has no effect [-Werror=unused-value]
a = (1,2,3,4,a = 5,6,7);
^
./main.cpp:17:9: error: left operand of comma operator has no effect [-Werror=unused-value]
(a, b) = 100, 200;
^
./main.cpp:17:22: error: right operand of comma operator has no effect [-Werror=unused-value]
(a, b) = 100, 200;
^
./main.cpp:20:9: error: left operand of comma operator has no effect [-Werror=unused-value]
(a, b) = (100, 200);
^
./main.cpp:20:20: error: left operand of comma operator has no effect [-Werror=unused-value]
(a, b) = (100, 200);
^~~
./main.cpp:24:36: error: left operand of comma operator has no effect [-Werror=unused-value]
std::cout << "v[1,1]= " << v[1,1] << std::endl;


Re[2]: Haters gonna hate but with proofs
От: kov_serg Россия  
Дата: 16.01.19 12:53
Оценка: +1
Здравствуйте, BacCM, Вы писали:

BCM>https://www.youtube.com/watch?v=9-_TLTdLGtc

BCM>Притом автор не просто какой-то хрен с горы, и любит плюсы
В рамку и на стену:

The problem in this community is:
The more scary a proposal is — the more people like it.
And even worse they always find at least one useful application.

Re[19]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.01.19 12:56
Оценка:
Здравствуйте, wander, Вы писали:

N>>Те, кого стоит читать — пишут именно чтобы улучшить конкретный или общий результат. Ну, на 90%. Этого достаточно, чтобы определить себе рамки и методы для конструктивного общения.

W>Чтобы понять, кого стоит читать, а кого нет, нужно сперва хорошо в это окунуться.
W>Вот вы, видимо, можете понять. И я могу. А кто-то нет.
W>Например, прав ли Торвальдс в своей оценке? Я уверен, много кто согласится, множество доказательств приведет. А кто-то другой, возможно тоже, но уже в защиту. Собственно из-за эмоциональности суждений ценность самой критики теряется, даже если она здравая. А если читать аргументы оправдывающие, или оспаривающие его мнение, то без собственного опыта так и не понять кто тут прав. В итоге проще не разбираться, а довериться тому, у кого для "вас" авторитет выше.

N>>Их можно фильтровать — эмоциональные так точно, бенчмарки — сложнее, но тоже получается, когда надо.

N>>А эмоциональный фактор тоже важен — когда он происходит из "ё500-й раз наткнулся на эту дебильную говнофичу".
W>Я не привык так реагировать на неодушевленное и вряд ли тут мы с вами придем к соглашению.

Ну, завидую, если так. Я вообще-то в какой-то мере не о себе говорил, а о коллегах, но всё равно я считаю, что эмоциональная реакция данного типа не просто оправдана, но ещё и уместна и полезна.

W>>>Есть такая книга, Inside The C++ Object Model. Она старая и во многом неактуальная, но там есть одна интересная вещь.


N>>...когда гегелевско-марксистское "переход количества в качество" реализуется в банальнейшем сценарии "говно вода поднялась выше рта".

W>Очень сложно здесь рассуждать объективно, т.к. очень сильно влияет субъективный опыт.
W>Например я ни про один из инструментов, которыми я пользовался, не смог бы так сказать.

Завидую(2). Я на нескольких таки обжигался до такой степени, чтобы дальше отказываться от них по максимуму.

W>У вас опыт иной, и вы можете. Значит и тут мы с вами никогда не сойдемся.


Но понять-то меня вполне можете? Не обязательно же принимать только то, что прочувствовал на собственной шкуре.
The God is real, unless declared integer.
Re[2]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 16.01.19 13:29
Оценка: +3
Здравствуйте, BacCM, Вы писали:


BCM>Одна из моих любимых задачек про плюсы для новичков в этом деле.

BCM> . . .

Столько строк кода только лишь для того, чтобы проверить знание приоритета оператора запятая? Или это одновременно и тест на внимательность?
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[9]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.01.19 13:38
Оценка:
Здравствуйте, Igore, Вы писали:

N>>>>Собственно на этом выезжают managed среды, начиная с BASIC и Java: какой бы говнокод на них не писался и не импортировался, он не доведёт обстановку до совсем нерабочего состояния, если не использовать спец. средства, которые легко детектируются. А в unmanaged — наоборот.

I>>>Ну, как бэ, как человек который искал и устранял утечки памяти в JS и C#, могу сказать что в С++ с этим попроще(именно нахождение),
N>>О каких утечках памяти речь в JS и C#? В managed слое, или в переходном к unmanaged?
I>В кроссылках, когда один объект ссылается на другой, и при удалении GC это оставляет жить, в итоге ПО съедало всю память и падало.

Звучит как тяжёлая недоработка конкретных рантаймов.
Потому что если он упирается в жёсткий предел памяти, он обязан вызвать полный GC. Но желательно делать инкрементальный и раньше.
Мне в этом смысле особенно нравится, как сделано в Lua. По умолчанию — превысили двойной размер после прошлой сборки — запускаем новую. Тяжёлого разрастания без причин там в итоге не бывает, есть чёткое представление, на сколько делать запас.
В ранних Java, да, было с этим хуже, там обычно пока операционка не скажет "фиг тебе, а не страничка", не собиралось. Но и то исправили достаточно давно.

Я вначале подумал, что вы про случай, когда на какое-то уже ненужное дерево объектов висит забытая ссылка из одного из тех, что должны сейчас жить. Такие вещи, да, диагностируются тяжело, если нет возможности у системы спросить и проитерировать множество вообще всех объектов.
Не знаю про типовые реализации JS, но в дотнете, вроде бы, такое есть везде?

I>>> хотя и опыта в С++ у меня намного больше, а последнии годы я вообще не сталкивался с такой проблемой как утечка памяти в С++.

N>>Вам, наверно, везёт, что не приходится использовать посторонние библиотеки?
I>Вот перечень стороних:
I>rapidjson, boost, qt5, xerces, xalan, xsec, sqlite, odb, openssl, curl, protobuf, ncreport, zlib, soci, librsync

Полный список не знаю, и не могу сказать, кто из них на самом деле покемон, но в пределах моих знаний тут нет проприетарных либ всяких тематических коннекторов, в которых больше всего подобных граблей (на OCI, кажется, только ленивый не ругался).
The God is real, unless declared integer.
Re[2]: Haters gonna hate but with proofs
От: reversecode google
Дата: 16.01.19 13:39
Оценка: +1 -1
то есть синьоров вы не нанимаете ?
Re[3]: Haters gonna hate but with proofs
От: BacCM Россия  
Дата: 16.01.19 14:17
Оценка:
Здравствуйте, reversecode, Вы писали:


R>то есть синьоров вы не нанимаете ?


Если пойдут на предлагаемые нами деньги, то наймём с радостью

Но им такой код только в качестве вместе посмеяться можно показать.
Re[3]: Haters gonna hate but with proofs
От: BacCM Россия  
Дата: 16.01.19 14:21
Оценка:
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, BacCM, Вы писали:



BCM>>Одна из моих любимых задачек про плюсы для новичков в этом деле.

BCM>> . . .

R>Столько строк кода только лишь для того, чтобы проверить знание приоритета оператора запятая? Или это одновременно и тест на внимательность?


Это не тест на знание, просто иногда показать и посмотреть на реакцию. Код писался не для собеседований, а так посмотреть какую еще можно дичь наваять, чтобы было похоже на правильный код.
Re[4]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 16.01.19 15:09
Оценка: 36 (10) :))) :))
Здравствуйте, BacCM, Вы писали:

BCM>Это не тест на знание, просто иногда показать и посмотреть на реакцию. Код писался не для собеседований, а так посмотреть какую еще можно дичь наваять, чтобы было похоже на правильный код.


У меня в этом плане любимая вот эта, что выведет программа:

https://ideone.com/w3ZXdB

#include <iostream>

template <typename T>
int foo(T&, T&) { return 1; }

int foo(char*, char*) { return 2; }

int main()
{
   std::cout << foo("Hello", "World") << std::endl;
   std::cout << foo("Hello", "World!") << std::endl;
}
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[19]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.01.19 15:34
Оценка:
Здравствуйте, rg45, Вы писали:

N>>Передёргиваете. Не всё "на автомате", но сильно больше, чем у C++, легче контролируемо и диагностируемо. И переусложнённость последнего это фактор, независимый от его unmanaged характера.

R>Не передергиваю, а подчеркиваю, что не настолько сильно, как многие хотят это показать. У C++ есть свои преимущества, причем весомые.

Так именно веса аргументов это та вещь, которая достаточно индивидуальна.
Вам преимущества кажутся весомее недостатков, а кому-то настолько наоборот, что он начинает публично плеваться.

N>>Если писать, как seen on national TV рекомендовано в книге, то работает без вреда.

R>Вот именно, расхлябанность, присущая многим C# разработчикам, проистекает из базовых рекоммендаций. Подумаешь, беда — Dispose вызвался не один раз, а три. А можно вообще не вызывать — памперс все впитает. Во всем вот это вот "срала-мазала", тьфу, терпеть этого не могу.

Понятно, но "других людей для вас у меня нет", как обычно.
The God is real, unless declared integer.
Re[5]: Haters gonna hate but with proofs
От: BacCM Россия  
Дата: 16.01.19 16:29
Оценка:
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, BacCM, Вы писали:


BCM>>Это не тест на знание, просто иногда показать и посмотреть на реакцию. Код писался не для собеседований, а так посмотреть какую еще можно дичь наваять, чтобы было похоже на правильный код.


R>У меня в этом плане любимая вот эта, что выведет программа:


R>https://ideone.com/w3ZXdB


R>
R>#include <iostream>

R>template <typename T>
R>int foo(T&, T&) { return 1; }

R>int foo(char*, char*) { return 2; }

R>int main()
R>{
R>   std::cout << foo("Hello", "World") << std::endl;
R>   std::cout << foo("Hello", "World!") << std::endl;
R>}
R>


Да, встречался с подобными штуками. Но на "непонятное поведение" в подобных случаях даже когда знаешь легко нарваться.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.