![]() |
Ответ: Ваш первый раз
Цитата:
|
Ответ: Ваш первый раз
Цитата:
Хороший из тебя атеист получается, правильный. Да же сказал бы, православный. |
Ответ: Ваш первый раз
Только сейчас заметил, что у тебя аватарка во всякую крипоту трансформируется.
|
Ответ: Ваш первый раз
Цитата:
Да и на с++ не могу на без мата писать что-то такое, где постоянная работа с памятью/файлами, чуть плюнул не туда - получил что-то на подобии OutOfMemory, хорошо что VS с его отладчиком перехватывает хоть горсть подобных случаем и можно понять где ошибка. Я вот пытался найти ошибку в калькуляторе системы нелинейных уравнений 3 порядка(фигня прога, всего 30 строчек) , который писал не я, так это же жесть.. ну тут фактор криворукого кодеписца еще был, который никак не документировал свои действия. |
Ответ: Ваш первый раз
Цитата:
|
Ответ: Ваш первый раз
я не фанат пере-ООПа и многих чисто крестовых фишек, но С то малаца - что пишешь, то и делает, можно даже угадать какой асм в итоге выплюнет, никакой закулисной фигни, никаких позорных GC, классно жи.
работа с файлами вообще шикарна через fopen, я в шарпе в 20 раз больше буковок пишу для того же самого ) память вся на ладони - бери читай/пиши в любой грёбаный адрес, не ходя вокруг да около. |
Ответ: Ваш первый раз
Цитата:
C++ нормально с памятью можно работать только если запариться и написать собственный аллокатор под конкретную задачу. В противном случае аллокации убьют всю производительность. В C#/Java это уже делает за тебя рантайм (причем в яве его еще и подтюнить можно для конкретной задачи). Вообще претензии к управляемым высокоуровневым языкам как правило появляются от незнания вопроса нежели присутствия какой-то реальной проблемы. |
Ответ: Ваш первый раз
Цитата:
Цитата:
|
Ответ: Ваш первый раз
Цитата:
Цитата:
|
Ответ: Ваш первый раз
Предлагаю перенести оффтоп в тему С/С++.
Хоть сейчас начали обсуждать не политоту и ня-котов.\ Цитата:
В первый раз я привел саркостичное объяснение почему ненавижу с++, второй раз уже более конкретное, просто религию опустил, что бы не святотатствовать. |
Ответ: Ваш первый раз
Цитата:
Mr_F, ты так и не ответил, что скажешь по поводу того, что в C++ постоянно открывают что-то новое? Почему каждый, уважающий себя, кодер на плюсах считает своим долгом написание своего класса строк/массивов/списков и потом приходится разбираться в его говне? Почему в плюсах считается хорошим тоном велосипедить? Крестоблядки - дорогое удовольствие. Частое явление, что плюсокодер в конторе быстро становится незаменимым из-за того, что нагородил такого, что после него в век никто не раздуплит его писульки. Смена кадра означает переписывание продукта с нуля для многих фирм. Что можешь сказать по этому поводу? Про дефайны даже говорить не хочется. Один хороший человек показал мне его код, где была конструкция: PHP код:
P.s. Я не обобщаю, просто взгляд скриптоблядка со стороны. Моя хата с краю, всё это сугубо праздный интерес. |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Нраится Си.
Нраится C++11, C++14 - до этих стандартов не нравился. Нраится С# - гуевые приложения писать одно удовольствие |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Что не нравится в крестах? Нагромождение спецсимволов и просто incomprehensible ад в темплейтах. Система билдов проектов - неужели ничего адекватнее CMake экосистема так и не родила за всё время существования? Две недели ушло на то, чтобы просто сбилдить PCL со всеми зависимостями. И то VTK пришлось выкинуть (слава энтропии, модуль визуализации и не был нужен). А, ещё очень забавляет "undefined behavior". Неопределённое поведение в языке, считающемся самым серьёзным из высокоуровневых языков? Это пять. Нет, это десять! Не поймите неправильно, я догадываюсь, что ноги у этого великого и ужасного Гудвина растут оттуда, откуда растут потому, что нужно поддерживать обратную совместимость, иначе мир рухнет. Но в какой-то момент нужно было сказать "стоп" и начать с начала, с учётом накопленного опыта. |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Си несомненно полезен в микропроцессорной технике, так как АСМ тоже один из кругов ада, хотя он и прост как велосипед.
Но когда я вижу примеры, туториалы где для atmega8 пишут класс, который управляет lcd, который дочерний от темплейта, то это перебор..там и так памяти мало, но нет, это же правильно.!(сарказм) |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
Цитата:
Цитата:
P.S. Не троллинга ради. |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
Цитата:
мне вот это советовали: http://premake.github.io Цитата:
Randomize - ладно. не пиши. ----- я думаю, спор бессмысленнен без контекста задачи. графический/физический движок - С. скрипты геймплея, окошковый интерфейс - шарпик норм. вебчик - позорный JS, никуда не убежишь. |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
Цитата:
|
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Тред не читай @ Сразу отвечай.
![]() В крестах слишком много способов выстрелить себе в ногу. Слишком много, казалось бы, само собой разумеющихся вещей, которых, тем не менее, нет, и надо писать самому. Каконічный пример: каждый Вован пиши свою работу со строками. Жопашный дебаггинг, может указать вообще в километре от того места, где ошибка была (оно и понятно, язык довольно низкоуровневый, там хер отследишь). Это для случаев, если вообще появилась ошибка. А можно вообще не в тот адрес памяти нафигачить и не заметить, а потом думать, откуда появляются (временами!) сверхстранные глюки. В 99% случаев такая свобода НЕ нужна и только вредит. Ребят, я, конечно, понимаю, что язык вроде крестов нужен в узких нишах, но писать продакшн на нём это куда дольше, чем на C#. Я думаю, заказчик не поймёт, за что ему платить больше денег, если вы будете три дня на С++ писать то, что на C# пишется за 1 день. И его уж точно не интересуют выигранные 5% производительности. Да и сам я, когда пишу игру, меня интересует, куда пойдёт персонаж и что будет там делать, а не по какому адресу в памяти чего запишется. И интересует, чтобы я написал игру не за год. Очень нравится писать на C# — это C++, избавленный от вышеописанных косяков, хоть, как следствие, и более медленный. Повторю свой тезис: "Время человека дороже, чем время машины". Раньше я считал иначе, маленький был, глупый. |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
Цитата:
А, ну и ещё, акцентирую внимание, что речь про С++. |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
алсо если речь именно про ++, то бесит в шарпе Dictionary по сравнению с map - что за Contains, что за TryGetValue, чтозанах? |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
|
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Указатели это ж изич, только нубасы не шарят в указателях.
|
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
А что за преобразование имеется в виду? |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Да как хотите называйте. Вот это постоянное сохранение ссылок на объедки, потому что если одну пролюбишь, то ничего работать не будет, меня раздражает дико. wchar_t сохрани в одной переменной, а wchar_t* от этого же значения где-то в другой, 150 типов для строки и все какие-то убого-неполноценные, что-то в строку преобразовать — тоже страдай херней, потому что .toString() завезти никто не удосужился, постоянно значения в памяти теряются, если хоть за чем-то не уследишь и не сохранишь отдельно. Может я просто неосилятор. С плюсами пришлось столкнуться серьезно только в рамках одной задачи при написании некой дллки-коннектора, до этого никогда не писал на них, так говна я натерпелся знатно.
|
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
|
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Нашёл исходник. Вот например кусок кода:
PHP код:
|
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Для тех у кого постоянно что-то теряется в памяти придумали unique_ptr, shared_ptr и weak_ptr. Только не надо ко-ко-ко что они медленные. Нормальные они.
|
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
UPD. Ещё одна из 'удобных' оберток над числом |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
Пример кода в студию. Contains просто проверяет наличие ключа, в чем проблема то? в плюсах можно получать из map то чего там нет и никогда не было ? |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
Недавно юзал map, в доках написано, что при обращении к несуществующей связке KeyPair кидается эксепшен. Что за хрень? Зачем сносить очередь выполнения эксепшеном из-за того, что я обратился по несуществующему ключу? Проверял Map.FindKey-ем, который выдает итератор, который сравнивал с Map.end(). Ну вообще не удобно на самом деле тут вышло. в С# можно обратится по несуществующему ключу и получить null для объектов. https://msdn.microsoft.com/ru-ru/lib...vs.110%29.aspx |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
Вкратце unique_ptr освобождает память при выходе из области видимости\в деструкторе\ при выходе из приложения. shared_ptr позволяет разделять владение указателем между разными участками приложения, и когда на сырой указатель больше никто не ссылается - он удаляется вместе с последним shared_ptr владеющим им. Очень удобная штука для управления ресурсами. weak_ptr устраняет циклические зависимости, когда в объекте А есть shared_ptr<B>, а в объекте B есть shared_ptr<A>. Помимо этого этим указателем удобно проверять наличие ресурса, и загружать его по мере необходимости. |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
типа 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); } работает, но некрасиво |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
А если я в Dictionary и хочу хранить нулль?
Тогда получается двусмысленность: либо там нулль из-за того, что нет такого ключа, либо нуль потому что я его туда положил. |
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Подхвачу мысль, у меня были ситуации, когда нужно было разграничивать отсутствие ключа и наличие ключа без значения.
|
Ответ: Нравится/Не нравится C++ (из темы "Ваш первый раз")
Цитата:
А еще если немного поизучать C#/CLR, то обнаружится что типы бывают не только reference type (object, List, Bitmap и т.д., те которые хранятся в куче), но и value type (это те которые лежат на стеке). Думаете проблема "сохранил ли я null, или это null потому что там ничего не было" такая острая? Пример еще более проблемный: Код:
Dictionary<string, bool> settings = settingsManager.GetSettings(); В этом примере что должен вернуть словарь, если ключа 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