Ну, на самом деле любая радикальная интернет-феминистка со стажем с легкостью объяснит, что ничего удивительного в результатах опроса нет — женщины показывают результат хуже, чем хуемра мужчины, потому что патриархальное общество, сконцентрированное вокруг угнетения и изнасилования женщин, не предоставляет женщинам адекватные условия для обучения и поднятия своего уровня, одновременно поощряя мужчин и наказывая женщин за выбор оплачиваемой профессии. Поэтому эксперимент убедительно показывает вопиющее нарушение насил мужчинами права женщин на образование.
У нас есть живой пример того, как можно сделать это элегантно — asyncio из Python.
Или еще лучше — сделайте наконец-то AST Macros из DIP-50! Тогда async/await можно будет просто реализовать без участия комитета одобрения D — и не только его. stm, linq, шаблонизаторы в стиле jinja или jade, aop… Возможности безграничны, и все это без жертв производительности. Однозначно нужен DIP-50.
Конечно не нужны! Ведь нужно всего-то создать новый класс, унаследовать его от Fiber-а, прописать ему call, потом создать экземпляр, и можно пользоваться! Правда, даже авторы D2 потом, видимо, поняли, что как-то чуточку громоздковато получается, и дали возможность передавать делегат для call параметром конструктора — и все равно это слишком много работы для того, что должно занимать один кейворд, да и к тому же в результате получаются semi-coroutine, как в Lua, а не полноценные awaitable.
Если бы в D был механизм декораторов, то async/await можно было бы реализовать и самостоятельно, но, увы, UDA не дают возможности менять определение или тело функции.
Проблема в том, что в vibe.d используются коллбэки, а не промисы/async/await, поэтому асинхронный код в D громоздкий. Может быть, в будущем примут патчи для введения async/await в качестве ключевых слов самого языка.
Они и так на поверхности Земли в хороших количествах. Брали их из старых труб только по той причине, что вся остальная живность там сдохла из-за того, что жрать нечего — а если бы брали культуру с поверхности, то вся остальная братия бы просто запинала электротрофов в тепличных условиях.
Господа из АКИТ упускают из виду мелочь — если покупку обложить налогом, то налог будет заплачен только единожды. Секрет успеха в том, чтобы обложить ежемесячным налогом все иностранные товары в принципе. Купил какой-нибудь айфон, самсунг или виндовс — плати ежемесячно пару тыщ рубликов. И гражданину несложно, и государству приятно.
В целом идея мне нравится, но у меня возник ряд вопросов.
Насколько далеко простираются полномочия "рендерера неопознанных знаков"? Например, в демонстрации рендерер рисует диакритический знак. Значит ли это, что рендерер будет рисовать и лигатуры типа fi (U+FB01), и широкие диакритики типа a͡b (U+035D)? А контекстные формы арабской вязи?
При отрисовке диакритика в примере он был поставлен сверху. Как быть с диакритиками, которые рисуются в других местах? Например, в тайском, кхмерском и лаосском письме есть диакритики, которые рисуются слева от буквы, к которой они привязаны. Причем это и не диакритики-то, по сути — это их гласные буквы. Как быть с корейским письмом, где в одно знакоместо могут быть упакованы от 2 до 5 букв?
Как формат "простого символа" (код 1) в принципе декларирует позицию будущего диакритика? Как отличаются диакритики, которые выглядят одинаково, но имеют разный смысл в зависимости от положения относительно предыдущего знака? Или отличаются размером?
Если рендерер неопознанных знаков собирается покрывать все эти случаи, не приблизится ли он по сложности к виртуальной машине OpenType? Может, тогда его сразу и использовать? Если упрощать, то насколько?
Почему выбрано представление, где диакритик идет до буквы, к которой он применяется? Ведь даже по логике письма сначала рисуется основной знак, затем к нему дописывается дополнение, а не наоборот.
Некоторые люди вынуждены воспринимать текст на слух. Так как одна из заявленных целей polycode — дедупликация символов, которые выглядят одинаково, то каким образом экранный читатель сможет отличить символы, одинаковые визуально, но разные семантически? Например, "буква о" и "цифра ноль"? Можно, конечно, например, перечеркивать ноль на манер ZX Spectrum, то как быть со знаками, которые выглядят примерно одинаково, но имеют кардинально разный смысл, вроде E𝖤𝗘𝙴𝔼𝐄𝐸𝑬𝘌𝙀𝔈𝕰ℰ𝓔?
Лигатура fi (U+FB01) — это один знак polycode или два? А чешские диграфы ch и dž?
Как объявить пробелы разной ширины, включая нулевую?
В юникоде есть понятия классов символов. Что-то аналогичное в polycode?
Юникод — это еще и правила (де-)нормализации и (де-)композиции знаков. Что-то аналогичное в polycode?
В юникоде есть управляющие символы, многие из которых невидимы — сменить направление письма, например. Что-то аналогичное в polycode?
Почему так неудачно выбрано название? Polycode уже используется существующим игровым движком на lua, который, к тому же, занял домен polycode.org.
Заявленный механизм отрисовки "сложных знаков" не учитывает хинтинг. Может, все-таки OpenType?
Заявленный механизм отрисовки "сложных знаков" не учитывает потребности людей с ограничениями зрения и роботов. Допустим, эмблема бэтмена — ее невозможно никак описать или прочитать так, чтобы человек это понял, т.е. polycode нужно расширить еще и описаниями букв. Автор polycode выказывал претензию, мол, с чего бы это вдруг всем подряд знать английский — значит, это тоже нужно как-то решать, потому что я могу не знать суахили, на котором описан какой-то знак, но я хочу понимать, что он значит — на моем родном языке, или же на английском.
хуемрамужчины, потому что патриархальное общество, сконцентрированное вокруг угнетения и изнасилования женщин, не предоставляет женщинам адекватные условия для обучения и поднятия своего уровня, одновременно поощряя мужчин и наказывая женщин за выбор оплачиваемой профессии. Поэтому эксперимент убедительно показывает вопиющее нарушениенасилмужчинами права женщин на образование.Или еще лучше — сделайте наконец-то AST Macros из DIP-50! Тогда async/await можно будет просто реализовать без участия комитета одобрения D — и не только его. stm, linq, шаблонизаторы в стиле jinja или jade, aop… Возможности безграничны, и все это без жертв производительности. Однозначно нужен DIP-50.
Если бы в D был механизм декораторов, то async/await можно было бы реализовать и самостоятельно, но, увы, UDA не дают возможности менять определение или тело функции.
Пойду, наверное, приму шампанского.
И еще один вопрос — стоит ли их запретить, на всякий случай, для защиты детей?
В целом идея мне нравится, но у меня возник ряд вопросов.
Насколько далеко простираются полномочия "рендерера неопознанных знаков"? Например, в демонстрации рендерер рисует диакритический знак. Значит ли это, что рендерер будет рисовать и лигатуры типа fi (U+FB01), и широкие диакритики типа a͡b (U+035D)? А контекстные формы арабской вязи?
При отрисовке диакритика в примере он был поставлен сверху. Как быть с диакритиками, которые рисуются в других местах? Например, в тайском, кхмерском и лаосском письме есть диакритики, которые рисуются слева от буквы, к которой они привязаны. Причем это и не диакритики-то, по сути — это их гласные буквы. Как быть с корейским письмом, где в одно знакоместо могут быть упакованы от 2 до 5 букв?
Как формат "простого символа" (код 1) в принципе декларирует позицию будущего диакритика? Как отличаются диакритики, которые выглядят одинаково, но имеют разный смысл в зависимости от положения относительно предыдущего знака? Или отличаются размером?
Если рендерер неопознанных знаков собирается покрывать все эти случаи, не приблизится ли он по сложности к виртуальной машине OpenType? Может, тогда его сразу и использовать? Если упрощать, то насколько?
Почему выбрано представление, где диакритик идет до буквы, к которой он применяется? Ведь даже по логике письма сначала рисуется основной знак, затем к нему дописывается дополнение, а не наоборот.
Некоторые люди вынуждены воспринимать текст на слух. Так как одна из заявленных целей polycode — дедупликация символов, которые выглядят одинаково, то каким образом экранный читатель сможет отличить символы, одинаковые визуально, но разные семантически? Например, "буква о" и "цифра ноль"? Можно, конечно, например, перечеркивать ноль на манер ZX Spectrum, то как быть со знаками, которые выглядят примерно одинаково, но имеют кардинально разный смысл, вроде E𝖤𝗘𝙴𝔼𝐄𝐸𝑬𝘌𝙀𝔈𝕰ℰ𝓔?
Лигатура fi (U+FB01) — это один знак polycode или два? А чешские диграфы ch и dž?
Как объявить пробелы разной ширины, включая нулевую?
В юникоде есть понятия классов символов. Что-то аналогичное в polycode?
Юникод — это еще и правила (де-)нормализации и (де-)композиции знаков. Что-то аналогичное в polycode?
В юникоде есть управляющие символы, многие из которых невидимы — сменить направление письма, например. Что-то аналогичное в polycode?
Почему так неудачно выбрано название? Polycode уже используется существующим игровым движком на lua, который, к тому же, занял домен polycode.org.
Заявленный механизм отрисовки "сложных знаков" не учитывает хинтинг. Может, все-таки OpenType?
А почему геном человека является основой жизни? Мы не то, что не древнейший вид, мы даже не самый распространенный.
Баги влияли на производительность в положительную сторону?