LINUX.ORG.RU

Вышел Mono 2.6.7

 ,


0

0

Основные изменения:

  • Теперь mono включает в себя MVC2
  • Добавлен WCF — как клиент, так и сервер
  • Добавлена поддержка LLVM для улучшения производительности
  • Новый отладчик, который интегрирован в MonoDevelop 2.2
  • Добавлена поддержка модели безопасности CoreCLR
  • Множество мелких исправлений

>>> Подробности

★★★★★

Проверено: JB ()

Ответ на: комментарий от ahonimous

Напоминаю, на что вы отвечали:

своё управление памятью. Суть та же. Болезнь ... зачастую


Я так понимаю, вы продолжаете настаивать, что заказчику в проекте обязательно нужно выделить деньги на реализацию своего управления памятью, как это сделали умные дяди из chrome/firefox?

queen3 ★★★★★ ()
Ответ на: комментарий от queen3

> Тогда так: GC - это хорошо. В большинстве проектов следует начинать с её использования. 95% проектов в мире только выиграют от использования GC, ORM, лябд, функционального программирования, и любых других вещей, которые помогают не отвлекаться от задачи, увеличить производительность, улучшить читабельность кода, упростить сопровождение.

ну вот - это другой разговор :) извиняюсь за грубый тон, да - GC это хорошо, но относительно медленно - т.е. надо писать либо на С/C++ и выжимать скорость, либо с GC

Действительно, давайте всё писать на С. А то вдруг узкие места. Скрипты, доступ к базам, веб, десктопные приложения, фреймворки, утилиты.


вы передергиваете, посмотрите сколько кода на С в любом дистрибутиве линукса - и он там не просто так, а чтоб тот же линукс мог работать и на PI + 16Mib ОЗУ

А у них - свои задачи


что я говорил

Нормальные пацаны, как известно, вручную работают с памятью.


и опять передергиваете - ручная работа с памятью нужна, т.к. не смотря на все заверения джаверов - таки редко какие большие программы на Java не тормозят( да и те пишутся профессионалами в IBM, Oracle etc. не один год )

Но зачем?


а вы уже готовы снести у себя с компьютера все программы на С/C++?

ahonimous ()
Ответ на: комментарий от queen3

> что заказчику в проекте обязательно нужно выделить деньги на реализацию своего управления памятью, как это сделали умные дяди из chrome/firefox?

и опять вы переходите на категорию одноразовых заказов - я опять же уже писал, что Java/C# для них хороши и выгодны

ahonimous ()
Ответ на: комментарий от Ttt

Конечно, никакого труда. Совсем нетрудно при проектировании решать вопросы, по ссылке или указателю передавать объекты, кто отвечает за их удаление, как решать вопрос с библиотеками, у каждой из которых свой memory management внутри, очень приятно работать с функциями типа тех, что сначала вызываются c NULL и возвращают размер памяти, которую необходимо выделить. И главное - никаких dangling pointer/double free.

Наконец - очень приятно 3 месяца искать random memory overwrite bug, вызванный записью по некорректному смещению относительно указателя. А заказчику очень приятно эти три месяца перестартовать сервер каждый 3-60 минут (рандомно). Никаких усилий, потерь времени, особого труда.

Да-да, конечно, нормальные программисты для каждого new пишут свой delete. А ещё они живут в идеальном мире, где все программисты - нормальные, ибо дальше своих поделок носа не высовывают и не видят, из какого говнища состоит этот мир, где далеко не на каждый new находится свой delete, а если и находится, то иногда два-три раза.

queen3 ★★★★★ ()
Ответ на: комментарий от ahonimous

> GC это ... медленно

О господи.

линукс мог работать и на PI + 16Mib ОЗУ


Ага, о чём я и говорю - 5% задач. И даже меньше.

ручная работа с памятью нужна


Ага. В 5% случаев.

Но зачем?

а вы уже готовы снести у себя с компьютера все программы на С/C++?


Да мне наплевать, на С++ они или на питоне. На самом деле, на питоне даже лучше.

Но я говорил о том, что зачем лично _ВАМ_ эти new/malloc/free? Производительность? Какие-такие сверхкритичные программы вы пишете, что там нужно не то, что отсутствие GC, а вообще malloc/free? Вы замеряли скорость работы? В курсе, что на многих задачах (множество мелких allocate) GC быстрее? Уверены, что тот мизерный выигрыш в скорости стоит того? Или просто изучили С/C++ и он вам нравится, вот и вся причина?

queen3 ★★★★★ ()
Ответ на: комментарий от ahonimous

> Нормальные пацаны, как известно, вручную работают с памятью.

С GC ты тоже работаешь с памятью. Только по другому принципу

cap838383 ()
Ответ на: комментарий от queen3

> по ссылке или указателю передавать объекты

а чего там думать - если есть локальный объект( в блоке или член класса ), то отдавай по ссылке - т.к. он точно не NULL, иначе по указателю

кто отвечает за их удаление


дык в документации латиницей по pdf/html написано

у каждой из которых свой memory management


а то что внутри библиотеки - не суть важно

очень приятно работать с функциями типа тех, что сначала вызываются c NULL и возвращают размер памяти, которую необходимо выделить


извращаться можно на любом языке

И главное - никаких dangling pointer/double free


а у меня netbeans + smartsvn вылетали, а порой и зависали :( особенно эпично однажды упал netbeans - начал лупить окошки с ошибками и умер, показав не меньше нескольких тысяч ошибок( и это 6.9 - последний )

очень приятно 3 месяца искать random memory overwrite bug


memory profiler + static analyse - и ваши волосы будут ...

и не видят, из какого говнища состоит этот мир, где далеко не на каждый new находится свой delete, а если и находится, то иногда два-три раза.


так что же джаверы еще не построили свой мир, а пользуются чужим? :)

ahonimous ()
Ответ на: комментарий от ahonimous

Хотелось бы услышать, чем же плохи Java/C# для многоразовых заказов. А также, в чём преимущество своей системы управления памятью для многоразовых проектов - ну, скажем, для фреймворка по тестированию аппаратуры с разветвлённой системой скриптов, или там сайта управления заказами. Может быть, в мизерном прирости производительности, видимой на теоретических миллионных циклах? Или в необходимости выделять специалиста настолько опытного, что он напишет управление памятью лучше, чем в Microsoft/Sun, не на фичи, которые нужны юзерам, а на инфраструктуру, которая уже в MS/Sun давно реализована?

queen3 ★★★★★ ()
Ответ на: комментарий от queen3

О господи.

плазма не Java не тормозит

Ага, о чём я и говорю - 5% задач. И даже меньше

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

Ага. В 5% случаев.

пересчитай кол-во программ у себя на компьютере - если у тебя линукс, то можешь по зависимостям посмотреть, и увидишь где не будет и 5%

Да мне наплевать, на С++ они или на

т.е. пользуемся «неправильными» программами, потому-что правильных нет?

Но я говорил о том, что зачем лично _ВАМ_ эти new/malloc/free? Производительность? Какие-такие сверхкритичные программы вы пишете, что там нужно не то, что отсутствие GC, а вообще malloc/free?

да - производительность, и да - наш софт работает на загруженных серверах

Вы замеряли скорость работы?

представьте себе

В курсе, что на многих задачах (множество мелких allocate) GC быстрее?

вы явно не слышали, что такое memory pool

Уверены, что тот мизерный выигрыш в скорости стоит того?

4.2 - знаем мы ваши синтетические тесты

Или просто изучили С/C++ и он вам нравится, вот и вся причина?

С я выучил - т.к. это обязательный язык, а С++ уже на работе пришлось

ahonimous ()
Ответ на: комментарий от cap838383

> С GC ты тоже работаешь с памятью. Только по другому принципу

это не мои слова про «нормальных пацанов»

ahonimous ()
Ответ на: комментарий от queen3

> Хотелось бы услышать, чем же плохи Java/C# для многоразовых заказов

а кто сказал, что плохи? хороши для одноразовых, сойдут для длительных

А также, в чём преимущество своей системы управления памятью


да что ж вас так клинит на этом управлении памятью - C быстрее не только из-за нее

ahonimous ()
Ответ на: комментарий от ahonimous

А, т.е. ещё нужно
1. чётко документировать, кто где что распределяет, и как это нужно удалять. Действительно, как всё просто без GC, особенно учитывая умение и любовь программистов к написанию понятной документации.
2. каждый раз смотреть, как нужно удалять объект, в документаци.

Действительно, это проще, чем вообще не думать о памяти.

а то что внутри библиотеки - не суть важно


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

извращаться можно на любом языке


Это не извращение, а суровая реальность, вызванная тем, что ты не знаешь, какого размера буфер передать библиотеке, а сама она выделить память для тебя не может, ибо см. выше про «свои мемори пулы».

окошки с ошибками


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

queen3 ★★★★★ ()
Ответ на: комментарий от ahonimous

> да что ж вас так клинит на этом управлении памятью

Напоминаю тему разговора: «я почему-то считаю, что сборка мусора в основном нужна тем, кто не может написать программу без утечек памяти.»

queen3 ★★★★★ ()
Ответ на: комментарий от queen3

Я тебе скажу, что в Java с контрактами не лучше, ибо прототип функции там не содержит полной информации. И да, нормального средства для создания GUI в Java нет, поэтому за 15 лет 2-3 приложения для домашнего использования на ней написано.

PayableOnDeath ()

Лень все читать. Я правильно понял, очередной зеленый системщик заявляет, что корпоративные приложения надо писать на C и, что писать под Java или .NET платформы неинтересно, плохо, не творчески и вообще вы все обезьяны!!!11 ?

anonymous ()
Ответ на: комментарий от queen3

> чётко документировать, кто где что распределяет, и как это нужно удалять. Действительно, как всё просто без GC, особенно учитывая умение и любовь программистов к написанию понятной документации.

вы еще скажите, что документация не нужна

И забыть, что мудрые пацаны пишут свои memory pool-ы, несовместимые друг с другом.


думаю всем очевидно, что вы выдумываете - вы про них от меня только что услышали и уже рассказываете как с ними плохо :) memory pool используется для внутренних операций - например для парсера, или хранения внутренних данных, указатели оттуда никто наружу не отдает

вызванная тем, что ты не знаешь, какого размера буфер передать библиотеке


std::vector же - библиотека сама его отресайзит

Ты, видимо, не осознаёшь, насколько приятнее получить окошко с ошибкой


а получить пару тысяч окошек за раз - это особенно приятно

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


для пользователя это окошко ровно ничего не скажет, а программы на Java после таких «окошек» имеют обыкновение требовать перезапуск или становятся неюзабельными

ahonimous ()
Ответ на: комментарий от ahonimous

> Java не тормозит

Подсказка: It. Just. Doesn't. Matter!

пользуемся «неправильными» программами


Не правильных или неправильных программ. Есть которые решают задачу, и которые не решают. Так вот те, что с GC или на жабе - решают. И это несмотря на то, что GC/Java - тормозят.

У меня Убунта, и я не страдаю от того, что многое написано она питоне/моно. О ужас! DockBarX (как и многие апплеты) на питоне! F-Spot на моно, кошмар! Не сомневаюсь, что любой заказчик, узнав, что его программу написали на C#, пришёл бы в ужас!

замеряли

наш софт работает на загруженных серверах



Вот это - правильный ответ на вопрос «но зачем?». Возможно, у вас есть необходимость в написании на C/C++. У большинства такой необходимости нет. Замечательно, что мы сошлись во мнении, что необходимость использования С/C++ должна обосновываться, и нужно оно разве что в критичных ситуациях.

queen3 ★★★★★ ()
Ответ на: комментарий от anonymous

Точно в яблочко, лучше и не сформулируешь.

queen3 ★★★★★ ()
Ответ на: комментарий от anonymous

> Я правильно понял, очередной зеленый системщик заявляет, что корпоративные приложения надо писать на C и, что писать под Java или .NET платформы неинтересно, плохо, не творчески и вообще вы все обезьяны!!!11 ?

нет - я не системщик, и я за то чтоб писать корпоративные приложения на C#/Java, и да - решать __типичные__ корпоротивные задачи на них не интересно, а что кто-то считает, что это увлекательно и весело?

ahonimous ()
Ответ на: комментарий от queen3

> Точно в яблочко, лучше и не сформулируешь.

вот чушь вы пишите, ей-богу :) найдите хоть один пост от меня про «корпоративные приложения надо писать на C» или признайте, что решили тупо поддакнуть

ahonimous ()
Ответ на: комментарий от yoghurt

Говно тормозное твои смартпоинтеры. Ты просто не понимаешь, что такое GC, и почему дебильные счетчики ссылок даже рядом не валялись.

anonymous ()
Ответ на: комментарий от queen3

Не понимаю, зачем он там? Можете показать на примере ВНЕДРЕНЕ сильверлайта?

oh ()
Ответ на: комментарий от ahonimous

> вы еще скажите, что документация не нужна

Её никто не пишет.

вы выдумываете


Я не выдумываю, я рассказываю про свой реальный случай несовпадения memory allocation у разных бустов и msvcrt, юзаемых в нашем фреймворке на питоне, и как мы с этим трахались.

указатели оттуда никто наружу не отдает


И что же наружу отдают? Ничего? И какой толк тогда?

std::vector же - библиотека сама его отресайзит


Legacy interfaces. C-шные динамические библиотеки и API. Их over9000. Не у всех языков есть Java/.NET мощный стандартизированный набор классов. Но это, конечно, несущественно влияет на производительность труда и сопровождаемость кода, да.

а получить пару тысяч окошек за раз - это особенно приятно


Давай-ка ещё раз - 3 месяца поиска memory overwrite (баг зависел от длины данных, хрен воспроизведёшь), перегрузки от раза в час до раза в минуту. Или 1000 окошек и через минуту понятно, где примерно ошибка, или вообще что происходит. С твоей точки зрения, конечно, 3 месячный п...ц - дело житейское? Никаких преимуществ у отсутствия возможности подобных багов - нет?

программы на Java после таких «окошек» имеют обыкновение требовать перезапуск


Программы на Java, равно как и C#, имеют возможность автоматизированного перехвата исключений, включая неверные обращения с памятью. И даже автоматической отсылки багрепортов, включая стэктрейс.

Но это, конечно, не важно для реальных продакшн приложений.

queen3 ★★★★★ ()
Ответ на: комментарий от anonymous

>Ты просто не понимаешь, что такое GC, и почему дебильные счетчики ссылок даже рядом не валялись.

Нука, давай, расскажи мне

yoghurt ★★★★★ ()
Ответ на: комментарий от ahonimous

Да, это увлекательно и весело. Domain driven design, LINQ, ORM, функциональное программирование, AOP, reflection - всё это намного интереснее очередной за 20 лет реализации new/delete. Даже с точки зрения программиста, если не брать дизайн и прочие не-кодерские фишки, C#/Java - это элементарно _современные_ технологии, в которых множество cutting-edge фишек, с которыми, да - _очень_ увлекательно работать.

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

queen3 ★★★★★ ()
Ответ на: комментарий от ahonimous

> а что кто-то считает, что это увлекательно и весело?

Гораздо интереснее решать абсолютно новую, инновационную, не типичную задачу а-ля свой GC

oh ()
Ответ на: комментарий от queen3

> Её никто не пишет

o_O

Я не выдумываю, я рассказываю про свой реальный случай несовпадения memory allocation у разных бустов и msvcrt


boost - это все плохое в С++ в квадрате :)

Legacy interfaces.


а что вы предлагаете? Legacy он и есть legacy

Давай-ка ещё раз - 3 месяца поиска memory overwrite


давай - вы прогоняли статический анализ + использовали, например, AQTime?

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


в С++ тоже можно отловить - но все всегда рекомендуют завершить выполнение сразу, т.к. такие ошибки могут привести к порче данных( и в Java в том числе )

И даже автоматической отсылки багрепортов, включая стэктрейс.


тоже мне удивили - в том же Mac OS автоматом покажется окно со стеком при падении, даже если автор программы этого не предусмотрел, ну и все серьезные программы тоже его сохраняют и предлагают отослать

ahonimous ()
Ответ на: комментарий от queen3

> в которых множество cutting-edge фишек
Справедливости ради, все эти фишки были доступны пользователям хацкеля/cl. Ну, кроме LINQ, пожалуй. А так они идут «в массы».

oh ()
Ответ на: комментарий от queen3

> Хотя творчески работать можно с любой задачей, тут проблема в человеке, а не технологии

а как же заказы, время? пока вы тут творчески работаете - уже можно было слепить самым прямолинейным образом и отдать

ahonimous ()
Ответ на: комментарий от oh

> абсолютно новую, инновационную, не типичную задачу а-ля свой GC

ну что вас так тянет на этот GC? :) большинство сишников и не думают о такой задаче

ahonimous ()
Ответ на: комментарий от oh

> Справедливости ради, все эти фишки были доступны пользователям хацкеля/cl. Ну, кроме LINQ, пожалуй. А так они идут «в массы»

справедливости ради - ORM, функциональщину и пр. даже в С++ стянули, хотя оно там и не надо, ну разве что лямбды

ahonimous ()
Ответ на: комментарий от oh

Ладно, что тут говорить, пока нормального компилятора для плюсов нет, то и разговора нет

oh ()
Ответ на: комментарий от ahonimous

> даже в С++ стянули

Ага, только получился большой кусок говна. И никакую «функциональщину» в плюсы не стянули, только лямбды

oh ()

а что этот моно насчёт asp умеет? к апачу прикрутить можно?

Aid_ ()
Ответ на: комментарий от oh

> Ага, только получился большой кусок говна.

такой как CL с его библиотеками, или меньше?

И никакую «функциональщину» в плюсы не стянули, только лямбды


http://www.cc.gatech.edu/~yannis/fc++/

ahonimous ()
Ответ на: комментарий от ahonimous

>> Её никто не пишет

o_O


Ну, например, много OSS проектов и библиотек имеют вменяемую документацию?

boost - это все плохое в С++ в квадрате :)


Т.е. и буст не использовать? Побольше велосипедов? stl тоже не использовать? А то, вроде, и с передачей векторов между библиотеками были какие-то проблемы.

а что вы предлагаете? Legacy он и есть legacy


Я предлагаю C#/Java.

вы прогоняли статический анализ + использовали, например, AQTime?


Не было никакой возможности. А стандартные средства языка, увы, рассчитаны больше на выстрел в ногу, чем на лечение.

в С++ тоже можно отловить - но все всегда рекомендуют завершить выполнение сразу


А речь и не идёт о продолжении работы. Речь о том, что информации о том, что случилось, несоизмеримо больше. И практически невозможны случаи внезапного падения без каких-либо инфы о случившемся. И эту инфу разработчик может сразу изучить. Например, http://code.google.com/p/elmah в С++ невозможен.

queen3 ★★★★★ ()
Ответ на: комментарий от ahonimous

Ну да, ну да.

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

Или http://dtemplatelib.sourceforge.net, где вручную делается куча вещей, которые Fluent NHibernate делает автоматически.

queen3 ★★★★★ ()
Ответ на: комментарий от queen3

> Ну, например, много OSS проектов и библиотек имеют вменяемую документацию?

вы не поверите :) zlib, gnome, gtk, qt, cairo, libpng, freetype и т.д. и т.п. - любо смотреть и пользоваться

Т.е. и буст не использовать? Побольше велосипедов?


буст - это и есть велосипед над С++

stl тоже не использовать?


используйте конечно - stl это __стандартная__ библиотека, а вместа буста лучше взять другую вменяемую библиотеку - благо их хватает

Я предлагаю C#/Java.


для поддержки legacy кода на С?

Не было никакой возможности


т.е.? начальство зажало денег на инструмент для программистов?

Речь о том, что информации о том, что случилось, несоизмеримо больше


в С/С++ можно хоть всю программу на момент ошибки отдампить, отослать и восстановить в дебаггере - а там все что хотите, то и смотрите

например, http://code.google.com/p/elmah в С++ невозможен.


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

ahonimous ()
Ответ на: комментарий от ahonimous

Вам лишь бы лепить. «Время», как я уже писал, означает больше времени на функционал и дизайн, а не на детали реализации и никому не нужную инфраструктуру. Больше фич + лучше дизайн, а не тупо «набросать и отдать».

queen3 ★★★★★ ()
Ответ на: комментарий от queen3

> boost::lambda, на который без слёз не взглянешь, например.

вы не в курсе? в С++ уже есть родные лямбды - можно уже пользоваться в gcc и msvc

Или http://dtemplatelib.sourceforge.net, где вручную делается куча вещей, которые Fluent NHibernate делает автоматически.


опять эти ваши БД :) я уже сказал, что Java тут рулит и педалит

ahonimous ()
Ответ на: комментарий от queen3

> Вам лишь бы лепить

это я вас спародировал, если-что

«Время», как я уже писал, означает больше времени на функционал и дизайн, а не на детали реализации и никому не нужную инфраструктуру


у вас особый творческий подход к дизайну? нафиг нам хиг, даешь анимированные кнопки?

ahonimous ()
Ответ на: комментарий от ahonimous

> буст - это и есть велосипед над С++

Т.е., boost::python включен в C++, зря мы буст юзали?

stl это __стандартная__ библиотека, а вместа буста


А что из буста скоро тоже станет стандартной библиотекой?

Я предлагаю C#/Java.

для поддержки legacy кода на С?


Хотя бы. Вместо того, чтобы создавать ещё один (в будущем) legacy поверх первого legacy, уж лучше надстройка на нормальном языке, с которой не придётся опять работать древними идиотскими методами.

т.е. начальство зажало денег на инструмент для программистов?


И что оно мне скажет? Что *p = 0 записало в *pp? Это возможно выяснить в C/C++?

А в C# все инструменты уже есть, бесплатно.

на момент ошибки


Честно говоря, никогда не работал с дампами в С++, потому что, сколько сталкивался с ними, сразу начиналось предчувствие попоболи. Да и толку, если есть ошибки, которые принципиально не ловятся, как см. выше запись вместо одной переменной - в другую.

queen3 ★★★★★ ()
Ответ на: комментарий от ahonimous

>> Вам лишь бы лепить

это я вас спародировал, если-что


Пруфлинк?

А дизайн = дизайн программы (ОО который). Если как сишник не любишь такое - потрать освободившееся время на написание тестов. Всяко полезнее, чем писать функторы и велосипедные реализации list.Distinct(x => x.Name).GroupBy(x => x.Group).ForEach(Process).

queen3 ★★★★★ ()
Ответ на: комментарий от ahonimous

> С++ уже есть родные лямбды

Замыкания там тоже есть?

опять эти ваши БД


Опять _мои_? Да сколько ж можно, ты хоть смотришь, на ЧТО я отвечаю? «справедливости ради - ORM ... в С++ стянули» кто сказал?

Положительно невозможно что-то обсуждать, когда на слова «GC нужен, т.к. полезен в проектах вида X, Y, а их много» отвечают «Так что, кроме X, Y других проектов нет?».

queen3 ★★★★★ ()
Ответ на: комментарий от queen3

> Т.е., boost::python включен в C++

вы опять все перекручиваете, boost - это набор несвязанных между собой библиотек( коих есть аналоги ) + костылей для «внесения» в С++ то чего в нем нет, вобщем за исключением нескольких библиотек - это хлам, причем огромных размеров

А что из буста скоро тоже станет стандартной библиотекой?


smart_ptr

И что оно мне скажет? Что *p = 0 записало в *pp? Это возможно выяснить в C/C++?


если ты явно видишь, что запись идет в «*pp» то в gdb есть такая волшебная команда watch, для установки брекпоинта на изменение памяти, а статический анализ покажет тебе все места где ты можешь случайно воспользоваться невалидным указателем, второй раз освободить память, использовать левое смещение и т.д.

Да и толку, если есть ошибки, которые принципиально не ловятся, как см. выше запись вместо одной переменной - в другую.


да ловятся они, причем быстро - не ловятся они только, если вместо кода макаронная каша

ahonimous ()
Ответ на: комментарий от queen3

> Замыкания там тоже есть?

да

Опять _мои_? Да сколько ж можно, ты хоть смотришь, на ЧТО я отвечаю?


не кричи - мой пост был ответом, на ответ на твой пост, где ты сам написал про ORM, это все не так сложно как я написал, в двух словах - ты сам поднял тему про ORM

когда на слова «GC нужен, т.к. полезен в проектах вида X, Y, а их много»


с тобой уже 20 раз согласились - что тебе еще надо?

«Так что, кроме X, Y других проектов нет?».


потому-что ты ничего дальше энтерпрайза не видишь

ahonimous ()
Ответ на: комментарий от ahonimous

> boost - это набор несвязанных между собой библиотек (коих есть аналоги) + костылей

Мне пожалуйста аналог boost::python (swig не предлагать). И да, как это костыль smart_ptr попал в стандарт? Т.е. был в бусте - фу, костыль, перенесли в стандарт - опа, уже годное средство? А пока стандарт не приняли, что юзать? Костыль? Сколько для С++ нужно костылей, чтобы удобно работать?

Что *p = 0 записало в *pp? Это возможно выяснить в C/C++?

если ты явно видишь, что запись идет в «*pp»


Если бы я что-то явно видел, я бы не искал это что-то 3 месяца. Это, по-моему, должно быть очевидно любому.

Я 3 месяца _вообще_ не знал, что происходит. А теперь расскажи мне, какой волшебной командой в C/С++ догадаться, чем вызваны случайные ошибки в данных, несвязанные с ними случайные падения, несвязанные с ними случайные вылеты сервиса, несвязанные с ними случайные вылеты сервера, и какой волшебной командой мне найти место, где безымянный студент завёл два указателя to и tot, потом конечно же опечатался, и благодаря ВЕЛИКОЙ МОЩИ языка С++ запись не по тому адресу вызвала не мгновенную реакцию с чётким описанием, а вышеуказанные симптомы?

Поясняю:
Выделение памяти:
p [0][1][2] pp

p - указатель на начало, pp - на конец.

Вместо p[3]=x пишем pp[3]=x. Вопрос: что при этом произойдёт в С++?
1. Access violation, если pp[3] попадёт на память, не принадлежащую программе.
2. Испортятся данные пользователя, если pp[3] попадёт на память, принадлежащую программе.
3. Испортятся данные программы, влияющие на выполнение программы, что приведёт к непредсказуемому поведению.
4. Испортятся данные рантайма, если pp[3] попадёт на данные, используемые рантаймом.

Ответ: всё по очереди, в зависимости от входных данных, состояния программы, распределённой памяти, фазы луны.

И наконец, вариант, который в С++ не произойдёт:
4. Мы сразу об этом узнаем.

Вопрос: что произойдёт в C#?

queen3 ★★★★★ ()
Ответ на: комментарий от ahonimous

> что тебе еще надо

Осознания того факта, что C/C++ - языки, которые крадут у заказчика деньги и время, за исключением тех случаев, когда их приходится использоваться по технологическим причинам.

потому-что ты ничего дальше энтерпрайза не видишь


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

queen3 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.