Програмиране: Разлика между версии
Изтрито е съдържание Добавено е съдържание
Етикети: Редакция чрез мобилно устройство Редакция чрез мобилно приложение Разширена мобилна редакция |
+2 ш; см. картинка;форматиране: 4x нов ред, 4x тире, 2x заглавие-стил, 2 интервала (ползвайки Advisor) |
||
Ред 1:
{{обработка|премахване на вътр. препратки към английската У}}
[[Файл:Java source2.svg|thumb|350px
'''Програмирането''' е [[компютърна наука]] и дял от [[математика]]та-[[информатика]]та, която се занимава с методите и средствата за създаване на [[Компютърна програма|компютърни програми]]. Компютърната програма представлява [[алгоритъм]], който може да бъде „разбран“ и изпълнен от [[компютър]]а. При програмирането се използват [[език за програмиране|езици за програмиране]], на които се записват изходните текстове на програмата.<ref>Желязко Желязков (и други колектив), Информатика, Учебници за ВУЗ</ref>
Процесът по създаването на програма включва писането, [[Тестване на софтуер|тестването]] и поддържането на нейния [[сорс код]] (изходен код). Програмнвият код, който се пише на [[език за програмиране]], може да бъде и модификация на съществуващ вече код или да бъде нов, с цел решаването на даден математически проблем или програмно изискване.<ref>Информатика, Учебници за ВУЗ, ИУ
В сферата на [[софтуерното инженерство]], програмирането е част от процеса на [[разработка на софтуер]].
Line 12 ⟶ 13:
{{Основна|Софтуерен инженер}}
Софтуерният инженер (програмист) е математик / софтуерен инженер, който пише [[Компютърна програма|компютърни програми]].
* [[Анализ на изискванията]]
Line 25 ⟶ 26:
== История на програмирането ==
Най-старата машина за програмиране (това е машина, чието поведение може да се контролира от промените на програма) е програмният хуманоиден робот на [[Ал Джазари]] през 1206 г. Външният вид на робота на Ал Джазари е механизирана лодка с четирима автоматични музиканти, която се носи по езерото и забавлява гостите по време на кралските балове. Неговият механизъм включва програмируеми барабани с ключе, захванати на малка ръчка, които отмерват ритъма. Барабанистът е можел да изпълнява различни ритми в зависимост от положението на ключето.
Често за образец на ранното изкуство е считан [[Жакардов стан|жакардовият стан]], създаден през 1801 г. В тази машина се използвали картонени карти с дупки по тях, като дупките показват извивките на дрехата. Така в зависимост от картите, които му се поставят, станът можел да произвежда напълно различни дрехи. Такива карти е използвал и [[Чарлз Бабидж]] през 1830 г., за да управлява своята [[сметачна машина]]. Тук отворите се използват за контрол на машината.
[[Файл:Hollerith punched card.jpg|мини|[[Перфокарта]] на Холерит]]
Това нововъведение по-късно е подобрено от Херман Холерит, който прилага перфорацията по определена схема за въвеждане на [[данни]]. Холерит изобретява специална перфорираща машина за въвеждане на големи масиви от данни, наречена табулатор. Тя се основава на [[реле]]та и работи с [[перфокарта|перфокарти]], които получават неговото име. Освен тях изобретява и четец за тези карти. Първото приложение на машината е при обработката на резултатите от преброяване на населението в САЩ през 1890 г. когато резултатите са обработени много по-евтино от очакваното и преди определения срок (при предишното преброяване обработката отнела години)<ref>[http://www.census.gov/history/www/technology/010873.html U.S. Census Bureau: Tabulation and Processing]</ref>. Следват усъвършенствувания на машината и през 1906 г. моделът ''Type I Tabulator'' вече е снабден с комутационен панел и позволява бързо и автоматизирано да се изпълняват различни задачи в счетоводството и складовото стопанство (първата крачка към програмирането).
[[File:Ada lovelace.jpg|thumb|[[Ада Лъвлейс]] се счита за първата програмистка]]
През 1896 г. Холерит основава [[компания]]та ''Tabulating Machine Company'' (днес [[IBM]]). До края на 40-те години имало различни видове машини за програмиране с [[комутационен панел
[[Архитектура на фон Нойман|Изобретението]] на [[Джон фон Нойман]] позволява програмите да бъдат запаметени в [[компютърна памет]]. Ранните програми трябвало стриктно да задават инструкциите на отделната машина, обикновено в [[бинарен]] вид. Всеки модел компютър се нуждаел от различни команди за изпълняването на една и съща задача. По-късно са създадени [[език за програмиране|езиците за програмиране]], които позволяват на програмистите да представят всяка инструкция в текстов формат, като въвеждат абревиатури за всички операции, вместо да ползват числа и специфични адреси в символен формат. През 1954 г. е създаден [[FORTRAN]] – първият [[език за програмиране|език]] на високо ниво. Това позволило на програмистите да извършват изчисленията директно чрез задаване на нужната формула. [[Изходен код|Изходният текстов код]] на програмата се превежда до машинни инструкции чрез специална програма, наречена [[компилатор]]. След това са създадени още много езици за програмиране (някои от тях с комерсиална цел) – като например [[COBOL]]. Програмите обаче все още се въвеждат с перфокарти или [[перфолента]].
[[Файл:PunchCardDecks.agr.jpg|мини|ляво|Кутия с [[перфокарта|перфокарти]] за няколко различни програмни пакета от ранните години на програмирането]]
Към края на 60-те години устройствата за съхранение на данни и [[компютърен терминал|компютърните терминали]] се развиват достатъчно, за да стане възможно програмите да бъдат писани директно на [[клавиатура (хардуер)|клавиатурата]]. Създадени са [[текстов редактор|текстови редактори]], които позволяват на програмистите да въвеждат, редактират и обработват кода си много по-лесно, отколкото с перфокартите.
== Модерно програмиране ==
=== Изисквания за качество ===
Какъвто и да е пътят за разработване, финалната програма трябва да отговаря на някои основни свойства. Следните свойства са сред най-важните:
* [[Надеждност на софтуера|Надеждност]]: колко често резултатите от дадена програма са верни. Това зависи от концептуалната коректност на алгоритмите и минимизирането на програмните грешки, като грешки в управлението на ресурсите (напр. [[:en:Buffer_overflow|препълване на буфер]] и [[:en:Race_condition|условия на състезание]] ) и логически грешки (като грешки при деление на нула или [[:en:Off-by-one_error|грешка при едно]] )
* [[:en:Robustness_(computer_science)|Издръжливост]] : колко добре дадена програма предотвратява проблеми, дължащи се на грешки, а не на
* [[Ползваемост]] (
*[[:en:Software_portability|Преносимост]]: обсега от [[компютърен хардуер]] и платформи на [[Операционна система|операционната система]], на които изходният код на програмата може да бъде [[компилатор|компилиран]] / [[:en:Interpreter_(computing)|интерпретиран]] и стартиран.
*Поддръжка: лекотата, с която дадена програма може да бъде модифицирана от нейните настоящи или бъдещи разработчици, за да се направят подобрения или да се персонализират, коригират [[бъг|грешки]] и [[:en:Vulnerability_(computing)|дупки в сигурността]] или да се адаптира към нови среди. Добрите практики
*[[:en:Algorithmic_efficiency|Ефективност]] / [[:en:Performance_engineering|производителност]] : Измерване на системните ресурси, които една програма консумира (време на процесора, място в паметта, бавни устройства като дискове, честотна лента на мрежата и до известна степен дори взаимодействие с потребителя): колкото по-малко, толкова по-добре. Това включва и внимателно управление на ресурсите, например почистване на [[:en:Temporary_file|временни файлове]] и елиминиране на [[:en:Memory_leak|течове в паметта]]. Това често се обсъжда в светлината на избрания език за програмиране. Въпреки че езикът със сигурност влияе върху производителността, дори и по-бавните езици, като [[:en:Python_(programming_language)|Python]], може да изпълняват програмите незабавно от човешка гледна точка. Скоростта, използването на ресурси и производителността са важни за програмите, които затрудняват системата, но ефективното използване на времето на програмиста също е важно и е свързано с разходите: повече хардуер може да бъде по-евтино.
===Четимост на изходния код=== ▼
В компютърното програмиране [[:en:Readability|четимостта
Четимостта е важна, защото програмистите прекарват по-голямата част от времето си в четене, опитвайки се да разберат и модифицират съществуващ изходен код, вместо да пишат нов изходен код. Нечетливият код често води до грешки, неефективност и [[:en:Duplicate_code|дублиран код]]. Проучване установи, че няколко прости трансформации на четливост правят кода по-кратък и драстично намаляват времето за разбирането му.
Line 70 ⟶ 68:
=== Сложност на алгоритъма ===
Академичното поле и инженерната практика на компютърното програмиране са до голяма степен свързани с откриването и прилагането на най-ефективните алгоритми за даден клас проблеми. За тази цел алгоритмите се класифицират в ''
== Езици за програмиране ==
{{основна|
Различните езици за програмиране поддържат различни стилове на програмиране ([[парадигма на програмиране]]). Според стила основните сред тях са: [[Обектно-ориентирано програмиране|обектно-ориентирано]], [[Императивно програмиране|императивно]], [[Функционално програмиране|функционално]] и [[Декларативно програмиране|декларативно]] <ref>{{икона|en}} Nørmark, Kurt. ''[http://people.cs.aau.dk/~normark/prog3-03/html/notes/paradigms_themes-paradigm-overview-section.html Overview of the four main programming paradigms]''. Aalborg University, 9 май 2011. Линк ат 22 септември 2012.</ref>. Според друг източник обектно-ориентираното програмиране спада към императивния стил, а функционалното програмиране спада към декларативния:<ref>{{Цитат уеб|уеб_адрес=http://fmi.wikidot.com/fp1|заглавие=Принципи на Функционалното програмиране. Увод в Scheme|фамилно_име=|първо_име=|дата=|труд=|издател=|език=|достъп_дата=29.12.2014|цитат=}}</ref>
* Императивни
Line 88 ⟶ 86:
Според предназначението си езиците за програмиране биват с общо предназначение и специализирани. Популярни съвременни езици за програмиране с общо предназначение са [[Java]], [[C Sharp|C#]], [[Delphi|Object Pascal]], [[C (език за програмиране)|C]], [[C++]], [[PHP]], [[Perl]]. Специализирани езици за програмиране са например [[SQL]] (за заявки към системи за управление на бази от данни), [[JavaScript]] (за реализиране на динамично поведение в уеб сайтове [[от страна на клиента]]) и т.н.
Избирането на език за програмиране е свързано с много съображения като например фирмена политика, [[оперативна
== Източници ==
Line 94 ⟶ 92:
== Литература ==
▲* Дейкстра Э., ''Дисциплина программирования'' — 1-е изд. — Москва, 1978. — 275 с.
* Дональд Кнут., ''Искусство программирования'', В четырёх томах, Москва, 2001 − 2013
Line 106 ⟶ 103:
* [[Софтуер]]
* [[Софтуерни метрики]] (изследвания на програмите)
{{превод от|en|Computer programming|1056918256}}
{{Портал|Информатика}}
|