Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Результаты опроса: Какой язык лучше
C# лучше всегда и везде 17 36.17%
Kotlin лучше всегда и везде 3 6.38%
Kotlin лучше для Android-а, C# в остальных случаях 5 10.64%
C# лучше для Web-а, Kotlin в остальных случаях 0 0%
Kotlin для Android-а, C# для Web-а, в остальном одинаковы 0 0%
C# лучше для Android-а, Kotlin в остальных случаях 0 0%
C# для Android-а, Kotlin для Web-а, в остальном одинаковы 1 2.13%
Примерно одинаково хороши во всех областях применения 6 12.77%
Оба бесперспективны 5 10.64%
Оба "Тьюринговская трясина" (п. введён для Fulcrum_013) 4 8.51%
Свой вариант (желательно о нём рассказать) 6 12.77%
Голосовавшие: 47. Вы ещё не голосовали в этом опросе

 
 
Рейтинг 4.69/162: Рейтинг темы: голосов - 162, средняя оценка - 4.69
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,681
Записей в блоге: 9

C# vs Kotlin

30.11.2018, 18:26. Показов 38553. Ответов 384
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!

Java c C# уже сравнивали несколько раз. А как насчёт улучшенного (а может кто то считает "улучшенного") варианта java - языка Kotlin?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.11.2018, 18:26
Ответы с готовыми решениями:

Xamarin vs Kotlin?
Здравствуйте, возник такой вопрос, если откинуть на время ios, и разрабатывать android приложения, что из них будет лучше Xamarin или...

Kotlin vs Java
Добрый день, проконсультируйте плиииз! Больше года не садился за проги под андроид и решил "восстановить навык"... (вобще...

Язык программирования Kotlin
Достаточно интересный новый (2011г.) язык Kotlin, предлагающийся компанией JetBrains (как? вы не слышали про JetBrains?:p:rtfm:) на замену...

384
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
16.12.2018, 16:15
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
расстояние между точками - вычисляемая вещь и не требует своей отдельной сущности
НА самом деле это ограничение которое надо соблюдать. Т.е. оно не вычисляется а положение точек меняется так чтобы это расстояние было заданным. Т.е. это сущность данных точно так же редактируемая и т.д., а для вычисляемых размеров существует сущность которая хранит настройки отображения и т.д. или опять же ограничения на минимально/максимально допустимые и т.д. Ну и опять же для любого элемента чертеж существует элемент UI который тоже как не крути сущность которую тоже нужно при этом удалять.
Не пытайтесь увиливать от признания того факта что GC просто абсолютно непригоден для подобных задач. А то в результате ваших потуг как то переиначивать задачу, вообще своей безграмоностью блеснете по самые немогу.

Добавлено через 3 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Никаких завязок на глобальные объекты не должно быть и в помине.
С каких делов? К примеру глобальная коннекция к БД или к сокету? Ее тоже при закрытии одной формы для всех уничтожать будете? Или весь набор справочников тоже на каждую форму тащить будете?
Может с таких что вам эти worst practicles внушили чтобы впарить GC-гуано?
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,892
16.12.2018, 16:27
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
НА самом деле это ограничение которое надо соблюдать. Т.е. оно не вычисляется а положение точек меняется так чтобы это расстояние было заданным. Т.е. это сущность данных точно так же редактируемая и т.д., а для вычисляемых размеров существует сущность которая хранит настройки отображения и т.д. или опять же ограничения на минимально/максимально допустимые и т.д. Ну и опять же для любого элемента чертеж существует элемент UI который тоже как не крути сущность которую тоже нужно при этом удалять.
Не пытайтесь увиливать от признания того факта что GC просто абсолютно непригоден для подобных задач. А то в результате ваших потуг как то переиначивать задачу, вообще своей безграмоностью блеснете по самые немогу.
В каком месте это "ограничение"? Расстояние между двумя точками - функция от этих двух точек. Если вам нужны дополнительные свойства (цвет линии, другие визуальные отличия), то можно расстояние сделать и сущностью. Зависимой от обеих точек. С удалением точек, удалится и сущность "расстояние". В чём противоречие и увиливание? Кстати, вы же в курсе про Value Types?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
С каких делов? К примеру глобальная коннекция к БД или к сокету? Ее тоже при закрытии одной формы для всех уничтожать будете?
Может с таких что вам эти worst practicles внушили чтобы впарить GC-гуано?
Какая ещё "глобальная коннекция"?))))) Понадобились данные? Подключились к СУБД, взяли что надо, закрыли подключение. Всё. ADO.NET подключения хранит в пуле, так что всё крайне эффективно. Или ваш дофига профессионализм (явно колхозный) говорит о том, что подключение надо удерживать вечно?)))

Когда создаётся форма, то формируется и ViewModel для неё. Данные для неё берутся откуда надо: напрямую из СУБД или из кешей. Но не по ссылке, а копируются. Когда форма закрывается, то и ViewModel становится не нужна. GC убирает обоих. Никаких проблем. Никаких ручных занулений ссылок.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
16.12.2018, 16:46
Цитата Сообщение от Usaga Посмотреть сообщение
В каком месте это "ограничение"?
Вы вообще слышали когда нить такой термин как "набор ограничений положения элементов"?
Цитата Сообщение от Usaga Посмотреть сообщение
С удалением точек, удалится и сущность "расстояние"
А если надо удалить одну точку а вторую оставить? Сущность "расстояние" при этом тоже должно удалится потому что не может одним концом висеть в воздухе.

Добавлено через 3 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Какая ещё "глобальная коннекция"?)))))
Для получения живых обновлений данных к примеру.

Добавлено через 1 минуту
Цитата Сообщение от Usaga Посмотреть сообщение
Когда форма закрывается, то и ViewModel становится не нужна
Справочники которые к куче форм лепятся тоже каждый раз перекачивать и т.д. в полном объеме вместо того чтобы между формами расшарить?

Добавлено через 10 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Расстояние между двумя точками - функция от этих двух точек
Положение точек это точно так же система уравнений заданных ограничений (расстояний и т.д.).

Добавлено через 1 минуту
Цитата Сообщение от Usaga Посмотреть сообщение
Кстати, вы же в курсе про Value Types?
Они причем до взаимосвязей между сущностями?
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,892
16.12.2018, 16:52
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вы вообще слышали когда нить такой термин как "набор ограничений положения элементов"?
Ограничений чего? На уровне бизнес-логики или GC?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А если надо удалить одну точку а вторую оставить? Сущность "расстояние" при этом тоже должно удалится потому что не может одним концом висеть в воздухе.
Просто забыли ссылку на эту сущность и всё.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Для получения живых обновлений данных к примеру.
Как это противоречит идее ViewModel?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Справочники которые к куче форм лепятся тоже каждый раз перекачивать и т.д. в полном объеме вместо того чтобы между формами расшарить?
Ссылки на справочники легко шарятся через ViewModel. Но ссылки на эти справочник не протекают через ViewModel. Так что всё чётко.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Положение точек это точно так же система уравнений заданных ограничений (расстояний и т.д.).
Система уравнений над заданными переменными, так ведь?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Они причем до взаимосвязей между сущностями?
Расстояние можно задать не отдельной сущностью, а значимыми типом. Тогда GC вообще будет не при делах.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
16.12.2018, 17:06
Цитата Сообщение от Usaga Посмотреть сообщение
Расстояние можно задать не отдельной сущностью, а значимыми типом.
Не получится. Потому что оно ссылается на элементы. Ну и при этом там много других дел кроме самого числа хранится.
Цитата Сообщение от Usaga Посмотреть сообщение
Тогда GC вообще будет не при делах.
Та то что он вообще нигде не при делах это и ежу понятно. Вопрос в том что иерархию по любому как то разбирать придется. Иначе где то потечет. Те же value types сырые тоже в массивы динамические запихивать надо, и если не удалять ненужные это утечка которую GC вообще не обнаружит. Совсем забыл что GC ваш с элементами массивов и т.д. вообще не умеет абсолютно ничего, и сами массивы объекты классов хранить тоже не умеют.
Т.е. вы просто пытаетесь сказать что GC для этого не предназначен?
Так я вам именно это и пытаюсь доказать - он вообще не предназначен для обработки иерархий взаимосвязей, которые возникают в подавляющем большинстве задач, а то для чего он годен актуально не более чем в 0,0001% случаев.
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,892
16.12.2018, 17:17
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Не получится. Потому что оно ссылается на элементы. Ну и при этом там много других дел кроме самого числа хранится.
С чего тут обязательна стала ссылка на сущности? Местный суррогатный ключ не можно применить, если надо?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Та то что он вообще нигде не при делах это и ежу понятно. Вопрос в том что иерархию по любому как то разбирать придется. Иначе где то потечет. Те же value types сырые тоже в массивы динамические запихивать надо, и если не удалять ненужные это утечка которую GC вообще не обнаружит. Совсем забыл что GC ваш с элементами массивов и т.д. вообще не умеет абсолютно ничего, и сами массивы объекты классов хранить тоже не умеют.
Т.е. вы просто пытаетесь сказать что GC для этого не предназначен?
Так я вам именно это и пытаюсь доказать - он вообще не предназначен для обработки иерархий взаимосвязей, которые возникают в подавляющем большинстве задач, а то для чего он годен актуально не более чем в 0,0001% случаев.
Вы вообще понимаете, что означает эта фраза "value types"?)) Судя по всему, не очень)
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
16.12.2018, 17:55
Цитата Сообщение от Usaga Посмотреть сообщение
Но ссылки на эти справочник не протекают через ViewModel.
Выбор значения из справочника типа на эти справочники вообще никак не завязан?

Добавлено через 4 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
С чего тут обязательна стала ссылка на сущности?
Ну к примеру с того что он должен как то идентефицировать те элементы между которыми указывает(или считает) размер. ну типа x1 и x2
Цитата Сообщение от Usaga Посмотреть сообщение
Местный суррогатный ключ не можно применить, если надо?
Да как ссылку не назови она ссылкой и останется, не зависимо от адресного пространства в котором она является адресом.
Так что в какой форме ссылки не задавай а разбирать инфраструктуру связей так или иначе придется.
Очевидно что GC в этом не помощник.

Добавлено через 1 минуту
Цитата Сообщение от Usaga Посмотреть сообщение
Система уравнений над заданными переменными, так ведь?
НУ вот да. и как раз ограничение задает значение этой функции и набор переменных которые должны ему соответсвтовать. Вот на эти переменные оно и должно так или иначе ссылаться.

Добавлено через 5 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Судя по всему, не очень)
Судя по всему вы нихрена просто не понимаете о чем говорите. Какие к глиняной маме Value Types если список параметров каждой сущности включая размеры и т.д. на скрин размером по высоте? Классы онли. Причем полиморфные классы, ибо типов ограничений там как собак нерезаных и все в одной системе участвуют и в одном чертеже присутсвуют.

Добавлено через 10 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Вы вообще понимаете, что означает эта фраза "value types"?))
Вы вообще понимаете что такое ограничение позиции и его суть? Некоторые из них кроме пары-тройки ссылок на элементы вообще содержат только свой тип - к примеру перпендикулярность, параллельность, совпадение, пересечение и т.д., другие же кроме ссылок еще и простыню параметров содержат.

Добавлено через 15 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Как это противоречит идее ViewModel?
Зачем держать кучу коннекций когда достаточно одной? Тоже самое касается справочников которые точно так же обновлябельны через оную единую коннекцию и расшариваемы между формами/зависимыми модулями данных. При этом (неожиданно) может существовать ограничение на количество одновременно активных коннекций к удаленному источнику.
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,892
17.12.2018, 17:13
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Выбор значения из справочника типа на эти справочники вообще никак не завязан?
Не обязательно. Можно снимать копию со справочника, можно заворачивать все данные формы (в том числе и справочники) во ViewModel, которую потом просто выбросить. Не забывайте, что завязывается форма на справочник, а не справочник на форму.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну к примеру с того что он должен как то идентефицировать те элементы между которыми указывает(или считает) размер. ну типа x1 и x2
Для этого не обязательно быть сущностью самостоятельной. Достаточно или ссылки держать на связываемые объекты или суррогатные ключи какие-то.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Да как ссылку не назови она ссылкой и останется, не зависимо от адресного пространства в котором она является адресом.
Так что в какой форме ссылки не задавай а разбирать инфраструктуру связей так или иначе придется.
Очевидно что GC в этом не помощник.
Суррогатный ключ - идентификатор - является, по сути, слабой ссылкой и никак не помешает GC убрать объект, если на того не останется ссылок. Это кем надо быть, что бы идентификатор от ссылки не отличить?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
НУ вот да. и как раз ограничение задает значение этой функции и набор переменных которые должны ему соответсвтовать. Вот на эти переменные оно и должно так или иначе ссылаться.
И в чём проблема?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Судя по всему вы нихрена просто не понимаете о чем говорите. Какие к глиняной маме Value Types если список параметров каждой сущности включая размеры и т.д. на скрин размером по высоте? Классы онли. Причем полиморфные классы, ибо типов ограничений там как собак нерезаных и все в одной системе участвуют и в одном чертеже присутсвуют.
Не, я не треплюсь бездоказательно, так что мне таких обвинений не надо, пожалуйста. Value Types прекрасно могут подойти к данной ситуации вне зависимости от количества полей.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вы вообще понимаете что такое ограничение позиции и его суть? Некоторые из них кроме пары-тройки ссылок на элементы вообще содержат только свой тип - к примеру перпендикулярность, параллельность, совпадение, пересечение и т.д., другие же кроме ссылок еще и простыню параметров содержат.
И в чём противоречие-то?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Зачем держать кучу коннекций когда достаточно одной? Тоже самое касается справочников которые точно так же обновлябельны через оную единую коннекцию и расшариваемы между формами/зависимыми модулями данных. При этом (неожиданно) может существовать ограничение на количество одновременно активных коннекций к удаленному источнику.
Ну так в этом и прикол ViewModel. Собрать все необходимые форме данные в один объект-источник, который потом выкинуть, как станет не нужны. И который сможет развязать зависимости между моделями \ справочниками и кодом формы.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
17.12.2018, 17:50
Цитата Сообщение от Usaga Посмотреть сообщение
И который сможет развязать зависимости между моделями \ справочниками и кодом формы.
Вот я вас и прошу объяснить как GC будет разрывать зависимости с источниками данных которые должны выжить после закрытия формы (справочниками коннекциями и т.п. внутренностями постоянно живущих модулей данных). Очевидно что GC в этом вопросе не помощник.

Добавлено через 5 минут
Цитата Сообщение от Usaga Посмотреть сообщение
если на того не останется ссылок
А в том то и прикол что убрать нужно объект на который есть ссылки.

Добавлено через 3 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
alue Types прекрасно могут подойти к данной ситуации вне зависимости от количества полей.
пример
C++
1
2
3
4
5
class TPerpendicular: public TConstraint{
public:
   const TLine *Line1,*Line;
    // виртуальные методы обеспечивающее построение уравнения и т.п.
};
Какие к глиняной маме value types для его замены?

Добавлено через 2 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
И в чём проблема?
Еще раз - удалить размер нужно при удалении одного из элементов с которыми он связан двунаправленными ссылками. т.е. оба элемента ссылаются на него точно так же как он на них.

Добавлено через 5 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Это кем надо быть, что бы идентификатор от ссылки не отличить?
Наверное надо быть Usaga чтобы не понимать что суть ссылки не изменена для любого адресного пространства, и к примеру не понимать того что ключ это точно такая же ссылка в адресном пространстве идентификаторов. А соответственно пытаться лепить какую то фигню вместо O(1) доступа там где переход Log(n) доступу по ключу ничего принципиально не меняет.

Добавлено через 2 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Можно снимать копию со справочника,
Зачем? Чтобы использовать как можно больше памяти и поиметь ненужный гемор с синхронизацией копий, которые абсолютно никак не убирают вопроса разрыв взаимосвязей, которые при этом точно так же останутся для обеспечения синхронизации копий?
Вот именно поэтому подход "налепить все таблицы на форму" в дельфе и называют быдлоформошлеством.

Добавлено через 16 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Достаточно или ссылки держать на связываемые объекты
Дак я вам о чем и говорю - он ссылается на связываемые объекты. Связываемые объекты при этом ссылаются на него. Точно так же на связываемые объекты и на сам размер ссылается чертеж. Нужно удалить размер при удалении одного из элементов на которые он ссылается.
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,892
18.12.2018, 18:06
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вот я вас и прошу объяснить как GC будет разрывать зависимости с источниками данных которые должны выжить после закрытия формы (справочниками коннекциями и т.п. внутренностями постоянно живущих модулей данных). Очевидно что GC в этом вопросе не помощник.
Никак. Связи от формы к источникам не будут учитываться. Т.е. ссылки из формы на разного рода коллекции\объекты. Достаточно отписаться от событий со стороны VM. А это, как правило, одно единственное событие (если брать для примера практики принятые в .NET). Так что проблемы тут и нет.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А в том то и прикол что убрать нужно объект на который есть ссылки.
Это вызывает какие-то сложности?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Какие к глиняной маме value types для его замены?
Если исключить полиморфное поведение и оставить только данные, то можно классы заменить структурами. Структуры в куче не отсвечивают, что сильно снижает memory pressure. Это не всегда возможно, конечно же, но механизм такой есть. Нужно пользоваться. В случае с объектом ограничением, какие проблемы вы видите, что он ссылается на объекты геометрии для выполнения своих рассчётов?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Еще раз - удалить размер нужно при удалении одного из элементов с которыми он связан двунаправленными ссылками. т.е. оба элемента ссылаются на него точно так же как он на них.
А элементы геометрии разве обязаны ссылаться на объект размера? Но даже если и надо такие двунаправленные связи иметь, то да, придётся пройтись по трём участникам связей и занулить их ссылки. В С++ это элегантнее делается?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Наверное надо быть Usaga чтобы не понимать что суть ссылки не изменена для любого адресного пространства, и к примеру не понимать того что ключ это точно такая же ссылка в адресном пространстве идентификаторов. А соответственно пытаться лепить какую то фигню вместо O(1) доступа там где переход Log(n) доступу по ключу ничего принципиально не меняет.
Это один из возможных вариантов ухода от прямых ссылок (который вряд ли вообще нужен). Смею заметить, что ссылка остаётся ссылкой в лбом языке. Так что в С++ их точно так же нужно будет разрывать, чтобы выкинуть объект. Только делать это нужно будет ручками.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Зачем? Чтобы использовать как можно больше памяти и поиметь ненужный гемор с синхронизацией копий, которые абсолютно никак не убирают вопроса разрыв взаимосвязей, которые при этом точно так же останутся для обеспечения синхронизации копий?
Вот именно поэтому подход "налепить все таблицы на форму" в дельфе и называют быдлоформошлеством.
Ничего синхронизировать не надо. Справочники в 99% случаев только читаются. Копию справочника можно будет смело выкинуть вместе с формой. Но это всё будет нужно только, если будет связь от справочника к форме (т.е. справочник на форму будет держать ссылку), чего практически никогда не бывает. И какая связь с дельфи и быдлоформошлёпством?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Дак я вам о чем и говорю - он ссылается на связываемые объекты. Связываемые объекты при этом ссылаются на него. Точно так же на связываемые объекты и на сам размер ссылается чертеж. Нужно удалить размер при удалении одного из элементов на которые он ссылается.
Проходим по всем участникам и режем ссылки.

Я правильно понял, что вы начали придумывать новый пример бесполезности GC?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
18.12.2018, 23:29
Цитата Сообщение от Usaga Посмотреть сообщение
Проходим по всем участникам и режем ссылки.
Ну вот надежнее этого проходим по всем участкам без которого GC не может убрать эти участников система и не будет.
Именно потому что без прохода по участникам GC бесполезен.
А с проходом просто не нужен потому что проход способен сделать все то же что и GC только начиная от затронутого участника, а соответственно проходя только по затронутой части графа сылок, а не по всему графу, причем гарантированно не более одного раза за жизненный цикл участника.
Цитата Сообщение от Usaga Посмотреть сообщение
Я правильно понял, что вы начали придумывать новый пример бесполезности GC?
Это все тот же пример который вы не в состоянии осилить.

Добавлено через 1 минуту
Цитата Сообщение от Usaga Посмотреть сообщение
Но это всё будет нужно только, если будет связь от справочника к форме (т.е. справочник на форму будет держать ссылку), чего практически никогда не бывает.
На самом деле она двунаправленная и всегда.

Добавлено через 50 секунд
Цитата Сообщение от Usaga Посмотреть сообщение
Ничего синхронизировать не надо.
Справочник обновился с другой машины. Без обновления копии целостность данных нарушена.

Добавлено через 8 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Только делать это нужно будет ручками.
Ну это в языках с GC ручками. А в С++ можно и автоматически. Если точнее - то при помощи кастомных библиотечных средств которые запускаются автоматически при разрыве ссылки.

Добавлено через 5 часов 8 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Это один из возможных вариантов ухода от прямых ссылок (который вряд ли вообще нужен). Смею заметить, что ссылка остаётся ссылкой в лбом языке.
Смею заметить что понятие ссылки оно от языка вообще не зависимо так как и от адресного пространства. Вообще ссылка это данные о местонахождении каких либо данных а попутно и информация о факте их существования. Не надо это путать с технической реализацией ссылки (вернее сужать общее понятие ссылки до одного частного случая) для для объекта в памяти в виде указателя. Так что ключи и т.д. - это тоже виды ссылок только в другом адресном пространстве и с другим алгоритмом доступа.
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,892
19.12.2018, 07:21
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Именно потому что без прохода по участникам GC бесполезен.
Бесполезность не доказана. С нас только разорвать ссылки, чтобы показать, что объект стал не нужен. Дальше вступает в дело GC. Более того: данный пример крайне редкий. В основном, ссылки никто не трогает. Так что этот "минус" явно натянут.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Это все тот же пример который вы не в состоянии осилить.
Ещё как в состоянии. Только бесполезности GC он не демонстрирует. Вообще никак.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
На самом деле она двунаправленная и всегда.
Нет. Контрол на форме получает ссылку на "источник данных" для отображения данных из этого источника. Сам "источник" ссылок на контрол не держит. Значит ничто не помешает эту форму убрать. Ссылка на форму сформируется только, если форма подпишется на какое-то событие. Так что не двунаправленные и не всегда.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Справочник обновился с другой машины. Без обновления копии целостность данных нарушена.
Копия снимается с оригинала при открытии формы. Как правило, справочники не нужно поддерживать в актуальном состоянии в каждый момент времени. Только на время существования формы. А там, где нужно, можно по таймеру\событию обновлять. Это не есть проблема и уж тем более ни какая-то неразрешимая и как-то влияющая на GC (или наоборот).

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну это в языках с GC ручками. А в С++ можно и автоматически. Если точнее - то при помощи кастомных библиотечных средств которые запускаются автоматически при разрыве ссылки.
Т.е. написание кастомных библиотек - это круто, а GC, который сам всё может - фуфло? Приведённый вами тут пример крайне редко встречается. А там, где встречается, то какие могут быть проблемы обнулить пару ссылок? Вы любые возможности изыскиваете, что придумать и подтянуть за уши недостатки GC?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Смею заметить что понятие ссылки оно от языка вообще не зависимо так как и от адресного пространства. Вообще ссылка это данные о местонахождении каких либо данных а попутно и информация о факте их существования. Не надо это путать с технической реализацией ссылки (вернее сужать общее понятие ссылки до одного частного случая) для для объекта в памяти в виде указателя. Так что ключи и т.д. - это тоже виды ссылок только в другом адресном пространстве и с другим алгоритмом доступа.
Я этот момент не оспариваю. Но природа таких ссылок иная. И вполне применимая, как вариант слабой ссылки. Есть ключи с обеих сторон, но для GC они не являются препятствием. Так что, противоречий тут особо и нет.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
19.12.2018, 08:48
Цитата Сообщение от Usaga Посмотреть сообщение
Бесполезность не доказана. С нас только разорвать ссылки, чтобы показать, что объект стал не нужен. Дальше вступает в дело GC. Более того: данный пример крайне редкий. В основном, ссылки никто не трогает. Так что этот "минус" явно натянут.
Как это не доказана если GC не способен решить задачу уборки без ручного прохода по участникам?

Добавлено через 4 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
который сам всё может - фуфло
Дык ниче оный GC не может как видим. А библиотеки реально могут все. Потому что GC рассчитан на одну задачу, актуальность которой в районе нуля. А вот библиотеки позволяют кастомизировать автоматику под любую задачу. К примеру задача подобных обходов которые с GC делается только вручную пишется один раз потом используется с любым набором взаимосвязей. И так под любой класс задач, при этом есть возможность совмещения разных автоматов для разных объектов в одной программе. А GC работу всех этих автоматов заставляет делать вручную.

Добавлено через 52 секунды
Цитата Сообщение от Usaga Посмотреть сообщение
Приведённый вами тут пример крайне редко встречается
На каждом шагу он встречается. Смесь композита и обсервера и лайтвеигхт за компанию - основа современной разработки особенно в плане GUI. А вот задачи с которыми способен справится GC действительно редкость.

Добавлено через 2 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Только на время существования формы.
За время существования формы они могут сто раз обновится в т.ч и с другой машины. При этом на каждой долбанной форме на каждое долбанное лукап-поле стоит кнопка добавить которая очень часто открывает другую форму для редактирования справочника. БУдем кучу бесполезных копий плодить или все таки будем делать все как положено по лайтвеигхту?

Добавлено через 17 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Есть ключи с обеих сторон, но для GC они не являются препятствием.
Только опять же ключи не вычистятся из объектов без обхода. При этом невозможно подвесить бинд на ключах с обеих сторон - GC его тут же уберет. А если оставить на него какую либо ссылку опять же потребуется ручной проход для его удаления. Так что ключи в данном случае не более чем тормозистор доступа а не решение задачи уборки.
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,892
19.12.2018, 09:07
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Как это не доказана если GC не способен решить задачу уборки без ручного прохода по участникам?
Только в оговоренном тут случае. Да и то потому, что не имеет права в такой ситуации что-то выкидывать. Но и решение не сложное.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Дык ниче оный GC не может как видим.
Один редкий случай - теперь "всё"? С каких пор? Не сильное ли это преувеличение?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Потому что GC рассчитан на одну задачу, актуальность которой в районе нуля.
Это в вашем вымышленном мире так.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
На каждом шагу он встречается. Смесь композита и обсервера и лайтвеигхт за компанию - основа современной разработки особенно в плане GUI. А вот задачи с которыми способен справится GC действительно редкость.
Сколько работаю с WinForms, ещё ни разу не приходилось вручную ссылки разрывать. И система-то у нас из сотен форм. Что я делаю не так?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
За время существования формы они могут сто раз обновится в т.ч и с другой машины. При этом на каждой долбанной форме на каждое долбанное лукап-поле стоит кнопка добавить которая очень часто открывает другую форму для редактирования справочника. БУдем кучу бесполезных копий плодить или все таки будем делать все как положено по лайтвеигхту?
Справочники редактируются из одного места - админки. В остальных случаях, они read only и могу быть не сильно актуальными в течении сессии работы с формой. Это уже от требований к функционалу зависит. Тут с GC вообще никакой связи. То, что форма ссылку держит на справочник не "подвесит" эту форму, ибо справочник не обязан держать ссылку на форму. Это может быть только во ViewModel, но там ссылка на форму может быть одна единственная, которую задиспозить не проблема.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
19.12.2018, 09:16
Цитата Сообщение от Usaga Посмотреть сообщение
С нас только разорвать ссылки, чтобы показать, что объект стал не нужен
Как у вас все запущено. Полный ручник. А нам вообще ниче не делать можно - только типы ссылок указать при объявлении. Остальное делает автоматика. Даже с искоробочной заплаткой для бедных. А средства для богатых еще и позволяют пнуть объект который нужно убить раньше чем он выйдет из скопа. Причем пнуть он может себя и сам из своего метода. А все остальное опять же делает автоматика.

Добавлено через 1 минуту
Цитата Сообщение от Usaga Посмотреть сообщение
Справочники редактируются из одного места - админки
ВВы адресную книгу к примеру клиенту предлагаете только из админки редактировать или список его телефонов?
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,892
19.12.2018, 09:16
Fulcrum_013, нигде никакого ручника нет. Ещё раз для повторюсь, что такая практика дико редка, если вообще применяется.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А нам вообще ниче не делать можно - только типы ссылок указать при объявлении.
Я дико рад за "вас". Только бесполезность GC мы так и не увидели.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
19.12.2018, 09:17
Цитата Сообщение от Usaga Посмотреть сообщение
ибо справочник не обязан держать ссылку на форму
Обязан. Для того чтобы отдавать апдейты.

Добавлено через 1 минуту
Цитата Сообщение от Usaga Посмотреть сообщение
Только бесполезность GC мы так и не увидели.
НУ вы же сами сказали - только вручную. Т.е. GC бесполезен в плане уборки мусора.
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,892
19.12.2018, 09:20
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
ВВы адресную книгу к примеру клиенту предлагаете только из админки редактировать или список его телефонов?
Какая разница? Если требования позволяют не отслеживать изменения этого справочника, пока открыта форма, где этот справочник отображается и используется? Сиюсекундные обновления крайне редко где нужны. И даже если их реализовывать то как этому мешает GC?

Добавлено через 1 минуту
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Обязан. Для того чтобы отдавать апдейты.
Не обязан. Связь должна быть с ViewModel, которая одна и которая все ивенты от модели и справочников агрегирует.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
НУ вы же сами сказали - только вручную. Т.е. GC бесполезен в плане уборки мусора.
Я сказал только про этот редкий случай. Не надо раздувать отдельный случай до всей практики использования GC.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
19.12.2018, 09:46
Цитата Сообщение от Usaga Посмотреть сообщение
Ещё раз для повторюсь, что такая практика дико редка, если вообще применяется.
Она на каждом шагу даже в серьезном CURD. Не говоря уже про разработку более серьезных задач, которой занимаются исключительно квалифицированные специалисты.
А ото вот быдлоформошлепство которое вы предлагаете как то шеволится разве что на дне индустрии. Для неквалифицированного дна GC кстати и позиционировался в манаджедах. Потом попытались с его помощью фреймверк слепить и вот так же как вы вместо решения задачи начали подгонять под GC. Посмтрели на результат - отстой но для дна пойдет - они все равно нихрена не понимают а особенно если разрекламировать. А вы уши развесили и доширак этот везде пихать пытаетесь туда где его на пушечный выстрел подпускать нельзя.

Добавлено через 6 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Я сказал только про этот редкий случай
К примеру в САПР других случаев просто не бывает. В геймдеве тоже. В UI фреймверках и CURD тем более - тут датабиндинг вообще на каждом шагу. Так что на самом деле редкий случай это то где вообще GC применим. А где не заменим более эффективными средствами - так такой случай только один и тот никто никогда не пользует, потому что строительство иерархий из примитивных пассивных хранилищ данных осталось в 60-ых годах прошлого века.

Добавлено через 16 минут
Цитата Сообщение от Usaga Посмотреть сообщение
Сиюсекундные обновления крайне редко где нужны.
Вообще то нужны обновления по инициативе источника. Это гораздо более эффективный подход чем спамить источник/сервер запросами на обновление. А вот именно для этого нужна ссылка со стороны источника. При этом это такой подход позволяет еще и копий не плодить. Датабиндинг подразумевает как обновление данных источника по инициативе формы так и формы по инициативе источника. А из всего остального биндинг как из говна пуля.
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,892
19.12.2018, 11:57
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Она на каждом шагу даже в серьезном CURD. Не говоря уже про разработку более серьезных задач, которой занимаются исключительно квалифицированные специалисты.
А ото вот быдлоформошлепство которое вы предлагаете как то шеволится разве что на дне индустрии. Для неквалифицированного дна GC кстати и позиционировался в манаджедах. Потом попытались с его помощью фреймверк слепить и вот так же как вы вместо решения задачи начали подгонять под GC. Посмтрели на результат - отстой но для дна пойдет - они все равно нихрена не понимают а особенно если разрекламировать. А вы уши развесили и доширак этот везде пихать пытаетесь туда где его на пушечный выстрел подпускать нельзя.
Нет, она мало где. Даже в серьёзном CRUD. И не нужно приплетать всякую фигню и обвинения в непрофессионализме. GC - инструмент хороший и практичный. Это вы у нас тут доказательств нормальных (обратного) привести не смогли. Напомню вам: начинали вы с того, что приложение с GC вообще работать не будет. А сейчас уже вы вокруг одного сценария сосредоточились, где вручную ссылки врать надо и всё. И то, что в данном случае, помешает использовать WeakReference? Как уж вертитесь под ногой.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
К примеру в САПР других случаев просто не бывает. В геймдеве тоже. В UI фреймверках и CURD тем более - тут датабиндинг вообще на каждом шагу. Так что на самом деле редкий случай это то где вообще GC применим. А где не заменим более эффективными средствами - так такой случай только один и тот никто никогда не пользует, потому что строительство иерархий из примитивных пассивных хранилищ данных осталось в 60-ых годах прошлого века.
Не рассказывайте мне про UI фреймворки. Я не первый день с ними работаю. И до сих пор ни разу не приходилось ссылки обнулять, хотя и байндинги использую и обновление информации (справочники) и всё остальное. Почему так? Ведь из ваших рассуждений следует, что наша ИС должна падать с OutOfMemoryException уже через пару минут. Но этого не происходит. Почему? Опять обвините в том, что наше приложение - HelloWorld?))

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вообще то нужны обновления по инициативе источника. Это гораздо более эффективный подход чем спамить источник/сервер запросами на обновление. А вот именно для этого нужна ссылка со стороны источника. При этом это такой подход позволяет еще и копий не плодить. Датабиндинг подразумевает как обновление данных источника по инициативе формы так и формы по инициативе источника. А из всего остального биндинг как из говна пуля.
Инициатива источника не подразумевает ссылку на КАЖДЫЙ из таких источников. Для формы источник может быть один - ViewModel, который выступит агрегатором событий от этих источников. Для формы это будет всего лишь одна связь. Одна, Карл! Это вообще никак не мешает использовать GC. Вообще, Карл!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.12.2018, 11:57

Kotlin для Android
Здравствуйте, знаю Java SE на приличном уровне, но решил, что для разработки Android приложения лучше подойдет Kotlin, подскажите...

[Kotlin] ACM ICPC
Котлин уже попал в список языков чемпионата мира по программированию (ACM ICPC). Думаю, очень хорошие перспективы у этого языка.

Kotlin lateinit переменная
синтаксис на Kotlin. есть переменная lateinit , но когда при getApiServisce() я проверяю на null происходит фатальная ошибка lateint...

Простая задача по Kotlin
Дана непустая последовательность ненулевых целых чисел. Используя функцию, определить, сколько раз в этой последовательности меняется знак....

Как учить Kotlin и стоит ли?
Добрый день, вообще я фрилансер пишу сайты на таких технологиях HTML, CSS, jQuery, WordPress, сейчас для практики делаю для себя блог на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru