Инструменты пользователя

Инструменты сайта


blackbox:manual:component-based

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
blackbox:manual:component-based [2017/12/26 07:27]
иван_денисов создано
blackbox:manual:component-based [2024/03/10 17:46] (текущий)
comdiv [3. Отличия от функционального программирования] нормальный ++
Строка 20: Строка 20:
   * ряд др. специфических особенностей.   * ряд др. специфических особенностей.
  
-Ряд средств в функциональном программировании на самом деле //избыточен//, но другая часть действительно нужна, но это только усугубляет проблему: из-за различных эффектов характерных для функционального программирования, программисту __легко потерять логику рассуждений__ и совершить какую-нибудь досадную ошибку, на выявление которой может уйти //огромная// часть времени. На практике, отладка программы и выяснение различных непонятных эффектов уходит львиная доля рабочего времени программиста. Такой язык, как [[https://ru.wikipedia.org/wiki/%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)|Си]]  вполне соответствует циклу "код-поиск ошибок-отладка". Мощный, как трёхлинейная винтовка, и такой же опасный — можно шутя //выстрелить себе в ногу// с более чем фатальными последствиями. В целом, про функциональное программирование можно сказать, что оно отлично применимо к //несложным// проектам, которые должны работать с высочайшей скоростью на относительно простых аппаратных платформах. Конечно, при соответствующей сноровке можно писать и сложные программы на сложном оборудовании, но стоимость такой работы будет относительно дорогой ((В учебнике Орлова по методам разработки программного обеспечения можно найти сравнительную таблицу, в которой приводятся относительные трудозатраты на создание единицы программы. Ассемблер примерно в 2-3 раза затратней, чем Си. Си примерно в 2 раза затратней С++. Паскаль экономичней Си ещё в 2-4 раза. Модула-2 экономичней Паскаля примерно в 1,5 раза. Компонентный Паскаль, вместе с фреймвороком BlackBox ещё увеличивает возможности программиста. Итого, по сравнению с тем же Си, Компонентный Паскаль вместе с Блэкбоксом дают преимущество примерно в 7...8 раз. Это, конечно, без учёта опыта программиста. )). Компонентно-ориентирование программирование стремится всеми доступными средствами к надёжности и гибкости на сколько это возможно. В целом, программа представляет из себя на **КОП** несколько хорошо изолированных частей. Это приводит к //ясной// структуре и простым //эффективным правилам// передачи и обработки информации, что безусловно положительно влияет на //надёжность в целом//. Сокрытие информации отсеивает лишнюю информацию для программиста, что позволяет ему сконцентрироваться на существенной части задачи. Упрощение языка и отказ от многих сомнительных приёмов программирования //вынуждают// программиста писать простой для понимания программный код, в котором трудно совершить досадную ошибку. Компилятор языка программирования в духе **КОП** не позволит создать программу, в которой программистом допускается нарушение отношений типов данных. Можно сказать, что требование к __надёжности__ программ, создаваемых с помощью **КОП** является __главным__. В связи с этим, синтаксис языков специально //спроектированных// для компонентно-ориентированного программирования достаточно прост и выразителен. Едва ли возможна, например, в таком языке как **Компонентный Паскаль** нечитаемая конструкция, как в уже вышеупомянутом **Си** или [[https://ru.wikipedia.org/wiki/C%2B%2B|С++]]. В попытках понять что имел в виду программист на **Си** можно провести огромную часть рабочего времени. В целом про **КОП** можно сказать, что он предназначен для крупных программных систем, к которым предъявляются //особые требования к надёжности//.+Ряд средств в функциональном программировании на самом деле //избыточен//, но другая часть действительно нужна, но это только усугубляет проблему: из-за различных эффектов характерных для функционального программирования, программисту __легко потерять логику рассуждений__ и совершить какую-нибудь досадную ошибку, на выявление которой может уйти //огромная// часть времени. На практике, отладка программы и выяснение различных непонятных эффектов уходит львиная доля рабочего времени программиста. Такой язык, как [[https://ru.wikipedia.org/wiki/%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)|Си]]  вполне соответствует циклу "код-поиск ошибок-отладка". Мощный, как трёхлинейная винтовка, и такой же опасный — можно шутя //выстрелить себе в ногу// с более чем фатальными последствиями. В целом, про функциональное программирование можно сказать, что оно отлично применимо к //несложным// проектам, которые должны работать с высочайшей скоростью на относительно простых аппаратных платформах. Конечно, при соответствующей сноровке можно писать и сложные программы на сложном оборудовании, но стоимость такой работы будет относительно дорогой ((В учебнике Орлова по методам разработки программного обеспечения можно найти сравнительную таблицу, в которой приводятся относительные трудозатраты на создание единицы программы. Ассемблер примерно в 2-3 раза затратней, чем Си. Си примерно в 2 раза затратней <nowiki>С++</nowiki>. Паскаль экономичней Си ещё в 2-4 раза. Модула-2 экономичней Паскаля примерно в 1,5 раза. Компонентный Паскаль, вместе с фреймвороком BlackBox ещё увеличивает возможности программиста. Итого, по сравнению с тем же Си, Компонентный Паскаль вместе с Блэкбоксом дают преимущество примерно в 7...8 раз. Это, конечно, без учёта опыта программиста.)). Компонентно-ориентирование программирование стремится всеми доступными средствами к надёжности и гибкости на сколько это возможно. В целом, программа представляет из себя на **КОП** несколько хорошо изолированных частей. Это приводит к //ясной// структуре и простым //эффективным правилам// передачи и обработки информации, что безусловно положительно влияет на //надёжность в целом//. Сокрытие информации отсеивает лишнюю информацию для программиста, что позволяет ему сконцентрироваться на существенной части задачи. Упрощение языка и отказ от многих сомнительных приёмов программирования //вынуждают// программиста писать простой для понимания программный код, в котором трудно совершить досадную ошибку. Компилятор языка программирования в духе **КОП** не позволит создать программу, в которой программистом допускается нарушение отношений типов данных. Можно сказать, что требование к __надёжности__ программ, создаваемых с помощью **КОП** является __главным__. В связи с этим, синтаксис языков специально //спроектированных// для компонентно-ориентированного программирования достаточно прост и выразителен. Едва ли возможна, например, в таком языке как **Компонентный Паскаль** нечитаемая конструкция, как в уже вышеупомянутом **Си** или [[https://ru.wikipedia.org/wiki/C%2B%2B|С++]]. В попытках понять что имел в виду программист на **Си** можно провести огромную часть рабочего времени. В целом про **КОП** можно сказать, что он предназначен для крупных программных систем, к которым предъявляются //особые требования к надёжности//.
  
 ==== 4. Отличия от объектно-ориентированного программирования ==== ==== 4. Отличия от объектно-ориентированного программирования ====
Строка 68: Строка 68:
 Одна из самых известных реализаций **КОП**. Существует ряд весьма сложных проектов, выполненных на нём. Чего стоит система управления транспортом в Швейцарии, или бортовая система для беспилотного вертолёта. Основной боевой самолёт Евросоюза -- [[https://ru.wikipedia.org/wiki/Eurofighter_Typhoon|Еврофайтер]] частично оснащён бортовым ПО на **Компонентном Паскале**. **Компонентный Паскаль** можно встретить под ОС **Windows, Linux, ColibriOS**. На родственных языках была написана ОС **Oberon, Blubottle (Aos, LinAos, WinAos)**, ряд других экспериментальных проектов. Существует реализация **Компонентного Паскаля** для среды **.Net**, **Java**, **JavaScript**, интерпретатор на **Golang** и конечно **GNU GCC**. Одна из самых известных реализаций **КОП**. Существует ряд весьма сложных проектов, выполненных на нём. Чего стоит система управления транспортом в Швейцарии, или бортовая система для беспилотного вертолёта. Основной боевой самолёт Евросоюза -- [[https://ru.wikipedia.org/wiki/Eurofighter_Typhoon|Еврофайтер]] частично оснащён бортовым ПО на **Компонентном Паскале**. **Компонентный Паскаль** можно встретить под ОС **Windows, Linux, ColibriOS**. На родственных языках была написана ОС **Oberon, Blubottle (Aos, LinAos, WinAos)**, ряд других экспериментальных проектов. Существует реализация **Компонентного Паскаля** для среды **.Net**, **Java**, **JavaScript**, интерпретатор на **Golang** и конечно **GNU GCC**.
 ==== 9. Ссылки ==== ==== 9. Ссылки ====
-Форум русскоязычного сообщества КОП OberonCorehttp://oberoncore.ru/+  * [[http://oberoncore.ru/|Форум русскоязычного сообщества КОП OberonCore]] 
 +  * [[http://www.inr.ac.ru/~info21/|Научно-образовательный проект Информатика-21]] 
 +  * [[https://ru.wikibooks.org/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B9_%D0%9F%D0%B0%D1%81%D0%BA%D0%B0%D0%BB%D1%8C|Материалы по  Компонентному Паскалю (неполная версия этого учебника)]].
  
-Научно-образовательный проект: [[http://www.inr.ac.ru/~info21/|Информатика-21]] 
  
-Материалы по  [[https://ru.wikibooks.org/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B9_%D0%9F%D0%B0%D1%81%D0%BA%D0%B0%D0%BB%D1%8C|Компонентному Паскалю (неполная версия этого учебника)]].+ 
 +[[blackbox:manual|Оглавление]] | [[blackbox:manual:history|Далее]]
blackbox/manual/component-based.1514262447.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)