Научная статья на тему 'ФИЛОСОФИЯ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ТОЧКИ ЗРЕНИЯ УПРОЩЕНИЯ СИСТЕМЫ'

ФИЛОСОФИЯ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ТОЧКИ ЗРЕНИЯ УПРОЩЕНИЯ СИСТЕМЫ Текст научной статьи по специальности «Философия, этика, религиоведение»

CC BY
162
12
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
UNIX WAY / KISS / ПРИНЦИП / ЯЗЫК ПРОГРАММИРОВАНИЯ / ПО / PRINCIPLE / PROGRAMMING LANGUAGE / SOFTWARE

Аннотация научной статьи по философии, этике, религиоведению, автор научной работы — Визгалов М.М.

В данной работе рассказывается про проблемы, возникающие при разработке сложного ПО, про способы решения этих проблем. Рассматриваются принципы написания ПО, Unix Way, KISS. Рассказывается о хорошем тоне программирования. Приводятся рассуждения о языках программирования, которые лучше соответствуют идеологии KISS.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

SOFTWARE DEVELOPMENT PHILOSOPHY IN TERMS OF SYSTEM SIMPLIFICATION

This work describes the problems encountered in the development of complex software, about ways to solve these problems. The principles of writing software, Unix Way, KISS. It tells about the good tone of programming. There are arguments about programming languages that better fit the ideology of KISS.

Текст научной работы на тему «ФИЛОСОФИЯ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ТОЧКИ ЗРЕНИЯ УПРОЩЕНИЯ СИСТЕМЫ»

V. Габдуллина Г. К. Разработка методики анализа финансового состояния с учетом жизненного цикла и особенностей функционирования предприятия [Электронный ресурс]: Г. К. Габдуллина // Вестник экономики, права и социологии. - 2013. - № 2. URL: http://vestnykeps.ru/0213/10.pdf (Дата обращения: 05.09.2018)

УДК 004.05

Визгалов М.М. студент бакалавриата З курса факультет «Информационных систем и технологий»

научный руководитель: Чернова С.В.

старший преподаватель кафедра «Программное Обеспечение и Управление в Технических

Системах»

Поволжский Государственный Университет Телекоммуникаций и

Информатики «ПГУТИ» Россия, г. Самара

ФИЛОСОФИЯ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ТОЧКИ ЗРЕНИЯ УПРОЩЕНИЯ СИСТЕМЫ

АННОТАЦИЯ

В данной работе рассказывается про проблемы, возникающие при разработке сложного ПО, про способы решения этих проблем. Рассматриваются принципы написания ПО, Unix Way, KISS. Рассказывается о хорошем тоне программирования. Приводятся рассуждения о языках программирования, которые лучше соответствуют идеологии KISS.

КЛЮЧЕВЫЕ СЛОВА

Unix Way, KISS, принцип, язык программирования, C, ПО.

Vizgalov M.M. Student bachelor

3 course, faculty of «Information Systems and Technologies» Volga State University of Telecommunications and Informatics

«PGUTI» Russia, Samara Scientific adviser: Chernova S. V.

Senior Lecturer

Department «Software and Management in Technical Systems» Volga State University of Telecommunications and Informatics

«PGUTI» Russia, Samara

SOFTWARE DEVELOPMENT PHILOSOPHY IN TERMS OF SYSTEM SIMPLIFICATION

Annotation

This work describes the problems encountered in the development of complex software, about ways to solve these problems. The principles of writing software, Unix Way, KISS. It tells about the good tone of programming. There are arguments about programming languages that better fit the ideology of KISS.

Keywords

Unix Way, KISS, principle, programming language, C, software.

История программного обеспечения берёт своё начало с 1822 года, аналитической машины Чарльза Бэббиджа, и продолжается по сей день. Перед появившейся новой специальностью, программистами, которые перебазировались из математиков, встали новые проблемы как производительность и память. Эффективность программ расчитывалась из этих двух составляющих плюс стабильность. На началах развития ПО программы писались на машинном языке и являлись сложными для чтения, со временем эти проблемы прошли, и на сегодняшний день мы можем писать программы на вполне понятном английском языке. Несмотря на это проблема сложности ПО стоит так же остро как никогда, ведь несмотря на богатое прошлое программ, новые до сих пор появляются.

Началом настоящей эрой ПО можно считать 1938 год, год появления программируемой вычислительной машины немецкого инженера Конрада Цузе Z1. Язык программирования для этой машины был, конечно же, спецефично-машинный и подавался в виде перфокарт. Позже автор этой машины придумал первый язык высокого уровня планкалькюль. На этом языке никто не писал, а компилятор для этого языка появился лишь в 2000 году. Первый унифицированный язык был ассемблер. Ассемблер также был машинно-спецефичен и машинно-зависим. Существовало и существует много синтаксисов ассемблера, так что, если выражаться конкретнее, это был скорее не язык, а семейство языков, общая идея. Далее был Fortran, Lisp, Algol, Cobol и многие подобные языки, пока не появился C в 1972 году. Как я считаю, язык C был апогеей развития проектирования в том виде, в котором проектирование принято сейчас, когда просматривая код, мы могли понять, что он делает и для чего он предназначен. Также он достаточно прост. На сегодняшний день этот язык находится на 6ом месте по популярности и до сих пор используется как проффессиональное средство для разработки ПО. Философия этого языка появилась не сразу: сначала был CPL, развитием его был BCPL, развитием его был B, а далее уже только C. Простота и эффективность этого языка — это то, что послужило его популярностью. Простота этого языка позволила взглянуть под новым углом на проектирование и выявить правила хорошего тона программирования. Ведущие разработчики ОС Unix обобщили свой опыт и создали свои рекомендации по разработке именуемые «Unix Way». Философия Unix гласит:

1. Пишите программы, которые делают что-то одно и делают это

хорошо.

2. Пишите программы, которые работали бы вместе.

3. Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс.

Задолго до этого, даже не имея отношения к ПО, в ВМС США в 1960 -ых был придуман принцип KISS, расшифровывающийся как «Keep is simple, stupid», позже этот принцип приобрёл новое обозначение как «Keep it short and simple». Основа и смысл принципа гласит, что система должна быть простой, не иметь никакие излишние сложности. Данный принцип, построенный всего лишь на одной фразе, широко известен и высоко ценится в мире разработки ПО. Можно сказать, что «Unix Way» сам строится на этом принципе. Существуют достаточно известные идиомы, написанные Филипом Хаником, который перенёс принцип KISS на ПО и сделал из этого некоторые правила. Выдержки части из них:

• Разбивайте задачи на подзадачи которые не должны по вашему мнению длиться более 4-12 часов написания кода

• Разбивайте задачу на множество более маленьких задач, каждая задача должна решаться одним или парой классов

• Сохраняйте ваши методы маленькими. Каждый метод должен состоять не более чем из 30-40 строк. Каждый метод должен решать одну маленькую задачу, а не множество случаев.

• Сохраняйте ваши классы маленькими. Здесь применяется та же техника что и с методами.

• Придумайте решение задачи сначала, потом напишите код. Никогда не поступайте иначе.

• Не бойтесь избавляться от кода. Изменение старого кода и написание нового решения два очень важных момента.

Целью всех принципов было создание легко-поддерживаемых программ, ведь программный код - это информация, а информация в свою очередь это:

• Достоверность

• Доступность

• Понятность

Никакая сложная система не может удовлетворять 3-му критерию. Даже если использовать декомпозицию, заучив схему одного уровня абстракции, мы легко забудем о другом уровне абстракции или он попросту будет от нас скрыт.

Не только программирование на прикладном уровне подверглось принципу KISS, а и на аппаратном. Одно время было много споров между RISC и CISC архитектурами процессоров. CISC архитектура поддерживала многочисленные сложные команды «на все случаи жизни». Впоследствии оказалось, что даже если не брать в счёт аппаратное быстродействие, то написание эффективных программ и компиляторов под эту архитектуру

было довольно сложным занятием и зачастую компиляторы не могли использовать все возможности данной архитектуры.

Можно задаться вопросом, неужели простота системы так важна и к каким последствиям может привести сложное ПО? На новостных сайтах по тематике ПО часто можно увидеть новости о найденных новых уязвимостях, выхода серверов из строя в следствии программных ошибок. В таких проектах немалую часть составляет отладка и её становиться всё больше с ростом ПО. Всё это, несомненно, примеры «вышедшего из -под контроля» сложного ПО.

Принципы KISS, Unix Way и многие другие ставят своей целью бороться со сложностью и привносить «понятность» в программный код. Языки программирования также стараются делать простыми, упрощать инструкции.

ИСПОЛЬЗОВАННЫЕ ИСТОЧНИКИ:

1. Википедия. Принцип KISS [Электронный ресурс]. - Режим доступа: https://ru.wikipedia.org/wiki/KISS_%28%D0%BF%D1%80%D0%B8%D0%BD %D 1%86%D0%B8%D0%BF%29.

2. Википедия. Философия Unix [Электронный ресурс]. - Режим доступа: https ://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%BB%D0%BE%D 1%81% D0%BE%D 1 %84%D0%B8%D 1%8F_Unix

3. Википедия. Z1 (вычислительная машина) [Электронный ресурс]. - Режим доступа:

https://ru.wikipedia.org/wiki/Z1_%28%D0%B2%D1%8B%D1%87%D0%B8%D 1%81 %D0%BB%D0%B8%D 1%82%D0%B5%D0%BB%D 1 %8C%D0%BD%D0 %B0%D 1%8F_%D0%BC%D0%B0%D 1 %88%D0%B8%D0%BD%D0%B0%29

4. Википедия. Цузе Конрад [Электронный ресурс]. - Режим доступа: https://ru.wikipedia.org/wiki/%D0%A6%D1%83%D0%B7%D0%B5,_%D0%9A %D0%BE%D0%BD%D 1 %80%D0%B0%D0%B4

5. Википедия. Лавлейс, Ада [Электронный ресурс]. - Режим доступа: https://ru.wikipedia.org/wiki/%D0%9B%D0%B0%D0%B2%D0%BB%D0%B5% D0%B9%D 1%81,_%D0%90%D0%B4%D0%B0

6. Википедия. Хронология языков программирования [Электронный ресурс]. - Режим доступа: https://ru.wikipedia.org/wiki/%D0%A5%D1%80%D0%BE%D0%BD%D0%BE% D0%BB%D0%BE%D0%B3%D0%B8%D 1%8F_%D 1 %8F%D0%B7%D 1 %8B% D0%BA%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80% D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0% D0%BD%D0%B8%D 1 %8F

7. Википедия. RISC [Электронный ресурс]. - Режим доступа: https://ru.wikipedia.org/wiki/RISC

8. Хабрахабр. KISS - принцип проектирования, содержащий все остальные принципы проектирования [Электронный ресурс]. - Режим доступа: https://habr.com/post/249639/

i Надоели баннеры? Вы всегда можете отключить рекламу.