Авторы пошли еще дальше и включили абстрактный интерфейс рисования, близкий по внешнему интерфейсу к Gdk. В рамках этого интерфейса присутствует, например, Xwt.Drawing.Color, отличный и от System.Drawing.Color, и от Gdk.Color.
Вот чем им System.Drawing не угодил, работает же везде (Cairo в качестве бакэнда у libgdiplus). Так и приходится колдовать с созданием Bitmap-ов, указывающих на один физический участок памяти.
Вывод: При использовании статических переменных в статических библиотеках нужно следить за тем, чтобы исполняемые модули не линковались статически друг в друга.
Ещё лучше не использовать статических переменных. Они зло.
Мы Hotspot VM компиляли Intel C++ Compiler с PGO и IPO. Процесс сборки в итоге занял несколько дней и выжирал по 140 гигабайт оперативки (на сервере было всего 32, так что был жестокий своп). Но нам таки удалось снизить расход CPU сервером майнкрафта на 20-30%, а по ощущениям оно даже почти перестало лагать.
А почему они не похожи на естественные языки не задумывались? А все потому, что они должны максимально избегать разночтений.
Вы комментарий мой вообще читали?
А всё потому, что текст нормативно-правового акта должен иметь одно и только одно возможное толкование, в противном случае вся система перестанет работать.
Четвертовать хочется только за GetPixel. Просто потому что со времён Visual Basic 5 мне на форумах, в чатиках и прочих местах приходится с незавидной регулярностью приходится вещать про возможность загнать изображение в байтмассив, с которым можно работать на порядки быстрее. Это как make install, только хуже.
Не очень-то и похожи они на естественные языки. Есть свой определённый набор канцеляризмов, есть ещё такая штука структура правовой нормы. Вкратце, в правовых нормах выделяют три части: гипотезу (при каких обстоятельствах), диспозицию (что должно быть) и санкцию (последствия неисполнения диспозиции), при этом все три могут быть простыми, сложными (логическое И), альтернативными (логическое ИЛИ) и сложно-альтернативными (логические И и ИЛИ вперемешку). Диспозиция или санкция могут отсутствовать, например, для уголовно-правовых норм характерно отсутствие диспозиции. Ничего не напоминает? if-then-else, например? Ещё есть строго определённые типы ссылок на иные нормы (помимо прямых норм бывают ссылочные и бланкетные).
А всё потому, что текст нормативно-правового акта должен иметь одно и только одно возможное толкование, в противном случае вся система перестанет работать. Из-за этого в тексте используются строго определённые наборы конструкций.
Ок, возвращаемся к вашей схеме из статьи. Кошка родила котят. Она мать, но при этом не человек. Схема разрушена, просто потому что слово «мать» означает набор trait-ов «существо, родившее потомство».
Поэтому идеальный язык программирования должен позволять естественный для человека лингвистический разбор задачи на куски и их изложение...
Очень, очень плохая идея. Программирование является управлением сложностью программы, а не способом управлять компьютером для домохозяйки. Чем легче выделяются логические блоки, тем лучше. К примеру, естественной для человека является формулировка «Выполнить действие и положить результат в ячейку [тут ещё 50 слов], если выполнено условие». При чтении такого «кода» мы теряем огромное количество времени на исследование ветки, которая нас не интересует вообще. Если же писать в нормальной нотации (if {} или if+отступы), то таких потерь времени нет. Ещё мы будем тратить немало пространства на «естественные» блоки там, где можно использовать символ (те же тернарные операторы условие? значение1: значение2 или шарповское expression??value (эквивалентно expression !=null? expression: value). Не нужен такой язык. В целом же современные языки программирования и так достаточно близки к естественным для тех, просто нужно научиться их читать.
Вообще иерархическая система понятий изначально убога. Словом передаётся набор характерных черт описываемого объекта/действия/явления/свойства, позволяющих его идентифицировать, а не иерархия наследования классов.
Сказать честно, информации об этом довольно мало, гугл не открыл мне Америки как и msdn.
Первая ссылка в гугле по первому пришедшему в голову запросу (scan event handler site:microsoft.com). У персонажа получилось только с HP ScanJet 6300C, ключевые слова в виде WIA COM там есть. Как можно было гуглить и не найти информации, не особо ясно, видимо, у меня какой-то другой гугль.
Если вы поменяете набор параметров конструктора, то придётся снова лезть в конфигурацию, иначе всё развалится, причём о том, что всё развалилось, вы не узнаете до момента, когда попробуете создать этот объект (если у вас есть интеграционные тесты, они это выловят, но всё же). Вся прелесть нормального DI-контейнера в том, что он такие вещи разруливает и достаточно сообразителен, чтобы создать экземпляр любого нужного класса самостоятельно.
А всё потому, что текст нормативно-правового акта должен иметь одно и только одно возможное толкование, в противном случае вся система перестанет работать. Из-за этого в тексте используются строго определённые наборы конструкций.