Как зайти в Даркнет?!
25th January, 01:11
4
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4380
0
Помогите пожалуйста решить задачи
24th November, 23:53
6084
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4308
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Вы действительно можете построить быстрый текстовый процессор с шаблонами дизайна GoF?
Шаблоны дизайна Банды Четырех используют текстовый процессор в качестве примера по крайней мере для нескольких своих шаблонов, особенно композитных и Flyweight.
Помимо использования C или C++, можно ли действительно использовать эти шаблоны и объектно-ориентированные накладные расходы, которые они влекут за собой, чтобы написать высокопроизводительный полнофункциональный текстовый процессор?
Я знаю, что Eclipse написано в Java, но я не использовал его много, поэтому я не знаю, все ли это так быстро или так же отполировано, как что-то вроде Visual Studio, которая имеет систему редактирования текста на основе C++.
Я использовал только C++ и Java в качестве примеров. Этот вопрос больше связан с накладными расходами, связанными с наличием большого количества объектов в памяти, таких как приложение, такое как текстовый процессор или даже игра.
Шаблоны проектирования способствуют абстракции за счет скупости, хотя они обычно указывают, когда вы можете получить какой-то удар по производительности. Текстовые процессоры и особенно игры получают максимальную выгоду от того, чтобы быть как можно ближе к металлу.
Мне просто интересно, знает ли кто-нибудь о быстром объектно-ориентированном текстовом процессоре или текстовом редакторе, который не был написан на C++, и будут ли они строить его с использованием шаблонов или они забудут много абстрагирования вещей?
Flyweight действительно является просто способом сохранения ресурсов в ситуациях, когда существуют тысячи объектов с внутренним общим состоянием, поэтому он может быть полезен в языках более высокого уровня, чем C/C++.. возможно, пример GoF с использованием глифов в документе не был лучшим выбором для иллюстрации этой модели.
Я думаю, что есть гораздо больше для создания высокопроизводительного текстового процессора, чем просто эти основные шаблоны, хотя-не уверен, есть ли что-нибудь в GoF, что исключает возможность успешно сделать это.
Как правило, Visual Studio (VS) является более продвинутым и работает значительно лучше, чем Eclipse - по крайней мере, версии VS, которые я видел. Eclipse - одно из самых впечатляющих приложений Java, хотя оно довольно хорошо работает на более поздних машинах с большим количеством RAM.
Ну, flyweight -это нелепый шаблон для использования в текстовом процессоре. IIRC, у них был каждый символ, на который ссылались как на объект [Примечание: это было для каждого глифа , что все еще безумно, потому что ваш OS с радостью нарисует это для вас]. Поскольку указатель шире символа и вся обработка связана с косвенным обращением, было бы безумием использовать этот конкретный шаблон таким образом в текстовом процессоре.
Если вас интересует дизайн текстовых процессоров, я нашел статью, в которой не рассматриваются шаблоны, но рассматриваются некоторые структуры данных, лежащие в основе дизайна текстовых процессоров и конструктивных соображений .
Постарайтесь помнить, что шаблоны дизайна существуют для того, чтобы облегчить вашу жизнь, а не для того, чтобы Вы были чистыми. Должна быть причина, чтобы использовать паттерн, он должен приносить какую-то пользу.
Смысл GoF и паттернов вообще состоит в том, чтобы говорить о том, как делать вещи "right", как правильно, а не обязательно "right", как правильно в данных обстоятельствах. Там, где производительность является проблемой, и вы обнаруживаете, что ни один именованный шаблон не дает адекватной производительности, тогда, возможно, вы можете оправдать свой собственный путь. Но хорошее знание паттернов дает вам "sensible default" и, вероятно, будет означать, что вы жертвуете ясностью / SoC / и т. д. Только настолько, насколько это необходимо для обеспечения адекватной производительности.
Чувство, что вы "deviating" от нормы, побуждает вас а) дважды подумать и б) хорошо прокомментировать неидиоматический код.
Паттерны-это жизненно важное знание, но ничто не является Евангелием, и вы всегда должны применять суждение.
Сказав Все это - я не могу придумать ни одной причины, по которой вы не могли бы написать приличный текстовый редактор, используя шаблоны и современный JDK
Этот вопрос на самом деле, похоже, касается производительности Java против C++, и это не столько объектная ориентация, сколько работа на виртуальной машине со сборкой мусора и тому подобным.
Этот технический документ о производительности Java против C++, возможно, стоит прочитать.
Одна из вещей, которую вы должны помнить, заключалась в том, что книга GoF была написана в начале 90-х годов, когда преобладающая OSes не имела обширных графических библиотек. Даже Windows в то время еще не было OS.
Одна из вещей, которую вы должны помнить, заключалась в том, что книга GoF была написана в начале 90-х годов, когда преобладающая OSes не имела обширных графических библиотек. Даже Windows в то время еще не было OS.
IIRC GoF был выпущен в 1994 году. Даже в 1994 году бета-версия Windows 95 была доступна (и работала на моем 486DX33), а Windows 3.x существовал примерно с 1990 года.
Eclipse + netbeans + IntelliJ все они написаны в значительной степени все в java или что- то , что работает на JVM (не C++). По крайней мере в 2 из этих IDEs я провел некоторое время с кодом редактора, поэтому я могу заверить вас, что все java (и это тоже непросто).
VS 2005 был моим последним опытом работы в visual studio, и даже тогда я думал, что eclipse был гораздо более отзывчивым (intelliJ-вдвойне, учитывая время для разогрева и индексирования).
Не знаю, насколько это важно, но это мой опыт. Но я удивлен, что visual studio до сих пор написана на языке C++ - я думаю, что это было бы в интересах Microsoft использовать C# - если бы ничего другого не было, это действительно сильно повысило бы его производительность, ничего подобного тому, как есть свой собственный корм для собак !
Да, нынешние машины достаточно быстры и имеют достаточно памяти, чтобы это было возможно. Если вы посмотрите на Squeak, вы увидите Smalltalk IDE, написанный на Smalltalk, значительно медленнее, чем Java, но все же достаточно быстро. HD с другой стороны, редактирование видео-это то, что в настоящее время нуждается в некоторой поддержке более низкого уровня.