7 powodów, dla których frameworki to nowe języki programowania

W latach 80. najłatwiejszym sposobem na rozpoczęcie walki z kujonami było ogłoszenie, że twój ulubiony język programowania jest najlepszy. C, Pascal, Lisp, Fortran? Programiści spędzili wiele godzin na wyjaśnianiu, dlaczego ich szczególny sposób tworzenia klauzuli „jeśli-to-inaczej” był lepszy od ciebie.

To było wtedy. Dzisiaj bitwy dotyczące składni i struktury są już w dużej mierze zakończone, ponieważ świat zbiegał się w kilku prostych standardach. Różnice między średnikami, nawiasami klamrowymi i innymi elementami w językach C, Javie i JavaScript są niewielkie. Nadal istnieją interesujące debaty na temat pisania na klawiaturze i zamykania, ale większość z nich jest dyskusyjna, ponieważ automatyzacja wypełnia lukę. Jeśli nie podoba ci się określanie typu danych, istnieje duża szansa, że ​​komputer będzie w stanie wywnioskować dokładnie, co masz na myśli. Jeśli Twój szef chce JavaScript, ale lubisz Javę, cross-kompilator przekonwertuje całą twoją statycznie wpisaną Javę na zminimalizowany JavaScript, gotowy do uruchomienia w przeglądarce. Po co walczyć, skoro technologia stoi za naszymi plecami?

Dziś ciekawa akcja jest w ramach. Kiedy usiadłem z innymi członkami wydziału na Uniwersytecie Johnsa Hopkinsa, aby zaplanować nowy kurs, dyskusje zdominowały ramy. Czy Angular jest lepszy niż Ember? Czy Node.js to wszystko?

Zaprojektowaliśmy kurs ankietowy, który miałby zbadać architekturę najważniejszych pakietów oprogramowania, które są podstawą Internetu. To było centrum akcji, godne przeprowadzenia kursu ankietowego, który miałby zgłębić architekturę najważniejszych pakietów oprogramowania otaczających dzisiejszy Internet.

W tym sensie frameworki to nowe języki programowania. Są tam, gdzie znajdują się najnowsze pomysły, filozofie i praktyczne aspekty współczesnego kodowania. Niektóre wygasają, ale wiele z nich staje się nowymi podstawowymi elementami programowania. Oto siedem aspektów, które napędzają trend ramowy - i sprawiają, że frameworki stają się nowym ulubionym siedliskiem walk nerdów.

Większość kodowania łączy w sobie interfejsy API

Był czas, kiedy pisanie oprogramowania oznaczało wykorzystanie całej wiedzy na temat języka programowania, aby wycisnąć jak najwięcej z kodu. Opanowanie złożoności wskaźników, funkcji i zakresu miało sens - jakość kodu zależała od właściwego postępowania. W dzisiejszych czasach automatyzacja obsługuje wiele z tego. Jeśli zostawisz w kodzie bezwartościowe stwierdzenia, nie martw się. Kompilator usuwa martwy kod. Jeśli zostawisz wiszące wskaźniki, moduł odśmiecania prawdopodobnie to rozgryzie.

Poza tym praktyka kodowania jest teraz inna. Większość kodu jest teraz długą linią wywołań API. Od czasu do czasu następuje ponowne formatowanie danych między wywołaniami interfejsu API, ale nawet te zadania są zwykle obsługiwane przez inne interfejsy API. Nieliczni mają szczęście pisać sprytny, wymagający bitów i żonglujący wskaźnikami kod dla wnętrzności naszych maszyn, ale większość z nas pracuje z wyższymi warstwami. Po prostu uruchamiamy potok między API.

Z tego powodu ważniejsze jest zrozumienie, jak zachowuje się interfejs API i co może zrobić. Jakie struktury danych akceptuje? Jak zachowują się algorytmy, gdy zestaw danych rośnie? Takie pytania są bardziej istotne w dzisiejszym programowaniu niż te dotyczące składni lub języka. Rzeczywiście, istnieje obecnie wiele narzędzi, które ułatwiają wywołanie procedury w jednym języku z innego. Na przykład relatywnie łatwo jest połączyć biblioteki C z kodem Java. Zrozumienie interfejsów API jest najważniejsze.

Na ramionach gigantów warto stać

Wyobraź sobie, że zostałeś uczniem Erlanga lub innego nowego języka. Decydujesz, że oferuje najlepszą platformę do pisania stabilnej, wolnej od błędów aplikacji. To miły sentyment, ale przepisanie całego kodu dostępnego dla Javy lub PHP na najnowszy wybrany język może zająć lata. Jasne, Twój kod może okazać się znacznie lepszy, ale czy warto poświęcić na to dodatkowy czas?

Ramy pozwalają nam wykorzystać ciężką pracę tych, którzy byli przed nami. Może nam się nie podobać architektura, którą wybrali i możemy spierać się o szczegóły implementacji, ale skuteczniej jest stłumić nasze skargi i znaleźć sposób na życie z różnicami. O wiele łatwiej jest odziedziczyć wszystkie dobre i złe strony kodu poprzez framework. Podążanie ścieżką macho, pisząc wszystko samodzielnie w swoim ulubionym nowym języku, zamiast w jednym z jego bardziej popularnych frameworków, nie pozwoli ci cieszyć się kremem z nowego wyboru tak szybko, jak po prostu oddać się twórcom frameworka i ich API.

Znajomość architektury jest ważna, a nie składnia

Kiedy większość kodowania łączy ze sobą wywołania API, nie ma zbytniej korzyści z poznania specyfiki języka. Jasne, możesz zostać ekspertem w zakresie inicjalizacji pól statycznych w obiektach przez Javę, ale znacznie lepiej byłoby dowiedzieć się, jak wykorzystać moc Lucene, JavaDB lub innego stosu kodu. Możesz spędzić miesiące na omawianiu procedur optymalizacji kompilatorów Objective-C, ale poznanie tajników najnowszej podstawowej biblioteki Apple naprawdę sprawi, że Twój kod będzie krzyczeć. Nauczysz się o wiele więcej szczegółów dotyczących frameworka niż składni języka, na którym opiera się struktura.

Większość naszego kodu spędza większość czasu w wewnętrznych pętlach bibliotek. Uzyskanie poprawnych szczegółów języka może pomóc, ale wiedza o tym, co dzieje się w bibliotekach, może przynieść ogromne korzyści.

Dominują algorytmy

Nauka języka programowania może pomóc w pogodzeniu się z danymi przechowywanymi w zmiennych, ale to zajmie tylko tyle. Prawdziwą przeszkodą jest poprawność algorytmów, które są zwykle definiowane i implementowane przez frameworki.

Wielu programistów rozumie, że poświęcanie czasu na ponowne wdrażanie standardowych algorytmów i struktur danych jest niebezpieczne i marnotrawne. Jasne, możesz być w stanie dostosować go nieco do swoich potrzeb, ale ryzykujesz popełnienie subtelnych błędów. Ramy były przez lata szeroko testowane. Reprezentują naszą wspólną inwestycję w infrastrukturę oprogramowania. Nie ma wielu przykładów, kiedy sensowne jest „odejście od sieci”, odrzucenie ciężkiej pracy innych i zbudowanie algorytmicznej kabiny własnymi rękami.

Właściwe podejście to przestudiowanie ram i nauczenie się, jak z nich korzystać, aby uzyskać najlepszą korzyść. Jeśli wybierzesz niewłaściwą strukturę danych, możesz zmienić zadanie liniowe w takie, które zajmuje czas, co jest funkcją kwadratową rozmiaru wejściowego. To duży problem, gdy staniesz się wirusowy.