forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Болтовня (http://forum.boolean.name/forumdisplay.php?f=25)
-   -   Нравится/Не нравится C++ (из темы "Ваш первый раз") (http://forum.boolean.name/showthread.php?t=20261)

Andvrok 11.04.2016 16:44

Ответ: Ваш первый раз
 
Цитата:

Сообщение от Mr_F_ (Сообщение 305376)
что именно не понравилось?

Боюсь спросить, а что в крестах вообще может понравиться? Ими только военнопленных пытать.

Arton 11.04.2016 17:09

Ответ: Ваш первый раз
 
Цитата:

Сообщение от RegIon (Сообщение 305377)
Например я атеист, а тут кресты впихивают. :-D

То есть крест для тебя исключительно релегиозный символ?
Хороший из тебя атеист получается, правильный. Да же сказал бы, православный.

Andvrok 11.04.2016 18:24

Ответ: Ваш первый раз
 
Только сейчас заметил, что у тебя аватарка во всякую крипоту трансформируется.

RegIon 11.04.2016 19:52

Ответ: Ваш первый раз
 
Цитата:

Сообщение от Arton (Сообщение 305384)
То есть крест для тебя исключительно релегиозный символ?
Хороший из тебя атеист получается, правильный. Да же сказал бы, православный.

Ну на самом деле с++ будет попроще с его ООП, а вот C конечно дико специфичная штука.
Да и на с++ не могу на без мата писать что-то такое, где постоянная работа с памятью/файлами, чуть плюнул не туда - получил что-то на подобии OutOfMemory, хорошо что VS с его отладчиком перехватывает хоть горсть подобных случаем и можно понять где ошибка.
Я вот пытался найти ошибку в калькуляторе системы нелинейных уравнений 3 порядка(фигня прога, всего 30 строчек) , который писал не я, так это же жесть.. ну тут фактор криворукого кодеписца еще был, который никак не документировал свои действия.

Randomize 11.04.2016 21:19

Ответ: Ваш первый раз
 
Цитата:

Сообщение от Mr_F_ (Сообщение 305376)
что именно не понравилось?

Язык, в котором систематически находят что-то новое, мягко говоря настораживает.

Mr_F_ 11.04.2016 21:42

Ответ: Ваш первый раз
 
я не фанат пере-ООПа и многих чисто крестовых фишек, но С то малаца - что пишешь, то и делает, можно даже угадать какой асм в итоге выплюнет, никакой закулисной фигни, никаких позорных GC, классно жи.
работа с файлами вообще шикарна через fopen, я в шарпе в 20 раз больше буковок пишу для того же самого )
память вся на ладони - бери читай/пиши в любой грёбаный адрес, не ходя вокруг да около.

h1dd3n 12.04.2016 02:27

Ответ: Ваш первый раз
 
Цитата:

Сообщение от Mr_F_ (Сообщение 305393)
я не фанат пере-ООПа и многих чисто крестовых фишек, но С то малаца - что пишешь, то и делает, можно даже угадать какой асм в итоге выплюнет, никакой закулисной фигни, никаких позорных GC, классно жи.
работа с файлами вообще шикарна через fopen, я в шарпе в 20 раз больше буковок пишу для того же самого )
память вся на ладони - бери читай/пиши в любой грёбаный адрес, не ходя вокруг да около.

То есть другие языки не делают то что ты пишешь )?
C++ нормально с памятью можно работать только если запариться и написать собственный аллокатор под конкретную задачу. В противном случае аллокации убьют всю производительность. В C#/Java это уже делает за тебя рантайм (причем в яве его еще и подтюнить можно для конкретной задачи).
Вообще претензии к управляемым высокоуровневым языкам как правило появляются от незнания вопроса нежели присутствия какой-то реальной проблемы.

Arton 12.04.2016 02:32

Ответ: Ваш первый раз
 
Цитата:

Сообщение от RegIon (Сообщение 305390)
Ну на самом деле с++ будет попроще с его ООП, а вот C конечно дико специфичная штука...

Ты точно мне отвечаешь? Ну да ладно, и так оффтопа развели.

Цитата:

Сообщение от Andvrok (Сообщение 305386)
Только сейчас заметил, что у тебя аватарка во всякую крипоту трансформируется.

4-я неделя ей пошла, думаю обновить в ближайшее время, т. к. данное творение вышло несколько сумбурное. По началу казалось слишком частые и резкие переходы, будет раздражать, но судя по всему нормально.

Mr_F_ 12.04.2016 02:43

Ответ: Ваш первый раз
 
Цитата:

В противном случае аллокации убьют всю производительность.
ну делать new в каждом кадре, как приучены юнити-мэны с шарпиками это естесно не вариант.

Цитата:

Вообще претензии к управляемым высокоуровневым языкам как правило появляются от незнания вопроса нежели присутствия какой-то реальной проблемы.
аналогично и претензии к низкоуровневым

RegIon 12.04.2016 06:16

Ответ: Ваш первый раз
 
Предлагаю перенести оффтоп в тему С/С++.
Хоть сейчас начали обсуждать не политоту и ня-котов.\


Цитата:

Ты точно мне отвечаешь? Ну да ладно, и так оффтопа развели.
Ну да, в принципе тебе, немного сложно найти пересечения между твоим и моим собщением, но можно.

В первый раз я привел саркостичное объяснение почему ненавижу с++, второй раз уже более конкретное, просто религию опустил, что бы не святотатствовать.

вдруг мока выйдет из себя, не уравновешенный он какой-то, хотя я не inkgo.

Randomize 12.04.2016 08:21

Ответ: Ваш первый раз
 
Цитата:

Сообщение от RegIon (Сообщение 305402)
Предлагаю перенести оффтоп в тему С/С++

:ok:

Mr_F, ты так и не ответил, что скажешь по поводу того, что в C++ постоянно открывают что-то новое?

Почему каждый, уважающий себя, кодер на плюсах считает своим долгом написание своего класса строк/массивов/списков и потом приходится разбираться в его говне? Почему в плюсах считается хорошим тоном велосипедить?

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

Про дефайны даже говорить не хочется.
Один хороший человек показал мне его код, где была конструкция:
PHP код:

loop(5)
{
// что-то полезное


Стало грустно.

P.s. Я не обобщаю, просто взгляд скриптоблядка со стороны. Моя хата с краю, всё это сугубо праздный интерес.

Mr_F_ 12.04.2016 10:59

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

постоянно открывают что-то новое?
что открывают? я ничего не открывал)

Цитата:

Почему каждый, уважающий себя, кодер на плюсах считает своим долгом написание своего класса строк/массивов/списков и потом приходится разбираться в его говне?
потому что часто для задачи нужны очень простые строки/массивы, которые умещаются в 1 экран кода, а не запутанный std.

Цитата:

разбираться в его говне?
можно и не разбираться, достаточно поинтер на данные из его говна иметь

Цитата:

Что можешь сказать по этому поводу?
не знаю, на плюсах я работаю в одиночестве

Цитата:

Про дефайны даже говорить не хочется.
удобная вещь, плохо только если ими злоупотребляют и выдумывают свой макросовый язык)

mr.DIMAS 12.04.2016 11:09

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Нраится Си.
Нраится C++11, C++14 - до этих стандартов не нравился.
Нраится С# - гуевые приложения писать одно удовольствие

Taugeshtu 12.04.2016 13:14

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Я вижу, вброс удался...

Что не нравится в крестах? Нагромождение спецсимволов и просто incomprehensible ад в темплейтах. Система билдов проектов - неужели ничего адекватнее CMake экосистема так и не родила за всё время существования? Две недели ушло на то, чтобы просто сбилдить PCL со всеми зависимостями. И то VTK пришлось выкинуть (слава энтропии, модуль визуализации и не был нужен).
А, ещё очень забавляет "undefined behavior". Неопределённое поведение в языке, считающемся самым серьёзным из высокоуровневых языков? Это пять. Нет, это десять!

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

RegIon 12.04.2016 13:45

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Си несомненно полезен в микропроцессорной технике, так как АСМ тоже один из кругов ада, хотя он и прост как велосипед.
Но когда я вижу примеры, туториалы где для atmega8 пишут класс, который управляет lcd, который дочерний от темплейта, то это перебор..там и так памяти мало, но нет, это же правильно.!(сарказм)

Randomize 12.04.2016 16:33

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Сообщение от Mr_F_ (Сообщение 305408)
потому что часто для задачи нужны очень простые строки/массивы, которые умещаются в 1 экран кода, а не запутанный std.

То есть профессионалы не любят std, а свой std "как надо" сделать и общественности показать так и не смогли? Ну может даже и смогли и ни раз показали, но чёт никто не заинтересовался.

Цитата:

Сообщение от Mr_F_ (Сообщение 305408)
можно и не разбираться, достаточно поинтер на данные из его говна иметь

Похоже на точку невозврата. 1 Кг варенья + 1 Кг говна = 2Кг говна

Цитата:

Сообщение от Mr_F_ (Сообщение 305408)
не знаю, на плюсах я работаю в одиночестве

Ниспроста.

P.S. Не троллинга ради.

Mr_F_ 12.04.2016 18:31

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Нагромождение спецсимволов
батхерт от "->"?)

Цитата:

CMake
фу блин, бей в щи тех, кто его юзает, не надо валить на язык.
мне вот это советовали: http://premake.github.io

Цитата:

А, ещё очень забавляет "undefined behavior".
зато нет оверхеда safety чеков всяких

Randomize - ладно. не пиши.
-----

я думаю, спор бессмысленнен без контекста задачи.
графический/физический движок - С.
скрипты геймплея, окошковый интерфейс - шарпик норм.
вебчик - позорный JS, никуда не убежишь.

Randomize 12.04.2016 18:41

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Сообщение от Mr_F_ (Сообщение 305437)
Randomize - ладно. не пиши. (было "пиши вебчик")

Я написал "Не троллинга ради". Но бомбануло.

Цитата:

Сообщение от Mr_F_ (Сообщение 305437)
я думаю, спор бессмысленнен без контекста задачи.

А контекст такой. Насколько хорошо плюсы из себя представляют эдакое поприще для снобизма. К самому языку претензий нет. Да глупо было бы. Беспокоит больше его ЦА и то доброе и вечное, что они несут в мир.

ABTOMAT 12.04.2016 18:49

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Тред не читай @ Сразу отвечай.



В крестах слишком много способов выстрелить себе в ногу.
Слишком много, казалось бы, само собой разумеющихся вещей, которых, тем не менее, нет, и надо писать самому. Каконічный пример: каждый Вован пиши свою работу со строками.
Жопашный дебаггинг, может указать вообще в километре от того места, где ошибка была (оно и понятно, язык довольно низкоуровневый, там хер отследишь).
Это для случаев, если вообще появилась ошибка. А можно вообще не в тот адрес памяти нафигачить и не заметить, а потом думать, откуда появляются (временами!) сверхстранные глюки.
В 99% случаев такая свобода НЕ нужна и только вредит.

Ребят, я, конечно, понимаю, что язык вроде крестов нужен в узких нишах, но писать продакшн на нём это куда дольше, чем на C#. Я думаю, заказчик не поймёт, за что ему платить больше денег, если вы будете три дня на С++ писать то, что на C# пишется за 1 день. И его уж точно не интересуют выигранные 5% производительности. Да и сам я, когда пишу игру, меня интересует, куда пойдёт персонаж и что будет там делать, а не по какому адресу в памяти чего запишется. И интересует, чтобы я написал игру не за год.

Очень нравится писать на C# — это C++, избавленный от вышеописанных косяков, хоть, как следствие, и более медленный. Повторю свой тезис: "Время человека дороже, чем время машины". Раньше я считал иначе, маленький был, глупый.

Taugeshtu 12.04.2016 18:53

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Сообщение от Mr_F_ (Сообщение 305437)
батхерт от "->"?)

Конечно) А ещё от *, **, &...

Цитата:

Сообщение от Mr_F_ (Сообщение 305437)
фу блин, бей в щи тех, кто его юзает, не надо валить на язык.

Язык не живёт без экосистемы же, и хотя строго говоря ты прав, всё равно осадочек от пользования откладывается в копилку крестов. Да и потом, не могу же я просто завалиться в какой-нибудь крупный open-source проект типа flann и сказать "чуваки, сделайте мне без CMake-а!" :(

А, ну и ещё, акцентирую внимание, что речь про С++.

Mr_F_ 12.04.2016 19:47

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

"Время человека дороже, чем время машины"
ну мне например на шарпе дольше писать работу с файлами и сериализацию (едрить создавай кучу классов и не моги тупо все данные одним fread/fwrite пихнуть).

алсо если речь именно про ++, то бесит в шарпе Dictionary по сравнению с map - что за Contains, что за TryGetValue, чтозанах?

Andvrok 12.04.2016 21:14

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Сообщение от Mr_F_ (Сообщение 305445)
бесит в шарпе Dictionary по сравнению с map - что за Contains, что за TryGetValue, чтозанах?

И в чём проблема этих методов? Меня не бесит, например. А вот мозголюбство с указателями и постоянными преобразованиями туды-сюды — очень даже.

mr.DIMAS 12.04.2016 22:00

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Указатели это ж изич, только нубасы не шарят в указателях.

Randomize 12.04.2016 23:24

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Сообщение от Andvrok (Сообщение 305453)
А вот мозголюбство с указателями и постоянными преобразованиями туды-сюды — очень даже.

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

А что за преобразование имеется в виду?

Andvrok 12.04.2016 23:50

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Да как хотите называйте. Вот это постоянное сохранение ссылок на объедки, потому что если одну пролюбишь, то ничего работать не будет, меня раздражает дико. wchar_t сохрани в одной переменной, а wchar_t* от этого же значения где-то в другой, 150 типов для строки и все какие-то убого-неполноценные, что-то в строку преобразовать — тоже страдай херней, потому что .toString() завезти никто не удосужился, постоянно значения в памяти теряются, если хоть за чем-то не уследишь и не сохранишь отдельно. Может я просто неосилятор. С плюсами пришлось столкнуться серьезно только в рамках одной задачи при написании некой дллки-коннектора, до этого никогда не писал на них, так говна я натерпелся знатно.

Randomize 13.04.2016 00:18

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Сообщение от Andvrok (Сообщение 305459)
.toString()

std::to_string

Andvrok 13.04.2016 00:26

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Нашёл исходник. Вот например кусок кода:

PHP код:

wchar_tdescsw = (wchar_t*)CurrentCall.ConnectedLine.c_str();
std::wstring descs ws::format(CONST_TEXT_WORKITEMdescsw);
wchar_tdesc = (wchar_t*)(descs.c_str()); 

Я не могу сделать эти все преобразования в одну строку, потому что тогда теряется значения в самый неподходящий момент. Мне обязательно нужно сохранить в отдельную переменную каждый "перевалочный пункт" этого преобразования.

mr.DIMAS 13.04.2016 01:53

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Для тех у кого постоянно что-то теряется в памяти придумали unique_ptr, shared_ptr и weak_ptr. Только не надо ко-ко-ко что они медленные. Нормальные они.

RegIon 13.04.2016 06:39

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 305463)
Для тех у кого постоянно что-то теряется в памяти придумали unique_ptr, shared_ptr и weak_ptr. Только не надо ко-ко-ко что они медленные. Нормальные они.

Ещё какие-то _ptr , которые работают непонятно как и и с бубнами, главное работают?да и как вообще указатель может иметь разный вид, он же число, адресс в памяти, или концепции переменились уже давно-давно?

UPD. Ещё одна из 'удобных' оберток над числом

h1dd3n 13.04.2016 06:58

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Сообщение от Mr_F_ (Сообщение 305445)
ну мне например на шарпе дольше писать работу с файлами и сериализацию (едрить создавай кучу классов и не моги тупо все данные одним fread/fwrite пихнуть).

алсо если речь именно про ++, то бесит в шарпе Dictionary по сравнению с map - что за Contains, что за TryGetValue, чтозанах?

Что за бред...
Пример кода в студию.
Contains просто проверяет наличие ключа, в чем проблема то? в плюсах можно получать из map то чего там нет и никогда не было ?

RegIon 13.04.2016 07:27

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Сообщение от h1dd3n (Сообщение 305466)
в плюсах можно получать из map то чего там нет и никогда не было ?

Эксепшен считается?
Недавно юзал map, в доках написано, что при обращении к несуществующей связке KeyPair кидается эксепшен. Что за хрень? Зачем сносить очередь выполнения эксепшеном из-за того, что я обратился по несуществующему ключу?

Проверял Map.FindKey-ем, который выдает итератор, который сравнивал с Map.end().
Ну вообще не удобно на самом деле тут вышло.

в С# можно обратится по несуществующему ключу и получить null для объектов.
https://msdn.microsoft.com/ru-ru/lib...vs.110%29.aspx

mr.DIMAS 13.04.2016 10:24

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Ещё какие-то _ptr , которые работают непонятно как и и с бубнами, главное работают?да и как вообще указатель может иметь разный вид, он же число, адресс в памяти, или концепции переменились уже давно-давно?

UPD. Ещё одна из 'удобных' оберток над числом
Ты бы хоть почитал про них для начала.

Вкратце unique_ptr освобождает память при выходе из области видимости\в деструкторе\ при выходе из приложения.

shared_ptr позволяет разделять владение указателем между разными участками приложения, и когда на сырой указатель больше никто не ссылается - он удаляется вместе с последним shared_ptr владеющим им. Очень удобная штука для управления ресурсами.

weak_ptr устраняет циклические зависимости, когда в объекте А есть shared_ptr<B>, а в объекте B есть shared_ptr<A>. Помимо этого этим указателем удобно проверять наличие ресурса, и загружать его по мере необходимости.

Mr_F_ 13.04.2016 10:51

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

в плюсах можно получать из map то чего там нет и никогда не было ?
можно получать нуль.
типа

type value = mapa[key]; // один лукап
use(value);
if (value!=NULL)...
-----

шарпик:

type value = mapa[key]; // слови ошибку, если key нет
-----
if (mapa.ContainsKey(key)) { // первый лукап
type value = mapa[key]; // повторный лукап. зачем?
use(value);
...
} else {
use(null);
}
работает, но медленно

-----
type value = 0;
if (mapa.TryGetValue(key, out value)) {
use(value);
...
} else {
use(null);
}
работает, но некрасиво

ABTOMAT 13.04.2016 11:56

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
А если я в Dictionary и хочу хранить нулль?
Тогда получается двусмысленность: либо там нулль из-за того, что нет такого ключа, либо нуль потому что я его туда положил.

Andvrok 13.04.2016 12:29

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Подхвачу мысль, у меня были ситуации, когда нужно было разграничивать отсутствие ключа и наличие ключа без значения.

h1dd3n 13.04.2016 19:15

Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
 
Цитата:

Сообщение от ABTOMAT (Сообщение 305473)
А если я в Dictionary и хочу хранить нулль?
Тогда получается двусмысленность: либо там нулль из-за того, что нет такого ключа, либо нуль потому что я его туда положил.

Плюсую.
А еще если немного поизучать C#/CLR, то обнаружится что типы бывают не только reference type (object, List, Bitmap и т.д., те которые хранятся в куче), но и value type (это те которые лежат на стеке). Думаете проблема "сохранил ли я null, или это null потому что там ничего не было" такая острая? Пример еще более проблемный:
Код:

Dictionary<string, bool> settings = settingsManager.GetSettings();

if (settings["setting1"]) {
    SaveSomething();
}

settings - словарь настроек в виде чекбоксов (да/нет)
В этом примере что должен вернуть словарь, если ключа setting1 нет и никогда не было? true? false? А вот и хер его знает. Поэтому такое поведение с исключением и существует. Dictionary - коллекция общего назначения, поэтому ее старались сделать так чтобы подходила к любым ситуациям в равной степени.
К слову, есть коллекции где поведение "вернуть null, если даже ключа нет" является приемлемым. Например, в ASP NET Session (по сути, тоже словарь).

И вообще, если тебе так нужно чтобы словарь возвращал значение по умолчанию, в случае отсутствия ключа - то взял бы да написал сам, там кода 10 строк один раз написать: https://dotnetfiddle.net/GXdtAS, для reference типов будет возвращать null, для value типов значение по умолчанию (для int 0, для bool false и т.д.)


Часовой пояс GMT +4, время: 16:35.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot