Идеите за паралелни изчисления и обработка на информация отдавна са прерогатив на специалистите и доста значителен проблем по отношение на изпълнението. Не толкова отдавна са придобили особено значение и масов интерес. Може да се твърди, че развитието на интернет технологиите даде нов тласък и паралелното програмиране придоби нови потребителски качества. Това доведе не само до очевидния напредък на технологиите и езиците за програмиране. Това всъщност създаде обратен ефект върху разбирането на паралелния процес.
Паралелни изчисления: съдържание и изпълнение
Тази идея доведе до четири архитектури:
Липса на архитектурна идея: липса на семантика
Индустриално прилагане на паралелизъм
Windows и нейните подобни системи са консолидирали тази идея и всъщност я превръщат в правна норма: паралелизмът и съобщенията са едно цяло за всеки многопроцесорен, многоядрен и по същество - за всяка информационна система.
Изчисляването е частен случай на обработка на информация. От паралелни архитектури, внедрени чрез хардуер до мобилни софтуерни решения: паралелните програмни езици наистина станаха собственост на историята. Модерният език осигурява реални паралелни процеси, но за това той не е задължително да има специални оператори в синтаксиса или допълнителнитебиблиотеки към езика. "Индустриално" мислене в програмирането, когато целта е паралелното многонишково програмиране, а не средство, не беше дълго. Кои фундаментални резултати води, е трудно да се каже. Няма съмнение обаче, че програмирането, което беше до епохата на интернет програмирането, беше в основата на отличните идеи и добрия потенциал на съвременните езици и инструменти.
Първите компютри са били чудовища, заемат една четвърт от футболното игрище и разпределят толкова топлина, че е лесно да се загрява малка местност, а не да се харчат за изграждането на електроцентрали.
Следващото поколение компютри - лично. Личността беше поставена на работния плот, а мобилните телефони можеха да се носят на раменете си. Личността бързо се променя и придобива модерен облик, дава живот на лаптопи, таблети и други устройства, а мобилните телефони се превръщат в удобни, мултифункционални смартфони.
Производителят на електронни компоненти се възползва изцяло от идеите от минали години и паралелното програмиране вече съществува на всяко устройство, независимо от това как се отнася до този или онзи разработчик на софтуер. Днес броят на процесорните ядра, броят на процесорите, нивото на технологиите, паралелизмът и функционалността на кода са критични дори за непосветения потребител.
Теория на графиките и масовата поддръжка, като частни варианти, изчисления на линии и криви за визуално представянеИнформацията като основа за видеокартите доведе до ясна функционалност на хардуерния компонент, който получи статут и качество на стандарта. Може да се говори за броя на ядрата в процесора на устройството, но процесорът за показване на информация отдавна е такъв и се занимава с техния бизнес. Видеокартата може да има не само един процесор и не едно ядро, а математическото устройство, което се имплантира. Компютърният процесор просто формулира прости команди за показване на информация или проба от видеопамет, а другата - за процесора на видеокартата. Всъщност математическите изчисления отдавна са отделени от главния процесор от математическия копроцесор. В момента това е и норма на нещата. Всъщност, като се има предвид паралелното програмиране на хардуерно ниво, можете да си представите модерен компютър, като набор от паралелно работещи подсистеми, които осигуряват на разработчика всичко необходимо за реализиране на разнообразни идеи, разпределени и паралелна обработка на информация.
От компютри до обработка на информация
Хардуерен компонент
Следващото поколение компютри - лично. Личността беше поставена на работния плот, а мобилните телефони можеха да се носят на раменете си. Личността бързо се променя и придобива модерен облик, дава живот на лаптопи, таблети и други устройства, а мобилните телефони се превръщат в удобни, мултифункционални смартфони.
Математически апарат
Смята се, че основните хардуерни ресурси за всяка информационна система са в перфектно състояние и се развиват стабилно. Програмистът може само да напише висококачествен код.
При класическото програмиране алгоритъмът е последователност от команди. В обектно-ориентираното програмиране алгоритъмът на решението е набор от обекти, всеки от които има свои данни и методи.
С помощта на методите обектите взаимодействат помежду си и по този начин как те ще се изпълняват от хардуерната част на компютъра(devaysa), програмистът най-малко се притеснява. Но логиката на взаимодействието на обекта е компетентността на програмиста. Информационната система, изградена върху обекти, като правило, е система от абстракции, която позволява различни опции за създаване на обекти от различни типове и дестинации. Описани на ниво абстракции, информационните системи могат да предоставят различни комбинации от обекти, включително създаването на самите тях. Казано по-просто, когато обектно-ориентираното програмиране е трудно да се свърже изпълнението на обекта на ядрото или процесора, за да се гарантира паралелното изпълнение. Това значително ще забави цялостния процес. Един обект може да съществува в десетки случаи, но това не означава, че съществуването на всеки един трябва да изчака, когато съществуването на предишното е завършено.
Съвременните интернет програми за решаване на сложни, уникални задачи предлагат единственото възможно решение: ръчна работа! За ежедневни и търговски приложения се използват многобройни и разнообразни системи за управление на обекти. Характерна особеност на интернет програмирането:несигурност; плурализъм; едновременност. Когато създавате сайт, програмистът (често екип от програмисти) не знае колко посетители ще трябва да приемат уеб ресурса, но със сигурност знае, че сайтът трябва да предостави на един и същ клиент минимално време за отговор за всяко действие. Очевидното решение е да се постави сайт на набор от сървъри или клъстери на териториална основа, след което всеки регион ще бъдеобслужват конкретен сървър. Но съвременният сайт не само предоставя информация, но и го използва. Например, един онлайн магазин не може да търгува с въздух и ако един продукт е закупен в Москва, той трябва да изчезне от склада за потребител във Владивосток.
Осъществяването на разпределена обработка на информация в действителност означава осигуряване на паралелна работа на една и съща функционалност на различни сървъри за различни групи потребители, при условие че действията на потребителите се показват в системата и не си противоречат. В този контекст паралелното програмиране придобива съвсем различно значение. Ако по-рано разработчикът постави механизма на паралелизма в горната част на ъгъла, без да има предвид самата задача, днес разработчикът се тревожи по-малко за това как паралелизмът се реализира на ниво оборудване или инструмент, интересува се от паралелизъм на ниво клиенти, т.е. -resursu.
Счита се, че клъстерът е вид разпределена паралелна обработка на информация. Това е набор от компютри, свързани с високоскоростни комуникационни линии. Характерно е, че клъстерът може да се състои от различни компютри, които могат да бъдат разположени на различни места на планетата, но по дефиниция: клъстерът е единична единица. Системите за управление на сайтове, базирани на клъстери, не позволяват пряк контрол на компонентите на клъстера чрез компютри, но осигуряват скрито, паралелно управление на всички процеси на ниворешена задача. Разработчикът, работещ с клъстери, може да планира и реализира своя собствена функция на паралелно разпределена обработка на информация. Това е много значителен напредък в модерния дизайн.
Днес е много трудно да се намери уеб ресурс, базиран на статични или динамични страници, формирани изцяло. Модерният сайт е колекция от динамични страници, които са запълнени паралелно с технологията AJAX. Текущата динамична страница се състои от различно съдържание, всяка страница от страницата може да бъде свалена самостоятелно, в зависимост от поведението на посетителя. В този контекст обектно-ориентираното програмиране показва, че не се разкрива целият му потенциал. Всъщност поведението на клиента води до заявка за сървър за актуализиране на част от страницата. Заявката е изработена, създадена е маса от обекти, сървърът изпраща резултата обратно. Следващата заявка отново е масата на обектите, резултатът се връща отново. В действителност, се оказва, че с модерния подход, сървърът "не помни" какво, кога и къде е изпратил. При всяко третиране той повтаря минимално необходимите действия, създава еднакви системни обекти.
Програмистът не може да променя логиката на сървъра, но може лесно да емулира собствения си сървър на физическото си ниво. Ще се появи напълно ново качество на разпределената паралелна обработка на информацията. Собственият сървър ще поддържа необходимата система от обекти в текущото състояние, което значително ще ускори обработката на заявки от една страница и от всички страници,отворен за всички уеб пространства за конкретен уеб ресурс.