Что такое программирование? Языки программирования. Компьютерное программирование :: SYL.ru
В период появления первых компьютерных систем остро встал вопрос того, как «научить» машину воспринимать указываемые к исполнению задачи человеком. Тут и появился термин «компьютерное программирование». Сегодня многие пользователи, не знакомые с основами и тонкостями этих процессов, считают, что это что-то из области фантастики, недоступное рядовому обывателю. Однако при желании можно освоить программирование и самому. Но не будем забегать вперед и разложим все, как говорится, по полочкам.
Что такое программирование в общем понимании?
Если посмотреть на основные трактовки данного термина, нетрудно сделать простейший вывод. Что такое программирование? Это написание программ.
Тут же возникает вопрос того, что же такое программа. Программа или приложение – это, грубо говоря, набор специализированных команд, инструкций, директив или исполняемых сценариев, которые подлежат исполнению машиной, причем на уровне и «железных» устройств, и других задействованных средств.
Чтобы было понятно, что такое программирование, можно привести самый простой пример. Установленное пользовательское приложение, нацеленное на выполнение конкретной задачи, обращается не только к оперативной памяти и процессору, но и задействует другие физические устройства через инструменты управления ими, называемые драйверами, которые тоже представляют собой программы.
Немного истории
Говоря о том, что такое программирование в современной трактовке, стоит обратить свой взгляд на историю его возникновения. По сути, автоматизированное выполнение каких-то определенных действий, например, в области математических вычислений, известно человечеству достаточно давно.
Вспомнить хотя бы Древнюю Грецию, в которой было использовано устройство с шестернями разной величины, позволявшее производить простейшие арифметические действия. Это был самый настоящий прототип современного калькулятора.
В 1206 году появился уникальный аппарат по отслеживанию так называемого метонова цикла, построенный Аль-Джазари, который использовал сложные на то время механизмы, основанные на зажимах и кулачках.
Только в 1804 году свет увидел жаккардовый ткацкий станок, который был способен воспроизводить узоры на тканях, созданные на основе перфокарт.
Но настоящим прорывом стало программируемое аналитическое устройство, разработанное Чарльзом Бэббиджем, которое, к сожалению, при его жизни так и не было построено.
Зато в 1846 году дочь Байрона создала первую в мире программу для аналитической машины, которая решила уравнение Бернулли. Конечно, алгоритмы программирования, которые применяла графиня Ада Августа Лавлейс, были весьма примитивными, но именно они заложили то самое зерно, которое было использовано при создании современных компьютерных программ. И именно ее считают во всем мире прародительницей программирования.
Каким образом компьютер воспринимает команды?
Любая компьютерная программа должна машиной каким-то образом выполняться. Ей мало написать, мол, сделай то-то и то-то. Для этого были созданы языки программирования.
Но написать последовательность команд на каком-то языке, которых сегодня существует очень много, оказывается недостаточно. Машина все равно не воспримет текстовые фразы или математические формулы.
Универсальным средством стало использование двоичного (бинарного) кода, состоящего из последовательностей нулей и единиц, которые воспринимаются любым компьютерным устройством. Но как перевести смысловые фразы и формулы в такой вид? Для этого используются компиляторы, которые и преобразовывают список команд в понятный машине двоичный код. Можно встретить и троичные, и шестнадцатиричные коды, но они используются крайне редко.
Мнемокоды
Понятно, что вводить двоичные команды даже на примитивных устройствах было крайне затруднительно, ведь запомнить такие последовательности человек по природе своей просто не в состоянии.
Поэтому, чтобы унифицировать такие процессы, были придуманы так называемые мнемокоды, которые в виде текстовых команд являлись полными аналогами двоичных сочетаний. Текстовую команду, как уже понятно, запомнить намного легче, нежели длинную последовательность, состоящую из нулей и единиц.
Понятие переменных
Но и этим дело не ограничилось. Применяемые на заре развития алгоритмы программирования потребовали ввода новой величины, получившей название переменной.
Суть ее использования в любом языке программирования состоит в присвоении определенной области памяти, в которой хранится какое-то значение, буквенного обозначения. Для того чтобы перевести мнемокоды в инструкции, а переменные в области памяти, использовались инструменты, называемые трансляторами. И все языки, использовавшие такую методику, получили название ассемблеров.
Языки программирования
Сами же языковые средства, на которых пишутся (или в свое время писались) компьютерные программы, условно можно разделить на низко- и высокоуровневые.
Если кто из старшего поколения помнит, даже в советские времена в школах на уроках информатики преподавался язык Basic. С его помощью на тогдашних машинах Yamaha КУВТ можно было создавать примитивные программы математических вычислений, программировать простейшие картинки или музыку, звучащую из системного динамика. Для математики можно было использовать и логические операторы вроде «если», «то», «иначе». Но проблема всех тех, кто хорошенько обучился этому языку, состояла в том, что они никак не могли освоить новые средства.
Не говоря о том, что язык Ассемблер своим появлением произвел настоящую революцию и используется до сих пор, появились достаточно специфичные средства, например, языки структурного или объектно-ориентированного программирования (ООП).
К ООП смело можно отнести язык C+/++, на основе команд которого созданы те же операционные системы Windows. Программирование на «Си» является достаточно сложным, тем не менее при желании можно освоить и его. Как говорится, было бы желание. Можно пойти на те же курсы программирования или использовать для обучения соответствующую литературу. Правда, как считает большинство специалистов, самому вникнуть в основы языка еще можно, а вот развивать свои знания на практике буде крайне сложно. Тут никакие труды вроде книг «Программирование для чайников» не помогут.
Но вернемся к языкам. Относительно недавно появились языки, работающие на основе интерпретаторов (.NET Framework, Python, Java, Perl и т.д.). В них вместо машинного кода генерируется особый байт-код, который представляет собой двоичный код виртуальной машины.
Кстати сказать, программирование на Java можно без особых усилий освоить самому. Например, для мобильных устройств на основе Android-систем можно параллельно использовать Android Studio и пакет Java SDK, а в качестве тестировщика установить Genymotion. Можно поступить еще проще, обратившись к онлайн-конструктору App Inventor, в котором создание последовательности команд производится наподобие складывания пазлов.
Понятие парадигм
Понятие парадигм возникло не на пустом месте. В самом общем понимании парадигмы представляют собой некий взгляд на окружающий мир и действия, которые в его отношении можно предпринять. В компьютерном мире под таким термином понимается некое обобщение по отношению к работе программы.
Существуют приложения, ориентированные исключительно на одну парадигму или выполнение только одной задачи, но все современные языки и программы, создаваемые на их основе, решают несколько задач. Отсюда и появился термин многозадачности.
Современное программирование и его особенности
На современном этапе развития компьютерных технологий приоритетным для многих программистов являются ООП и программирование на Java. Заметьте, пакеты Java-платформы поддерживаются любой из ныне известных операционных систем, не говоря уже о мобильных устройствах.
И хотя, как считается, язык C+/++ является доминирующим, не стоит сбрасывать со счетов и Ассемблер. Удивительно, но большинство вирусов написано именно на нем. А если взять в расчет веб-программирование, скажем, на основе Delphi, тут вообще открываются такие широкие возможности и перспективы, что многие начинающие программисты об этом даже не догадываются.
Можно ли самому научиться программированию?
Вопросы, связанные с самостоятельным обучением, напрямую зависят от того, чему именно хочется научиться. Литература в виде книг «Программирование для чайников» дает лишь частичные ответы без конкретизации основных аспектов с учетом применения того или иного языка. Это, так сказать, для общего понимания. Курсы программирования – тоже вопрос спорный, ведь в данном случае все зависит не только от восприятия обучаемым, но и от того, какими знаниями обладает преподаватель, как он подает материал и т.д. Но если уж возникла необходимость изучения какого-то определенного языка или метода программирования, в наш век интернета проблемой это не является. Можно найти даже онлайн-курсы или подробное описание уроков по той же платформе Java, программированию Android- или iOS-устройств.
Краткие итоги
Что такое программирование в общих чертах, думается, уже понятно любому человеку. Здесь, правда, были затронуты только общие вопросы без конкретики использования каждого языка, средств написания приложений или сопутствующих программных модулей, интерпретации или трансляции команд, равно как и то, каким образом все это выполняется на уровне процессора, оперативной памяти или операционной системы. Все это достаточно сложно для понимания, а неподготовленному человеку вникнуть в суть всех этих процессов будет не так уж и просто. Тем не менее при желании и достаточно высокой степени мотивации изучить любой язык можно, а в дальнейшем стать высококлассным программистом.
www.syl.ru
Что такое программирование – CODE BLOG
Сегодня слово «Программирование» можно увидеть / услышать, как в какой-нибудь вирусной рекламе в социальной сети, так и в литературном или кинематографическом произведении. Однако что же такое, программирование и кто такие программисты? Не мудрствуя лукаво, можно поступить как матерый кодер и загуглить новое слово.
Согласно многочисленным определениям, программирование — это процесс создания компьютерных программ. Расшифровать это определение можно следующим образом. Программирование есть ничто иное, как объяснение машине что, в каком виде и как нужно получить пользователю. То есть это своеобразное искусство перевода пожеланий человека на язык машины.
Суть программирования
Основная идея заключается в том, чтобы составить алгоритм и перевести его на язык программирования. Гуру разработки часто рекомендуют начать разработку программы с ответа на вопрос: «Можно ли реализовать эту задачу программно?». К примеру, даже сегодня мы не можем заставить компьютер предсказать, что будет через несколько дней. И пусть этот пример не совсем корректен, потому как данная задача невыполнима в принципе. Однако, если сузить постановку задачи до предсказания поведения какой-нибудь валюты на бирже — подобная задача решается при помощи достаточного сложного алгоритма и большой базы экспериментальных данных.
Алгоритмы
После того, как было принято решение о возможности программной реализации поставленной задачи, необходимо построить алгоритм её решения. То есть максимально подробно описать последовательность шагов по решению задачи с учетом всех возможных ветвлений, циклов и ошибок. На самом деле, строить алгоритм можно и для простейших повседневных операций. Так, к примеру, можно описать алгоритм заваривания чая:
- Открыть чайник.
- Если в чайнике нет воды — набрать воду из под крана.
- Поставить чайник на газовую плиту.
- Открыть газ.
- Зажечь огонь.
- Дождаться, пока закипит вода в чайнике.
- Насыпать в чашку заварку.
- Залить заварку горячей водой.
Этот алгоритм не универсален, однако для человека, который засыпает заварку в кружку и имеет дома газовую, а не электрическую плиту, он действителен.
Существует несколько способов описания алгоритма:
- граф — схемы;
- словесный;
- псевдокод;
- программный код.
Языки программирования
Фактически, язык программирования, это набор правил описания команд и заранее созданных функций. Каждый язык программирования ограничивает разработчика строго предопределенным набором ключевых слов и команд, которые могут быть использованы при разработке. Выделяют несколько уровней языков:
- низкого уровня (ассемблер) — работают напрямую с процессорными командами
- высокого уровня (C++, C#, Java и др.) — больше похожи на обычный язык
Во время разработки программного продукта могут выделяться разные уровни абстракций. То есть по разному представляться объекты реального мира. В зависимости от этого языки программирования принято разбивать на следующие виды:
- Процедурные — определяют решение задачи шаг за шагом, вся система разбивается на ряд связанных между собой процедур.
- Объектно-ориентированные — программа разрабатывается как совокупность взаимосвязанных объектов, каждый из которых может порождать множество конкретных реализаций. С точки зрения декомпозиции объекта разработки может быть удобнее;
- Декларативные — представляют собой языки описания проблемы и ожидаемого результата.
Объектно-ориентированное программирование
Данный подход подразумевает написание программы в виде системы объектов, каждый из которых отражает тот или иной объект реального мира. Объектам реального мира в соответствие ставятся классы. А от каждого класса, в свою очередь, может порождаться бесчисленное количество объектов класса. К примеру, если мы будем разрабатывать программу для автосервиса, классами будут: автомобиль, двигатель, подвеска, корпус, тормозная система и другие запчасти. А объекты класса — конкретные модели этих запчастей, которые используются в процессе. (подробнее см тут)
Работа программистом
Для меня это вечная учеба и поиск чего-то нового. Выбирая эту профессию следует быть готовым к тому, что учеба не кончится ни после университета, ни после получения высокой должности. Эта специфика, в первую очередь, появляется из-за того, сфера информационных технологий достаточно молода и постоянно развивается. Не проходит и полугода, чтобы не появилось многообещающей технологии или пары новых фреймворков. Однако и скучать тут не придется. Любой программист решает множество задач, которые требуют не только логичности мышления, но и своеобразный творческий подход к решению каждой задачи. Определенно бонусом будет умение учиться самостоятельно и достаточно крепкая нервная система, потому как напряженно шевелить мозгами придется часто, если не постоянно.
Заключение
Если вы решили заняться программированием, рекомендую ознакомиться со статьями посвященными языку C#. Он достаточно прост в освоении, и весьма популярен в настоящее время.
P.S. Присоединяйся в любой удобной для тебя социальной сети. Для меня очень важно оставаться с тобой на связи, ведь у меня есть еще много полезной информации о программировании для тебя, которой я хочу с тобой поделиться.
Также рекомендую прочитать статью Как стать программистом
Похожее
shwanoff.ru
Что я постиг в программировании / Habr
Я программирую уже более 30 лет. И мой путь в программировании тянется от микропроцессоров Z80 и 6502 до современных машин, от таких языков программирования как BASIC, assembly, C, C++ до Tcl, Perl, Lisp, ML, occam или arc, Ruby, Go и проч. Вот список того, что я постиг в программировании:0. Программирование удел ремесленника, а не ученого или инженера
Программирование больше походит на ремесло нежели на науку или инженерную дисциплину. Это комбинация навыков и опыта выраженная в умении применять инструменты. Ремесленник выбирает необходимые инструменты(а если требуется, то создает свои) и учится применять их.
По мне так это ремесло. Я считаю, что лучшие программисты ближе скорее к часовщикам нежели к строителям мостов или физикам. Конечно, с виду это занятие напоминает науку или инженерное дело всилу использования логики и математики, но в большинстве случаев ты просто берешь инструменты в руки и что-то создаешь.
Если принять во внимание тот факт, что программирование это ремесло сразу становится ясно насколько здесь важен опыт, твой инструментарий и интуиция.
1. Честность — лучшая стратегия
Когда ты пишешь код, иногда возникает соблазн написать костыль и заставить программу работать без подлинного понимания что же на самом деле происходит. Классический пример это, когда ты решаешь вставить вызов API просто потому, что это магическим образом устраняет баг; или когда после вставки printf программа перестает падать.
В обоих случаях налицо самообман. Ты должен спросить себя: «Понимаю ли я почему моя программа делает X?». Если нет, то жди неприятностей. Твоя задача как программиста понимать что происходит потому, что компьютер делает в точности что ему сказано, а не то, что по твоим представлениям он должен делать.
Честность требует усердия. Ты должен быть дотошным и скрупулезным когда дело касается того, что делает твоя программа и почему.
2. Упрощай, упрощай, упрощай
Тони Хоар как-то сказал: «Есть два подхода к программированию. Первый — сделать программу настолько простой, чтобы в ней очевидно не было ошибок. А второй — сделать её настолько сложной, чтобы в ней не было очевидных ошибок. Первый — куда более сложный».
Упрощай, делай рефакторинг, удаляй.
Я бы перефразировал утверждение Хоара: «Внутри каждой большой и сложной программы находится маленькая элегантная программа, которая делает абсолютно то же самое».
Это сродни философии «слабо связанных кирпичиков». Куда лучше разбить программу на маленькие части, которые взаимодействуют между собой, чем строить цельный монолит. UNIX например своим успехом частично обязан такому подходу.
3. Отладчики это костыли, профайлеры — нет
Я почти никогда не пользуюсь отладчиком. Я пишу свои программы так, чтобы они выводили в лог всю необходимую информацию, по которой можно понять что происходит. В большинстве случаев я могу понять что не так с кодом по лог файлу без всякой помощи отладчика.
Причина по которой я нечасто пользуюсь отладчиком в том, что он позволяет меньше думать. Большинство людей, когда находят баг открывают отладчик и погружаются в тресину брейкпойнтов, значений переменных и памяти. Что может быть проще пасть под чарами столь мощного средства, но если приложить немного ума в будущем это окупится. Если твоя программа настолько сложна, что тебе требуется отладчик стоит вновь обратиться к пункту №2.
(Впрочем один из самых уважаемых мною программистов Джон Остэрхаут похоже проводит весь день в отладчике Windows).
Что же касается профайлеров — они очень полезны если тебе нужно оценивать производительность. Ты никогда не перестанешь удивляться, какие интересные результаты дает тебе профайлер.
4. За дублирование придется поплатиться
Не повторяйся! В коде делай все лишь один раз.
Это напонимает пункт №2, но тут особый случай. Даже маленький кусок кода, который ты продублировал, в будущем приведет к проблемам, когда ты изменишь одну версию и забудешь поправить вторую.
5. Будь неразборчив в языках
Некоторые люди одержимы каким-то одним языком и думают, что этот язык подходит для чего угодно. Ошибочно так думать. Нет языка на все случаи жизни.
Главное понимать какой из языков среди своего инструментария использовать для какой проблемы. Поэтому лучше иметь побольше инструментов. Попробуй разные языки, напиши на них что-нибудь.
Например, тебе может и не придется много где использовать Python или ML, но ты поработаешь с list comprehensions и почувствуешь их мощь. Или поиграйся с Go и увидишь как работать с конкурентными приложениями. Или ты поработаешь с Perl и оценишь силу по-настоящему гибкой работы со строками. Наконец научишься PHP, чтобы быстро делать динамические веб страницы.
Я ненавижу войны между языками. Эти войны для неудачников потому, что, в сущности, тут не о чем спорить. Например в моих руках PHP это катастрофа, тогда как в других руках он запоет как соловей. В той же мере это относится и к C++.
6. Проще надстроить программу чем построить ее сразу
Этот пункт тесно связан с пунктом №2. Начни с малого и надстраивай. Когда ты решаешь проблему куда проще начать с маленьких блоков(возможно сделав заглушки для каких-то частей) нежели проектировать архитектуру от начала до конца.
Когда ты строишь архитектуру от начала до конца ты 1) делаешь это неверно 2) получаешь в итоге нечто большое и сложное, куда будет очень трудно вносить изменения. С другой стороны если ты используешь маленькие блоки, которые взаимодействует между собой, рефакторинг будет проще в момент, когда ты поймешь, что сделал ошибку в самом начале.
Причина в том, что нет способа узнать как должна выглядеть та самая правильная архитектура. Лишь в редких случаях можно сказать какие будут внешние воздействия на программу. Ты можешь утверждать, что тебе известен характер входящего TCP трафика, который обрабатывает твой мэйл сервер, или количество пользователей, или что ты никогда не слышал про спам. Так или иначе будет нечто извне, что начисто разрушит все твои предположения, и вот если эти предположения касались большой, сильно связанной и сложной системы у тебя большие проблемы парень.
7. Изучай как устроены слои
Я полагаю, что крайне важно поднимаясь вверх от CPU до языка, который ты используешь, понимать на каком слое что происходит. Очень важно понимать слои(будь то понимание во что компилируется код на C или в случае Java понимание JVM и как она работает).
Это очень сильно помогает, когда ты имеешь дело с проблемами производительности или отладкой. В моей памяти всплывает случай, когда клиент прислал нам скриншот рухнувшего Windows 2000, на котором было видно состояние небольшого куска памяти и регистров. Зная версию программы, установленную у клиента, мы, только по этому отчету, смогли выявить проблемму с указателем на null, а главное ее причины.
8. Я не настолько молод, чтобы знать все
Мне еще столько стоит узнать. Одни языки я почти не знаю, хотя есть желание их изучить(Erlang, Clojure). Другие я использовал, но знаю их не так хорошо(JavaScript). А так же есть вещи которые я понимаю с трудом(монады).
PS Меня обвинили, что я ничего не сказал про тестирование. Стоит добавить, что по-моему мнению тесты нужны для любого кода, с которым вам придется иметь дело какое-то время. Быть может мне надо попрограммировать еще 30 лет и я найду ответ на вопрос “Улучшают ли юнит тесты качество ПО?”. Я писал код как с- так и без юнит тестов, и я до сих пор не знаю правильного ответа, хотя больше склоняюсь к использованию юнит тестов.
habr.com
Программирование — это… Что такое Программирование?
Программи́рование — процесс создания компьютерных программ.
В узком смысле (так называемое кодирование) под программированием понимается написание инструкций (программ) на конкретном языке программирования (часто по уже имеющемуся алгоритму — плану, методу решения поставленной задачи). Соответственно, люди, которые этим занимаются, называются программистами (на профессиональном жаргоне — кодерами), а те, кто разрабатывает алгоритмы — алгоритмистами, специалистами предметной области, математиками.
В более широком смысле под программированием понимают весь спектр деятельности, связанный с созданием и поддержанием в рабочем состоянии программ — программного обеспечения ЭВМ. Иначе это называется «программная инженерия» («инженерия ПО»). Сюда входят анализ и постановка задачи, проектирование программы, построение алгоритмов, разработка структур данных, написание текстов программ, отладка и тестирование программы (испытания программы), документирование, настройка (конфигурирование), доработка и сопровождение.
Программирование для ЭВМ основывается на использовании языков программирования, на которых записывается программа. Чтобы программа могла быть понята и исполнена ЭВМ, требуется специальный инструмент — транслятор.
В настоящее время активно используются интегрированные среды разработки, включающие в свой состав также редактор для ввода и редактирования текстов программ, отладчики для поиска и устранения ошибок, трансляторы с различных языков программирования, компоновщики для сборки программы из нескольких модулей и другие служебные модули.
Текстовый редактор среды программирования может иметь специфичную функциональность, такую как индексация имен, отображение документации, средства визуального создания пользовательского интерфейса. С помощью текстового редактора программист производит набор и редактирования текста создаваемой программы, который называют исходным кодом. Язык программирования определяет синтаксис и изначальную семантику исходного кода. Компилятор преобразует текст программы в машинный код, непосредственно исполняемый электронными компонентами компьютера. Интерпретатор создаёт виртуальную машину для выполнения программы, которая полностью или частично берёт на себя функции исполнения программ.
Программирование в широком смысле можно разбить на несколько стадий:
История
Антикитерский механизм из Древней Греции был калькулятором, использовавшим шестерни различных размеров и конфигурации, обусловливавших его работу,[1] по отслеживанию метонова цикла, до сих пор использующегося в лунно-солнечных календарях.[2]Аль-Джазари построил программируемый автомат-гуманоид в 1206 году. Одна система, задействованная в этих устройствах, использовала зажимы и кулачки, помещённые в деревянный ящик в определённых местах, которые последовательно задействовали рычаги, которые, в свою очередь, управляли ударными инструментами.
Часто первым программируемым устройством принято считать жаккардовый ткацкий станок, построенный в 1804 году Жозефом Мари Жаккаром, который произвёл революцию в ткацкой промышленности, предоставив возможность программировать узоры на тканях при помощи перфокарт.
Первое программируемое вычислительное устройство, Аналитическую машину, разработал Чарлз Бэббидж (но не смог её построить). 19 июля 1843 года графиня Ада Августа Лавлейс, дочь великого английского поэта Джорджа Байрона, как принято считать, написала первую в истории человечества программу для Аналитической машины. Эта программа решала уравнение Бернулли, выражающее закон сохранения энергии движущейся жидкости. В своей первой и единственной научной работе Ада Лавлейс рассмотрела большое число вопросов. Ряд высказанных ею общих положений (принцип экономии рабочих ячеек памяти, связь рекуррентных формул с циклическими процессами вычислений) сохранили свое принципиальное значение и для современного программирования. В материалах Бэббиджа и комментариях Лавлейс намечены такие понятия, как подпрограмма и библиотека подпрограмм, модификация команд и индексный регистр, которые стали употребляться только в 1950-х годах. Однако ни одна из программ написанных Адой Лавлейс никогда так и не была запущена.
Большая часть работы программистов связана с написанием исходного кода, тестированием и отладкой программ на одном из языков программирования. Исходные тексты и исполняемые файлы программ являются объектами авторского права и являются интеллектуальной собственностью их авторов и правообладателей.
Различные языки программирования поддерживают различные стили программирования (парадигмы программирования). Отчасти искусство программирования состоит в том, чтобы выбрать язык программирования, наиболее полно подходящий для решения поставленной задачи. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или между временем программиста и временем пользователя).
Единственный язык, напрямую выполняемый ЭВМ — это машинный язык (также называемый машинным кодом и языком машинных команд). Изначально все программы писались в машинном коде, но сейчас этого практически уже не делается. Вместо этого программисты пишут исходный код на том или ином языке программирования, затем, используя компилятор, транслируют его в один или несколько этапов в машинный код, готовый к исполнению на целевом процессоре, или в промежуточное представление, которое может быть исполнено специальным интерпретатором — виртуальной машиной. Но это справедливо только для языков высокого уровня. Если требуется полный низкоуровневый контроль над системой на уровне машинных команд и отдельных ячеек памяти, программы пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора ЭВМ. (По этой причине трансляторы с языков ассемблера — ассемблера — получаются алгоритмически простейшими трансляторами.)
В некоторых языках вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, некоторых реализациях Lisp, Java, Perl, Python, языках для .NET Framework.
Программные средства
Скриншот фрагмента кода на языке Java в текстовом редакторе vim, демонстрирующий подсветку синтаксиса, поддержку Unicode, фолдингПрограммные средства, используемые при разработке программ делятся на системные и инструментальные. В системном обеспечении основными являются операционные системы, инструментальные средства и технологии Windows, Mac OS X, Linux и т. п.
На олимпиадах по информатике и программированию с успехом используются только свободно распространяемые лицензионные инструментальные средства (в большинстве своём распространяются по лицензии GNU GPL). Из языков программирования на олимпиадах по программированию последние годы часто используются языки программирования Паскаль, C/C++ и Java.
Для ведения документации при разработках программ могут использоваться офисные пакеты программ (например, OpenOffice.org и Microsoft Office).
См. также
Примечания
Литература
- Дейкстра Э. Дисциплина программирования = A discipline of programming. — 1-е изд. — М.: Мир, 1978. — 275 с.
- Бьярне Страуструп. Программирование: принципы и практика использования C++, исправленное издание = Programming: Principles and Practice Using C++. — М.: Вильямс, 2011. — С. 1248. — ISBN 978-5-8459-1705-8
- Александр Степанов, Пол Мак-Джонс. Начала программирования = Elements of Programming. — М.: Вильямс, 2011. — С. 272. — ISBN 978-5-8459-1708-9
- Роберт У. Себеста. Основные концепции языков программирования / Пер. с англ. — 5-е изд. — М.: Вильямс, 2001. — 672 с. — ISBN 5-8459-0192-8 (рус.) ISBN 0-201-75295-6 (англ.)
- Иан Соммервилл. Инженерия программного обеспечения / Пер. с англ. — 6-е издание. — М.: Вильямс, 2002. — 624 с.
- Иан Грэхем. Объектно-ориентированные методы. Принципы и практика / Пер. с англ. — 3-е изд. — М.: Вильямс, 2004. — 880 с.
Ссылки
dic.academic.ru
Что такое программирование? Программирование для начинающих
В современном мире человек постоянно находится в информационной экосистеме, созданной для упрощения его жизни. Различные электрические гаджеты, компьютеры, мобильные телефоны, интеллектуальные системы управления транспортными средствами – всеми этими достижениями технологического прогресса мы пользуемся ежедневно. И вполне естественно, что с развитием человечества спектр возможных сфер применения таких устройств также растёт. Именно поэтому деятельность, связанная с IT, сегодня считается наиболее динамично развивающейся, а значит, и крайне прибыльной, так что уроки программирования лишними ни для кого не будут.
Как работают цифровые устройства?
Принцип действия большинства современных устройств состоит во взаимодействии двух сред – аппаратной и цифровой. Первая – это набор микросхем, датчиков и других физических элементов, которые необходимы для корректного функционирования устройства. Зачастую она проектируется таким образом, чтобы техника могла выполнять сразу несколько заданий и при этом не была узкоспециализированной. Современные процессоры, которые являются «сердцем» любого высокотехнологического гаджета, позволяют решать разнообразные задачи. Однако для того, чтобы эти устройства начали корректно функционировать, производители активно развивают различные технологии программирования. Это и есть вторая, «цифровая» часть любого компьютеризированного аппарата.
Что подразумевается под программированием?
Так что такое программирование? На первый взгляд может показаться, что ответ на этот вопрос вполне очевиден. На самом же деле есть ряд нюансов, которые нельзя упускать из виду.
Технологии программирования – это процесс написания упорядоченного набора инструкций для аппаратуры устройства. Именно они указывают процессору и всем связанным с ним деталям, какие вычисления им необходимо производить и в какой последовательности.
Благодаря корректно написанным системам кодов, мобильные телефоны способны безошибочно определить номер звонящего нам человека, предоставить доступ к почтовым ящикам, а современные автомобили могут совершать параллельную парковку без участия водителя.
Высококвалифицированным программистам ежедневно приходится выполнять работу по созданию алгоритмов, с помощью которых устройства смогут решать новые задачи, без необходимости физического усовершенствования или модификации. Отчасти поэтому многие молодые люди при выборе своего карьерного будущего обращают внимание на эту интенсивно развивающуюся индустрию.
Вопрос изучения
Следует отметить, что обучение программированию – это сравнительно недорогое занятие. В отличие от других профессий, где навыки, необходимые для присвоения квалификации, можно получить лишь в высших учебных заведениях или непосредственно на месте работы, составлять качественный код можно научиться самостоятельно, в домашних условиях.
Найти необходимую информацию совершенно не сложно — учебные пособия, специальная литература имеются практически в свободном доступе. Таким образом, не составляет труда подобрать систему обучения должного уровня сложности на русском, английском или любом другом языке.
Этому посвящают различные конференции, тема горячо обсуждается преподавателями и профильными специалистами, поскольку сегодняшняя индустрия крайне нуждается в потоке свежих умов, способных ускорить общее развитие технологии.
Примеры программирования детям начинают показывать ещё на этапе начального образования, в школах. Конечно, на таких уроках рассматриваются лишь простейшие варианты кодов, а зачастую преподаватели просто знакомят молодое поколение с той или иной операционной системой.
С научной точки зрения информатика, программирование – это схожие сферы деятельности. Однако первая – это более общее понятие, включающее в себя не только написание программного кода, но и изучение различных подходов к проектированию цифровых систем в целом.
Процесс обучения
Практически каждый юноша и девушка, которые активно пользуются Интернетом и современными информационными технологиями, в состоянии ответить на вопрос, что такое программирование. Тем не менее, далеко не все чётко понимают, с чего нужно начинать изучать эту науку, чтобы добиться прогресса и не потерять интерес на половине пути.
Существует множество различных методик, предлагающих обучение программированию – от экспресс-обучения, подразумевающего интенсивный практический курс, знакомящий учеников с синтаксисом и особенностями выбранной технологии, до глубоких теоретических программ, направленных на изучение основных парадигм и концепций до того, как будет написана первая строчка кода. Таким образом, подобрать подходящий способ не так уж и сложно.
Чаще всего программирование для начинающих сводится к демонстрации основных возможностей выбранного языка. Одновременно ведется работа по вовлечению субъекта в процесс, а в дальнейшем переходят к изучению особенностей технологии.
Редко можно встретить уроки программирования, в которых не предложат в конце написать собственный код, который наглядно продемонстрирует изучаемую концепцию или особенность языка. Это позволяет не только подвести своего рода итог, но и определить дальнейшую систему действий.
Программирование для начинающих представляет определенные трудности, поэтому каждый урок должен вести к конечной цели – тогда у изучающего будет возможность каждую конкретную концепцию языка проследить на практике, что улучшит конечное восприятие материала.
Выбор технологии программирования для изучения
Интенсивное развитие компьютерного мира поспособствовало тому, что на рынке существует несколько десятков различных языков для написания кодов. Такое многообразие привело к тому, что процесс освоения науки начинается с детального рассмотрения рынка и выбора подходящей технологии.
Основная масса энтузиастов в первую очередь берется за разработку приложений для мобильных телефонов и портативных устройств – планшетов, умных телевизоров или часов. Это наиболее прибыльная сфера деятельности, и обучение программированию для таких нужд занимает наименьшее количество времени. Существуют ограниченное количество конечных платформ и языков, поэтому выбор здесь сугубо персональный, зависит от личных предпочтений.
Еще одна возможность
Второй по популярности сферой деятельности является web-разработка. Это создание программных продуктов, связанных с деятельностью сайтов и различных Интернет-платформ. В этой части индустрии существует гораздо большее количество языков программирования и используемых технологий, поэтому выбор велик. Начинающие часто спорят о существовании единственного «верного» способа начать изучение, однако это слишком абстрактное понятие, и каждый выбирает то, что ему больше по душе.
Следует учитывать, что эта сфера требует большего объема знаний, так как для успешной профессиональной деятельности приходится решать большое количество задач, связанных не только с самим продуктом, но и со смежными технологиями – хранением данных, функционированием и настройкой серверов и т. п.
Чем писать
Особой категорией считаются так называемые «функциональные» языки программирования. Они не так широко распространены в коммерческой разработке, однако их часто используют для подтверждения научных гипотез и симулирования сложных расчётов.
Эти языки зачастую разрабатываются и поддерживаются университетскими командами по всему миру, и поэтому динамически развиваются, позволяя решать всё новые и новые задачи.
Особые варианты
Отдельно существует группа так называемых эзотерических языков программирования, которые не так широко распространены, и их использование ограничено одной-единственной концепцией, для подтверждения которой они, собственно, и были разработаны. В таких случаях ответ на вопрос «Что такое программирование?» будет совершенно особенным, в силу специфики деятельности.
Для чего стоит изучать?
Большинство энтузиастов, начинающих изучение, преследуют какую-то цель. Одних манит перспектива карьерного роста и материальная обеспеченность. Это не иллюзия – хорошие специалисты могут попробовать себя в самых различных ролях, и их заработок напрямую зависит от набора технологий, которыми они в состоянии оперировать.
Другие изучают эту науку «для себя», ведь программирование, как и любая точная дисциплина, развивает логическое и критическое мышление, учит строить алгоритм для решения поставленной задачи, искать наиболее оптимальные пути достижения результата.
Поэтому ответ на вопрос, что такое программирование, не так уж прост. По сути, это не только средство достижения материального достатка путём участия в интенсивно развивающейся индустрии, но и крайне полезное занятие для стимулирования критического и логического мышления, способ решения поставленных задач путём разбиения алгоритма на отдельные небольшие части.
fb.ru