Что такое программная среда?

Может кто-нибудь объяснить мне, что такое программная среда? Зачем нужна инфраструктура? Что делает инфраструктура для облегчения программирования?

Ответы

Ответ 1

Я очень опаздываю, чтобы ответить на него. Но я хотел бы поделиться одним примером, о котором я только думал сегодня. Если бы я сказал вам, чтобы вырезали лист бумаги размером 5 м на 5 м, то, конечно же, вы это сделаете. Но предположим, я попрошу вас разрезать 1000 штук бумаги того же размера. В этом случае вы не будете измерять 1000 раз; очевидно, вы сделали бы рамку размером 5 м на 5 м, а затем с ее помощью вы могли бы сократить 1000 штук бумаги за меньшее время. Итак, что вы сделали, это создать структуру, которая будет выполнять определенный тип задачи. Вместо того, чтобы повторять один и тот же тип задачи снова и снова для приложений того же типа, вы создаете инфраструктуру, содержащую все эти средства, в одном хорошем пакете, следовательно, предоставляя абстракцию для вашего приложения и, что более важно, много приложений.

Ответ 2

Технически вам не нужна фреймворк. Если вы создаете действительно простой сайт (подумайте о сети в 1992 году), вы можете просто сделать все это с жестко закодированным HTML и некоторым CSS.

И если вы хотите создать современный webapp, вам действительно не нужно использовать фреймворк для этого.

Вместо этого вы можете написать всю логику, в которой вы нуждаетесь, каждый раз. Вы можете написать свой собственный уровень сохранения данных/хранения, или, если вы слишком заняты, просто напишите собственный SQL для каждого доступа к базе данных. Вы можете написать свои собственные уровни проверки подлинности и обработки сеанса. И ваша собственная логика шаблона. И ваша собственная логика обработки исключений. И ваши собственные функции безопасности. И ваша собственная инфраструктура unit test, чтобы убедиться, что все работает нормально. И ваш собственный... [продолжается довольно долго]

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

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

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

Ответ 3

Резюме в Wikipedia (Software Framework) (первая ошибка в google) объясняет это довольно хорошо:

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

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

  • инверсия управления. В рамках, в отличие от библиотек или обычных пользовательских приложений, общий поток управления программой не продиктован вызывающим, а фреймворком. [1]
  • поведение по умолчанию. Структура имеет поведение по умолчанию. Это поведение по умолчанию должно быть действительно полезным, а не серией no-ops.
  • расширяемость. Структура может быть расширена пользователем, как правило, путем выборочного переопределения или специализированного кода пользователя, предоставляющего определенные функции.
  • немодифицируемый код рамки. Код рамки, вообще говоря, не может быть изменен. Пользователи могут расширять фреймворк, но не изменять его код.

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

Ответ 4

Уже много хороших ответов, но позвольте мне посмотреть, могу ли я дать вам другую точку зрения.

Упрощение вещей довольно просто, вы можете просматривать фреймворк как приложение, полное, за исключением фактической функциональности. Вы подключаете функциональность и PRESTO! у вас есть приложение.

Рассмотрим, скажем, структуру GUI. Структура содержит все необходимое для создания приложения. Действительно, вы часто можете сделать минимальное приложение с очень небольшим количеством строк, которое абсолютно ничего не делает, но оно дает вам управление окнами, управление под-окнами, меню, кнопки и т.д. Это каркасная сторона вещей. Добавляя функциональность вашего приложения и "подключая его" к нужным местам в рамках, вы превращаете это пустое приложение, которое делает ничего, кроме управления окнами, и т.д. В реальном, полномасштабном приложении.

Существуют аналогичные типы фреймворков для веб-приложений, серверных приложений и т.д. В каждом случае структура обеспечивает основную часть утомительного повторяющегося кода (надеюсь), пока вы предоставляете фактическую функциональность проблемной области. (Это идеальный вариант. В действительности, конечно, успех каркаса сильно варьируется.)

Я снова подчеркиваю, что это упрощенное представление о структуре. Я не использую такие страшные термины, как "Inversion of Control" и т.п., Хотя в большинстве фреймворков есть такие страшные концепции. Поскольку вы новичок, я думал, что пощажу вас на жаргоне и займусь простым сравнением.

Ответ 5

Я не уверен, что есть четкое определение "рамки". Иногда большой набор библиотек называется фреймворком, но я думаю, что типичное использование слова ближе к определению aioobe.

Эта очень хорошая статья подводит итог разнице между набором библиотек и каркасом:

Рамку можно определить как набор библиотек, которые говорят: "Не звоните нам, хорошо позвоните".

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

Ответ 6

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

Структура обычно предоставляет некоторые базовые функции, которые вы можете использовать и расширить для создания более сложных приложений, существуют рамки для всех видов вещей. Хорошим примером этого является инфраструктура Microsoft MVC. Он предоставляет все, что вам нужно, чтобы выйти из наземного веб-сайта с использованием шаблона MVC, он обрабатывает веб-запросы, маршруты и т.п. Все, что вам нужно сделать, это реализовать "Контроллеры" и предоставить "Представления", которые представляют собой две конструкции, определенные структурой MVC. Затем среда MVC обрабатывает вызовы ваших контроллеров и рендеринг ваших представлений.

Возможно, не лучшая формулировка, но я надеюсь, что это поможет

Ответ 7

на самом низком уровне, среда - это среда, где вам предоставляется набор инструментов для работы с

эти инструменты представлены в виде библиотек, конфигурационных файлов и т.д.

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

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

Люди будут оправдывать это с помощью рамки, вам не нужно вводить код с нуля. Но это просто люди, запутывающие библиотеки с помощью фреймворков.

Я не пристрастен здесь, я фактически использую фреймворк прямо сейчас.

Ответ 8

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

EDIT: ОК, я собираюсь копать то, что вы, ребята, пытались мне сказать;) вы, вероятно, не заметили информацию между строками "РАБОТА, которая охватывает РАМУ вокруг..." пока это не станет глубже глубже. Я пытаюсь дать слово ему, надеясь, что вы грамотно:
хорошее объяснение вопросу "Разница между библиотекой и каркасом", которую я нашел здесь
http://ifacethoughts.net/2007/06/04/difference-between-a-library-and-a-framework/

Ответ 9

Структура обеспечивает функциональные возможности/решение конкретной проблемной области.
Определение из wiki:

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

Ответ 10

Структура помогает нам об использовании "уже созданного", может быть как метафор,

считают, что материал земли - это язык программирования,

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

Ответ 11

Помимо определений, которые иногда понятны, только если вы уже поняли, мне помог пример.

Я думаю, что у меня есть проблеск понимания, когда я собираюсь сортировать список в .Net; пример структуры, обеспечивающей функциональность, адаптированную с помощью кода пользователя, обеспечивающего определенную функциональность. Возьмите List.Sort(IComparer). Алгоритм сортировки, который находится в среде .Net в методе Sort, должен выполнять серию сравнений; делает ли объект А до или после объекта B? Но сам Сорт не имеет понятия, как сделать сравнение; знает только этот тип сортировки. Вы не можете написать алгоритм сортировки сравнения, который может быть повторно использован многими пользователями и предвидеть все различные типы, которые вы должны были бы сортировать. Вы должны оставить эту работу до самого пользователя. Таким образом, здесь, сортировка, ака рамки, обращается к методу в пользовательском коде, сортируемый тип, чтобы он мог сравнивать. (Или делегат может использоваться, то же самое.)

Я правильно понял?

Ответ 12

В целом, рамочная работа является реальной или концептуальной структурой, предназначенной для поддержки или руководства для строительства, что-то, что расширяет структуру во что-то полезное...