Czy ktoś może mi wyjaśnić, czym jest struktura oprogramowania? Dlaczego potrzebujemy ram? Co robi środowisko, aby ułatwić programowanie?
źródło
Czy ktoś może mi wyjaśnić, czym jest struktura oprogramowania? Dlaczego potrzebujemy ram? Co robi środowisko, aby ułatwić programowanie?
Jestem bardzo spóźniony na odpowiedź. Chciałbym jednak podać jeden przykład, o którym myślałem tylko dzisiaj. Gdybym kazał ci wyciąć kawałek papieru o wymiarach 5 na 5 m, to na pewno byś to zrobił. Przypuśćmy jednak, że proszę cię o wycięcie 1000 kawałków papieru o tych samych wymiarach. W takim przypadku nie wykonasz pomiaru 1000 razy; oczywiście zrobiłbyś ramę o wymiarach 5 na 5 m, a następnie przy jej pomocy byłbyś w stanie wyciąć 1000 kawałków papieru w krótszym czasie. To, co zrobiłeś, było stworzeniem frameworka, który wykonałby określony rodzaj zadania. Zamiast wielokrotnie wykonywać ten sam typ zadania dla tego samego typu aplikacji, tworzysz strukturę posiadającą wszystkie te funkcje razem w jednym ładnym pakiecie, zapewniając w ten sposób abstrakcję dla twojej aplikacji i, co ważniejsze, wielu aplikacji.
Technicznie nie potrzebujesz ramy. Jeśli tworzysz naprawdę bardzo prostą stronę (pomyśl o Internecie w 1992 r.), Możesz to wszystko zrobić na sztywno HTML i trochę CSS.
A jeśli chcesz stworzyć nowoczesną aplikację internetową, nie musisz też używać do tego frameworka.
Zamiast tego możesz za każdym razem napisać całą logikę, której potrzebujesz. Możesz napisać własną warstwę trwałości / przechowywania danych lub - jeśli jesteś zbyt zajęty - po prostu napisać niestandardowy kod SQL dla każdego dostępu do bazy danych. Możesz pisać własne warstwy uwierzytelniania i obsługi sesji. I twój własny szablon do renderowania logiki. I twoja własna logika obsługi wyjątków. I twoje własne funkcje bezpieczeństwa. I twoja własna struktura testów jednostkowych, aby upewnić się, że wszystko działa dobrze. A twoje własne ... [trwa dość długo]
Potem znowu, jeśli zrobić użyciu ramy , będziesz mógł korzystać z dobra, zazwyczaj oceniane przez ekspertów i bardzo dobrze przetestowane pracę dziesiątki jeśli nie setki innych deweloperów, który może okazać się lepszy niż ty. Będziesz mógł szybko budować to, co chcesz, bez konieczności poświęcania czasu na budowanie lub martwienie się zbytnio o elementy infrastruktury wymienione powyżej.
Możesz zrobić więcej w krótszym czasie i wiedzieć, że kod frameworki, którego używasz lub rozszerzasz, jest prawdopodobnie lepszy niż robisz to sam.
A koszt tego? Poświęć trochę czasu na naukę ram. Ale - o czym świadczy praktycznie każdy twórca stron internetowych - zdecydowanie warto poświęcić czas na naukę, aby uzyskać ogromne (naprawdę ogromne) korzyści z korzystania z dowolnych ram.
źródło
Podsumowanie na Wikipedii (Software Framework) (pierwsze google hit btw) wyjaśnia to całkiem dobrze:
Możesz go „potrzebować”, ponieważ może on stanowić doskonały skrót podczas tworzenia aplikacji, ponieważ zawiera wiele już napisanych i przetestowanych funkcji. Powód jest dość podobny do powodu korzystania z bibliotek oprogramowania.
źródło
Wiele dobrych odpowiedzi już, ale pozwól mi zobaczyć, czy mogę dać ci inny punkt widzenia.
Upraszczając rzeczy, możesz zobaczyć platformę jako kompletną aplikację, z wyjątkiem faktycznej funkcjonalności. Podłączasz funkcjonalność i PRESTO! masz aplikację.
Rozważmy, powiedzmy, strukturę GUI. Struktura zawiera wszystko, czego potrzebujesz, aby utworzyć aplikację. Rzeczywiście, często możesz w prosty sposób stworzyć minimalną aplikację z bardzo małą liczbą linii źródłowych, która absolutnie nic nie robi - ale daje ci zarządzanie oknami, zarządzanie podokienami, menu, paski przycisków itp. To jest podstawowa strona rzeczy. Dodając funkcjonalność aplikacji i „podłączając ją” w odpowiednie miejsca w ramach, zmieniasz tę pustą aplikację, która robi nic więcej niż zarządzanie oknami itp. W prawdziwą, pełnowartościową aplikację.
Istnieją podobne typy platform dla aplikacji internetowych, aplikacji po stronie serwera itp. W każdym przypadku platforma zapewnia większość żmudnego, powtarzalnego kodu (miejmy nadzieję), podczas gdy zapewniasz rzeczywistą funkcjonalność domeny problemowej. (Jest to ideał. W rzeczywistości sukces frameworka jest bardzo zmienny).
Podkreślam ponownie, że jest to uproszczony pogląd na to, czym są ramy. Nie używam strasznych terminów, takich jak „Inversion of Control” i tym podobne, chociaż większość platform ma wbudowane takie przerażające koncepcje. Ponieważ jesteś początkujący, pomyślałem, że oszczędzę ci żargonu i pójdę z łatwym przykładem.
źródło
Nie jestem pewien, czy istnieje jednoznaczna definicja „frameworka”. Czasami duży zestaw bibliotek nazywa się ramą, ale myślę, że typowe użycie tego słowa jest bliższe definicji przyniesionej przez aioobe.
Ten bardzo fajny artykuł podsumowuje różnicę między zestawem bibliotek a frameworkiem:
W jaki sposób ramy mogą ci pomóc? Ponieważ zamiast pisać coś od zera, po prostu rozszerzasz daną działającą aplikację. W ten sposób zyskujesz dużą produktywność - czasem wynikowa aplikacja może być znacznie bardziej skomplikowana niż sama w tym samym czasie - ale zwykle cechuje się dużą elastycznością.
źródło
Prostym wyjaśnieniem jest: Framework to rusztowanie, w którym można budować aplikacje.
Framework ogólnie zapewnia pewną podstawową funkcjonalność, z której można korzystać i rozszerzać go w celu tworzenia bardziej złożonych aplikacji, istnieją ramy dla wszelkiego rodzaju rzeczy. Framework Microsofts MVC jest tego dobrym przykładem. Zapewnia wszystko, czego potrzebujesz, aby wyjść ze strony internetowej budynku przy użyciu wzorca MVC, obsługuje żądania internetowe, trasy i tym podobne. Wszystko, co musisz zrobić, to wdrożyć „Kontrolery” i dostarczyć „Widoki”, które są dwiema konstrukcjami zdefiniowanymi w ramach MVC. Struktura MVC obsługuje następnie wywoływanie kontrolerów i renderowanie widoków.
Być może nie najlepsze sformułowanie, ale mam nadzieję, że to pomoże
źródło
na najniższym poziomie środowisko to środowisko, w którym otrzymujesz zestaw narzędzi do pracy
narzędzia te mają postać bibliotek, plików konfiguracyjnych itp.
to tak zwane „środowisko” zapewnia podstawową konfigurację (raporty błędów, pliki dziennika, ustawienia języka itp.) ... którą można modyfikować, rozszerzać i rozbudowywać.
Ludzie tak naprawdę nie potrzebują ram, to tylko kwestia chęci zaoszczędzenia czasu, a inni tylko kwestia osobistych preferencji.
Ludzie uzasadnią, że dzięki frameworkowi nie musisz pisać kodu od zera. Ale to tylko ludzie mylący biblioteki z frameworkami.
Nie jestem tutaj stronniczy, aktualnie używam frameworka.
źródło
Ogólnie rzecz biorąc, praca z ramą jest rzeczywistą lub konceptualną strukturą, która ma służyć jako wsparcie lub przewodnik do budowania czegoś, co rozwija strukturę w coś użytecznego ...
źródło
Struktura zapewnia funkcje / rozwiązania dla konkretnego obszaru problemu.
Definicja z wiki :
źródło
Framework pomaga nam w korzystaniu z „już utworzonego”, metafora może być taka,
myślę, że materiał ziemi jest językiem programowania,
i na przykład „kamera” to program, a ty postanowiłeś stworzyć zeszyt. Nie musisz odtwarzać kamery za każdym razem, po prostu korzystasz z szkieletu ziemi (na przykład w sklepie technologicznym), weź aparat i zintegruj go z notebookiem.
źródło
Framework ma pewne funkcje, których możesz potrzebować. być może potrzebujesz tablic, które mają wbudowane mechanizmy sortowania. A może potrzebujesz okna, w którym chcesz umieścić elementy sterujące, wszystko, co możesz znaleźć w frameworku. to rodzaj PRACY, która obejmuje RAMĘ wokół twojej pracy.
EDYCJA: OK Mam zamiar wykopać to, co próbowaliście mi powiedzieć;) być może nie zauważyliście informacji między wierszami „PRACA, która rozciąga się wokół RAMKI ...”, zanim to się jeszcze głębiej zapadnie. Staram się dać temu wyraz, mając nadzieję, że jesteś łaskawie:
dobre wyjaśnienie pytania „Różnica między biblioteką a ramą ” znalazłem tutaj
http://ifacethoughts.net/2007/06/04/difference-between- a-biblioteka-i-framework /
źródło
Poza definicjami, które czasem są zrozumiałe tylko wtedy, gdy już rozumiesz, przykład pomógł mi.
Wydaje mi się, że dostrzegłem błysk zrozumienia, gdy szukałem sortowania listy w .Net; przykład frameworka zapewniającego funkcjonalność dostosowaną do kodu użytkownika zapewniającego określoną funkcjonalność. Weź List.Sort (IComparer). Algorytm sortowania, który znajduje się w frameworku .Net w metodzie Sort, musi wykonać szereg porównań; czy obiekt A występuje przed czy za obiektem B? Ale samo sortowanie nie ma pojęcia, jak dokonać porównania; tylko sortowany typ wie o tym. Nie można napisać algorytmu sortowania porównawczego, który może być ponownie użyty przez wielu użytkowników i przewidzieć wszystkie typy, do których sortowania zostaniesz wezwany. Tę część pracy musisz pozostawić samemu użytkownikowi. Więc tutaj, sortuj, zwany też frameworkiem, wywołuje metodę w kodzie użytkownika, sortując typ, aby mógł dokonać porównania. (Lub można użyć delegata;
Czy dobrze to zrozumiałem?
źródło