Feb. 20th, 2006
Категоризация software
Feb. 20th, 2006 11:14 pmХочу попробовать ввести классификацию программ и выделить парадигмы программирования, удобные для их создания. Речь идёт только о программах для персональных компьютеров и широкого круга пользователей.
Дорогие читатели, помогите дополнить!
Особенно приветствуются примеры программ, которые ни в какую категорию из нижеперечисленных не попадают.
Automation: Scripts of all purposes.
Create a user account, run defragmentation every week, insert a signature at the end of a letter.
Особенности структуры: Скрипты и этим всё сказано. Наиболее удобная форма — последовательность комманд, которые нужно выполнить. Процедуры и ООП использовать можно, но их использование не нужно навязывать.
Applied programming: Internet/Intranet services and applications, Viewers, Editors, IDEs, Standalone applications, Games
Google maps или заказ билетов Detsche Bahn — примеры интернет сервисов. Бухгалтерская система — standalone или intranet application. Маленькая программка для рассчёта знаков зодиака — тоже standalone.
К прикладным программам не относятся программы, напрямую контактирующие с устройствами, сетевыми протоколами etc. Прикладные программы используют уже готовый framework.
Особенности структуры: Чётко разделённые frontend и backend. Backend — либо локальный, либо serverside, либо распределённый движок с чётким интерфейсом, через который осуществляется коммуникация с frontend'ом и сторонними программами. Backend'ы — вотчина ООП. Отдельные методы просты и коротки, а схемы систем часто огромны.
Frontend контактирует с Backend'ом и обеспечивает пользовательский интерфейс. Тут ООП нужен только в рамках XUL DOM.
Service programming: Программы, создающие тот самый framework, который затем используют прикладные.
Примеры: Apache, MySQL, wine
+
System programming: Operating system, its components and low level extensions & device multiplexers (eg. window managers, sound mixers).
Особенности структуры: Очень неоднородна. Тут используется и низкоуровневое программирование, и высокоуровневая модулярная структура.
Utility programming: Небольшие программы, на низком уровне работающие с сетью или устройствами для решения служебных задач.
Примеры: Defragmentator, Partition manager, CPU temperature indicator
Особенности структуры: Простой UI, за которым стоит низкоуровневая работа с системой. ООП требуется минимально.
Driver programming: Drivers for devices
Особенности структуры: Сплошной низкий уровень.
Overlay programming: Программы, прицепляющиеся в виде посредников на стандартные интерфейсы системы и делающие всю работу в целом удобнее.
Примеры: Puntoswitcher, Spellchecker, Screen capture
Особенности структуры: В зависимости от возможностей, предоставляемых системой. Если оверлей на интерфейсе системой не предусматривается — извращённый низкоуровневый dirtyhacking. Иначе: см. след. кат.
Component and plug-in programming: Создание компонентов и расширений для существующих программ и операционной системы.
Примеры: Модули поддержки разных файловых систем для mount, расширенные UI-компоненты для встраивания в диалоговые окна и сайты.
Особенности структуры: Создаются компоненты с заранее оговоренным интерфейсом и набором возможностей. Программирование сходно с имплементацией одного отдельно взятого класса. В особо изощрённых случаях компонент может иметь собственную архитектуру, которая лишь привязывается к интерфейсу классом-wrapper'ом. «Собственная архитектура» подпадает либо под категорию Applied, либо под категорию Service.
X-Posted to:
ru_programming
Дорогие читатели, помогите дополнить!
Особенно приветствуются примеры программ, которые ни в какую категорию из нижеперечисленных не попадают.
Automation: Scripts of all purposes.
Create a user account, run defragmentation every week, insert a signature at the end of a letter.
Особенности структуры: Скрипты и этим всё сказано. Наиболее удобная форма — последовательность комманд, которые нужно выполнить. Процедуры и ООП использовать можно, но их использование не нужно навязывать.
Applied programming: Internet/Intranet services and applications, Viewers, Editors, IDEs, Standalone applications, Games
Google maps или заказ билетов Detsche Bahn — примеры интернет сервисов. Бухгалтерская система — standalone или intranet application. Маленькая программка для рассчёта знаков зодиака — тоже standalone.
К прикладным программам не относятся программы, напрямую контактирующие с устройствами, сетевыми протоколами etc. Прикладные программы используют уже готовый framework.
Особенности структуры: Чётко разделённые frontend и backend. Backend — либо локальный, либо serverside, либо распределённый движок с чётким интерфейсом, через который осуществляется коммуникация с frontend'ом и сторонними программами. Backend'ы — вотчина ООП. Отдельные методы просты и коротки, а схемы систем часто огромны.
Frontend контактирует с Backend'ом и обеспечивает пользовательский интерфейс. Тут ООП нужен только в рамках XUL DOM.
Service programming: Программы, создающие тот самый framework, который затем используют прикладные.
Примеры: Apache, MySQL, wine
+
System programming: Operating system, its components and low level extensions & device multiplexers (eg. window managers, sound mixers).
Особенности структуры: Очень неоднородна. Тут используется и низкоуровневое программирование, и высокоуровневая модулярная структура.
Utility programming: Небольшие программы, на низком уровне работающие с сетью или устройствами для решения служебных задач.
Примеры: Defragmentator, Partition manager, CPU temperature indicator
Особенности структуры: Простой UI, за которым стоит низкоуровневая работа с системой. ООП требуется минимально.
Driver programming: Drivers for devices
Особенности структуры: Сплошной низкий уровень.
Overlay programming: Программы, прицепляющиеся в виде посредников на стандартные интерфейсы системы и делающие всю работу в целом удобнее.
Примеры: Puntoswitcher, Spellchecker, Screen capture
Особенности структуры: В зависимости от возможностей, предоставляемых системой. Если оверлей на интерфейсе системой не предусматривается — извращённый низкоуровневый dirtyhacking. Иначе: см. след. кат.
Component and plug-in programming: Создание компонентов и расширений для существующих программ и операционной системы.
Примеры: Модули поддержки разных файловых систем для mount, расширенные UI-компоненты для встраивания в диалоговые окна и сайты.
Особенности структуры: Создаются компоненты с заранее оговоренным интерфейсом и набором возможностей. Программирование сходно с имплементацией одного отдельно взятого класса. В особо изощрённых случаях компонент может иметь собственную архитектуру, которая лишь привязывается к интерфейсу классом-wrapper'ом. «Собственная архитектура» подпадает либо под категорию Applied, либо под категорию Service.
X-Posted to:
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-community.gif)