Що таке програмне забезпечення? [зачинено]


194

Чи можете мені хтось пояснити, що таке програмне забезпечення? Для чого нам потрібна рамка? Що робить рамка для спрощення програмування?

Відповіді:


422

Я дуже пізно відповів на це. Але я хотів би поділитися одним прикладом, про який я думав лише сьогодні. Якби я сказав вам вирізати аркуш паперу розмірами 5м на 5м, тоді ви точно зробите це. Але припустимо, я прошу вас вирізати 1000 аркушів паперу однакових розмірів. У цьому випадку ви не зробите вимірювання 1000 разів; очевидно, ви зробили би раму розміром 5 м на 5 м, а потім за допомогою неї ви змогли б за короткий час вирізати 1000 аркушів паперу. Отже, ви зробили рамку, яка б виконувала конкретний тип завдань. Замість того, щоб виконувати один і той же тип завдань знову і знову для одного і того ж типу додатків, ви створюєте рамки, що мають усі ці засоби разом в одному приємному пакеті, таким чином забезпечуючи абстракцію для вашої програми та ще важливіше багато застосунків.


27
Я хотів би знати причину відмови від голосування. Це допоможе мені покращити його.
Neha Choudhary

4
круто, дуже легко зрозуміти ........... дякую багато
Premkumar

25
@NehaChoudhary, Не я, але він -1, бо те, про що ти говориш, це бібліотека, а не рамки, оскільки немає IoC.
Pacerier

11
Я читав вашу публікацію, але те, що ви публікуєте, звучить як те, що може зробити бібліотека. Як щодо пояснення різниці між рамками та бібліотекою?
Аарон Лю

2
Я не розумію. З того, що ви пояснили, це буде більше схоже на бібліотеку?
маршрутизатор

92

Технічно вам не потрібна рамка. Якщо ви створюєте дійсно простий сайт (подумайте про Інтернет ще в 1992 році), ви можете просто зробити це за допомогою жорсткого коду HTML і деяких CSS.

І якщо ви хочете зробити сучасний веб-сайт, вам також не потрібно використовувати рамки для цього.

Натомість ви можете кожен раз писати всю необхідну вам логіку. Ви можете написати власний рівень збереження даних / рівень зберігання даних, або - якщо ви занадто зайняті - просто напишіть спеціальний SQL для кожного окремого доступу до бази даних. Ви можете написати власні шари аутентифікації та обробки сеансів. І ваша логіка відтворення шаблону. І ваша власна логіка обробки винятків. І власні функції безпеки. І ваш власний блок тестування блоку, щоб переконатися, що все працює добре. І ваш власний ... [триває досить довго]

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

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

А вартість цього? Вкладаючи деякий час у вивчення рамки. Але - як свідчить практично кожен веб-розробник там - це, безумовно, варто витратити час на навчання, щоб отримати величезні (справді, масивні) переваги від використання будь-якої рамки, яку ви вибрали.


17
Чому б не внести цю енергію в внесок у рамки з відкритим кодом, а не накручувати свої речі? «Поодинці ми можемо переміщувати скелі; разом ми можемо перенести гори 'і все це
Стів Джалім

7
@Jefffrey "Тоді як ти вчишся? Як ти виростеш програмістом?" Дізнайтеся, як вам хочеться, але якщо ви збираєтесь працювати для реального клієнта, вам слід запропонувати найкраще можливе рішення за найкоротший час. ВАШ "ймовірно баггі" код не прийнятний для цього.
Cmorales

6
@Cmorales, якщо ви хочете вивчити мову програмування або який - або домен конкретної проблеми ви , безумовно , не матиме ніякого «реального» клієнта (і ви , можливо , багато часу в вашій руці) , і що саме тому я пропоную новачкам не починати з рамок.
взуття

3
@Jefffrey Ви нічого не сказали про новачків у своєму коментарі, це було загалом. Я погоджуюся, що вам слід спочатку вчитися самостійно, але ваш коментар не вказав цього, і в реальному (робочому) житті ви не можете дозволити собі використовувати баггі-код просто для навчання. Я знаю деяких хлопців, які не використовують фреймворки, тому що вони думають, що знають краще ... і витрачають вдвічі більше часу на кожен проект.
Cmorales

1
@Cmorales Я також знаю деяких людей, які використовують рамки, але також беруть вдвічі більше часу на кожен проект. Швидкість програмування не завжди пов'язана з використовуваними інструментами.
Сайфер

53

Підсумок Wikipedia (Software Framework) (перший google hit btw) пояснює це досить добре:

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

Рамки програмного забезпечення мають такі відмінні функції, які відокремлюють їх від бібліотек або звичайних програм користувача:

  1. інверсія управління - в рамках, на відміну від бібліотек або звичайних програм користувачів, загальний потік програми управління диктується не абонентом, а рамкою. [1]
  2. поведінка за замовчуванням - Рамка має поведінку за замовчуванням. Ця поведінка за замовчуванням насправді має бути корисною поведінкою, а не серією відмов.
  3. розширюваність - Рамка може бути розширена користувачем зазвичай шляхом виборчого переосмислення або спеціалізована за кодом користувача, що забезпечує певну функціональність.
  4. не змінюваний рамковий код - рамковий код, як правило, не можна змінювати. Користувачі можуть розширювати рамку, але не змінювати її код.

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


13
Біла частина вашої відповіді була набагато кращою за сіру частину, відповідно до типу запитання ...
OlimilOops

Я впевнений, що людина, яка задає питання, теж знайшла запис у Вікіпедії ... Він / Вона, мабуть, шукав більш вичерпну відповідь.
Stophface

31

Дуже багато хороших відповідей, але дозвольте мені побачити, чи можу я дати вам іншу точку зору.

Полегшивши речі, ви можете розглядати рамку як програму, яка є повною, за винятком фактичної функціональності. Ви підключаєте функціональність та PRESTO! у вас є додаток.

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

Існують подібні типи фреймворків для веб-додатків, для додатків на сервері тощо. У кожному конкретному випадку рамки забезпечують основну частину нудного, повторюваного коду (сподіваємось), при цьому ви надаєте фактичну функціональну функцію домену. (Це ідеал. Насправді, звичайно, успіх цієї рамки дуже мінливий.)

Ще раз наголошую, що це спрощений погляд на те, що таке рамка. Я не використовую страшні терміни, такі як "Інверсія контролю" тощо, хоча більшість фреймворків мають вбудовані такі страшні поняття. Оскільки ви початківець, я подумав, що пошкодую вам жаргон і поїду з легким іміджем.


14

Я не впевнений, що є чітке визначення поняття "фреймворк". Іноді великий набір бібліотек називають фреймворком, але я думаю, що типове використання цього слова ближче до визначення, яке принесло aioobe.

Ця дуже приємна стаття підсумовує різницю між лише набором бібліотек та рамками:

Рамка може бути визначена як набір бібліотек, які говорять "Не дзвоніть нам, ми зателефонуємо вам".

Як рамки допомагають вам? Тому що замість того, щоб щось писати з нуля, ви в основному просто розширюєте задану, працюючу програму. Таким чином ви отримуєте велику продуктивність - іноді отримана програма може бути набагато складнішою, ніж ви могли зробити самостійно в ті ж часові рамки, - але ви зазвичай торгуєте з великою гнучкістю.


8

Просте пояснення: Рамка - це ешафот, на якому ви можете створювати додатки.

Рамка, як правило, забезпечує деяку базову функціональність, яку можна використовувати і розширювати для створення складніших додатків, є рамки для всіляких речей. Microsofts MVC Framework - хороший приклад цього. Він надає все необхідне для того, щоб вийти з наземного веб-сайту за допомогою шаблону MVC, він обробляє веб-запити, маршрути тощо. Все, що вам потрібно зробити - це реалізувати "Контролери" та надати "Перегляди", які є двома конструкціями, визначеними рамкою MVC. Система MVC потім обробляє виклики контролерів та надає ваші уявлення.

Можливо, не найкраще формулювання, але я сподіваюся, що це допомагає


1
Насправді це більше схоже на введення додатків у ліси, ніж навколо нього.
Йорг W Міттаг

4

На найнижчому рівні рамки - це середовище, де вам надають набір інструментів для роботи

ці інструменти поставляються у вигляді бібліотек, файлів конфігурації тощо.

це так зване "середовище" надає вам основні настройки (повідомлення про помилки, файли журналів, налаштування мови тощо) ... які можна змінювати, розширювати та надбудовувати.

Людям насправді не потрібні рамки, це лише питання, що потрібно заощадити час, а інші - лише питання особистих уподобань.

Люди виправдовуватимуться тим, що з рамкою вам не доведеться кодувати з нуля. Але це лише люди, що плутають бібліотеки з рамками.

Я тут не заангажований, я фактично зараз використовую рамки.


4

Загалом, рамкова робота - це реальна або концептуальна структура, призначена слугувати опорою або керівництвом для побудови якоїсь речі, яка розширює структуру на щось корисне ...


2

Рамка забезпечує функціональність / рішення конкретної проблемної області.
Визначення з wiki :

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


У першому реченні є слово "абстракція". що ти маєш на увазі ? де ми використовуємо абстракцію?
Kumaresan Perumal

2

Рамка допомагає нам використовувати "вже створений", метафора може бути такою,

думаю, що земний матеріал - мова програмування,

і, наприклад, "камера" - це програма, і ви вирішили створити зошит. Вам не потрібно щоразу відтворювати камеру, ви просто використовуєте заземлюючий каркас (наприклад, для магазину технологій), берете камеру та інтегруєте її у свій ноутбук.


2

Рамка має деякі функції, які вам можуть знадобитися. можливо вам знадобиться якийсь масив, який має вбудовані механізми сортування. Або, можливо, вам потрібне вікно, де ви хочете розмістити деякі елементи керування, все, що ви можете знайти в рамках. це своєрідна РОБОТА, яка охоплює ФРАМ навколо своєї власної роботи.

EDIT: Гаразд я збираюся копати те, що ви, хлопці, намагалися сказати мені;) Ви, мабуть, не помітили інформацію між рядками "РОБОТА, яка охоплює РАМУ навколо ...", перш ніж це стає глибше n глибше. Я намагаюся дати слово на це, сподіваючись, що ви граціозно:
гарне пояснення до питання "Різниця між бібліотекою та рамкою" я знайшов тут
http://ifaceoughts.net/2007/06/04/difference-between- a-library-and-a-frame /


повністю не розумію тих, хто вниз голосує ... Я повністю приголомшений. питання є таким початковим базовим запитанням, і моя відповідь була відповідно до цього досить добре ...
OlimilOops

4
Щоб було зрозуміло: я не проголосував. Однак те, про що ви говорите, знаходиться на значно нижчому рівні, ніж те, що стосується рамки. Колекції та сортування алгоритмів - це більше стандартних бібліотек, ніж, наприклад, Frameworks.
баккал

1
дякую за відповідь, але ... це не відповідь на моє запитання. Відповідно до запитання ОП, тут є невідповідне місце між «стандартною бібліотекою» та «рамкою». наприклад, в .net-Framework ви можете знайти колекції простору імен у частині фреймворку. Я ніколи не чув, щоб хтось говорив, що колекція простору імен не є частиною .netframework. тож ваша відповідь на моє запитання помилкова
OlimilOops

1
Це визначення бібліотеки . У ньому відсутня відмітна риса рамки на відміну від бібліотеки: Інверсія управління .
Йорг W Міттаг

2

Крім визначень, які іноді зрозумілі лише, якщо ви вже розумієте, мені допоміг приклад.

Я думаю, що я проглянув розуміння під час пошуку сортування списку в .Net; приклад рамки, що забезпечує функціональність, що відповідає індивідуальному коду користувача, що забезпечує певну функціональність. Скористайтеся списком.Sort (IComparer). Алгоритму сортування, який знаходиться в рамках .Net в методі Sort, потрібно зробити ряд порівнянь; чи приходить об'єкт A до або після об'єкта B? Але сам сортування не має поняття, як зробити порівняння; це знає лише той тип, який сортується. Ви не можете написати алгоритм сортування порівняння, який може бути використаний багатьма користувачами і передбачити всі типи, до яких ви б закликали сортувати. Ви повинні залишити цю роботу над самим користувачем. Тож тут, сортування, він також називає структуру, передзвонює метод у коді користувача, тип відсортований, щоб він міг зробити порівняння. (Або можна використовувати делегата;

Чи правильно я це зробив?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.