• Сегодняшний мир — это amd64, armv7 и aarch64. Всё остальное мертво, Джим
    0
    Itanium умер потому что это была попытка продвинуть новую архитектуру в нишу, которая уже была занята другими архитектурами. Тут никакая реклама не поможет: софта-то нет!
    Мне кажется, тут аргумент про софт звучит неубедительно, потому что на момент появления Itanium в нем имелась аппаратная эмуляция x86 архитектуры (да, я знаю, она была медленной, но она была), и очень быстро появились ОС под IA64, включая Windows.
  • Сегодняшний мир — это amd64, armv7 и aarch64. Всё остальное мертво, Джим
    0
    Я бы не назвал, х86_64 недавней платформой, 13 лет немало времени для развития экосистемы — другое дело, что популярность она начала набирать сравнительно недавно, это верно. Но вообще это сравнение некорректное — на х86_64 по-прежнему работают приложения под х86_32, т.е. на момент появления 64-разрядной версии уже была куча готового софта. Добавление «родной» поддержки х86_64 — как только появились компиляторы — производилось под GNU/Linux потому что это было нетрудно, и под Windows по остаточному принципу. Поправьте меня если ошибаюсь, но полагаю, что под aarch64 та же ситуация с софтом.

    Я не знаю истории с Alpha, но полагаю, что именно Itanium умер просто потому, что Intel плохо вкладывались в рекламу и продажи. Во-первых, я ни разу не видел его в магазинах, хотя, признаться, мне было бы интересно его купить просто из любопытства, и думаю ни мне одному (разумеется при разумной цене) — с софтом, спасибо FOSS, проблем не будет. Во-вторых, пока здесь не упомянули его, я даже и не знал, что он до сих пор существует! Я был абсолютно уверен, что после неудачи в районе 2002 года они прекратили производство — везде о нем расписывается в тонах R.I.P. И только сейчас я обнаружил, что последний выпуск был всего несколько лет назад. А все потому, что Intel не занимается его рекламой, конференциями, бенчмарками на нем, не упоминает его как бы между прочим в беседе на другие темы — такое ощущение, будто они его просто сделали, и забыли!
  • Сегодняшний мир — это amd64, armv7 и aarch64. Всё остальное мертво, Джим
    +1
    Ах, спасибо, теперь понятно.
    Вы не поверите, в одной крупной компании, свой кастомный графический движок так все игровые ресурсы читает.
    Ну это не отменяет элементарности этой ошибки :) Скорее всего движок был написан очень давними программистами, а те, кто работают сегодня, знают что для починки багов потребуется решить много проблем, в частности возможно сломается совместимость с форматами — поэтому они или их руководство не решаются туда лезть. Я думаю, рано или поздно им придется заняться этой проблемой. В частности потому, что графический движок — как раз таки софт, особенно заинтересованный в работе с размерами более 32-битных (я молча полагаю, их движок 32-битный, поскольку 64-битные ОС начали набирать свою популярность относительно недавно).
  • Сегодняшний мир — это amd64, armv7 и aarch64. Всё остальное мертво, Джим
    0
    Хм… Я вас не понял. Вы хотели сказать «сэкономленные деньги вычитаются из стоимости проприетарных продуктов»? Нет, я могу предположить, что «добавляются» в том смысле, в каком можно складывать отрицательные числа, но интуиция мне подсказывает, что вы не об этом говорите.
  • Сегодняшний мир — это amd64, armv7 и aarch64. Всё остальное мертво, Джим
    0
    Я писал «не используют int32_t» — оно понятно, чистые int и long имеют лишь четко заданную нижнюю границу. То, что вы сейчас перечислили, забота компилятора, за исключением 1) манипуляций с указателями, в предположении от 32-битности, 2) прямое чтение структур из файла (ну это — кроме как по недосмотру — вообще детская ошибка, очевидно что надо выравнивание отключать), 3) ассемблерные вставки, 4) сдвиговые операции. Все перечисленное будет приводить к пробемам даже при миграции х86_32 → х86_64, не говоря уже об армах, следовательно автор все-таки говорил о чем-то другом.
  • Сегодняшний мир — это amd64, armv7 и aarch64. Всё остальное мертво, Джим
    0
    И… в стоимость чего включается работа программистов, комьюнити, и т.п. GNU/Linux?
  • Сегодняшний мир — это amd64, armv7 и aarch64. Всё остальное мертво, Джим
    +5
    Прошу прощения, просто я похоже единственный здесь, кто не понимает проблемы. Пожалуйста, объясните мне кто-нибудь, в чем сыр-бор? О какой поддержке речь — мы же не на ассемблере кодим, взял, скомпилировал с GCC, и вот приложение уже работает на другой архитектуре.

    Нет, я могу предположить, что где-то могут быть закодены операции, предполагающие, скажем, 32-разрядность, но если они явно не используют, к примеру, int32_t, это чревато проблемами на 64 разрядных архитектурах тоже, и будет пофиксено независимо от поддержки, скажем 16-битной архитектуры (если таковая существует). Так же я мог бы предположить, что автор говорит про софт с закрытыми исходниками, но маловероятно, учитывая что он в число «поддерживаемых архитектур» внес АРМ и х86 — и существует очень мало приложений с закрытым кодом, поддерживающих обе.

    Так в чем посыл то?
  • Прогулка с динозаврами: как я адаптировал веб-приложение под IE 7
    0
    И да, к слову, даже если говорить только о перечисленных символах — стрелка «→» нередко бывает нужна, когда кому-нибудь по чату объясняешь последовательность действий, например в какие меню зайти в программе, и куда нажать.
  • Прогулка с динозаврами: как я адаптировал веб-приложение под IE 7
    0
    Нет, ну конкретный символ из только что перечисленных может и нечасто нужен. Вот только это просто пример, а символов тысячи, и любым из них «российский пользователь» может попытаться воспользоваться.

    Вы не представляете, как раздражает, когда на каком-нибудь кривом сайте во время общения по привычке вводишь специальный символ, а тот либо шлет какую-то кашу (в Quora есть такая проблема), либо выдает что-нибудь вроде «Ошибка записи в базу данных» (такая проблема на сайте МТИ).
  • Зачем нужен свободный код и как на нем зарабатывать
    0
    Решил добавить — я только что случайно вспомнил ситуацию противоположную описанной мною выше, т.е. проект теряющий пользователей из-за закрытости. Дело было лет 4-5 назад: я, будучи тогда начинающим студентом, искал опенсорсный проект — попрактиковаться.

    Развлекаясь, я набрел на игру, называемую Urban Terror — что-то вроде клона Counter-Strike'а, но с паркуром. Игра мне понравилась, однако имела большую проблему, делающую ее почти неиграбельной — боты в ней были отвратительно тупыми (онлайновые игры я не любил, плюс, кажется, тогда у меня был очень плохой интернет).

    Порыскав по форумам игры, я обнаружил, что это известная беда, и разработчики не считают ее сколь-нибудь приоритетной, и потому ей просто некому заниматься. Надо сказать, я был абсолютно уверен, что код игры в публичном доступе, потому что набрел на нее благодаря многочисленным ссылкам про игры на GNU/Linux. «Отлично!» — подумал я — «Это как раз та проблема, которая мне интересна, и которую я могу постараться решить, получив кучу полезного опыта!».

    Как думаете, с какого момента я ее удалил, и совершенно выкинул из головы? Когда выяснилось, что проблема, очень мешавшая геймплею, и «неинтересная мэйнтейнерам проекта», не может быть решена сторонним человеком, поскольку код игры никогда не был открыт.
  • Будущее файловых систем Linux
    0
    Соглашусь. Моя домашняя система стоит на btrfs, плюс внешний диск на нем же. Качество работы отвратительное — очень часто бывает, что раздел внешнего диска отваливается, и либо α) не монтируется обратно, с какой-то ошибкой чтения (причем второй раздел на нем, *не-btrfs*, работает великолепно, то есть проблема не в диске) до — sick! — полной перезагрузки системы (поверхностное расследование причин не дало никаких результатов), либо β) монтируется без проблем, но… часть файлов отсутствует! То есть они физически есть, и путем магических манипуляций с перемонтированием системы они возвращаются на место, но это происходит далеко не сразу.

    Что да самой системы, то ее загрузка часто виснет на «scanning for btrfs filesystems».

    Я могу предположить, что проблемы решены в последних драйверах, у меня все-таки LTS-релиз, наверное в последних версиях софта и ядер много баг-фиксов, и все работает намного стабильнее. Так же предполагаю, что зависание на «scanning for…» может быть связано с очень убитым ноутом. Но все же я думаю, что когда буду вновь форматировать разделы, например после покупки десктопа — к черту эту btrfs, уж лучше поставлю старую надежную ext4.
  • Да, я пишу десктопные приложения под Windows
    0
    Думаю, дальше смысла продолжать диалог нет, но напоследок ответьте мне на один вопрос, возникший из вашего последнего комментария.

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

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

    (отвечу за себя — в приведенном случае я считаю отличие исключительно формальным)
  • Да, я пишу десктопные приложения под Windows
    0
    Нет, не можете, ваше утверждение ничем не обосновано. Мое обосновано десятком сообщений в течении которых вы пытаетесь из меня выбить непонятно что, вероятно какую-нибудь ошибку, чтобы станцевать на ней. И я не могу судить вас за подобное желание, вот только вы не сможете это сделать имея очень приблизительное понимание о предмете разговора.
  • Да, я пишу десктопные приложения под Windows
    –1
    Такая книга есть, и я рад, что наличие еще двух авторов не ввело вас в заблуждение.

    Ее первая глава имеет прямое отношение к базовому пониманию того, как работает мат. моделирование, и которое у вас абсолютно отсутствует.
  • Да, я пишу десктопные приложения под Windows
    0
    У них есть в первую очередь бизнес-задача, а только потом они порождают модель, которая ее представляет. У вас же наоборот.
    Да не наоборот! Есть предзаданные мат. структуры, но сами по себе, в изолированном вакууме, они не несут никакой пользы! Именно когда у вас возникает эта «бизнес-задача», вы можете вспомнить что-то из этого, придать абстрактным структурам смысл.

    Послушайте, у вас правда отсутствует даже базовое понимание предмета. Я не красная кнопка, поэтому поступим так: следующее ваше сообщение в данном треде, на которое я отвечу, будет начинаться со слов «Я внимательно прочел первую главу Конкретной Математики Д.Кнута».
    Вы можете что угодно не думать[…]
    Благодарю за совершенно сухой, не несущий ни возражения, ни подтверждения, комментарий на мои измышления.
    Я спрашивал, используют ли переменные u и v элементы из одного множества. Если да, то это противоречит вашему утверждению о том, что переменные с разной семантикой не могут использовать элементы из одного множества.
    Но вот эта цитата показывает, что должно быть вам стоит еще раз перечитать текст, отвеченный прошлой цитатой, особенно ту часть, где я никак не моделировал граф в виде множеств.
  • Да, я пишу десктопные приложения под Windows
    0
    Какой-то замкнутый круг. Смысл элементов множества определяет множество. А откуда этот смысл берется в первую очередь?
    «В первую очередь» есть некоторые предзаданные мат. структуры, например группа под какой-то операцией. За ними есть широко проработанная мат. теория, ваша задача только подставить, к примеру, под элементы этой группы и ее операцию, что-то имеющее реальный смысл. Чем чаще вы будете подобным заниматься, тем легче это будет даваться — в идеале ваш мозг сможет делать классификацию на автомате, как он отличает тапочки от ботинок.
    […] У меток — переменных — u и v отчетливо различный смысл: одна указывает на начало, другая указывает на конец нужного пути. Однако элементы в них принадлежат к одному и тому же множеству V… или нет?
    Ах, я понял, что вы хотите сказать. Это хороший вопрос.

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

    Отвечая на ваш вопрос: я считаю, что точки u и v принадлежат к одной мат. структуре. В данном случае моих знаний не достаточно, чтобы сказать, как, и можно ли, представить граф именно множеством, но обращаю ваше внимание, что во-первых математика не ограничена Теорией Множеств, во-вторых я даже и близко не профессиональный математик, и в-третьих существует много мат. объектов со схожей структурой — в таких случаях говорят, что они изоморфичны — и факт моего незнания изоморфичного направленному графу объекта никак не подтверждает или опровергает его существование.
    Для меня очевидно, что, несмотря на элементарность этих вещей, вы до сих пор не смогли дать ответа, прямо связанного с вопросом.
    Правильно сформулированный вопрос — половина ответа.
  • Да, я пишу десктопные приложения под Windows
    0
    Семантика чего?
    Семантика, суть, смысл элементов некоего множества. Он зависит только от вас, что вы придумаете. Вы можете использовать элементы {1…10} для нумерации бананов на столе, а можете для перечисления лишних нейтронов в материале китайской игрушки.
    Ну то есть когда в задаче на графы пишут u, v ∈ V, и у u и v — разная семантика (одна — стартовая вершина, другая — конечная), то на самом деле, они принадлежат к разным множествам, и постановка задачи неверна?
    Нет, это аналогично, как сказать, что в некотором множестве чисел нуль стартовый элемент, а 4294967295 — конечный. Разумеется, если вы их все используете для кодов возврата, то их порядок не имеет никакого смысла. А в варианте с графами это не так.
    Знаете поговорку про молоток и гвозди?
    Если вы про поговорку о микроскопе и гвоздях, то не вижу совершенно никакой связи. И если вам так не кажется, может быть это все-таки вы чего-то не знаете ;)
    То, что вы нашли для себя какое-то решение, еще не значит, что (а) предыдущее решение было неверным, (б) ваше новое решение верно и (ц) завтра вы не найдете еще более другого решения.
    Я нигде не говорил, что математика — это решение самое лучшее из существующих, оно самое лучшее из известных и перепробованных мной. Вот каверзный вопрос на засыпку: у вас в профиле написано, что вы архитектор, я так понимаю, речь о программной архитектуре. Я из любопытства глянул ваш блог, и там в основном про .net (я правда не лазил глубоко). Я так полагаю, что у вас большой опыт разработки с ООП. А теперь представьте, что вам понадобилось написать что-то на функциональной, декларативной, иной парадигме — скажем, вам просто захотелось чего-то нового, и вы окунулись в другой язык. Как вы будете строить новую архитектуру без объектов и классов? (подсказка: надо смотреть на некие более общие принципы)

    Может для вас это не очевидно, но вы спрашиваете совсем элементарные вещи. Я повторюсь — почитайте первую главу Д.Кнута «Конкретная Математика». Именно первая — начиная со второй пойдет ад, но вас это не интересует, почитайте именно первую. Там автор приводит три относительно реальных примера — например про чувака, которому надо найти очередность среди храбрых суицидников, чтобы, оставшись последним, выжить — затем моделирует их, и решает. Там нет сложных формул, и это великолепный ключ к пониманию, как работает мат. моделирование.
  • Да, я пишу десктопные приложения под Windows
    0
    Тогда что же определяет семантику переменной?
    Семантика определяет множество, а переменная — некая абстрактная единица, могущая принимать значения этого множества. Если у вас две переменных с отличающейся семантикой, значит у них разные множества, даже если эти множества выглядят пересекающимися, или в самом деле пересекаются.
    Тогда вы должны бы понимать, что математическое моделирование — не единственный способ построения моделей, и не надо все к нему сводить.
    Верно, в самом начале карьеры я пытался следовать неким известным мне паттернам, я выше приводил пример, как я старался все инкапсулировать. Просто так вышло, что параллельно я из интереса налегал на математику, и ее связь с программированием. Непросто было, но чем больше я учился, тем чаще я обнаруживал, что очередная проблема в моем коде имеет простое соответствие, например, с теорией категорий.

    Вообще я не собирался писать этого комментария, но мне вспомнилась интересная и легкая статья, которую, полагаю, вам было бы любопытно почитать. Добрых снов.
  • Да, я пишу десктопные приложения под Windows
    0
    Две переменных с одной и той же областью видимости, обе из которых может содержать числа из одного и того же множества (и тольго из него) натуральных чисел, могут иметь разную семантику?
    Семантика определяет множество, а не множество определяет семантику.

    Боже, мне так трудно с вами спорить, честно. Я неплохо разбираюсь в мат. моделировании — конечно могло бы быть и лучше, но достаточно хорошо, чтобы обсуждать и пользоваться. Я вам могу отвечать, но вы будете к чему-нибудь придираться, и это может продолжаться до бесконечности. До бесконечности потому, что смоделировать можно что угодно — поверьте, математика не php, у нее нет маркетологов, большинство ее даже ненавидят, как и я когда-то. И чтобы оставаться на плаву веками, и улучшаться, она должна быть необычайно полезной. И что польза не счете, а именно в моделировании, вы можете видеть по постоянному улучшению абстрактных областей — теории множеств, теории категорий, теории групп.

    Я понимаю, что каверзные вопросы — нормальная часть любого процесса обучения, но я не преподаватель, поэтому, с вашего позволения, я на этом окончу разговор, и вернусь к написанию диплома.
  • Да, я пишу десктопные приложения под Windows
    –1
    Это ожидание несколько не соответствует реальности, где у собеседника могут быть более важные дела.
  • Да, я пишу десктопные приложения под Windows
    0
    Во-вторых, информацию о том, что Trace настраивается и отключается, я вам дал существенно раньше, чем был ваш вывод.
    Да, виноват, я упустил про возможность отключения во время сборки.
    А в-третьих, я ожидаю, что человек, который делает какие-то безоговорочные суждения о предмете разговора, успел с этим предметом ознакомиться.
    Конечно же это была мысль вслух? Потому что в течении всей дискуссии муссировалась именно идея того, что собеседник знает о классе только непосредственно от вас.
  • Да, я пишу десктопные приложения под Windows
    0
    Упс, нет. В этот момент я перестал работать с парой, я стал работать с ее элементом, и с его возможным множеством значений. А дальше, внезапно, я делаю myPercent(myPair.item1) и myPercent(myPair.item2), и с чего вы взяли, что у них одинаковая семантика?
    Вы не улавливаете сути… Как я сказал, надо передавать полную структуру, если что-то не мешает сделать иначе — в данном случае мешает то, что даже, если вы реализуете функцию, как метод класса, она все равно будет внутренне использовать тот же метод, работающий с единичным элементом. Все, конец, это, так сказать, граничная операция.
    Давайте тогда не будет вообще передавать информацию, а будем передавать ссылку на глобальную БД, в которой лежит вся информация — мы же не знаем, что именно понадобится методу?
    Вы почти уловили. Конечно это не правильно — как я сказал, надо это делать тогда, когда нет каких-то проблем, с производительностью, или семантических… В данном случае куча обращений к БД явно положительно не повлияет.
    Это как-то противоречит моему тезису о том, что семантика переменной определяется не только возможным набором ее значений?
    У меня ощущение, что мы где-то разошлись в рассуждении :D Нет, не противоречит, более того, именно это я и писал — например множества натуральных и чётных чисел имеют разную семантику, и могут быть рассмотрены, как разные множества.
  • Да, я пишу десктопные приложения под Windows
    –1
    Ага, то есть я все-таки должен расписать вам логическую цепочку. Хорошо.

    Итак. Логическая цепочка — цепь основанных друг на друге заключений. Умело составленная логическая цепочка называется «здравым смыслом». Здесь я предполагаю, что вам известно, что такое «логика».

    На примере выше описанной дискуссии, можно увидеть, как индивидуум обнаружил некий класс в C#, и сказал, что не знал о нем. В дальнейшем другие индивидуумы описывают ему работу этого класса, из которой в определенный момент тот сделал логически правильный вывод, что подобный ряд операций можно получить, переделав код др. класса. После чего ему заявили, что это не так, дав доп. информацию о непосредственном отличии в том, что класс может быть отключен.

    Рассмотрим теперь примеры того, что не является здравым смыслом. Здравым смыслом не является ожидание решения первоклассником сложных тригонометрических проблем, когда ему только объяснили 2 × 2. Здравым смыслом не является надежда построить в подвале атомный реактор, исходя из находки неких радиоактивных отходов. Не является прыжок с десятого этажа на продуктовый тент «потому что в Assasin's creed и не с таких высот прыгали». Не является надежда выиграть в лотерею с одиннадцатью числами и единственным призом. И не является ожидание вывода, что класс Console не может быть реализован через Trace, человеком, узнавшим о нем от вас, и не получившем от вас важных нюансов, не позволяющих такой реализации.
  • Да, я пишу десктопные приложения под Windows
    0
    Могу. У него каким-то образом появятся все нужные операции?
    Вы же можете производить точно так же операции над элементом пары. Если вам надо высчитать процент от цены, вы можете написать что-то типа myPercent(myPair.item1). Это не нарушает идеи, потому что эта операция, так сказать, терминальная, это место где смысл, к какому предмету/магазину принадлежит цена и процент теряется. Вам незачем туда передавать целую пару.
    В том, что в норме в ОО-языках даные «передаются» связанными блоками, и единица связности определяется бизнес-смыслом. Но еще чаще данные не передаются, потому что согласно одному из основных правил ООП действия, производимые над данными, должны производиться как можно ближе к этим данным.
    Да-да, вот всю мою неопытную часть, пока не набил шишек, я старался следовать подобным идеям — инкапсуляция, не передавать данных больше чем надо, как можно меньше информации, пока в этом нет критической необходимости… Сейчас я уже поднабрался опыта, знаний, и шишек во многих смежных областях, и моя точка зрения несколько отличается: передавать как можно больше информации, пока нет критической необходимости ее ограничить. Возможно это может иметь несколько отличный смысл при работе по сети — безопасность там, все такое — но внутри программы это хорошая идея.
    В том, что это делае В том, что это делает невозможным ваше определение семантики переменной только через множество значений, которое она способна принимать. т невозможным ваше определение семантики переменной только через множество значений, которое она способна принимать.
    Мы составили две модели, которые, к тому же, представляют собой почти полную кальку с программной реализации. Возможно вы думаете, что должна быть одна модель — но ведь в программе у вас так же будет две модели.

    Я правда вам очень рекомендую почитать Кнута — мат. моделирование, особенно при некотором опыте, может открывать совершенно новый взгляд на многие вещи.
  • Да, я пишу десктопные приложения под Windows
    0
    Великолепно, суть близка. Теперь, если вспомнить, что у нас была дискуссия, где я говорил о классе, реализации которого, как очевидно из сути беседы, я не знал, нетрудно вычислить логическую цепочку. Так зачем, спрашивается, упоминать «здравый смысл»? С этим там все отлично.
  • Да, я пишу десктопные приложения под Windows
    0
    Тем, что в языке она не определена. Грубо говоря, при попытке компиляции вы получите «no method Max exists that accepts parameters of type (Store, Price)».
    Вы не можете написать класс, представляющий собой пару?
    Вот только в ОО-языках он противоестественнен.
    Мне кажется, вы меня не понимаете. В чем противоестественность? Давайте я сформулирую идею, как она у меня в мозгу: «Правило большого пальца — если при передаче данных по методам нет серьезных причин эти данные раздирать, сохранять изоморфичность».
    Это не множество товаров (потому что товар определяется не магазином и ценой), это множество пар (магазин, цена).

    Но это никак не влияет на тот факт, что я могу иметь k переменных, принимающих значения из этого множества, и их семантика будет различаться.
    Ладно, пусть так. В чем проблема?
  • Да, я пишу десктопные приложения под Windows
    0
    Блин, парень, вот извини, но эти слова и поддержка предыдущего бессмысленного комментария кроме тебя никого не принижает. Ты правда не видишь здравого смысла, или просто троллишь? Тебе серьезно надо расписать логическую цепочку?
  • Да, я пишу десктопные приложения под Windows
    0
    Вы знаете, что такое логическая цепочка, дедукция, индукция? Или по-вашему каждая вырванная из контекста цитата является истиной в себе?
  • Да, я пишу десктопные приложения под Windows
    0
    То есть, не надо придумывать операции над парами вместо чисел?
    Нет, «не надо» всего лишь из-за отличного типа переменной (пара вместо числа) выкидывать пару на помойку. Да, могут быть другие причины, возможно производительность, но я не могу представить, чем операция над элементом в паре сложнее операции над просто элементом.
    Простите, а мы точно все еще в треде, в котором упоминался C#? Я не знаю там, объекто-ориентированное программирование, вот эти все глупости?
    Я думаю, мой пример не сложно распространить на абсолютно любой язык программирования.
    Впрочем, не суть. Предположим, я заменил пару численных переменных («цена в магазине 1», «цена в магазине 2») на пару объектов ЦенавВМагазине (со свойствами Магазин и Цена). У меня все так же есть две разных переменных, хранящих объекты из одного множества, и имеющих разную семантику. Ничего, кроме типа переменных, не изменилось.
    Ну практически ничего не изменилось, вы просто перемешали представление как коде, так и в мат. модели: теперь это множество товаров, где каждый элемент — множество пар {магазин, цена}. Что интересно: между пред. и новой моделями сохраняется изоморфизм, т.е. вы можете конвертировать одно в другое без каких-либо потерь.

    Я вам очень рекомендую почитать первую главу Д.Кнута «Конкретная математика». Там нет каких-то сложных формул (во второй главе есть, но я именно про первую); Кнут вводит три проблемы из реального мира, и затем медленно и степенно переводит их в мат. модель, и затем решает. Когда-то очень давно я ненавидел математику, и эта глава явилась одной из ступеней, коренным образом изменивших мое мышление. Думаю, вы не пожалеете.
  • Да, я пишу десктопные приложения под Windows
    0
    Это неправильное мышление… Во-первых в конечном коде у вас все равно есть тот или иной способ понять, к какому товару и магазину относится цена. То есть они связаны.

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

    Я не могу вспомнить конкретных примеров сейчас, потому что мне придется вспоминать предшествовавшие события, но приблизительно у меня была ситуация такая: в С++ был метод, принимавший аргументом элемент структуры, на основе чего выполнявший какие-то действия. Назовем его «элемент α» Долго ли, коротко ли, время шло, код писался, многое поменялось, под методом возникла цепочка других методов (как минимум добавился низкоуровневый протокол), и однажды я обнаружил, что где-то внизу надо знать помимо α так же элемент β упомянутой структуры. Пришлось кучу кода перелопачивать — но соль здесь в том, что ничего мне не мешало передать когда-то в тот метод константный указатель на структуру, что никак не повлияло бы на производительность, зато избавило бы от возможных проблем.

    Это нередкая ошибка при разработке. Из чужих проблем я могу вспомнить разработчика конвертора Pandoc — тот написал внутреннее представление форматов, которое не включает многих элементов, например понятия страниц. Как результат, в нем нет поддержки, например, «pagebreak», даже при конвертации между поддерживающими форматами — просто при переходе в этот внутренний формат подобные тонкости теряются. Причем, как я понял из его слов, там все настолько плохо, что даже добавление того же «pagebreak» потребует модификации кода сразу всех форматов, в/из которых может происходить конвертация.
  • Да, я пишу десктопные приложения под Windows
    0
    Виноват, немного ошибся. Это будет множество магазинов, где каждый элемент (сиречь магазин) являет множество пар.

    И ведь думал же еще, подспудно чувствовал, что должен быть третий уровень, что-то тут не так :D
  • Да, я пишу десктопные приложения под Windows
    0
    Почему это? Вот у меня есть, грубо говоря, две цены для одного товара в разных магазинах. Почему они представляют разные множества?
    Навскидку это можно представить, как множество магазинов, где каждый элемент — пара <товар, цена>. Разумеется цена может брать свои корни из множества вещественных чисел, так же, как и все четные элементы в пред. примере из натуральных. Семантика здесь представлением ее в качестве элемента высшей структуры.
  • Да, я пишу десктопные приложения под Windows
    0
    Я говорю не про элементы множеств, а про переменные, принимающие значения из этих множеств.
    Если есть две переменные, принимающие значение из одного множества, вероятно их стоит все-таки воспринимать, как переменная, принимающие значения из разных множеств. Вспомните пример с множествами четных и нечетных чисел — они оба принадлежат множеству натуральных чисел.
    То, что у вас нет интереса изучать платформу, на которой вы пишете — не проблема платформы (или литературы).
    Во-первых, нет интереса «глубоко изучать» — разумеется у меня должно быть понимание, на чем я пишу, иначе я бы не смог общаться с коллегами, с вами, и вообще писать. Во-вторых мой интерес имеет очень косвенное отношение к незнанию обсуждаемого факта о CLR. В моем понимании, у меня более-менее плотное знание языка C#. Это понимание основано на многочисленных статьях. И обнаружившийся пробел в знаниях, помимо нашего с вами разговора, имел бы шанс возникнуть только из желания углубиться в принципы работы .net. Но видите ли — как человек, программирующий на разных языках, и не являющийся даже и близко профессионалом, я больше заинтересован в чтении чего-либо, что поможет при разработке независимо от выбранного языка. Потому книжка про концепты работы C# имела очень мало шансов на прочтение, возможно только если я бы захотел присоединиться к проектами вроде Wine или Mono.
  • Да, я пишу десктопные приложения под Windows
    0
    Вот только у двух переменных, принимающих значение из одного множества (тех же четных чисел) все равно может быть разная семантика.
    Разумеется — элементы множества имеют тот смысл, который им дадите вы. Вы можете назначить «0» — как удачу, и «x>0» как код ошибки, у них разная семантика. Это основано на том, что элементы разные. Здесь нет никакого противоречия.

    Могу посоветовать статью на эту тему, хотя вообще там про теорию групп, но первые примеры весьма несложные и интересные.
    … вот только это предположение ни на чем не основано.
    Так можно придраться к любой информации, и придираться бесконечно глубоко. В данном случае тот факт, что я ни в одной статье не встречал упоминания CLR в подобном контексте — достаточное основание, чтобы начать копать лишь при возникновении интереса к .net; а у меня, поверьте, и без того слишком много идей и вещей, которые мне интересны.
  • Да, я пишу десктопные приложения под Windows
    0
    Языки программирования — это не математика. У переменных object lock и object returnValue — разная семантика, хотя обе они (потенциально) принимают элементы одного и того же множества.
    Нет, ну это же вопрос абстракции, и математика именно об этом. Например, вы можете заявить, что у вас есть множество четных чисел {x ∈ ℕ | x/2} и нечетных {x ∈ ℕ | x/2+1}. И хотя они оба назначены в натуральных числах, как ваш пример, вероятно, в Integer, это все равно два разных множества.
    Понятно. Поверьте мне, намного полезнее заранее предполагать, что вы чего-то не знаете. Скорее всего, вы не ошибетесь.
    Я не знаю очень многого. Просто когда есть некоторая информация, которая предполагает быть правильной — как у меня с CLR — и понимание, что я чего-то не знаю в другой области, изучение коснется последней, а не первой, где предположительно даже нечего учить (я видел CLR как нечто вроде .net assembler'а, и при отсутствии большого интереса к .net этот ассемблер явно не мог удостоится более подробного изучения).
  • Да, я пишу десктопные приложения под Windows
    0
    когда человек говорит «Я хочу глобальную переменную», то он хочет нечто, что можно изменить, и с глобальным доступом.


    В программировании очень важна семантика. «Нечто, что можно изменить и с глобальным доступом» — файл тоже подходит. И семафор подходит. И даже БД подходит. Вопрос намерения и смысла.
    Для меня семантика переменной имеет математический смысл — это некий элемент, который может принять любое значение из некоторого множества. Фраза «глобальная» подразумевает, что во время программирования к ней есть доступ отовсюду. Это вкладываемый мной смысл, и под него подходит как обычная глобальная переменная в языке, где это допустимо, так и изменяемое поле статического класса.
    Может, надо читать другие книги? C# in Depth про это пишет. Essential C# про это пишет. Даже MSDN про это пишет.
    Может быть. Но видите ли, в чем подвох — чтобы читать «другие книги», я должен обнаружить, что я чего-то не знаю. А обнаружить это незнание я смог только в нашем диалоге — а я, между прочим, прочел большое количество разных источников по C# на совершенно разную тематику.
  • Да, я пишу десктопные приложения под Windows
    0
    Эмм, вы правда не знаете разницы между переменной и полем объекта?
    Хех, ну во-первых поле статического класса, а не объекта. Во-вторых это весьма формально — когда человек говорит «Я хочу глобальную переменную», то он хочет нечто, что можно изменить, и с глобальным доступом. Детали реализации обычно не столь важны.
    Никто, правда? Я искренне считаю, что любой разработчик на .net должен рано или поздно прочитать эту книгу.
    Книга по ссылке — явно не название того, что станет читать начинающий программист, или разработчик, для которого C# не профильный язык. Они будут искать что-то вроде «C# за десять минут», или «Основы языка C#», или «Туториал по C#» — и нигде в подобных книгах тесная связь с CLR не будет упоминаться. Я знаю, потому что я работаю уже ≈год с этим языком (конечно не все время, но и с другими), и вы первый источник, от кого я услышал, что CLR являет собой нечто большее, чем реализация языка на нижнем уровне, которую можно заменить на что угодно, и которая не имеет связей с C#.

    А ведь вам сразу сказали, что все ваши проблемы с логгингом — из-за того, что вы сотворили очередной велосипед.
    Сказать и объяснить — разные вещи.
  • Да, я пишу десктопные приложения под Windows
    0
    Вы можете перенаправить вывод терминала куда угодно. Вопрос только в том, что в случае с Console это потребует много дополнительного кода, а в случае с Trace все уже реализовано. Именно поэтому я говорю, что последний — супермножество над первым.

    Теоретически даже возможно, что Console где-то внутренне реализован через Trace, но с точки зрения интерфейса это два разных класса.
  • Да, я пишу десктопные приложения под Windows
    0
    хотя функциональность у статического поля и глобальной переменной схожа, семантика у них совершенно различна.
    Можно подробнее?
    Равно как и модификация по адресу, полученном функцией из своего аргумента.
    Кстати, да.
    … то мы получим что-то очень странное и неработоспособное. Можно убрать C# и оставить работоспособный CLR, но нельзя убрать CLR, оставив работоспособный C#.
    Очень интересно. Да, я не знал, что C# настолько завязан на низкоуровневую часть.

    Знаете, в чем тогда беда? Выходит, что для программирования на C# программист должен знать CLR. Но никто не учит CLR, учат именно C#. А юмор, что по вашим словам без CLR этот язык даже не сможет существовать. Это все печально.
    Берущую откуда? В какой момент?

    Я не хочу вызывать отдельную функцию для отправки почты, я хочу внутри программы «писать в лог», а уж куда это дальше уходит — это вопрос настройки.
    Да, я вас понял. Действительно, я задумался, и не знаю простого способа сделать это в PHP. Это имеет смысл.
  • Да, я пишу десктопные приложения под Windows
    0
    Не соглашусь только с комментарием о различной семантике — Trace скорее надмножество Console, похожий класс с дополнительными фичами.

    Но я вас понял, да.