OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 12:17

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Вторник, 01 Февраль, 2011 20:05 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Интересная статья:
http://karataev.nm.ru/appviasys.html

Цитата:
Мое мнение по вопросу разделения кода на системный или прикладной состоит в правиле - если исполнение кода и его течение определяется форматом данных, то это системный код, а если код зависит от содержания данных, то это прикладной код. Правило очень простое, хотя и, может быть, спорное. Тем не менее мне оно помогает в планировании модулей и в проектировании.

Как различить код, зависящий от значений данных и не зависящий от значений данных. Просто надо посмотреть точки ветвлений программы (функции), условных переходов и циклов и определить, от чего зависит выполнение условия. Если от значения данных, к тому же обрабатываемых, то код должен быть отнесен к прикладному. Если только от неких констант, типов, данных описывающих формат других данных, то это системный код.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 01 Февраль, 2011 20:28 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Показалось, что Каратаев термин "прикладной" использует в том смысле, что сейчас используется "бизнес-логика". А Системный - это слой разрабатываемой системы, который никак с бизнес-логикой не связан.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 01 Февраль, 2011 22:59 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Илья Ермаков писал(а):
Интересная статья:
http://karataev.nm.ru/appviasys.html

Цитата:
Мое мнение по вопросу разделения кода на системный или прикладной состоит в правиле - если исполнение кода и его течение определяется форматом данных, то это системный код, а если код зависит от содержания данных, то это прикладной код. Правило очень простое, хотя и, может быть, спорное. Тем не менее мне оно помогает в планировании модулей и в проектировании.

Как различить код, зависящий от значений данных и не зависящий от значений данных. Просто надо посмотреть точки ветвлений программы (функции), условных переходов и циклов и определить, от чего зависит выполнение условия. Если от значения данных, к тому же обрабатываемых, то код должен быть отнесен к прикладному. Если только от неких констант, типов, данных описывающих формат других данных, то это системный код.

Попробуйте в точном соответствии с этим принципом написать скажем TCP/IP стэк -- у вас получится слоёный пирог, где системные и прикладные модули будут перемежаться.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 01 Февраль, 2011 23:00 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Каратаев про то и говорит, что они будут вперемеш(ж)ку в любом почти проекте. И рекомендует разделять функции по модулям, не нарушая единства модуля (только системный - только прикладной).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 01 Февраль, 2011 23:12 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Илья Ермаков писал(а):
Каратаев про то и говорит, что они будут вперемеш(ж)ку в любом почти проекте. И рекомендует разделять функции по модулям, не нарушая единства модуля (только системный - только прикладной).

Ну, смотрите. Берем, парсим входящий поток. Получается что парсер у нас в любом случае суть прикладной модуль. На выходе из парсера уже поток типизированных переменных, унутре которых есть недопарсеный кусок. Они идут на вход какой-то логике, которая в зависимости от типа что-то там делает, затем эти куски идут на вход следующего парсера, который разбирает часть из остатка сырых данных (скажем вначале был IP заголовок, а потом может быть что угодно, например TCP заголовок. или UDP) ну и т.д.

Причем нужды в чистых системных модулях (в обсуждаемой терминологии ) тут может и не возникнуть вообще. Будет смешанный код (имеющиеся данные будут сравниваться с константами).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 01 Февраль, 2011 23:20 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну да, у него достаточно условно.
Но понятно же, что TCP/IP-стеку наплевать на содержание и внутреннюю структуру пользовательских данных...
Ну, контрольные суммы разве что посчитает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 01 Февраль, 2011 23:23 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Илья Ермаков писал(а):
Ну да, у него достаточно условно.
Но понятно же, что TCP/IP-стеку наплевать на содержание и внутреннюю структуру пользовательских данных...
Ну, контрольные суммы разве что посчитает.

А которые там пользовательские? :-) Это ж стэк!
IP-заголовок -пользовательские?
TCP, UDP заголовок -- пользовательские?
HTTP, RTP загловки пользовательские?

Т.е. абсолютно непонятно где остановиться. И каждый уровень будет прикладным, потому, что анализирует живые данные, зависит от них. Не все данные из даденого куска, но их часть, и оно зависит от содержимого этих данных.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 01 Февраль, 2011 23:25 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну дык, каждый уровень-то и есть прикладной, а для него нижний - системный... Как бы так.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 01 Февраль, 2011 23:29 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Илья Ермаков писал(а):
Ну дык, каждый уровень-то и есть прикладной, а для него нижний - системный... Как бы так.

Не-е, это уже получается не по даденому определению, а по иным понятиям. Поэтому обсуждаемый критерий таки не годный.

А так да, системность-прикладнутость оно понятие относительное. Гм. Такое ощущение складывается, что прикладное это то, что пишешь прямо сейчас, а всё остальное -- системное :-)

Также, по ощущениям, системное это когда ты в процессе написания задумываешься как же этот код будет использовать другой программист.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 00:02 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
А вообще, не верно всё это. Системность штуки не зависит от свойств самой это штуки, а зависит от того как оную штуку используют.

Ну, например, допустим есть у нас обычный такой виндовозный блокнот. Вроде бы вполне себе прикладной софт. Но если мы в нашей разработке начинаем править все сырцы в блокноте, то он становится софтом системным, потому как от ошибки в нем мы можем серьезно пострадать (например если он начнет портить исходник при сохранении), и пострадает в т.ч. разрабатываемый нами софт.

Таким образом системным является нечто как-либо участвующее в жизненном цикле продукта.

Пример нумер два -- MS Word. Вполне прикладной софт. Однако если мы используем OLE-атоматизацию в нашей программе (например для генерации отчетов), то ворд резко становится софтом системным.

Замечу, что делить на системный/прикладной можно только нечто внешнее относительно нашего кода над которым мы работаем прямо сейчас.

Это как понятие "скриптовости" языка -- сам язык не может быть скриптовым, или не скриптовым, важно используют его для скриптования или нет. Язык может лишь быть ориентированым на скриптовое применение, но от этого скриптовым он не становится.

Поэтому внешние средства могут быть ориентированными на использование в качестве системных и не ориентированными. В частности к системноориентированному софту предъявяются более жесткие требования в плане надежности (см. компиляторы например).

Ну и последний пример -- с точки зрения разработчика проекта который пишется на С++, компилятор оберона не является системным софтом. Так, прикладная игрушка. :-)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 10:37 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Не. Лично мне нравится, как Ермаков указал на важный признак системного ПО в одной из своих статей. Я писал книжку по системному по там написал:
Цитата:
В процессе эволюции информационных технологий возникло (несколько условное) разделение программного обеспечения (ПО) на два типа: системное и прикладное. Поэтому, прежде чем приступить к изучению системного программного обеспечения, нужно определить, какое ПО является системным, и отделить его от прикладного.
Изучая различные виды программных продуктов (ПП), можно увидеть один существенный признак, позволяющий достаточно определенно отнести рассматриваемый программный продукт к классу прикладного ПО. Важнейшим свойством любого прикладного программного продукта (ППП) является то, что он предназначен для решения некоторой конкретной задачи из проблемной области, не относящейся к информационным технологиям. Ту же задачу раньше решали без использования компьютеров. В этом случае информационные технологии применяются для автоматизации решения задачи в конкретной проблемной области. Классическим примером такого программного обеспечения является комплекс программ, автоматизирующий расчет заработной платы.
Таким образом, можно дать следующее определение прикладного ПО:
Прикладное программное обеспечение решает задачи проблемных областей, не относящихся к информационным технологиям.
Отсюда следует, что к типу системного можно отнести то программное обеспечение, которое решает задачи внутри информационных технологий. Можно также сказать, что свойством системного ПО является то, что оно не решает никаких прикладных задач.

А потом классификацию дал:
1. ОС. Не решает никакой прикладной задачи. Обеспечивает повышение пропускной способности вычислительного комплекса
2. Инструментальное ПО. Не решает никакой прикладной задачи. Обеспечивает повышение производительности труда программиста.
3. Проблемно-ориентированное системное ПО. Или предметно-ориентированное. Не решает никакой КОНКРЕТНОЙ прикладной задачи. Но ориентировано на решение КЛАССА прикладных задач. Классический пример - СУБД. Признаки системного ПО в подобных системах: внутренний язык программирования и интерпретатор. Например, браузер - вроде чисто прикладная прога. НО! Интерпретатор HTML и JavaScript (VBSCript) - унутре работет. А это уже системное ПО.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 11:10 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Валерий Лаптев писал(а):
некоторой конкретной задачи из проблемной области, не относящейся к информационным технологиям. Ту же задачу раньше решали без использования компьютеров.

Хорошо. Пример: калькулятор. Калькулятор это ведь ППО? Вот надо мне сложить скажем те два числа(10 и 15). Можно запустить калькулятор (kcalc тот же), а можно запустить ghc (haskell) repl, и там написать: 10+15 , и в том и в другом случае будет выдан результат. Удобство одинаковое (хм. пожалуй repl таки удобней будет, ну да ладно). Так вот, я считаю что в этом случае и ghc и калькулятор относится к одному и тому же классу софта. Хотя, казалось бы ghc это чисто системная хрень, а калькулятор ну чисто прикладная.

Идем дальше. ещё один пример. У меня задача, скажем посчитать факториал. Вполне себе прикладная задача, правда ведь? Но к сожалению мой калькулятор не умеет считать факториал, зато он программируемый. Соответственно я пишу простенькую програмку считающую факториал и ей таки считаю оный факториал. Задача решена. Внимание вопрос -- калькулятор в этом случае прикладной софт, или таки системный? И чем принципиально отличается тыкание [1], [5], [!], от чуть более долгого тыкания в кнопочки калькулятора для получения того же результата (если на калькуляторе небыло заветной кнопочки [!])? Цели и задачи были одни и те же.

Поэтому я и говорю -- применять понятие "системный" к той самой задаче которую мы решаем прямо сейчас, нельзя. То, что мы используем для решение данной задачи -- системное, ибо образует систему, окружение, в рамках которой мы пытаемся нашу задачу решить.

И тыкание в калькуляторе 15+10 -- ничем от написания программы не отличается. Собственно это уже программа. Да, на не тьюринг-полном языке. Ну и что с того? Скажем та же быстрая сортировка тоже может быть реализована на не тьюринг-полном языке (я реализовывал), тьюринг-полнота там не нужна.

Цитата:
А потом классификацию дал:
1. ОС. Не решает никакой прикладной задачи. Обеспечивает повышение пропускной способности вычислительного комплекса
2. Инструментальное ПО. Не решает никакой прикладной задачи. Обеспечивает повышение производительности труда программиста.
3. Проблемно-ориентированное системное ПО. Или предметно-ориентированное. Не решает никакой КОНКРЕТНОЙ прикладной задачи. Но ориентировано на решение КЛАССА прикладных задач. Классический пример - СУБД. Признаки системного ПО в подобных системах: внутренний язык программирования и интерпретатор. Например, браузер - вроде чисто прикладная прога. НО! Интерпретатор HTML и JavaScript (VBSCript) - унутре работет. А это уже системное ПО.

Это всё прекрасно подходит под даденое мною определение. Браузер может быть системным ПО а может быть прикладным. В зависимости от того как мы его используем. Word -- туда же. Да и вообще любой софт, автоматизация действий же никуда не девается.

PS. Кстати, я не очень понимаю зачем нам делить софт на системный и прикладной.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 11:30 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Возможно, системное ПО - более сложное ПО? И не требующее знания прикладной области? Прикладное - по-любому надо помимо ИТ знать и прикладную область.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 11:42 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Валерий Лаптев писал(а):
Возможно, системное ПО - более сложное ПО? И не требующее знания прикладной области? Прикладное - по-любому надо помимо ИТ знать и прикладную область.

Сложно так делить. Ну вот скажем видеоподсистема -- это прикладное ПО, или системное? Казалось бы системное (может быть вообще куском ОС), однако для того, чтобы нормально написать видеоподсистему надо знать особенности восприятия изображения человеком. Что например лучше rgb, или yuv в случае если человек будет смотреть на неподвижную картинку, и что будет лучше если картинка будет динамической. И т.п. Т.е. чисто IT тут не обойдешься, нужны ещё и дополнительные знания.

Ну, или скажем написание/разработка кодеков. Казалось бы -- ну теория кодирования, берешь и вперед! Ан нет. Не получится сделать годный кодек без учета психоакустики например (это если говорим про аудио).

Разработка языков программирования опять же. Тут тоже чисто IT не достаточно, потому как нужно ещё кое-что понимать о эргономике и читабельности всего этого хозяйства. Опять же неплохо б разбираться и быть в курсе шрифтов которые сейчас в ходу как для бумаги, так и для экрана. Без этого язык получится не юзабельным, хотя технически он возможно будет хорош. А ведь казалось бы...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 11:44 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
На примере этого обсуждения ясно видна дырявость абстракций :-)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 11:52 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Alexey Veselovsky писал(а):
Гм. Такое ощущение складывается, что прикладное это то, что пишешь прямо сейчас, а всё остальное -- системное :-)
Ну, поскольку у каждого своё определение этих терминов, то я поделюсь своими. ПО - это не обязательно один исполняемый файл. Их может быть много. ПО, являющееся частью системы и в отрыве от неё не функционирующее - это системное ПО. Вся система целиком - это прикладное ПО.

Например, ОС может быть как прикладным ПО, так и системным. Винду мы сюда не берём: это продукт, который помимо ОС содержит по крайней мере браузер, который вместе с частью ОС является прикладным ПО.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 11:56 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Alexey Veselovsky писал(а):
PS. Кстати, я не очень понимаю зачем нам делить софт на системный и прикладной.
О, зря я не дочитал до этого места. Эти понятия находятся в разных плоскостях.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 12:15 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Код делится на стрёмный и не стрёмный.

Определение стрёмного кода: любой код, который выглядит как стрёмный и есть стрёмный код.

(спёрто с РСДН)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 12:53 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Valery Solovey писал(а):
Alexey Veselovsky писал(а):
PS. Кстати, я не очень понимаю зачем нам делить софт на системный и прикладной.
О, зря я не дочитал до этого места. Эти понятия находятся в разных плоскостях.

Угу, разной. Поэтому я и непонимаю почему их противопоставляют. И зачем вообще выделять системный софт из всего остального и т.п. Т.е. не понятно кому это жизнь облегчит.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Февраль, 2011 12:59 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Alexey Veselovsky писал(а):
Т.е. не понятно кому это жизнь облегчит.
Тем, кто "пишет системный софт" такое деление позволяет круче груть пальцы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB