Информатика

от Уикипедия, свободната енциклопедия
Главна ламбда буква Графика на алгоритъм за бързо сортиране
Чайник, представящ компютърна графика Тестова мишка на Майкрософт, която представя взаимодействието между човек и компютър
Информатиката се занимава с теоретичните основи на информацията, изчисленията и с практическите техники за тяхното приложение.

Информатиката е наука за събирането, преобразуването, преноса и съхранението на информация с произволни, включително и автоматични, средства. Тя изучава информацията от гледна точка на структурираност, количествени характеристики, форми и начини на представяне; информационните процеси като композиция на основните информационни дейности, както и методите и средствата за автоматизирането им.

Терминология[редактиране | редактиране на кода]

В англоезичните страни информатиката се нарича computer science (компютърни науки) – официално термин informatics няма, въпреки че се използва, например в името на Международната олимпиада по информатика – International Olympiad in Informatics. Думи със сходен корен се ползват в болшинството европейско-континентални езици. Например Informatik на немски, informatique на френски, informatica на други романски.

В практиката по света има разлика в учебните програми по информатика и компютърни науки. В университети в САЩ, които имат специалност „informatics“, тя обхваща и човешката страна в ползването на компютри. Във Факултета по математика и информатика на Софийски университет, въвеждайки класификация на ACM, създават специалност „компютърни науки“, с по-специфичен фокус върху изчислителните възможности на компютърните системи.

История[редактиране | редактиране на кода]

Най-ранните основи на днешните компютърни науки значително предхождат изобретяването на съвременния цифров компютър. Машини за изчисляване на статични числени задачи като сметалото са съществували още от древността, помагайки в изчисления като например умножение и деление. Освен това, още от древността съществуват алгоритми за изчисления, преди да се появи по-сложно изчислително оборудване.

Блез Паскал проектира и изработва първия работещ механичен калкулатор наречен калкулатор на Паскал през 1642 г[1]. През 1673 г. Готфрид Лайбниц демонстрира цифров механичен калкулатор, наречен „стъпаловидният изчислител“[2]. Той може да бъде считан за първия компютърен учен и теоретик в полето на информатиката, поради факта, че документира двоичната бройна система. През 1820 Томас де Колмар стартира индустрията на механичните калкулатори когато пуска опростения аритмометър, която е първата сметачна машина, достатъчно силна и достатъчно надеждна, за да бъде използвана ежедневно и в офис среда. Чарлз Бабидж започва проектирането на първата автоматична механича сметачна машина през 1822, а впоследствие той му дава идеята за първата машина, контролирана от програма, така наречената Аналитична машина[3]. Той започва да я разработва през 1834 г. и „за по-малко от две години вече бил очертал много от характерните черти на съвременния компютър[4]“. Решителна стъпка било възприемането на системата за въвеждане на инструкции с перфокарта заимствана от жакардовия стан,[4] правейки го програмируем. През 1843 г. по време на превода на статия за Аналитичната машина Ада Лъвлейс написва в една от многото нейни съпроводителни бележки алгоритъм за изчисляване на числата на Бернули, който се счита за първата компютърна програма[5]. Около 1885 г. Херман Холерит изобретил табулатор, който използвал перфокарти за обработка на статистическа информация. Впоследствие компанията му става част от IBM. През 1937 г., 100 години след неосъществената мечта на Бабидж, Хауърд Айкен убеждава IBM, които по това време произвеждат разнообразно офис оборудване с перфокарти, да финансират създаването на програмируема електромеханична сметачна машина, Harvard Mark I, базирана на Аналитичната машина, която използва подобни карти и централен изчислителен възел. Някои я наричат „сбъднатата мечта на Бабидж“[6].

С напредъка в разработването на нови и по-мощни изчислителни устройства през 1940-те години терминът „компютър“, който дотогава означавал „човек-изчислител“ започнал да се използва за машините, а не за операторите[7]. Става ясно, че компютрите могат изпълняват много повече задачи от чисто математически изчисления и обхватът на компютърните науки се разширява. Те започват да се обособяват като отделна академична дисциплина през 1950-те и началото на 1960-те години. Първата в света учебна програма по компютърни науки е на Кеймбриджкия университет и започва през 1953. Първата програма в САЩ стартира в университета Пърдю през 1962 г.[8].

Въпреки че първоначално мнозина не смятат информатиката за самостоятелна наука, тя постепенно се утвърждава в края на 1950-те години[9][10]. Известната компания IBM е една от движещите сили в компютърната революция по това време. Тя произвежда модела IBM 704[11] и по-късно IBM 709[12], които са широко използвани в началния период на възприемането на подобна техника.

Въпреки това, работата с новите устройства е сложна. Ако потребителят обърка дори една буква в подадената на входа команда, цялата програма се сривала и трябвало целият процес да започне отначало[10]. Към края на 1950 г., компютърните науки са в стадий на развитие и подобни проблеми са често срещано явление.[9]

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

Принос[редактиране | редактиране на кода]

Въпреки кратката си история като официална академична дисциплина, компютърната наука е направила редица фундаментални приноси към науката и обществото. В действителност, заедно с електрониката тя е една от основните науки на сегашната епоха от човешката история, наречена Информационна ера и е водач на информационната революция, разглеждана като третия голям скок в човешкия технологичен напредък след индустриалната революция (1750 – 1850) и селскостопанската революция (8000 – 5000 пр.н.е.).

Тези приноси включват:

  • Старта на „цифровата революция“ която включва текущата Информационна епоха и интернет.
  • Формалното определение за изчисление и изчислимост, и доказателството, че има нерешими изчисления и проблеми.[13]
  • Концепцията за език за програмиране, инструмент за точното изразяване на методологична информация на различни нива на абстракция[14]
  • При криптографията, разбиването на шифъра на Енигма машината е важен фактор, който допринася за победата на съюзниците през Втората световна война[15].
  • Научните изчисления разрешават практическа оценка на процеси и ситуации с голяма сложност, както и експериментиране изцяло от софтуер. Те дават възможност и за разширено изучаване на ума, и картиране на човешкия геном става възможно с Проекта за човешкия геном. Други проекти като Folding@Home проучват сгъването на протеините.
  • Алгоритмичната търговия увеличава ефективността и ликвидността на финансовите пазари чрез използване на изкуствен интелект, машинно обучение, както и други статистически и числени методи от голям мащаб[16]. Алгоритмична търговия с висока честота можела също така да изостри нестабилността[17].
  • Компютърната графика и компютърно генерираните изображения са станали повсеместни в съвременното забавление, особено в телевизия, кино, реклама, анимация и видео игри. Дори филми, които изрично не включват CGI обикновено са „заснети“ на цифрови камери или редактирани впоследствие с помощта на цифров видео редактор.
  • Симулацията на различни процеси, включително изчислителна динамика на флуиди, физически електрически и електронни системи и схеми, както и общества и социални ситуации (а именно военни игри) заедно с техните местообитания. Съвременните компютри позволяват оптимизация на проекти като завършено въздухоплавателно средство. Известни в електрическия и електронният дизайн на схеми са SPICE, както и за софтуер за физическа реализация на нови дизайни. Последното включва и забележителен софтуер за интегрални схеми.
  • Изкуственият интелект става все по-важен, тъй като става все по-ефективен и сложен. Има много приложения на изкуствения интелект, някои от които могат да се видят в домакинството, като роботизирани прахосмукачки. Той присъства и във видео игри и на модерното бойно поле в дроните, противоракетни системи, както и за роботи за подпомагане на отряди.

Области[редактиране | редактиране на кода]

Теоретична информатика[редактиране | редактиране на кода]

Областта на теоретичната информатика обхваща както класическата теория на изчисление, така и широк спектър от други теми, които се фокусират върху по-абстрактни, логически и математически аспекти.

Теория на изчисленията[редактиране | редактиране на кода]

Според Питър Денинг (Peter Denning), фундаменталният въпрос в основната на компютърна наука е: „Какво може да бъде (ефективно) автоматизирано?“ [18]Теорията на изчисление е фокусирана върху отговаряне на основните въпроси за това, какво може да се изчисли и какво количество от ресурси са необходими за извършване на тези, изчисления. В опит да се отговори на първия въпрос, теорията за изчисляемост изследва кои изчислителни проблеми са решими за различни теоретични модели на изчисление.

Вторият въпрос се решава чрез сложността на изчислителната теория, която изучава разхода на време и пространство, свързани с различни подходи при решаването на множество изчислителни проблеми. Известният P = NP? Проблем е един от проблемите от наградите на хилядолетието[19]. Той е отворен проблем в теорията на изчисление.

P = NP? GNITIRW-TERCES
Tеория на автоматизация Теория на
изчисленията
Теория на изчислителната
сложност
Криптография Квантовата
теория

Информация и теорията на кодирането[редактиране | редактиране на кода]

Теорията на информацията е свързана с количествено определяне на информацията. Тя е разработена от Клод Шанън, за да се намерят основните ограничения на операциите по обработка на сигнала, като например: компресирането на данни и надеждното съхраняване и предаване на данни.[20] Теорията за кодиране представлява изследването на свойствата на кода (системи за преобразуване на информация от една форма в друга) и тяхната приспособимост за конкретно приложение. Кодове се използват за компресиране на данни, криптография, откриване на грешки и тяхната корекция, и за мрежово кодиране. Те се изучават и за достигане на целите при проектирането на ефективни и надеждни методи за предаване на данни.

Алгоритми и структури от данни[редактиране | редактиране на кода]

Алгоритмите и структурите от данни представлява изучаването на често използвани изчислителни методи и тяхната изчислителна ефективност.

Анализ
на алгоритми
Алгоритми База данни Комбинационна
оптимизация
Изчислителна

геометрия

Теория на езиците за програмиране[редактиране | редактиране на кода]

Това е клон от компютърната наука, който се занимава с проектирането, изпълнението, анализът, характеристиката и класификацията на езиците за програмиране и техните индивидуални характеристики. Тя попада в дисциплината на компютърните науки, както в зависимост от засягащата математика, така и в софтуерното инженерство и лингвистика. Тя е активна изследователска област и е предмет на различни специализирани научни списания.

Тип теория Дизайн
на компилатора
Програмни
езици

Формална логика[редактиране | редактиране на кода]

Формалната логика представлява определен вид математически базирана техника за спецификацията, развитието и проверката на софтуерните и хардуерните системи. Използването на формална логика за изработка на дизайн на софтуер и хардуер е мотивирана от очакването, че както и в други инженерните специалности, извършване на подходящия математически анализ може да допринесе за надеждността и устойчивостта на дизайна. Тя формира важна теоретична обосновка за софтуерно инженерство, особено когато става дума за безопасността и сигурността. Формалните методи са полезно допълнение към софтуерното тестване, тъй като те помагат да се избегнат грешки и може, също така, да се създаде фреймуърк за тестване. За промишлена употреба, се изисква поддържане на инструменти. Въпреки това, високата цена за използване на формалните методи означава, че те обикновено се използват само в развитието на високо-интегрирани и критикуващи-живота системи, където безопасността или сигурността са от първостепенно значение. Формалната логика е найдобре описана чрез прилагането на достатъчно широка гама от основите на теоретичните компютърни науки, официалните езици, теорията на автоматите, и програмната семантика. Също така и от системите за типовете и алгебрични типове данни, които създават проблеми в областта на спецификацията и проверката на софтуера и хардуера.

Приложна информатика[редактиране | редактиране на кода]

Приложна информатика цели идентифицирането на някои компютърни науки понятия, които могат да се използват пряко в решаването на реални проблеми със света.

Изкуствен интелект[редактиране | редактиране на кода]

Изкуствен интелект (AI – Artificial intelligence) има за цел да се изисква или да синтезира целево ориентирани процеси, като решаване на проблеми, вземане на решения, адаптиране на околната среда, обучениете и комуникацията намерени както при хора, така и при животни. От произхода си в кибернетиката и в „Конференцията в Дартмоут“ (1956 г.), изследване върху изкуствения интелект е било задължително интердисциплинарно, изготвяйки експертни области като приложна математика, символична логика, семиотиката, електротехника, философия на ума, неврофизиология и социална интелигентност. AI е свързан с развитието на роботизацията. В основната сфера на приложение на практиката той е бил внедрен като компонент в области от разработката на софтуер, които изискват изчислително разбиране. Началната точка в края на 1940 г. била поставянето на въпросът на Алън Тюринг (Alan Turing) „Могат ли компютрите да мислят?“. Въпросът остава без отговор, въпреки че ефективния тест на Тюринг все още се използва, за да свързва компютърния изход от мащаба на човешката интелигентност. Но автоматизацията на оценъчните и предсказуеми задачи е все по-успешна като заместител на човешкото наблюдение и намесата в областите на компютърното приложение, включваща сложни реални данни.

Машинно учене Компютърно възприятие Обработка на изображение
Път на възприятие Извличане на данни Еволюционно изчисляване

Компютърна архитектура и инженеринг[редактиране | редактиране на кода]

Компютърната архитектура, или организацията на цифровия компютър, е идейният проект или фундаменталната оперативна структура на една компютърна система. Тя се фокусира до голяма степен от начина, по който централната единица за обработка извършва своевременно вътрешно достъп до адреси в паметта[21]. Полето често включва дисциплини на компютърната техника и електротехника, избор и съединяване на хардуерните компоненти за създаване на компютри. Те отговарят на целите на функционално-насочената, производително-насочената и на финансовите разходи.

Анализ на производителността на компютъра[редактиране | редактиране на кода]

Анализ на производителността на компютъра представлява изучаването на работата, преминаваща през компютрите с общите цели и за подобряване на пропускателната способност, контролирането на времето за реакция, ефективното използване на ресурсите, премахването на участъците с недостатъчен капацитет и прогнозиране на ефективността под очакваните върхови натоварвания.

Компютърна графика и визуализация[редактиране | редактиране на кода]

Компютърна графика представлява изучаването на дигитално визуално съдържание и е свързана със синтез и манипулиране на данни с изображения. Изучаването е свързано с много други области в компютърните науки, включително компютърна визия, обработка на изображения и изчислителна геометрия. Тя е приложима най-вече в областта на специалните ефекти и видео игри.

Компютърна сигурност и криптография[редактиране | редактиране на кода]

Компютърна сигурност е клон на компютърните технологии, чиято цел включва защитата на информацията от неоторизиран достъп, прекъсване на доставките или модификация при запазване на достъпността и използваемостта на системата за своите предвидени потребители. Криптографията представлява практикуването и изучаването на скриване на данните (криптиране), следователно и дешифриране (декриптиране) на информацията. Модерната криптография е, до голяма степен, свързана с компютърните науки, тъй като много екриптиращи и декриптиращи алгоритми са базирани на тяхната изчислителна сложност.

Изчислителна наука[редактиране | редактиране на кода]

Изчислителната наука (или научни изчисления) е в областта на занимаване с конструиране на математически модели и количествени методи за анализ и използване на компютри, за да анализират и решават научни проблеми. В практическо приложение се прилага компютърна симулация и се прилагат други допълнителни форми на изчисляване на проблеми в различни научни дисциплини.

Компютърни мрежи[редактиране | редактиране на кода]

Този клон на компютърната наука има за цел да управлява мрежи между компютри в световен мащаб.

Съгласувани, паралелни и разпределени системи[редактиране | редактиране на кода]

Concurrency (съгласуване) е свойство на системи, в което няколко изчисления се изпълняват едновременно и потенциално взаимодействат помежду си. Броят на математическите модели е разработен за общо изчисление на данни, включително мрежи на Петри.

Разпределената система разширява идеята за едновременност върху множество компютри, свързани в мрежа. Компютри в рамките на същата система имат своя собствена частна памет. Информацията често се разменя помежду им за постигане на общата цел.

Базите от данни[редактиране | редактиране на кода]

Базата данни е предназначена за организиране, съхранение и извличане на големи количества данни в улеснен вариант. Цифровите бази данни се управляват с помощта на системи за управление на базата данни. За съхранение, създаване, поддържане, и търсене на данни, се използват модели на бази данни и езикови заявки.

Софтуерно инженерство[редактиране | редактиране на кода]

Софтуерното инженерство (Софтуерните технологии) е систематичен, дисциплиниран и измерим подход към разработването на качествен софтуер, както и към неговата реализация на пазара, експлоатация и съпровождане.

Обсъждане на проблеми[редактиране | редактиране на кода]

Конференциите са важни събития за компютърните научни изследвания. По време на тези конференции, изследователи от публичния и частния сектор представят новите си проучвания. За разлика от повечето други академични области, при компютърните науки престижът на доклади от конференции е по-голям от този на публикации в списания[22][23]. Обяснение за това е бързото развитие на тази сравнително нова област. Тя изисква бързо разглеждане и разпределение на резултатите.[24]

Свързани теми[редактиране | редактиране на кода]

Математически основи[редактиране | редактиране на кода]

Подобласти на информатиката[редактиране | редактиране на кода]

Основи на информатиката
Софтуер
Хардуер
Данни
Приложения

Пионери в информатиката[редактиране | редактиране на кода]

Източници[редактиране | редактиране на кода]

  1. „Blaise Pascal“. School of Mathematics and Statistics University of St Andrews, Scotland.
  2. „A Brief History of Computing“ Архив на оригинала от 2012-06-29 в Wayback Machine..
  3. Science Museum—Introduction to Babbage"
  4. а б Anthony Hyman (1982). Charles Babbage, pioneer of the computer.
  5. „A Selection and Adaptation From Ada's Notes found in Ada, The Enchantress of Numbers“, by Betty Alexandra Toole Ed.D. Strawberry Press, Mill Valley, CA", архив на оригинала от 10 февруари 2006, https://web.archive.org/web/20060210172109/http://www.scottlan.edu/lriddle/women/ada-love.htm, посетен на 2006-02-10 
  6. Brian Randell, p. 187, 1975
  7. Асоциацията на изчислителната техника (Association for Computing Machinery, ACM) е основана през 1947
  8. „Computer science pioneer Samuel D. Conte dies at 85“. Purdue Computer Science. 1 юли 2002. Посетен на 12 декември 2014.
  9. а б Tedre, Matti (2014). The Science of Computing: Shaping a Discipline. Taylor and Francis / CRC Press.
  10. а б Levy, Steven (1984). Hackers: Heroes of the Computer Revolution. Doubleday. ISBN 0-385-19195-2|0-385-19195-2]].
  11. „IBM 704 Electronic Data Processing System—CHM Revolution“. Computerhistory.org. Посетен на 7 юли 2013.
  12. „IBM 709: a powerful new data processing system“ Архив на оригинала от 2016-03-04 в Wayback Machine. (PDF). Computer History Museum. Посетен на 12 декември 2014.
  13. Constable, R. L. (March 2000). „Computer Science: Achievements and Challenges circa 2000“ (PDF).
  14. Abelson, H.; G.J. Sussman with J. Sussman (1996). Structure_and_Interpretation_of_Computer_Programs|Structure and Interpretation of Computer Programs (2nd ed.). MIT Press. ISBN 0-262-01153-0. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology – the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects.
  15. David Kahn, The Codebreakers, 1967, ISBN 0-684-83130-9.
  16. „Black box traders are on the march“. The Telegraph. 26 август 2006. Архивирано от оригинала на 8 октомври 2014.
  17. „The Impact of High Frequency Trading on an Electronic Market“. Papers.ssrn.com.doi:10.2139/ssrn.1686004. Посетен на 14 май 2012.
  18. Denning, Peter J. (2000). „Computer Science: The Discipline“ (PDF).Encyclopedia of Computer Science.
  19. Clay Mathematics Institute P = NP Архивирано на 14 октомври 2013.
  20. P. Collins, Graham (14 октомври 2002). „Claude E. Shannon: Founder of Information Theory“. Scientific American. Посетен на 12 декември 2014.
  21. A. Thisted, Ronald (7 април 1997). „Computer Architecture“ (PDF). The University of Chicago.
  22. Meyer, Bertrand (April 2009). „Viewpoint: Research evaluation for computer science“.Communications of the ACM 25 (4): 31 – 34. doi:10.1145/1498765.1498780.
  23. Patterson, David (August 1999). „Evaluating Computer Scientists and Engineers For Promotion and Tenure“. Computing Research Association.
  24. Fortnow, Lance (August 2009). „Viewpoint: Time for Computer Science to Grow Up“.Communications of the ACM 52 (8): 33 – 35. doi:10.1145/1536616.1536631.