Здравствуйте, rudzuk, Вы писали:
R>Вот ты смеешься, а винда уже начинает ржаветь изнутри.
Она гниёт изнутри начиная с 8й
R> Как бы МС себе новую любимую жену не назначила...
Они уже по многим направлениям катятся в пропасть, увы.
Здравствуйте, ути-пути, Вы писали:
A>>PS. A>>Я использую принцип "как скобки". Кто память захватил, тот и освобождает. A>>Это или функция делает new в начале и delete в конце,
УП>А если этих new больше одного, и между ними или в одном из них бросит? Ты всю эту логику прописываешь вручную?
В чём проблема бросить и поймать исключение и освободить всех, кто не NULL?
Ах да, их же предварительно обнулить надо. Но современный gcc это сам делает.
Здравствуйте, flаt, Вы писали:
A>>Странная постановка вопроса. Есть области, где без него до сих пор никуда (к сожалению). Браузеры писать или ядра. Или классические Win-приложения, если нужен малый размер и совместимость.
F>Rust.
Давай возьмём классическое вынь-приложение, для которого нужна совместимость и малый размер. Последнее такое приложение, которое мне пришлось писать, было специфическим инсталлятором.
Что значит в данном случае "совместимость"? Поскольку основное приложение работало даже под голой XP (ну, так получилось, извиним за это разработчиков), странно было бы ломать совместимость на уровне инсталлятора и собирать только под Win10. Что значит размер? GUI-часть была написана на основе нескольких ::CreateWindowEx(), распаковка — имплементацией zip одной из библиотек, плюс несколько функций из WinAPI. Размер копеечный, короче. Ни зависимостей, ничего.
Проект был сделан на основе пустого Win-приложения в студии (VC++). Как такое просто и быстро запилить на Rust, и что мы от этого выигрываем?
Здравствуйте, rudzuk, Вы писали:
R>Здравствуйте, Marty, Вы писали:
M>> B>> C# заткнул за пояс этот тухлый мир WORE простым, но качественным инструментом "только под венду".
M>> R>Шарп — та же жаба, только в профиль. И вообще-то это жаба заткнула шарп. В энтерпрайзах жаба, на ведре жаба... Где же шарп? На венде! А венда где? В #@$%е. Правда МС, кажется, начала о чем-то догадываться и активно кинулась в эту вашу кроссплатформу.
M>> Скорее, это шарп отжал большую долю жабы. Потому как когда жаба появилась, никакого шарпа не было
R>Речь не про отжал, а про заткнул. Жаба заткнула амбизиозного выскочку
Опять какую-то херню несёшь... Тебе уже напомнили, Жаба была ПЕРВОЙ. А значит априори не могла никого заткнуть. Логика — ни бум-бум??
R> Десктоп из него не вышел
Ты про шарп?? Ещё как вышел! Прекрасно всё пишется на порядок быстрее любых жаб.
R> на мобилах оно не взлетело
Далеко не по вине самого шарпа. Тут политика шлюх из MS.
R> в энтерпрайзах его не ждут
Это у тебя в 8Б не ждут. Интыпрайз прекрасно принял C# со всеми технологиями, включая ASP. Это практически законченная платформа, от веба и облаков до баз и гуёв.
R> Теперь от всех амбиций у шарпа осталось только побираться по вебу, деля кусок хлеба с пыхом (в этой нише он тоже сольется)
Слушай, такое ощущение, что тебя разморозили, ударили по голове, потом снова заморозили и вот сейчас ты пишешь какую-то ахинею, за которую у меня испанский стыд. Может, ты просто сознаешься, что ни черта не знаешь о платформе и уйдёшь канпелять emacs? Позоришься как клоун, пишешь бред собачий, а люди на тебя время тратят...
Здравствуйте, alpha21264, Вы писали:
A>В чём проблема бросить и поймать исключение и освободить всех, кто не NULL?
В правильной последовательности, например.
A>Ах да, их же предварительно обнулить надо.
Ага, говнокод, мешающий чтению реального кода
A>Но современный gcc это сам делает.
А завтра перестанет, и твой код сломается.
А вообще, хотелось бы пример. Ты что, еще и все переменные предварительно в начале функции объявляешь? А если нет, то как ты собрался их использовать для удаления?
Я вообще не понимаю этого желания засорять код кучей ненужных шаблонных строчек, это только мешает чтению и порождает ошибки. И ладно бы выигрыш какой от этого был...
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
A>>Ну RAII тоже нужно освоить. Не всем по силам. CC>Казалось бы... CC>Впрочем я видел людей которые физически не способны понять что такое указатель. Но таких надо просто не подпускать к профессии.
Спольски писал про таких.
Они вполне себе прикладные программеры на Яве или Додиезе...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, alpha21264, Вы писали:
A>Здравствуйте, Carc, Вы писали:
УП>>>А если этих new больше одного, и между ними или в одном из них бросит? Ты всю эту логику прописываешь вручную? C>>auto_ptr C>>
C>>auto_ptr<...> + auto_ptr<...>->Release
C>>
C>> в конце функции в случае успешного завершения. Не?
A>Ну он у меня спрашивал, я делаю не так. Я просто по старинке кидаю и ловлю исключение.
ПлятЪ (C).
А как тогда в обработчике исключения, особенно если исключение кидается в вызываемой функции, а ловится в вызывающей функции освободить указатели на new-объекты, которые висели на стеке вызываемой функции?
А ну нафиг! (С)
Лучше как мантру повторять, кто память выделял, тот ее и освобождает. И по максимуму к этому стремится.
Ясень пень, есть особые случаи. Но особые случаи на то и особые, чтобы не возникать через раз на простом элементарном коде. Но для особых случаев и решения особые.
Мне показалось, что раз исключения есть — то здесь вам не Си.
Соответственно, шаблоны доступны. Ну вроть как тогда все просто: выделяем память под объекты через new, и сразу их хватаем в auto_ptr.
На успешном выходе из функции, все эти auto_ptr релизим. И всё работает как оно нам надо.
А вот если что не так, то выходим из функции досрочно, и все эти auto_ptr сами за собой подчистят все.
Мне кажется, что так надежнее.
Не надо ни о чем гадать: функция успешно отработала? Получите в вызывающей функции ваши эти Интернеты указатели, которые просили.
Что-то пошло не так: вызываемая функция сообщит об этом (ну как-то там вернет NULL-s/null_ptr-s, или как то иначе), но вызываемая функция сама за собой всё и подчистит в таком случае.
Тут ломаться-то вроде и нечему. И исключения те же, кидай сколько хошь.
Все, конечно, имхо...
Здравствуйте, LaptevVV, Вы писали:
LVV>Спольски писал про таких.
Я таких вживую видел
LVV>Они вполне себе прикладные программеры на Яве или Додиезе...
Угу. Вот тольно что забавно: среди них как то необычно много ярых фанатиков того, что они поняли, вкупе с лютобешенной (tm), просто до иррационального, ненавистью того, что не смогли.
Здравствуйте, Marty, Вы писали:
M>Чужой код на любом языке практически всегда выглядит как говно
Случается, но не всегда. Я уже писал как-то: в начале карьеры я рвботал в проекте, в котором не было ни строчки говнокода. "Искра-226", древнючий уже тогда Васик. В коде я ориентировался совершенно свободно.
Здравствуйте, Baiker, Вы писали:
B> R>Речь не про отжал, а про заткнул. Жаба заткнула амбизиозного выскочку
B> Опять какую-то херню несёшь... Тебе уже напомнили, Жаба была ПЕРВОЙ. А значит априори не могла никого заткнуть. Логика — ни бум-бум??
Ладно, давай, как для тупых. Вот была такая жаба, была себе и была. Пригрела скудных мозгом на своей широкой груди, распростерла длани призывая сих. Увидали это в майкрософт и смекнули, что скудных мозгом и в их пастве в достатке, и нужно придумать свою жабу. Долго ли, коротко ли, но придумали. Родился великан могучий и зычным гласом возопил, скудных мозгом призывая. Прибежали скудные мозгом к великану, ибо сияли доспехи его со всех сторон и глашатаи хвалили их. Бросил вызов великан жабе великой да могучей. Началась великая битва. В общем, загнала жаба великана под лавку, а майкрософт уползла зализывать раны. Тут и сказке конец. Надеюсь, до тебя дошло.
B> Ты про шарп?? Ещё как вышел! Прекрасно всё пишется на порядок быстрее любых жаб.
То, что ты можешь писать свой складской учет на винформсах ни о чем не говорит. Речь о том, что планы-то, пилять, были наполеоновские, когда дотнет должен был стать подсистемой винды, на которой, в частности, должен был работать весь гуй.
B> R> на мобилах оно не взлетело
B> Далеко не по вине самого шарпа. Тут политика шлюх из MS.
А пофиг по чьей вине (весь такой нетормозной дотнет то и дело получает перфрманс импрувментс, скоро этот перформанс девать будет некуда). Была дерзская попытка, с покупкой ноклы, но случились обосратушки. Жаба на мобилах есть (а она была еще на моей кнопочной нокии), а шарпа нет. Вот это и называется заткнули выскочку. Теперь-то понятно?
B> R> в энтерпрайзах его не ждут
B> Это у тебя в 8Б не ждут. Интыпрайз прекрасно принял C# со всеми технологиями, включая ASP. Это практически законченная платформа, от веба и облаков до баз и гуёв.
Разве что тот ынтерпрайз, который МС проспонсировала Они такие затейники. А твои две кассы в торговом зале это не энтерпрайз.
B> Слушай, такое ощущение, что тебя разморозили, ударили по голове, потом снова заморозили и вот сейчас ты пишешь какую-то ахинею, за которую у меня испанский стыд. Может, ты просто сознаешься, что ни черта не знаешь о платформе и уйдёшь канпелять emacs? Позоришься как клоун, пишешь бред собачий, а люди на тебя время тратят...
Некрофилы мне о платформах рассказывают, вот умора.
вопрос по теме.
Какого рода программы сейчас делают в России на С/С++ те кого берут на вакансии "программист С/С++"?
Проще говоря: подо что примерно берут большинство программистов на С/С++ в России?
Я говорю именно в России. Понятно, что в целом на С/С++ пишут всякие там браузеры, игры, операционные системы, СУБД, компиляторы и т.п.
Но в России не делают СУБД, браузеры, операционные системы, компиляторы и т.п.
Я сам начинал как программист С/С++, но это были простые программки не достойные упоминания. Более менее серьезный проект на С/С++ я делал, но это своё shareware. А вот на вакансиях чего хотят, в компаниях?
Здравствуйте, ути-пути, Вы писали:
A>>Ну он у меня спрашивал, я делаю не так. Я просто по старинке кидаю и ловлю исключение.
УП>Так при исключении еще нужно знать, что уже выделено, а что — нет. А иногда и порядок важен.
У меня то, что не выделено равно NULL.
И у меня не было ни разу такого случая, чтобы порядок был важен.
A>>Ну он у меня спрашивал, я делаю не так. Я просто по старинке кидаю и ловлю исключение. C>ПлятЪ (C). C>А как тогда в обработчике исключения, особенно если исключение кидается в вызываемой функции, а ловится в вызывающей функции освободить указатели на new-объекты, которые висели на стеке вызываемой функции?
Это сделает вызываемая функция в своём обработчие исключений и бросит исключение дальше.
Освобождает тот, кто захватил.
C>Соответственно, шаблоны доступны. Ну вроть как тогда все просто: выделяем память под объекты через new, и сразу их хватаем в auto_ptr. C>На успешном выходе из функции, все эти auto_ptr релизим. И всё работает как оно нам надо.
Так тоже наверное можно, но...
Вот я познакомился с библиотекой OpenShot. Там всё на auto_ptr. И память течёт. Странно.
А у меня не течёт.
PS.
А шаблоны мне эстетически не нравятся. Из-за них строчки программы не умещаются в строчки текста.
И визуальная структура текста ломается.