Лекция
Привет, Вы узнаете о том , что такое программирование, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое программирование, архитектура программного обеспечения , настоятельно рекомендую прочитать все из категории Разработка программного обеспечения и информационных систем.
Информатика — это наука о процессах и методах сбора, обработки, хранения, анализа, передачи и оценки информации с применением компьютерных технологий, обеспечивающих возможность ее использования для принятия решений.
программирование — это спектр деятельности, связанный с созданием и поддержанием в рабочем состоянии программного обеспечения. Эта инженерно-техническая дисциплина называется «программная инженерия». Программирование — процесс создания компьютерных программ. По выражению одного из основателей языков программирования Никлауса Вирта, «Программы = алгоритмы + структуры данных» .Программирование основывается на использовании языков программирования, на которых записываются исходные тексты программ.
рис 1. отличие между информатикой и программированием
Разделы выше красной линии относятся к разработке по. Области исследования ниже этой линии — основные предметы компьютерных наук или информатики. У информатики есть четкие, формальные результаты. Эти темы основаны друг на друге: криптография на сложности, а компиляторы на алгоритмах, например.
Почему ниже красно линии нет ни одной из тем программирования? Эта линия является качеством так называемое «прямое человеческое участие». У разработки ПО есть такое качество, а у традиционной информатики его нет. Результаты из дисциплин ниже линии могут быть использованы людьми, но эти результаты напрямую не подвержены влиянию людей.
Тезис Коннелла:
Разработка программного обеспечения никогда не будет строгой дисциплиной с подтвержденными результатами, поскольку в нее вовлечена деятельность человека.
В данном разделе нашего портала Вы сможете найти практически все темы, связанных с решением различных проблем ИТ отрасли и искуственного интеллекта. Компьютер создан для решения математических и логических задач, и оптимизации бизнес процессов или решения их задач. В настоящем на компьютер можно возложить и более сложные процессы, однако, все сложное в любой области можно декомпозировать на простые составляющие. Ведь по сути, на компьютере мы можем обработывать, создавать и потреблять мультимединый контент, тексты, но все это состоит лишь из бинарной логики. А ведь куда уж проще? Если оставить что-то одно, то нельзя будет делать комбинации, а то из двух составляющих можно оказывается сделать все.
Изучив весть материал по программированию и информатике Вы сможете не только отлично работать с информацией, но и создавать алгоритмы и приложения работы с нею, в том числе и коммерческие. Помните, что у нас не справочная или помойка из статей периодических онлайн сайтов, а структурированные знания, которые намного лучше вами усваиваются и оттачиваются на практике.
Современный программист или связанный с этой отраслью человек должен хорошо знать и другие дисциплины их можно изучить или углубить по ним знания в соотвествующих разделах.
Что такое программирование? Программирование действительно часто ассоциируется с разгадыванием сложных головоломок или распутыванием запутанных ниток. Процесс создания программного кода может быть полон вызовов и тонкостей, но когда все элементы встают на свои места, результат может быть удивительным.
Хороший код - это как распутанные нити, которые легко читать и воспринимать. Когда код оформлен аккуратно и структурированно, он становится более поддерживаемым и переиспользуемым, что позволяет сэкономить время и усилия в будущем.
И когда эти распутанные нити "оживают" в виде программ или приложений, они могут стать мощными инструментами для решения различных задач и, как следствие, приносить прибыль своим владельцам
205 год до н. э. (150 год до н. э. ) — Антикитерский механизм из Древней Греции был калькулятором, использовавшим шестерни различных размеров и конфигурации, обусловливавших его работу , по отслеживанию метонова цикла, до сих пор использующегося в лунно-солнечных календарях .
1206 год — Аль-Джазари построил программируемый автомат-гуманоида. Одна система, задействованная в этих устройствах, использовала зажимы и кулачки, помещенные в деревянный ящик в определенных местах, которые последовательно задействовали рычаги, которые, в свою очередь, управляли перкуссионными инструментами .
1804 год — построен жаккардовый ткацкий станок, построенный Жозефом Мари Жаккаром, который произвел революцию в ткацкой промышленности, предоставив возможность программировать узоры на тканях при помощи перфокарт, его иногда считают первым программируемым устройством
19 июля 1843 года — Чарлз Бэббидж разработал (но не смог ее построить) «Аналитическую машину» — первое программируемое вычислительное устройство
19 июля 1843 года — графиня Ада Августа Лавлейс, дочь английского поэта Джорджа Байрона, написала первую в истории человечества программу для Аналитической машины. Эта программа решала уравнение Бернулли, выражающее закон сохранения энергии движущейся жидкости. В своей первой и единственной научной работе Ада Лавлейс рассмотрела большое число вопросов. Ряд высказанных ею общих положений (принцип экономии рабочих ячеек памяти, связь рекуррентных формул с циклическими процессами вычислений) сохранили свое принципиальное значение и для современного программирования
В материалах Бэббиджа и комментариях Лавлейс намечены такие понятия, как подпрограмма и библиотека подпрограмм, модификация команд и индексный регистр, которые стали употребляться только в 1950-х годах Однако ни одна из программ, написанных Адой Лавлейс, никогда так и не была запущена
Первым широко известным и успешным языком программирования высокого уровня был Fortran (Фортран), разработанный с 1954 по 1957 год командой исследователей IBM во главе с Джоном Бакусом. Успех Фортрана привел к образованию комитета ученых по разработке «универсального» компьютерного языка. Отдельно Джон Маккарти из Массачусетского технологического института разработал язык программирования Lisp (основанный на лямбда-исчислении), первый язык, возникший в академических кругах и получивший успех. С успехом этих начальных усилий языки программирования стали активной темой исследований в 1960-х и далее.
Первые книги по программированию в СССР
Первой советской открытой книгой по программированию, электронным вычислительным машинам и их различным применениям была выпущенная в начале 1956 года монография Анатолия Ивановича Китова «Электронные цифровые машины» . Заключительная треть этой книги посвящена «Неарифметическому использованию ЭВМ» — применению компьютеров для управления производственными процессами, решению задач экономики, искусственного интеллекта, машинного перевода и т.д. Книга переведена на несколько иностранных языков и опубликована в США, Китае, Польше, Чехословакии и других странах. Об этой книге Президент Академии наук СССР Г. И. Марчук писал «Вышедшая в 1956 году книга А. И. Китова „Электронные цифровые машины“ фактически сделала переворот в сознании многих исследователей». Выдающийся ученый современности В. М. Глушков отмечал: «А. И. Китов — признанный пионер кибернетики, заложивший основы отечественной школы программирования и применения ЭВМ для решения военных и народнохозяйственных задач. Я сам, как и десятки тысяч других специалистов, получил свои начальные компьютерные знания из его книги „Электронные цифровые машины“ — первой отечественной книги по ЭВМ и программированию». Профессор Мичиганского университета Джон Карр (John Carr, USA) в своей монографии «Лекции по программированию» (1958, США) писал о том, что, проанализировав по рассматриваемой тематике порядка 150 выпущенных в мире на тот момент времени книг, вопросы как ручного, так и автоматического программирования лучше всего освещены в книге Анатолия Китова.
Через шесть месяцев в том же 1956 году вышла в свет под редакцией А. И. Китова книга А. Об этом говорит сайт https://intellect.icu . И. Китова, Н. А. Криницкого и П. Н. Комолова «Элементы программирования» (для электронных вычислительных машин). Эта почти трехсотстраничная книга стала второй в СССР общедоступной компьютерной монографией. В заключении этой книги продекларировано: «Широкое применение этих машин (ЭВМ) поднимет на новый небывало высокий уровень все виды производства в нашей стране, позволит резко повысить материальное благосостояние нашего народа и значительно укрепить обороноспособность нашей Родины». Данные две книги, покрыли громадный дефицит литературы по ЭВМ и программированию, существовавший в то время в Советском Союзе.
Вышедшая в свет в 1959 году книга «Электронные цифровые машины и программирование» Китова А. И. и Криницкого Н. А. была первым в СССР официальным учебником по ЭВМ и программированию, официально допущенным Министерством образования СССР для обучения в ВУЗах и университетах. Об этой книге Президент Академии наук СССР Г. И. Марчук писал: «В 1959 году появился другой фундаментальный труд А. И. Китова, написанный вместе с Н. А. Криницким — „Электронные цифровые машины и программирование“. Это была фактически энциклопедия науки об ЭВМ. Многие поколения студентов в университетах и вузах страны с помощью этой замечательной книги получили фундаментальное образование и стали первоклассными учеными во многих областях знаний. Книги А. И. Китова, написанные в начале эры ЭВМ в нашей стране, не должны быть забыты». Эта книга была издана в Румынии, Венгрии, Германской демократической республике и ряде других стран. Второе стереотипное издание книги «Электронные цифровые машины и программирование» появилось в 1961 году. Общий тираж иностранных и двух советских изданий составил свыше 130 000 экземпляров. Об этом учебнике-энциклопедии в своих воспоминаниях ветеран кафедры вычислительной техники МЭИ (первая кафедра ЭВМ в стране), д.т.н., профессор А. К. Поляков написал так: «По-моему мнению, учебник А. И. Китова и Н. А. Криницкого „Электронные цифровые машины и программирование“ (1959) в то время был лучшим в мире». .
Большая часть работы программистов связана с написанием исходного кода, тестированием и отладкой программ на одном из языков программирования. Исходные тексты и исполняемые файлы программ являются объектами авторского права и являются интеллектуальной собственностью их авторов и правообладателей .
Различные языки программирования поддерживают различные стили программирования (парадигмы программирования). Выбор нужного языка программирования для некоторых частей алгоритма позволяет сократить время написания программы и решить задачу описания алгоритма наиболее эффективно. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или между временем программиста и временем пользователя).
Единственный язык, напрямую выполняемый ЭВМ — это машинный язык (также называемый машинным кодом и языком машинных команд). Изначально все программы писались в машинном коде, но сейчас этого практически уже не делается. Вместо этого программисты пишут исходный код на том или ином языке программирования, затем, используя компилятор, транслируют его в один или несколько этапов в машинный код, готовый к исполнению на целевом процессоре, или в промежуточное представление, которое может быть исполнено специальным интерпретатором — виртуальной машиной. Но это справедливо только для языков высокого уровня. Если требуется полный низкоуровневый контроль над системой на уровне машинных команд и отдельных ячеек памяти, программы пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора ЭВМ (по этой причине трансляторы с языков ассемблера получаются алгоритмически простейшими трансляторами).
В некоторых языках вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, некоторых реализациях Lisp, Java, Perl, Python, языках для .NET Framework.
Текстовый редактор среды программирования может иметь специфичную функциональность, такую, как индексация имен, отображение документации, подсветка синтаксиса, средства визуального создания пользовательского интерфейса. С помощью текстового редактора программист производит набор и редактирование текста создаваемой программы, который называют исходным кодом. Язык программирования определяет синтаксис и изначальную семантику исходного кода.
В процессе программирования в настоящее время широко используются интегрированные среды разработки [10], в состав которых обычно входят:
Каким бы ни был подход к разработке, окончательная программа должна удовлетворять некоторым фундаментальным свойствам. Следующие свойства являются одними из наиболее важных:
В компьютерном программировании удобочитаемость означает легкость, с которой человек-читатель может понять цель, поток управления и работу исходного кода. Это влияет на вышеперечисленные аспекты качества, включая портативность, удобство использования и, самое главное, ремонтопригодность.
Удобочитаемость важна, потому что программисты тратят большую часть своего времени на чтение, пытаясь понять и изменить существующий исходный код, а не писать новый исходный код. Нечитаемый код часто приводит к ошибкам, неэффективности и дублированию кода . Исследование [27] показало, что несколько простых преобразований для удобочитаемости сделал код короче и значительно сократил время, необходимое для его понимания.
Следование последовательному стилю программирования часто способствует удобочитаемости. Однако удобочитаемость - это больше, чем просто стиль программирования. Многие факторы, мало или совсем не связанные со способностью компьютера эффективно компилировать и выполнять код, способствуют удобочитаемости. [28] Некоторые из этих факторов включают:
В презентации аспекты этого (например, отступы, переносы строк, цвет подсветки, и т.д.) часто обрабатываются редактором исходного кода , но аспекты содержания отражают талант и мастерство программиста.
Различные языки визуального программирования также были разработаны с целью решения проблем читабельности путем принятия нетрадиционных подходов к структуре кода и отображению. интегрированные среды разработки (IDE) стремятся объединить всю такую помощь. Такие методы, как рефакторинг кода, могут улучшить читаемость.
Академическая область и инженерная практика компьютерного программирования в значительной степени связаны с обнаружением и реализацией наиболее эффективных алгоритмов для данного класса проблем. С этой целью алгоритмы классифицируются по порядкам с использованием так называемой нотации Big O , которая выражает использование ресурсов, таких как время выполнения или потребление памяти, с точки зрения размера ввода. Опытные программисты знакомы с множеством хорошо зарекомендовавших себя алгоритмов и их соответствующих сложностей и используют эти знания для выбора алгоритмов, которые лучше всего подходят для конкретных обстоятельств.
«Программирование компьютера для игры в шахматы» - это статья 1950 года, в которой оценивался «минимаксный» алгоритм, который является частью истории алгоритмической сложности; Курс IBM Deep Blue (шахматный компьютер) является частью учебной программы по информатике в Стэнфордском университете .
Первым шагом в большинстве формальных процессов разработки программного обеспечения является анализ требований , за которым следует тестирование для определения модели ценности, реализации и устранения сбоев (отладки). Для каждой из этих задач существует множество разных подходов. Одним из популярных подходов к анализу требований является анализ вариантов использования . Многие программисты используют формы гибкой разработки программного обеспечения. которых различные этапы формальной разработки программного обеспечения более интегрированы в короткие циклы, которые занимают несколько недель, а не лет. Есть много подходов к процессу разработки программного обеспечения.
Популярные методы моделирования включают объектно-ориентированный анализ и проектирование ( OOAD ) и архитектуру, управляемую моделями ( MDA ). Единый язык моделирования ( UML ) - это обозначение, используемое как для OOAD, так и для MDA.
Аналогичный метод, используемый для проектирования баз данных, - это моделирование отношений сущностей ( моделирование ER ).
Методы реализации включают императивные языки ( объектно-ориентированные или процедурные ), функциональные языки и языки логики .
Очень сложно определить, какие современные языки программирования самые популярные. Методы измерения популярности языка программирования включают: подсчет количества объявлений о вакансиях, в которых упоминается этот язык, количество проданных книг и курсов, обучающих языку (это переоценивает важность новых языков), а также оценки количества существующих строк. кода, написанного на этом языке (это недооценивает количество пользователей бизнес-языков, таких как COBOL).
Некоторые языки очень популярны для определенных типов приложений, в то время как некоторые языки регулярно используются для написания множества различных типов приложений. Например, COBOL по-прежнему силен в корпоративных центрах обработки данных , часто на больших мэйнфреймах , Fortran - в инженерных приложениях, языки сценариев - в веб- разработке и C - во встроенном ПО . Во многих приложениях при создании и использовании используется сочетание нескольких языков. Новые языки обычно разрабатываются на основе синтаксиса предыдущего языка с добавлением новых функций (например, C ++ добавляет объектную ориентацию в C иJava добавляет в C ++ управление памятью и байт-код , но в результате теряет эффективность и возможность низкоуровневых манипуляций).
Отладка - очень важная задача в процессе разработки программного обеспечения, поскольку наличие дефектов в программе может иметь серьезные последствия для ее пользователей. Некоторые языки более подвержены некоторым видам ошибок, потому что их спецификация не требует от компиляторов выполнения такой же тщательной проверки, как другие языки. Использование инструмента статического анализа кода может помочь обнаружить некоторые возможные проблемы. Обычно первым шагом в отладке является попытка воспроизвести проблему. Это может быть нетривиальная задача, например, с параллельными процессами или некоторыми необычными программными ошибками. Кроме того, конкретная пользовательская среда и история использования могут затруднить воспроизведение проблемы.
После воспроизведения ошибки ввод программы может потребоваться упростить, чтобы упростить отладку. Например, когда ошибка в компиляторе может привести к сбою при синтаксическом анализе некоторого большого исходного файла, упрощения тестового примера, в результате которого в исходном исходном файле будет всего несколько строк, может быть достаточно для воспроизведения того же сбоя. Необходим метод проб и ошибок / разделяй и властвуй: программист попытается удалить некоторые части исходного тестового примера и проверить, существует ли проблема. При отладке проблемы в графическом интерфейсе программист может попытаться пропустить некоторые действия пользователя из исходного описания проблемы и проверить, достаточно ли оставшихся действий для появления ошибок. Создание сценариев и установка точек останова также являются частью этого процесса.
Отладка часто выполняется с помощью IDE . Также используются автономные отладчики, такие как GDB , и они часто предоставляют меньше визуальной среды, обычно с использованием командной строки . Некоторые текстовые редакторы, такие как Emacs, позволяют вызывать GDB через них, чтобы обеспечить визуальную среду.
Архитектура программного обеспечения относится к фундаментальным структурам программной системы и дисциплине создания таких структур и систем. Каждая структура включает элементы программного обеспечения, отношения между ними, а также свойства как элементов, так и отношений. архитектура программной системы является метафорой, аналогично архитектуре здания. Он функционирует как план для системы и разрабатываемого проекта, в котором излагаются задачи, которые должны быть выполнены проектными группами.
Архитектура программного обеспечения заключается в принятии фундаментальных структурных решений, изменение которых после реализации требует больших затрат. Выбор архитектуры программного обеспечения включает конкретные структурные варианты из возможностей в разработке программного обеспечения . Например, системы, управляющие ракетой-носителем " Спейс Шаттл", должны были быть очень быстрыми и очень надежными. Следовательно, необходимо выбрать соответствующий язык вычислений в реальном времени . Кроме того, чтобы удовлетворить потребность в надежности, можно было бы выбрать несколько дублирующих и независимо создаваемых копий программы и запускать эти копии на независимом оборудовании при одновременной проверке результатов.
Документирование архитектуры программного обеспечения облегчает общение между заинтересованными сторонами , фиксирует ранние решения по высокоуровневому дизайну и позволяет повторно использовать компоненты дизайна между проектами
Искусство компьютерного программирования ( TAOCP ) - это обширная монография, написанная ученым-компьютерщиком Дональдом Кнутом, которая охватывает многие виды алгоритмов программирования и их анализ .
Кнут начал этот проект, первоначально задуманный как отдельная книга с двенадцатью главами, в 1962 году. Первые три тома того, что тогда предполагалось, будет семитомником, были опубликованы в 1968, 1969 и 1973 годах. Началась серьезная работа над томом. 4 в 1973 г., но в 1977 г. приостановлено за наборные работы. Написание последней копии тома 4A началось от руки в 2001 году, а первая онлайн-пре-брошюра, 2A, появилась позже в 2001 году. Первый опубликованный выпуск тома 4 появился в мягкой обложке как Fascicle 2 в 2005 году. Том 4A, объединяющий Том 4, Части 0–4, был опубликован в 2011 году. Том 4, Раздел 6 («Удовлетворенность») был выпущен в декабре 2015 года; Том 4, Часть 5 («Математические предварительные сведения; возврат с возвратом; танцующие ссылки»
Ожидается, что пучки 5 и 6 составят первые две трети тома 4B. Кнут не объявил какую-либо предполагаемую дату выпуска тома 4B, хотя его метод, использованный для тома 4A, заключается в том, чтобы выпустить том в твердом переплете через некоторое время после выпуска содержащихся в нем брошюр в мягкой обложке. По ближайшим оценкам издателей, дата выпуска - май или июнь 2019 года, что оказалось неверны
Исследование, описанное в статье про программирование, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое программирование, архитектура программного обеспечения и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Разработка программного обеспечения и информационных систем
Ответы на вопросы для самопроверки пишите в комментариях, мы проверим, или же задавайте свой вопрос по данной теме.
Комментарии
Оставить комментарий
Разработка программного обеспечения и информационных систем
Термины: Разработка программного обеспечения и информационных систем