Feb. 20th, 2006

akuklev: (Default)
Прошел счас ещё раз опросник Кеттелла. Прошлый раз проходил года два назад.
Оба раза выяснил, что «моральные нормы либо не усвоены, либо сугубо личные и корпоративные». Против теста не попрёшь.. :-)
akuklev: (Default)
Хочу попробовать ввести классификацию программ и выделить парадигмы программирования, удобные для их создания. Речь идёт только о программах для персональных компьютеров и широкого круга пользователей.

Дорогие читатели, помогите дополнить!
Особенно приветствуются примеры программ, которые ни в какую категорию из нижеперечисленных не попадают.

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] ru_programming
Page generated Sep. 13th, 2025 08:06 pm
Powered by Dreamwidth Studios