Програмиране: Разлика между версии

Изтрито е съдържание Добавено е съдържание
TheMask07 (беседа | приноси)
Етикети: Редакция чрез мобилно устройство Редакция чрез мобилно приложение Разширена мобилна редакция
Ред 41:
 
== Модерно програмиране ==
'''<big>===Изисквания за качество</big>'''===
 
Какъвто и да е пътят за изобретяванеразработване, финалната програма трябва да отговаря на някои основни свойства. Следните свойства са сред най-важните:
 
* [[Надеждност на софтуера|Надеждност]]: колко често резултатите от дадена програма са верни. Това зависи от концептуалната коректност на алгоритмите и минимизирането на програмните грешки, като грешки в управлението на ресурсите (напр. [[:en:Buffer_overflow|препълване на буфер]] и [[:en:Race_condition|условия на състезание]] ) и логически грешки (като грешки при деление на нула или [[:en:Off-by-one_error|грешка при едно]] )
* [[:en:Robustness_(computer_science)|Издръжливост]] : колко добре дадена програма предотвратява проблеми, дължащи се на грешки, а не на бъгове. Това включва ситуации като неправилни, неподходящи или повредени данни, липса на необходимите ресурси като памет, услуги на операционната система и мрежови връзки, потребителска грешка и неочаквани прекъсвания на захранването.
* [[:en:Usability|ИзползваемостПолзваемост]] :( [[:en:Human_factors_and_ergonomics|ергономичносттаергономичност]]) на програмата: лекотата, с която човек може да използва програмата по предназначение или в някои случаи дори за неочаквани цели. Такива проблеми могат да доведат до успех или да нарушат неговия успех, независимо от други проблеми. Това включва широк спектър от текстови, графични и понякога хардуерни елементи, които подобряват яснотата, интуитивността, сплотеността и пълнотата на потребителския интерфейс на програмата.
 
*[[:en:Software_portability|Преносимост :]]: обсега от [[компютърен хардуер]] и платформи на [[Операционна система|операционната система]] , на които изходният код на програмапрограмата може да бъде [[:en:Compilerкомпилатор|компилиран]] / [[:en:Interpreter_(computing)|интерпретиран]] и стартиран.
*Поддръжка : лекотата, с която дадена програма може да бъде модифицирана от нейните настоящи или бъдещи разработчици, за да се направят подобрения или да се персонализират, коригират [[:en:Software_bugбъг|грешки]] и [[:en:Vulnerability_(computing)|дупки в сигурността]] или да се адаптира към нови среди. Добрите практики  по време на първоначалната разработка правятса от разликатазначение в това отношение. Това качество може да не е пряко очевидно за крайния потребител, но може значително да повлияе на съдбата на програмата в дългосрочен план
*[[:en:Algorithmic_efficiency|Ефективност]] / [[:en:Performance_engineering|производителност]] : Измерване на системните ресурси, които една програма консумира (време на процесора, място в паметта, бавни устройства като дискове, честотна лента на мрежата и до известна степен дори взаимодействие с потребителя): колкото по-малко, толкова по-добре. Това включва и внимателно управление на ресурсите, например почистване на [[:en:Temporary_file|временни файлове]] и елиминиране на [[:en:Memory_leak|течове в паметта]] . Това често се обсъжда подв сянкатасветлината на избранизбрания език за програмиране. Въпреки че езикът със сигурност влияе върху производителността, дори и по-бавните езици, като [[:en:Python_(programming_language)|Python]], може да изпълняваизпълняват програмипрограмите незабавно от човешка гледна точка. Скоростта, използването на ресурси и производителността са важни за програмите, които затрудняват системата, но ефективното използване на времето на програмиста също е важно и е свързано с разходите: повече хардуер може да бъде по-евтино.
'''<big>===Четимост на изходния код</big>'''===
 
В компютърното програмиране [[:en:Readability|четимостта се]] отнася до лекотата, с която човешкият четец може да разбере целта, [[:en:Control_flow|контролния поток]] и работата на изходния код. Това засяга аспектите на качеството по-горе, включително преносимост, използваемостползваемост и най-важното поддръжка.
 
Четимостта е важна, защото програмистите прекарват по-голямата част от времето си в четене, опитвайки се да разберат и модифицират съществуващ изходен код, вместо да пишат нов изходен код. Нечетливият код често води до грешки, неефективност и [[:en:Duplicate_code|дублиран код]] . Проучване установи, че няколко прости трансформации на четливост правят кода по-кратък и драстично намаляват времето за разбирането му.
 
Следването на последователен [[:en:Programming_style|стил на програмиране]] често помага за четливостчетливостта. Въпреки това, четливосттатя е нещо повече от стил на програмиране. Много фактори, които имат малко или нищо общо със способността на компютъра да компилира и изпълнява ефективно кода, допринасят за четливостта.  Някои от тези факторитях включватса:
 
* Различни [[:en:Indentation_style|стилове на отстъп]] (бели места)
Ред 69:
Различни [[:en:Visual_programming_language|езици за визуално програмиране]] също са разработени с намерението да се разрешат проблемите с четливостта чрез приемане на нетрадиционни подходи към структурата и показването на кода. [[:en:Integrated_development_environment|Интегрираните среди за разработка]] (IDE) имат за цел да интегрират цялата подобна помощ. Техники като [[:en:Code_refactoring|рефакторинг на код]] могат да подобрят четливостта.
 
=== '''Сложност на алгоритма'''алгоритъма ===
Академичното поле и инженерната практика на компютърното програмиране са до голяма степен свързани с откриването и прилагането на най-ефективните алгоритми за даден клас проблеми. За тази цел алгоритмите се класифицират в ''поръчки,'' използвайки [[:en:Big_O_notation|Big O нотация]] , която изразява използването на ресурси, като време за изпълнение или консумация на памет, по отношение на размера на входа. Програмистите, които са експерти в тази област, са запознати с разнообразието от добре установени алгоритми и тяхната съответна сложност и използват тези знания, за да изберат алгоритми, които са най-подходящи за обстоятелствата.
 
== Езици за програмиране ==