Комплекс компьютерных программ предоставляющих пользователям не владеющим языками программирования
Для записи программ используются специальные языки — языки программирования. Это формальные языки. Они состоят из некоторого фиксированного множества слов; существуют чёткие правила написания программ на языке программирования. К настоящему времени насчитывается несколько тысяч языков программирования. Некоторыми языками умеет пользоваться только ограниченный круг их разработчиков, другие становятся известными миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования. В 8 классе вы познакомитесь с языком программирования Паскаль. Возможно, кто-то из вас знаком с языком программирования Лого, специально созданным для обучения программированию детей.
Программу на языке программирования можно записать на листке бумаги. Но чтобы её мог выполнить компьютер, программу нужно ввести в компьютер, перевести исходный код программы (код на языке программирования) в двоичный код, проверить правильность её работы и при необходимости внести исправления. Для этого предназначены специальные программные средства.
Можно выделить приложения общего назначения и приложения специального назначения.
Приложения общего назначения
Приложения общего назначения требуются практически каждому пользователю для работы с разными видами информации. Виды и назначение приложений общего назначения:
- текстовые редакторы — для работы с текстовой информацией;
- электронные таблицы — для автоматизации вычислений;
- графические редакторы — для создания и редактирования всевозможных графических изображений;
- мультимедийные проигрыватели — для воспроизведения звука, анимации и видео;
- редакторы презентаций — для создания материалов, позволяющих большой аудитории не только слышать выступающего, но и видеть ключевые положения его выступления;
- системы, управления базами данных — для доступа к упорядоченной информации из некоторой предметной области.
Приложения специального назначения
Приложения специального назначения предназначены для профессионального использования в различных сферах деятельности квалифицированными пользователями:
- издательские системы — для автоматизации подготовки макетов книг, журналов и другой печатной продукции;
- бухгалтерские программы — для автоматизированного вычисления заработной платы и учёта денежных средств предприятия (организации);
- системы автоматизированного проектирования (САПР) — для создания трёхмерных чертежей зданий, механизмов и других сложных объектов;
- программы компьютерного моделирования — для испытаний устойчивости проектируемых сооружений, безопасности транспортных средств и других характеристик самых разных объектов;
- математические пакеты — для выполнения сложных научных и технических расчётов;
- геоинформационные системы — для разработки топографических карт, подготовки метеорологических прогнозов, моделирования экологических ситуаций и т. д.;
- медицинские экспертные системы — для помощи в постановке диагноза больному и др.
К программам специального назначения относят и многочисленные образовательные программы: электронные учебники, тренажёры, тестирующие системы, конструкторы, энциклопедии и справочники. Очень много полезных для себя образовательных программ по разным предметам вы можете найти в Единой коллекции цифровых образовательных ресурсов.
Программы по их правовому статусу можно разделить на две большие группы:
1) ПО, являющееся частной собственностью авторов или правообладателей;
2) свободное ПО.
Программы, входящие в первую группу, можно разделить на:
- коммерческие;
- условно бесплатные;
- свободно распространяемые.
Коммерческие программы продаются в специальной упаковке и с сопровождающей документацией. В соответствии с лицензионным соглашением разработчики программы гарантируют её нормальное функционирование и несут за это ответственность. Компьютерное пиратство — преступление, заключающееся в нелегальном копировании, использовании и распространении коммерческого программного обеспечения. Многие даже не подозревают, что, покупая свободно продаваемые пиратские «сборники» ПО, они нарушают закон. Компьютерные пираты, нелегально тиражируя программное обеспечение, обесценивают труд программистов, делают разработку программ экономически невыгодной. Кроме того, компьютерные пираты зачастую предлагают пользователям недоработанные программы или их демонстрационные версии.
Условно бесплатные программы (shareware) предлагаются разработчиками бесплатно в целях их рекламы и продвижения на рынок. Эти программы имеют ограниченный срок действия или ограниченные функциональные возможности. Если пользователь в установленный срок производит оплату, то ему сообщается код, активизирующий все функции программы.
К свободно распространяемым программам (freeware) относятся: новые ещё не доработанные версии программных продуктов; программы, являющиеся частью принципиально новых технологий; дополнения к ранее выпущенным программам; устаревшие версии программ; драйверы к новым устройствам и некоторые другие программы.
При приобретении любого варианта ПО этой группы пользователь получает программу, представленную в двоичном коде, что делает невозможным внесение в неё изменений кем-нибудь, кроме самих разработчиков.
Свободное программное обеспечение снимает это ограничение, обеспечивая всем желающим доступ к исходным кодам программы. Пользователь свободного программного обеспечения имеет право:
- использовать программу в любых целях;
- изучать и изменять программу;
- копировать и распространять программу;
- распространять изменённую программу.
Совокупность всех программ, предназначенных для выполнения на компьютере, называют программным обеспечением (ПО).
Всё многообразие компьютерных программ по функциональному назначению можно разделить на три группы: системное ПО, прикладное ПО, системы программирования.
Системное программное обеспечение включает в себя операционную систему и сервисные программы.
Операционная система — это комплекс программ, обеспечивающих совместное функционирование всех устройств компьютера и предоставляющих пользователю доступ к ресурсам компьютера.
Система программирования — это комплекс программных средств, предназначенных для разработки компьютерных программ на языке программирования.
Программы, с помощью которых пользователь может решать информационные задачи, не прибегая к программированию, принято называть прикладными программами или приложениями.
По правовому статусу программное обеспечение можно разделить на две группы:
Урок 12. Прикладное программное обеспечение, системы программирования. Компьютерные вирусы. Антивирусная профилактика. Правовые нормы использования программного обеспечения
Системы программирования и прикладное программное обеспечение
2.3.3. Системы программирования
Программирование — это процесс создания программ, разработки всех типов программного обеспечения. Специалистов, разрабатывающих программное обеспечение, называют программистами.
Для записи программ используются специальные языки — языки программирования. Это формальные языки. Они состоят из некоторого фиксированного множества слов; существуют чёткие правила написания программ на языке программирования. К настоящему времени насчитывается несколько тысяч языков программирования.
Некоторыми языками умеет пользоваться только ограниченный круг их разработчиков, другие становятся известными миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования. В 8 классе вы познакомитесь с языком программирования Паскаль. Возможно, кто-то из вас знаком с языком программирования Лого, специально созданным для обучения программированию детей.
Программу на языке программирования можно записать на листке бумаги. Но чтобы её мог выполнить компьютер, программу нужно ввести в компьютер, перевести исходный код программы (код на языке программирования) в двоичный код, проверить правильность её работы и при необходимости внести исправления. Для этого предназначены специальные программные средства.
Комплекс программных средств, предназначенных для разработки компьютерных программ на языке программирования, называют системой программирования.
2.3.4. Прикладное программное обеспечение
Программы, с помощью которых пользователь может работать с разными видами информации, не прибегая к программированию, принято называть прикладными программами или приложениями.
Можно выделить приложения общего назначения и приложения специального назначения.
Приложения общего назначения требуются практически каждому пользователю для работы с разными видами информации. Виды и назначение приложений общего назначения:
• текстовые редакторы — для работы с текстовой информацией;
• электронные таблицы — для автоматизации вычислений;
• графические редакторы — для создания и редактирования всевозможных графических изображений;
• мультимедийные проигрыватели — для воспроизведения звука, анимации и видео;
• редакторы презентаций — для создания материалов, позволяющих большой аудитории не только слышать выступающего, но и видеть ключевые положения его выступления;
• системы управления базами данных — для доступа к упорядоченной информации из некоторой предметной области.
Приложения специального назначения предназначены для профессионального использования в различных сферах деятельности квалифицированными пользователями:
• издательские системы — для автоматизации подготовки макетов книг, журналов и другой печатной продукции;
• бухгалтерские программы — для автоматизированного вычисления заработной платы и учёта денежных средств предприятия (организации);
• системы автоматизированного проектирования (САПР) — для создания трёхмерных чертежей зданий, механизмов и других сложных объектов;
• программы компьютерного моделирования — для испытаний устойчивости проектируемых сооружений, безопасности транспортных средств и других характеристик самых разных объектов;
• математические пакеты — для выполнения сложных научных и технических расчётов;
• геоинформационные системы — для разработки топографических карт, подготовки метеорологических прогнозов, моделирования экологических ситуаций и т. д.;
• медицинские экспертные системы — для помощи в постановке диагноза больному и др.
К программам специального назначения относят и многочисленные образовательные программы: электронные учебники, тренажёры, тестирующие системы, конструкторы, энциклопедии и справочники. Очень много полезных для себя образовательных программ по разным предметам вы можете найти в Единой коллекции цифровых образовательных ресурсов.
2.3.5. Правовые нормы использования программного обеспечения
Программы по их правовому статусу можно разделить на две большие группы:
1) ПО, являющееся частной собственностью авторов или правообладателей;
2) свободное ПО.
Программы, входящие в первую группу, можно разделить на:
• коммерческие;
• условно бесплатные;
• свободно распространяемые.
Коммерческие программы продаются в специальной упаковке и с сопровождающей документацией. В соответствии с лицензионным соглашением разработчики программы гарантируют её нормальное функционирование и несут за это ответственность. Компьютерное пиратство — преступление, заключающееся в нелегальном копировании, использовании и распространении коммерческого программного обеспечения. Многие даже не подозревают, что, покупая свободно продаваемые пиратские «сборники» ПО, они нарушают закон. Компьютерные пираты, нелегально тиражируя программное обеспечение, обесценивают труд программистов, делают разработку программ экономически невыгодной. Кроме того, компьютерные пираты зачастую предлагают пользователям недоработанные программы или их демонстрационные версии.
Условно бесплатные программы (shareware) предлагаются разработчиками бесплатно в целях их рекламы и продвижения на рынок. Эти программы имеют ограниченный срок действия или ограниченные функциональные возможности. Если пользователь в установленный срок производит оплату, то ему сообщается код, активизирующий все функции программы.
К свободно распространяемым программам (freeware) относятся: новые ещё не доработанные версии программных продуктов; программы, являющиеся частью принципиально новых технологий; дополнения к ранее выпущенным программам; устаревшие версии программ; драйверы к новым устройствам и некоторые другие программы.
При приобретении любого варианта ПО этой группы пользователь получает программу, представленную в двоичном коде, что делает невозможным внесение в неё изменений кем-нибудь, кроме самих разработчиков.
Свободное программное обеспечение снимает это ограничение, обеспечивая всем желающим доступ к исходным кодам программы. Пользовательсвободного программного обеспечения имеет право:
• использовать программу в любых целях;
• изучать и изменять программу;
• копировать и распространять программу;
• распространять изменённую программу.
САМОЕ ГЛАВНОЕ
Совокупность всех программ, предназначенных для выполнения на компьютере, называют программным обеспечением (ПО).
Всё многообразие компьютерных программ по функциональному назначению можно разделить на три группы: системное ПО, прикладное ПО, системы программирования.
Системное программное обеспечение включает в себя операционную систему и сервисные программы.
Операционная система — это комплекс программ, обеспечивающих совместное функционирование всех устройств компьютера и предоставляющих пользователю доступ к ресурсам компьютера.
Система программирования — это комплекс программных средств, предназначенных для разработки компьютерных программ на языке программирования.
Программы, с помощью которых пользователь может решать информационные задачи, не прибегая к программированию, принято называть прикладными программами или приложениями.
По правовому статусу программное обеспечение можно разделить на две группы: 1) ПО, являющееся частной собственностью авторов или правообладателей; 2) свободное ПО.
Вопросы и задания
1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Дополняет ли презентация информацию, содержащуюся в тексте параграфа?
2. Что такое программное обеспечение компьютера? Какова его роль?
3. Какие основные группы программного обеспечения принято выделять по функциональному назначению?
4. Какие основные функции выполняет операционная система? Как называется операционная система в вашем компьютерном классе?
5. Чем отличается установка ОС от загрузки ОС?
7. На этапе загрузки компьютера происходит поочерёдное обращение к имеющимся в компьютере дискам с целью обнаружения среди них системного диска. Для чего, по вашему мнению, это нужно? Почему однозначно не указывают, какой именно диск является системным?
8. Что такое компьютерный вирус? Как уберечь свой компьютер от поражения компьютерными вирусами?
9. Для чего предназначены системы программирования? Для разработки каких типов программного обеспечения служат системы программирования? Кто может работать с системами программирования?
10. Сколько, по вашему мнению, существует систем программирования?
11. Пользуясь дополнительными источниками информации 1 , ответьте на следующие вопросы:
1) Один из языков программирования называется Ада. Каково происхождение этого названия?
2) Каково происхождение названия языка программирования Паскаль?
3) Кто является разработчиком языка программирования Лого?
12. Назовите разновидности программ прикладного назначения. Кто использует прикладные программы общего назначения?
13. Кто использует прикладные программы специального назначения?
14. Вы бы отнесли компьютерные игры к приложениям общего или специального назначения? Куда отнести программы-переводчики? Компьютерные словари и энциклопедии? Обоснуйте свои ответы.
15. Постройте граф, описывающий состав программного обеспечения компьютера.
16. Почему, по вашему мнению, разработчики часто свободно распространяют недоработанные версии своих программных продуктов?
17. Какие виды программ можно выделить по их правовому статусу?
18. Что общего у разработчиков компьютерных вирусов и компьютерных пиратов?
1 Для выполнения заданий 11-14 воспользуйтесь ресурсами сети Интернет.
Электронное приложение к учебнику
Презентация «Программное обеспечение компьютера»
Единая коллекция цифровых образовательных ресурсов
1) демонстрация к лекции «Структура программного обеспечения ПК» (N 119268);
2) демонстрация к лекции «Системное программное обеспечение» (N 119016);
3) демонстрация к лекции «Операционная система» (N 119104);
4) демонстрация к лекции «Системы программирования» (N 119289);
5) демонстрация к лекции «Прикладное программное обеспечение» (N 119242);
6) тест по теме «Компьютер как средство автоматизации информационных процессов» – «Система тестов и заданий №13» (N 134951);
Ресурсы ФЦИОР
1) информационный модуль по теме «Компьютерные вирусы и антивирусные программы»;
2) практический модуль теме «Компьютерные вирусы и антивирусные программы»;
3) контрольный модуль по теме «Компьютерные вирусы и антивирусные программы»;
4) информационный модуль по теме «Программы архивирования данных»;
5) практический модуль теме «Программы архивирования данных»;
6) контрольный модуль по теме «Программы архивирования данных».
Практическая часть урока
Урок №12. Работа с имеющейся антивирусной программой.
Урок №13. Работа учеников с ресурсами сети Интернет, взяв за основу задание №11 к § 2.3 и дополнить его заданием «Проприетарное и свободное программное обеспечение».
Практическая работа №4
"Программное обеспечение компьютера"
Задание 1. Основные понятия
2. Постройте истинные утверждения, соединив соответствующие пары.
3. После выполнения задания щелкните мышью на кнопке Перепроверить решение, покажите результат учителю.
Задание 2. Операционные системы
2. Выясните достоинства и недостатки самых популярных операционных систем.
3. Покажите результат учителю.
Задание 3. Классификация программного обеспечения
2. Выполните классификацию программного обеспечения, отнеся его к одной из четырёх групп.
3. После выполнения задания щелкните мышью на кнопке Перепроверить решение, покажите результат учителю.
Задание 4. Значки программ
2. Составьте пар: название программы – значок программы.
3. Покажите результат учителю.
Задание 5. Исследование программного обеспечения компьютера
1. Выясните, какая операционная система установлена на компьютере, к которому вы имеете доступ в школе и (или) дома.
Запишите последовательность действий, с помощью которой вы это установили:
2. Выясните, какое программное обеспечение (ПО) установлено на компьютере, к которому вы имеете доступ в школе и (или) дома.
Запишите последовательность действий, с помощью которой вы это установили:
Задание 6. Правовые нормы использования программного обеспечения
1. Выйдите в Интернет.
2. Найдите информацию о платных и бесплатных программах, позволяющих решать следующие задачи:
Запишите названия найденных программ в таблицу.
Задание 7. Защита от вирусов
1. Запустите антивирусную программу, установленную на компьютере.
2. Выберите следующие настройки: лечить, а если лечение не удаётся, заражённый файл поместить в папку карантина.
3. Выбрать устройство (по указанию учителя) и проверить его на наличие вирусов.
Теперь вы умеете:
• выполнять классификацию программного обеспечения;
• подбирать платное и бесплатное программное обеспечение для решения той или иной задачи;
• выполнять проверку на вирусы.
Презентация «Программное обеспечение компьютера» (Open Document Format)
Каждый разработчик ПО умеет программировать, но не каждый программист может разрабатывать ПО
Большинство может легко научиться готовить, но когда нужно накормить большое число людей, мы нанимаем повара.
Возможно, кому-то больше нравится говорить не «разработчик», а инженер-программист, ведь инженер — это звучит гордо! Или нет? К счастью, эта статья не о терминах. Если мой термин вам не нравится — подставьте свой: «автор ПО», «мастер ПО»… и даже «творец приложений»!
Говоря «разработчик ПО», я имею в виду человека, для которого написание качественного ПО — профессия. Человека, который использует в своей работе научные подходы и статистику и считает свое занятие чем-то большим, чем просто зарабатывание денег.
Чтобы стать разработчиком, уметь программировать недостаточно.
Научить программировать можно любого — это легко. Писать простые программы, которые работают у конкретных людей на конкретных машинах, может почти кто угодно, но никто не гарантирует, что те же программы будут работать в других условиях.
Мне нравится такая аналогия: каждый может ради собственного развлечения петь в ду́ше, но вы же не ставите треки с записями этого пения на вечеринке — вы обращаетесь к произведениям профессиональных музыкантов.
Хотите еще аналогий? Пожалуйста:
- В школе нас обучили математике и письму, но это не сделало нас математиками и писателями.
- Большинство может легко научиться готовить, но когда нужно накормить большое число людей, мы нанимаем повара.
- Никто не зовет соседа — мастера на все руки построить дом с нуля.
Переведено в Alconost
Программирование в простейшем представлении — это передача компьютеру указаний на совершение некоторых действия с некоторыми входными данными для получения некоторого вывода.
Разработка же программного обеспечения — это проектирование, написание, тестирование и поддержка компьютерных программ с целью решения задач для множества пользователей; это создание надежных защищенных решений, которые выдержат испытание временем и справятся с некоторыми не известными заранее задачами, лежащими в области, близкой к очевидным исходным задачам.
Разработчики ПО досконально изучают решаемые задачи, полностью понимают, как работают предложенные ими решения, как эти решения ограничены и как они характеризуются с точки зрения конфиденциальности работы с данными и безопасности.
А если кто-то не понимает задачу, ему нельзя давать разрабатывать для нее решение.
Ориентированный на решения подход
Разработчики ПО не считают своей работой просто написание программ — они рассуждают с точки зрения удовлетворения потребностей и решения задач. И это важно, потому что не для всякой задачи необходимо писать программу: в некоторых случаях достаточно использовать уже существующую программу или объединить несколько программ. А действуя на упреждение, иногда можно вообще избавиться от необходимости решать данную задачу: разработка хороших программ часто предполагает планирование, которое позволяет предупредить появление некоторых проблем и соответствующих задач в будущем.
Для сложных задач приходится писать несколько программ. В некоторых случаях нужны программы, работающие параллельно, в других — запускающиеся последовательно. Иногда для решения задачи достаточно обучить пользователей.
Прежде чем писать код, разработчик задастся следующими вопросами:
- Какие задачи я пытаюсь решить?
- Как можно решить задачу, обойдясь без программирования?
- Что можно сделать, чтобы писать код для решения задачи было проще?
Качество кода
В качественных программах код понятен и читается легко, их можно без труда расширять, они отлично взаимодействуют с другим ПО, а их поддержка не превращается в кошмар. Качество кода не должно становиться жертвой компромиссов; использование быстрых, но неаккуратных решений из-за поджимающего срока, излишнего волнения, взбудораженности, раздраженности и т. д. — неприемлемо.
Один из важнейших аспектов разработки ПО — это проектирование с нуля продукта, готового к расширению. Модификация приложений после их выпуска — факт, с которым нужно смириться. Пользователям будет нужно всё больше функционала, они захотят, чтобы пользоваться приложением было еще проще.
Другой важный аспект написания хороших программ — это понятный код, а совсем не количество тестов или число в отчете о покрытии кода. Здесь всё просто. Подумайте: смогут ли другие прочитать код? Или — что еще лучше — сможете ли вы сами, написав код сегодня, понять его спустя несколько недель?
«В компьютерных технологиях есть только две сложные задачи: недействительность кэша и придумывание названий».
— Фил Карлтон
Читабельность кода имеет гораздо большее значение, чем может казаться. К сожалению, удобных показателей для оценки этой характеристики нет. Полезно будет запомнить зарекомендовавшие себя методики и шаблоны программирования, но часто этого недостаточно. У хорошего разработчика с опытом просто развивается интуиция, которая подсказывает, насколько читабелен код. Вот неплохое сравнение: чтобы писать лаконичный текст, недостаточно иметь большой словарный запас.
Рабочее окружение и тестирование
Когда разработчик пишет программу, он проверяет, чтобы она работала во множестве различных окружений, на машинах с разными ресурсами и в разных часовых поясах. ПО должно работать на экранах различных размеров и ориентации, в условиях ограниченной памяти и малой вычислительной мощности.
Например, если ПО пишется для веб-браузера, оно должно работать на всех основных браузерах. При создании классического ПО оно в большинстве случаев должно работать на платформах Mac и Windows. Если создаваемое приложение зависит от получения данных, оно должно продолжать работать и в том случае, если подключение к данным медленное или даже некоторое время полностью отсутствует.
Чтобы написать компонент ПО, разработчики пытаются продумать все возможные сценарии, которые только можно себе представить, и планируют их проверку. Начинают с того, что называется сценарием по умолчанию (или «счастливой дорогой» — от англ. «happy path»), в котором не происходит ничего неожиданного, а все возможные на этом пути проблемы — что важно — документируются и для каждой планируется тест. Некоторые разработчики начинают с написания «тестовых случаев», которые имитируют такие сценарии. Затем они пишут функциональный код, который проходит эти тестовые случаи.
Разработчики должны понимать предъявляемые к ПО требования, а ведь те часто бывают неоднозначными и неполными. Мастерство разработчика проявляется не в том, как он напишет решение, а скорее в том, какое решение он посчитает необходимым.
Стоимость и эффективность
В большинстве случаев разработчик может решить задачу быстро. Если вам кажется, что нанимать на работу опытных программистов — затратно, задумайтесь: чем больше у программиста опыта, тем быстрее он создаст функциональное, точное, надежное решение, которое несложно будет поддерживать. А это — меньшие затраты в долгосрочной перспективе.
Кроме того, учитывать следует и «стоимость работы» программы: всякое ПО потребляет ресурсы компьютера, а они не бесплатные. Разработчик напишет эффективную программу, которая не будет использовать ресурсы ПК без необходимости. Для этого он может применить, к примеру, кэширование часто используемых данных, — и это всего лишь один из, наверное, тысяч инструментов и способов, которые помогают повысить эффективность и скорость работы программы.
Возможно, программист-новичок и даст дешевое решение, но работа с этим решением может стоить вам и вашим клиентам намного больше, чем если бы вы сразу наняли опытного разработчика, который в первую очередь стремится найти эффективное решение.
Удобство использования
Хорошее ПО разрабатывается с учетом взаимодействия компьютера с пользователем (UX), и это довольно обширная тема, по которой проведено множество исследований и получено немало результатов. Чем больше выводов из этих исследований учтено, тем лучше будет ПО в использовании.
Позвольте я приведу пару примеров, чтобы вы могли прочувствовать, почему это важно:
Надежность, безопасность и защищенность
Пожалуй, самый важный аспект, который отличает разработчиков-профессионалов от программистов-любителей, заключается в том, что профессионалы знают, что они несут ответственность за создание безопасных защищенных решений.
Компонент ПО должен быть устойчив к «плохим» данным, неправильным состояниям и неверному взаимодействию. Добиться такой устойчивости ОЧЕНЬ сложно — именно поэтому мы постоянно читаем о том, как кто-то умер из-за ошибки ПО.
Пользователи будут вводить в ПО «плохие» и неправильные данные. Кто-то будет делать это намеренно — с целью взломать ПО и добраться до ресурсов, которые представляет данное ПО. Сотрудника, якобы ответственного за брешь в безопасности американского бюро кредитных историй Equifax, которой воспользовались злоумышленники, обвинили в том, что он не выполнил свою работу: он должен был обеспечить устойчивость к «плохим» и вредоносным данным во всём ПО, открыто публикуемом от имени компании.
Задача обеспечения безопасности связана не только с «плохими» и вредоносными данными, но и с обычными. Например, если пользователь забыл пароль, сколько раз он может попробовать его ввести? Блокировать ли его после исчерпания попыток ввода? Что, если кто-то умышленно пытается заблокировать пользователя? Давать ли пользователям возможность отправлять пароль по незашифрованному соединению? Что делать, если кто-то пытается войти в учетную запись из необычного места? Что предпринять, если возникает подозрение, что вход в систему осуществляется автоматически?
Как защитить своих пользователей от межсайтовых сценариев и подделки межсайтовых запросов, атак «злоумышленник посередине» и простого социального фишинга? Как разработать стратегию резервного функционирования в случае DDoS-атаки на сервера? Перечисленные вопросы — лишь малая толика из множества вопросов, которые нужно учитывать при проектировании.
Защищенные программы хранят конфиденциальные сведения не в виде обычного текста, а как односторонне зашифрованные данные со сложно взламываемыми алгоритмами. Это — резервная защита на случай взлома ПО и несанкционированного доступа к данным: хакерам достанутся зашифрованные данные, которые в большинстве случаев будут бесполезны.
Программные дефекты выявить сложно. Наш ум ограничен в своей способности прогнозировать и предотвращать известные дефекты. Поэтому разработчики ПО ценят хорошие инструменты, которые помогают писать правильный код и создавать безопасное ПО.
Используемые инструменты
Очевидно, что нам нужно больше инструментов и нужны инструменты лучше. В разработке ПО инструменты имеют большое значение, но их часто недооценивают.
Представьте на минутку, что для развертывания нам по-прежнему нужно было бы использовать FTP! Представьте отладку сети и выявление проблем производительности без браузерных инструментов разработчика! Представьте себе, как упадет эффективность написания JavaScript-кода, если не использовать ESLint и Prettier!
Если в JavaScript-разработке вы почему-то вынуждены оставить только один плагин для редактора кода, выбирайте ESLint.
Отличным дополнением будет всякий инструмент, который сокращает цикл обратной связи при написании кода. Мысль Брета Виктора об изобретении мгновенных визуальных представлений того, что мы создаем, открыла мне глаза. Использование и совершенствование инструментов — один из способов приблизиться к этому светлому будущему. Если вы еще не видели выступление Брета — обязательно посмотрите его.
Когда я нахожу отличный инструмент, я сожалею лишь о том, что не пользовался им раньше. Чем лучше инструмент, тем лучше с его помощью пишутся программы. Ищите, используйте и цените их, а если можете — и совершенствуйте.
Выбор языка — важен. Безопасность типа — важна. Лучшее, что произошло с языком JavaScript, — это TypeScript (и Flow). Статический анализ кода важнее, чем вам кажется. Если вы его не используете, вы, в сущности, становитесь уязвимы для возможных неизвестных проблем в будущем. Не пишите код без системы статического контроля типов. Если в выбранном языке нет статического контроля типов, нужно либо сменить язык, либо найти для него транскомпилятор: сегодня они уже достаточно умны, чтобы работать по комментариям в коде, и мне кажется, что для языков, не поддерживающих статический контроль типов, транскомпиляторы вскоре станут стандартным инструментом.
Становление разработчика ПО
Невозможно научиться разрабатывать ПО за пару месяцев, полгода и даже за год. На курсах программирования из вас не сделают разработчика. Я начал учиться 20 лет назад — и продолжаю учиться сегодня. С достаточной уверенностью я смог назвать себя опытным программистом только после десяти лет обучения, в течение которых мне пришлось спроектировать, создать и обеспечить поддержку приложений, используемых тысячами пользователей.
Разработка программного обеспечения — занятие не для всех, но каждый должен научиться решать собственные задачи с помощью компьютеров. Если вы можете научиться писать простые программы — сделайте это. Если можете научиться использовать несложные программные сервисы — сделайте это. Если можете научиться использовать ПО с открытым исходным кодом, в ваших руках окажутся мощные инструменты.
Задачи с течением времени меняются, поэтому меняется и разработка ПО. Задача этой профессии в будущем — дать возможность обычным людям использовать компьютеры, не тратя при этом на обучение полдюжины лет. Нужно дать пользователям простые и понятные инструменты, с помощью которых они будут самостоятельно решать простые задачи. А затем разработчики перейдут к созданию лучших инструментов, решению более масштабных известных задач и сделают все возможное, чтобы предотвратить появление неизвестных проблем.
О переводчике
Перевод статьи выполнен в Alconost.
Alconost занимается локализацией игр, приложений и сайтов на 68 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.
В IT-вселенной существует множество языков программирования. С каждым годом их становится всё больше и больше. Например, сравнительно недавно появились языки Scala, Kotlin, Go и Closure. Но история говорит нам о том, что выживут лишь немногие из них.
Языки, о которых пойдёт здесь речь, внесли огромный вклад в мир разработки программного обеспечения. Именно поэтому они и попали в десятку самых влиятельных языков последних пятидесяти лет.
Языки — это важнейшая составляющая индустрии программирования. Их часто обсуждают, критикуют, их, с течением времени, улучшают. Они у всех на слуху, но их историю, хотя бы то, как зовут их создателей, знают далеко не все. Такое менее характерно для популярных языков. Например, все знают о том, что Джеймс Гослинг — это отец Java. Но далеко не каждый программист знает о том, кто создал Perl, Pascal, Lisp или Erlang.
Автор статьи, перевод которой мы сегодня публикуем, говорит, что к её написанию его подтолкнула вышеописанная ситуация. Здесь речь пойдёт о самых популярных и успешных языках программирования и об их создателях.
Топ-10 языков программирования и их создатели
Представляю вашему вниманию рассказ о десяти языках программирования и об их создателях. Языки здесь расположены в произвольном порядке за исключением первого в списке — языка Java. Я — Java-разработчик, поэтому решил поступить именно так.
Знаю о том, что многие C-программисты со мной не согласятся и посчитают, что первым в списке должен быть язык C. Их можно понять, ведь C — это самый старый из языков, которые всё ещё широко используются. Но эта статья не является неким рейтингом языков. Это — материал, который призван напомнить всем его читателям о мастерах компьютерного искусства, которые изменили мир языков программирования и разработки программного обеспечения.
1. Java — Джеймс Гослинг
Джеймс Гослинг
Java — это один из самых популярных и успешных языков программирования. Java создал доктор Джеймс Артур Гослинг. Он известен как «отец Java».
Изначально разработкой и поддержкой Java занималась компания Sun Microsystems. С января 2010 года, после того, как компанию Sun купила Oracle, этим занимается Oracle.
В основу Java положен принцип WORA («Write Once Run Anywhere», «Написано один раз, работает везде»). Платформонезависимость Java стала одной из фундаментальных причин успеха этого языка в корпоративной среде.
В настоящее время Java — это один из самых популярных языков. Если вы хотите изучить Java — взгляните на этот учебный курс.
2. C — Деннис Ритчи
Деннис Ритчи
Деннис Макалистэйр Ритчи, американский компьютерный специалист, занимался созданием языка программирования C в 1967 — 1973 годах в AT&T Bell Labs.
Язык C всё ещё весьма популярен. Он широко используется в системном программировании. Он старше Java, но не сдаёт своих позиций.
Деннис Ритчи, кстати, создал ещё и всемирно известную операционную систему Unix. Сделал он это вместе со своим давним коллегой Кеном Томпсоном.
Если сравнить популярность Денниса Ритчи с популярностью Билла Гейтса или Стива Джобса, то окажется, что сравнивать тут почти нечего. Но мало кто может сравниться с ним в том, какой вклад он сделал в мир информационных технологий. Об этом стоит знать каждому программисту. Если вы хотите изучить C — взгляните на эту специализацию на Coursera.
3. С++ — Бьёрн Страуструп
Бьёрн Страуструп
Бьёрн Страуструп родился 30 Декабря 1950 года в городе Орхус, в Дании. Он известен благодаря созданию и разработке широко используемого языка программирования C++.
C++, как можно судить по названию языка, представляет собой язык нового поколения, следующего за языком C. C++ отличается поддержкой возможностей по объектно-ориентированному программированию. Это во времена появления C++ выглядело, в сравнении с C, невероятно интересно.
C++ всё ещё остаётся одним из самых популярных языков. Он, например, широко используется при разработке систем высокочастотного трейдинга из-за того, что код, написанный на C++, довольно-таки близок к системным возможностям компьютеров, и из-за того, что этот язык поддерживает популярные в наше время объектно-ориентированные возможности.
Если вы хотите изучить С++ с нуля — рекомендую взглянуть на этот учебный курс. В нём хорошо сочетаются теория и практика.
4. Python — Гвидо ван Россум
Гвидо ван Россум
Язык Python разработал Гвидо ван Россум из Центра математики и информатики (CWI). Python — это высокоуровневый язык общего назначения. При его проектировании особое внимание уделялось хорошей читабельности кода. Его синтаксис считается чистым и выразительным.
В США Python почти заменил Java в научной среде. В частности, это выражается в том, что современные студенты начинают осваивать программирование с изучения Python, а не C или Java, как это было раньше.
Python широко используется в разных сферах, в частности, в веб-разработке и в области информационной безопасности. Этот язык применяется в таких компаниях, как Google, Yahoo и Spotify. Вот хороший учебный курс по Python.
5. JavaScript — Брендан Эйх
Брендан Эйх
Если бы вы спросили меня о том, какой язык программирования можно назвать самым популярным в последние 5-10 лет, то я сказал бы, что это JavaScript. Он, совершенно определённо, господствует в мире клиентской веб-разработки, не в последнюю очередь — за счёт существующих JavaScript-библиотек. Кроме того, он пользуется серьёзной популярностью и в серверной среде — благодаря платформе Node.js.
JavaScript — это скриптовый язык, в котором используются механизмы прототипного наследования. Это — динамический язык со слабой типизацией, который поддерживает работу с функциями высшего порядка. JavaScript создал Брендан Эйх, работавший во время разработки этого языка в Netscape Communications Corporation.
JavaScript-код может выполняться в браузерах, на JavaScript пишут всё то, что приводит в движение современные веб-интерфейсы. JavaScript используется на практически каждом серьёзном сайте.
Если вы хотите изучить JavaScript — к вашим услугам огромное количество материалов.
6. PHP — Расмус Лердорф
Расмус Лердорф
Язык PHP (изначально он назывался Personal Home Page Tools, что переводится как «Инструменты для создания персональных веб-страниц») создал в 1995 году Расмус Лердорф. Вне зависимости от того, насколько сильно вы этот язык ненавидите, вам никуда не деться от того факта, что он довольно-таки популярен при разработке серверных частей современных веб-проектов.
В настоящее время эталонная реализация PHP разрабатывается силами The PHP Group. PHP соперничал с технологиями Microsoft Active Server Pages (ASP) и Java Server Pages (JSP) и в итоге стал гораздо более востребованным, чем они. Это — опенсорсный язык, который используется такими интернет-гигантами, как Facebook, Wikipedia, Wordpress и Joomla.
Если вы хотите изучить PHP — загляните сюда.
7. Perl — Ларри Уолл
Perl — это высокоуровневый, динамический, интерпретируемый язык программирования общего назначения. Его создал Ларри Уолл в середине 1980-х. Своей популярностью Perl обязан замечательными возможностями по обработке текстов.
Perl всё ещё является основным языком, используемым для разработки скриптов в UNIX-системах. Perl используется в сфере компьютерной графики, в приложениях для работы с базами данных, в сфере сетевого программирования. Среди компаний, которые используют этот язык, можно отметить IMDB, Amazon и Priceline. Вот хороший учебный курс по Perl.
8. Ruby — Юкихиро Мацумото
Юкихиро Мацумото
Язык Ruby был создан Юкихиро Мацумото в середине 1990-х в Японии. Программирование на Ruby — занятие увлекательное. Если вы пробовали веб-фреймворк Ruby on Rails, то вы меня поймёте.
Воздействие на Ruby оказали такие языки, как Perl, Ada, Lisp, Smalltalk. Этот язык создан в расчёте на то, чтобы писать программы на нём можно было бы быстро и приятно.
Ruby, в основном, используется при разработке веб-приложений. В частности, этот язык применяется в таких компаниях, как Twitter, Hulu и Groupon.
Вот учебный курс по Ruby.
9. Lisp — Джон Маккарти
Джон Маккарти
Язык Lisp (LISt Processing language, язык обработки списков) был разработан Джоном Маккарти. Это — один из старейших высокоуровневых языков, которые используются по сей день.
Я никогда не изучал Lisp, но говорят, что этот язык является прародителем таких языков функционального программирования, как Haskell, Erlang и Scala. Этот язык используется в самых разных сферах. В частности — в военной. По Lisp существует не так уж и много учебных курсов. Вот — один из них.
10. Pascal — Никлаус Вирт
Никлаус Вирт
Pascal — это императивный процедурный язык, разработанный в конце 1960-х Никлаусом Виртом. Этот язык оказал значительное влияние на IT-индустрию. Он создавался как компактный и эффективный язык, направленный на поддержание хорошего стиля программирования за счёт использования структурного подхода к разработке. Как и в случае с Lisp, по Pascal существует не так уж и много учебных курсов. Всё же язык это довольно старый. Но если вы хотите его изучить — загляните сюда.
Итоги
Я поделился с вами моим рассказом о 10 языках программирования и об их создателях. Все, о ком я рассказал, внесли серьёзный вклад в развитие IT-индустрии. Без них современный мир был бы совсем другим.
Совокупность всех программ, предназначенных для выполнения на компьютере, называют программным обеспечением (ПО) компьютера.
Сфера применения конкретного компьютера определяется как его техническими характеристиками, так и установленным на нём ПО.
ПО современных компьютеров насчитывает тысячи программ. Оно непрерывно развивается — совершенствуются существующие программы, на смену одним программам приходят другие, появляются новые программы.
Тем не менее, отбросив второстепенные детали, всё многообразие компьютерных программ можно разделить на три труппы: системное ПО, прикладное ПО, системы программирования (рис. 2.8).
Системное программное обеспечение включает в себя операционную систему и сервисные программы.
Операционная система — это комплекс программ, обеспечивающих согласованное функционирование всех устройств компьютера и предоставляющих пользователю доступ к ресурсам компьютера.
В настоящее время наиболее распространёнными ОС для персональных компьютеров являются Windows, Mac OS и Linux, для смартфонов, планшетов и других мобильных устройств — Android, iOS, Windows Phone.
Рассмотрим основные функции, выполняемые ОС современного компьютера.
Управление устройствами
Для обеспечения согласованного функционирования аппаратного обеспечения компьютера в состав ОС входят драйверы — специальные программы, управляющие работой подключённых к компьютеру внешних (периферийных) устройств. С помощью этих программ осуществляется контроль за нормальным функционированием оборудования, обеспечивается реакция на возникающие ошибки и аварийные ситуации.
Управление процессами
Программу, выполняемую на компьютере в текущий момент, принято называть процессом. Даже когда мы просто ищем информацию в сети Интернет, компьютер производит незаметные для нас операции по контролю за состоянием устройств, по защите от вирусов и т. д.
Современные операционные системы, планируя работы и распределяя ресурсы, обеспечивают возможность параллельной обработки нескольких процессов. Это свойство ОС называется многозадачностью.
Пользовательский интерфейс
Современные операционные системы обеспечивают диалог пользователя с компьютером на базе графического интерфейса.
Работа с файлами
Организацию хранения информации и обеспечение доступа к ней обеспечивает подсистема ОС, называемая файловой системой.
Сервисные программы
К сервисным программам или утилитам относят различные программы, выполняющие некоторые дополнительные услуги системного характера: обслуживание дисков (проверка, восстановление, очистка диска др.), архивирование файлов, защита от вирусов и многие другие.
Архиваторы
Архиваторы — это специальные программы, осуществляющие сжатие программ и данных. Архиваторы обеспечивают уменьшение объёма хранимой информации, а значит, экономию места на диске и сокращение времени копирования этой информации, что особенно важно при пересылке информации по сети Интернет.
Многие программы сжатия данных построены на основе алгоритма Хаффмана, состоящего из двух этапов. На первом этапе читаются все входные данные и подсчитываются частоты встречаемости всех символов. Затем по этим данным строится дерево кодирования Хаффмана, а по нему — коды символов. На втором этапе входные данные читаются ещё раз, при этом генерируется выходной массив данных.
Попробуем сжать с помощью алгоритма Хаффмана фразу:
Подсчитать частоты встречаемости символов достаточно просто:
Алгоритм построения дерева Хаффмана следующий.
1. Считаем частоты встречаемости символов рассматриваемой фразы вершинами будущего графа (дерева). Выписываем их вертикально в ряд.
2. Выбираем две вершины с наименьшими весами (они соответствуют символам с наименьшим количеством повторений). Объединяем эти вершины — создаём новую вершину, от которой проводим рёбра к выбранным вершинам с наименьшими весами, а вес новой вершины задаём равным сумме их весов. Расставляем на рёбрах графа числа 0 и 1: на верхнем ребре — 0, а на нижнем — 1. Чтобы выбранные вершины больше не просматривались, стираем их веса.
3. Продолжаем выполнять объединение вершин, каждый раз выбирая пару с наименьшими весами, до тех пор, пока не останется одна вершина — корень дерева. Заметим, что вес этой вершины будет равен длине сжимаемого массива.
Процесс построения дерева Хаффмана для нашего примера изо бражён на рисунке 2.9.
Теперь для определения кода каждой конкретной буквы необходимо просто пройти от корня до этой вершины, выписывая 0 и 1, встречающиеся на маршруте. В нашем примере символы получат следующие коды:
После того как коды символов построены, остаётся сгенерировать сжатый массив данных, для чего надо снова прочесть входные данные и каждый символ заменить соответствующим ему кодом. Получаем:
Исходный текст состоит из 30 символов, т. е. его длина в несжатом виде будет равна 30 байт. Код сжатого текста будет занимать 95 бит или 12 байт. Получаем коэффициент сжатия, равный 30/12 = 2,5.
Комплекс программных средств, предназначенных для разработки новых программ, называют системой программирования или интегрированной средой разработки.
Известно ли вам, что первым в мире программистом считается англичанка Ада Лавлейс (1815— 1852)? Она выполнила детальное описание вычислительной машины, проект которой был разработан Чарльзом Беббиджем, и составила первую программу для этой машины. Именно Ада Лавлейс ввела в употребление термины «цикл» и «рабочая ячейка».
Специализированный текстовый редактор позволяет программисту набрать и отредактировать текст программы на языке программирования высокого уровня. Для удобства ключевые слова языка программирования в текстовом редакторе могут выделяться различными цветами либо начертаниями шрифта.
Компьютер хранит и обрабатывает информацию, представленную в двоичных машинных кодах. Для перевода программы, написанной на языке высокого уровня, в машинные коды в состав систем программирования включены специальные программы — трансляторы. Существует два типа трансляторов: интерпретаторы и компиляторы.
Интерпретатор обрабатывает и исполняет команды программы последовательно, от оператора к оператору. При использовании интерпретатора, при каждом запуске программы она заново переводится в машинные коды.
Компилятор обрабатывает весь текст программы, преобразовывая его в машинный код и строя исполняемый файл, готовый к запуску. После того как программа откомпилирована, ни текст программы, ни компилятор уже не нужны.
Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять.
Проведите аналогию между работой программ-трансляторов (интерпретатора и компилятора) и профессиональных переводчиков, выполняющих синхронный и письменный перевод.
Любая система программирования включает библиотеки стандартных подпрограмм, которые можно вызвать из вновь разрабатываемой программы. Разные части (модули) создаваемой программы и используемые в ней стандартные подпрограммы собираются в единый исполняемый файл с помощью такого элемента системы программирования, как компоновщик.
Важным этапом в разработке новой программы является её отладка — обнаружение и исправление возможных ошибок. Инструмент для поиска ошибок в новой программе называется отладчиком. Отладчик позволяет управлять процессом исполнения программы, определять место и вид ошибок в программе, наблюдать за изменением значений переменных и выражений.
Системы программирования позволяют облегчить работу программистов и сократить время на разработку сложных программ.
Программы, с помощью которых пользователь может работать с разными видами информации, не прибегая к программированию, принято называть прикладными программами или приложениями.
Можно выделить приложения общего и специального назначения.
Приложения общего назначения требуются практически каждому пользователю для работы с разными видами информации. К приложениям общего назначения относятся: текстовые редакторы и процессоры; графические редакторы и пакеты компьютерной графики; табличные процессоры; редакторы презентаций, аудио- и видеоредакторы; системы управления базами данных; браузеры, почтовые программы и др.
Как правило, пользователь, приобретая компьютер, устанавливает на нём так называемый офисный пакет программ, включающий основные приложения общего назначения. Наибольшее распространение получили такие офисные пакеты, как Microsoft Office (для операционных систем Windows и Mac OS) и OpenOffice (для операционных систем Windows и Linux).
С любого компьютера, имеющего выход в Интернет, может быть доступен онлайн-офис, независимо от того, какую операционную систему этот компьютер использует.
Онлайн-офис — это набор веб-сервисов, включающий в себя все основные компоненты традиционных офисных пакетов: текстовый редактор, электронные таблицы, редактор презентаций и др. Самый известный онлайн-офис — Google Docs.
Приложения специального назначения предназначены для профессионального применения квалифицированными пользователями в различных сферах деятельности. Это: настольные издательские системы, бухгалтерские программы, системы автоматизированного проектирования (САПР), программы компьютерного моделирования, математические пакеты, геоинформационные системы (ГИС) и другие программы.
При этом границы между группами этих программ достаточно условны. По мере совершенствования интерфейсов многие программы, первоначально ориентированные на профессионалов в той или иной области, начинают широко использоваться любителями. В первую очередь это ГИС, программы компьютерного моделирования, математические пакеты и др.
Совокупность всех программ, предназначенных для выполнения на компьютере, называют программным обеспечением (ПО) компьютера. Всё многообразие компьютерных программ можно разделить на три группы: системное ПО, прикладное ПО, системы программирования.
Системное программное обеспечение включает в себя операционную систему и сервисные программы. Операционная система — это комплекс программ, обеспечивающих согласованное функционирование всех устройств компьютера и предоставляющих пользователю доступ к ресурсам компьютера. К сервисным программам или утилитам относят различные программы, выполняющие некоторые дополнительные услуги системного характера: обслуживание дисков (проверка, восстановление, очистка диска и др.), архивирование файлов, защита от вирусов и др.
Комплекс программных средств, предназначенных для разработки новых программ, называют системой программирования или интегрированной средой разработки. Основными компонентами системы программирования являются специализированный текстовый редактор, транслятор, отладчик и другие инструменты, позволяющие облегчить работу программистов и сократить время на разработку сложных программ.
Программы, с помощью которых пользователь может работать с разными видами информации, не прибегая к программированию, принято называть прикладными программами или приложениями. Приложения общего назначения требуются практически каждому пользователю. Приложения специального назначения предназначены для профессионального применения квалифицированными пользователями в различных сферах деятельности.
Самое главное
Совокупность всех программ, предназначенных для выполнения на компьютере, называют программным обеспечением (ПО) компьютера. Всё многообразие компьютерных программ можно разделить на три группы: системное ПО, прикладное ПО, системы программирования.
Системное программное обеспечение включает в себя операционную систему и сервисные программы. Операционная система — это комплекс программ, обеспечивающих согласованное функционирование всех устройств компьютера и предоставляющих пользователю доступ к ресурсам компьютера. К сервисным программам или утилитам относят различные программы, выполняющие некоторые дополнительные услуги системного характера: обслуживание дисков (проверка, восстановление, очистка диска и др.), архивирование файлов, защита от вирусов и др.
Комплекс программных средств, предназначенных для разработки новых программ, называют системой программирования или интегрированной средой разработки. Основными компонентами системы программирования являются специализированный текстовый редактор, транслятор, отладчик и другие инструменты, позволяющие облегчить работу программистов и сократить время на разработку сложных программ.
Программы, с помощью которых пользователь может работать с разными видами информации, не прибегая к программированию, принято называть прикладными программами или приложениями. Приложения общего назначения требуются практически каждому пользователю. Приложения специального назначения предназначены для профессионального применения квалифицированными пользователями в различных сферах деятельности.
Читайте также: