Зачем нам знать, что такое программное обеспечение?
Всем привет, меня зовут Максим, эта статья попытка объяснить, что такое программирование и программное обеспечение простыми словами.
Для большинства людей процесс разработки программного обеспечения непонятен, неизвестен, и честно говоря, неинтересен — главное, чтобы программа работала.
Под программным обеспечением (ПО, программы, приложения, софт) в данной статье подразумевается ПО, имеющие пользовательский интерфейс.
Насколько важны и нужны для нас программы?
Давайте для начала посчитаем сколько программ мы используем в течение дня!
Смартфон вообще “ящик пандоры” с программами (приложениями): запишем минимум: (2) операционная система (Android, IOS), (3) магазин приложений, (4) веб-браузер, (5) соцсеть, (6) мессенджер, (7) камера, (8) голосовой помощник (Google, Siri, Алиса), (9) файловый менеджер, (10) приложение для видеоконференций.
Даже контакты, звонки, сообщения, клавиатура, калькулятор — это отдельные программы.
Каждая иконка — это программа, а зачастую и не одна, ведь чтобы работала ваша программа кто-то работает по ту сторону с другими программами.
Завтракаем в тишине и спокойствии, — ладно включим что-нибудь для фона, если у вас не радиоточка, то телевизор, они в основном (11) смарт ТВ — т.е. тоже с программами.
Внимание: статья написана в апреле-мае 2020 в Беларуси, где не было карантина и можно свободно передвигаться — наконец то, мы самая свободная страна Европы!
Перед тем одеться проверим (12) прогноз погоды (в смартфоне точный прогноз расписан по часам и конкретно для нашего местоположения) — пора бы уже прекращать показывать прогнозы по телевизору.
Если едем на работу на машине включаем (13) навигатор и (14) любимую музыку или подкаст, книгу.
Если на общественном транспорте — (14) музыка, (15) игры, (16) видео, вебсерфинг – а ведь каждый сайт в интернете — это тоже отдельная программа. Что мы смотрим в интернете? — пару новостных сайтов (17-20).
На работе у нас есть компьютер, а в нем: (21) операционная система (Windows, MacOS), (22) интернет браузер, (23) мессенджер, (24) ПО веб конференции, (25-27) пакет офисных программ (текст, таблицы, презентации), (28-30) профессиональные программы (мало кто работает в одной).
Что делаем после работы? — ведем здоровую и интересную жизнь, без гаджетов! А в этом нам помогают приложения — кто-нибудь бегает без смартфона?
(31) Спорт, (32) обучение, (34) хобби, (35) увлечения — для всего есть приложения и сайты.
А для этого у нас еще есть фитнес-браслеты и смарт-часы и на них есть своя (36) операционная система и могут быть свои приложения.
У вас есть дети? — для них тоже есть приложения, программы и сайты — (37) развитие, (38) обучение, (39) развлечения.
Книга перед сном? — (40) электронная.
Мы с вами посчитали только программы с интерфейсами, а сколько еще системных программ, программ в оборудовании.
Вывод — разнообразие используемых программ в жизни человека превышает другие продукты. Мы едим куда меньше продуктов и используем куда меньше вещей, приборов, чем используем программ.
Хотел написать почему важно понимать как вообще устроен мир и объекты, которые нас окружают. Что-то типа того, что булочки не растут на деревьях, но понял, что в целом это нормально не знать — как сделать булочку, холодильник, смартфон, построить дом.
Все-таки, в эпоху урбанизации, если вы знаете, как добывают полезные ископаемые, производятся сельскохозяйственные работы, функционирует производство, проводят строительство — вы эрудированный человек, даже если вы это смотрели на National Geographic.
Ведь на самом деле мало кому нужны все эти подробные знания о том, как это устроено, в эпоху информационной перегрузки. Польза от таких знаний нужна только героям Таинственного острова и Марсианина, это факт.
Что-такое программное обеспечение?
Если по сложному — программное обеспечение — это программа или множество программ, используемых для управления компьютером, такое определение дано в Википедии, а оно взято из международного стандарта ISO.
Если совсем по-простому, то программное обеспечение — это инструкция, в которой написано, что делать компьютеру (смартфону, иному оборудованию). Эта инструкция называется программным кодом. Программный код бывает исходный и исполняемый.
Исходный код — это код, который пишет программист на каком-нибудь языке программирования — Java, Python, С, PHP и др., это так называемые высокоуровневые языки программирования, которые близки к натуральным языкам (английский и др.).
Исполняемый код — это код который, понимает виртуальная машина, контроллер, процессор и т.п., обычно появляется в результате преобразования исходного кода.
По мере преобразования (компиляции и интерпретации) исходный код преобразуется сначала в объектный код, байт-код, машинный код, микрокод.
Когда нибудь я напишу по этому вопросу подробнее, — но это не точно.
В инструкции для компьютера (программном коде) требуется написать все — что можно сделать с программой, какие варианты возможны, потому что программа исполнит только то, что написано в программе, не больше.
В инструкции для людей можно не писать многие вещи, особенно отклонения и исключения, описывают только основной процесс, если произойдет какое-нибудь отклонение, человек сам поймет, что это отклонение и сам вернется назад к требуемому процессу.
Чтобы понять разницу между инструкцией человеку и инструкцией для компьютера давайте рассмотрим одну задачу — сделать медицинскую маску.
Одну инструкцию напишем для человека, а другую для 3D принтера.
Инструкция для человека
Шаг 1. Найти видео-инструкцию как сделать маску.
Шаг 2. Посмотреть видео как сделать маску.
Шаг 3. Найти подходящие материалы или их аналоги.
Шаг 4. Сделать маску.
4 строки и 99% людей смогут сделать маску по этой инструкциию
Например, здесь несколько инструкций от 2 до 10 шагов
Инструкция для 3D принтера
Это файл в формате x3d, который содержит описание трехмерное описание маски, в данном случае в XML. XML это язык разметки, применяемый для передачи различных данных в виде файла. XML как язык примечателен тем, что считается и человеко-читаемым и машино-читаемым.
Инструкции для компьютера должны быть очень-очень подробные, в этом и есть сложность программ и программирования. После этого сравнения, возможно кто-нибудь захочет сравнить программистов с писателями. Можно, но ненужно — программирование, это самостоятельная сфера, которая не похожа ни на одну другую, давайте это поймем, примем и запомним, пожалуйста.
Давайте подведем итоги.
P.S. Это статья попытка объяснить про программирование “сверху-вниз” от пользователя, если вы хотите разобраться в программировании с целью “Войти в IT”, то вам нужен другой подход “снизу-вверх” от информатики к программам и системам, например — Гарвардский курс “CS50. Основы программирования”.
P.S. С 25 по 27 минуты про основы программирования рассказывают Билл Гейтс и Марк Цукерберг.
Всем привет, меня зовут Максим, эта статья попытка объяснить, что такое программирование и программное обеспечение простыми словами.
Про туалетную бумагу лучше расскажи. Доступно-простыми словами.
Зачем нам знать, что такое программное обеспечение?
А где ответ на вопрос в заголовке?
А как обстоит дело с электричеством?
Правила дуэли на холодном оружии
Числа три и девять в Скандинавской мифологии
В Нордических мифах числа три и девять присутствуют практически в каждом
сюжете, и если число три можно найти во многих легендах, мифах и сказках других народов, то девятка в них не встречается. Скандинавская же мифология, как правило, делает особый акцент именно на этом числе. Следует добавить, что в северном этносе триады органично вплетаются в повествование, причём они фигурируют в разных мифах, а не появляются только в одном сюжете. При этом триады предметов или событий не обезличены, а напротив, имеют подробное описание их свойств и обладают своей яркой индивидуальностью.
Число три с большой частотой встречается в мифах, связанных с созданием мира и описании существ его населяющих:
• В Прорицании Вёльвы описывается, что чудовищный пёс Гарм, охраняющий вход в царство Хель, три раза издаст вой перед наступлением Рагнарёка.
• Там же написано, что боги трижды жгут Гулльвейг, и три раза она возрождается заново.
• Начало Рагнарёка ознаменуют крик трёх петухов: первый живёт в стране Асов, второй в стране великанов и третий мире мёртвых.
• Радужный мост, связывающий миры, имеет три цвета. Также у него есть три названия (Биврёст, Асбру и Гьяллар).
• У Хеймдалля, как у стража Радужного моста, есть три способности, делающие его лучшим стражем: он нуждается в меньшем количестве сна, чем птица, видит даже ночью до ста лиг, а слух его настолько острый, что он слышит, как растёт трава.
• У Одина есть три предмета могущества: копье Гунгнир, золотое кольцо Драупнир и его восьминогий скакун Слейпнир.
• У Тора есть три предмета для битвы с Великанами: молот Мьёльнир, волшебный пояс, который удваивает его силу, и пара железных рукавиц, которые позволяют ему управляться с молотом.
• У Фрейра так же есть три волшебных предмета: Корабль Скидбладнир, кабан-скакун Гуллинбурсти и меч, который может действовать самостоятельно (последний он отдал своему слуге Скримниру взамен на его помощь в
женитьбе на Герд).
Теперь рассмотрим число девять. Оно, хотя и в меньшем количестве, но тоже часто встречается. При этом девятка очень важна.
•Символ Валькнут состоит из трёх связанных треугольников, образующих девять углов
•Девять существ переживут Рагнарёк и дадут начало новому миру: Видар, Вали, Магни, Моди, Уль, Бальдр, Хёд, Лив и Ливтрасир.
Разумеется, это очень беглый и краткий обзор ОГРОМНОГО количества материала, но как я уже сказал в самом начале, изложить всё в деталях просто невозможно. Но если статья понравится, я могу написать ещё что-нибудь на эту тему.
Почему программное обеспечение не всегда товар и откуда в IT прибыль
С XVI века складывалась нынешняя система производства в которой мы живём. Эта система находит своё отражение во всех сферах, но именно в IT получает новое продолжение, новое рождение. Это статья о том, почему программное обеспечение формирует новый ландшафт экономических отношений и почему в IT много денег. Но что ещё более важно, надеюсь внимательный читатель задумается, в какой компании он работает и в какую хотел бы пойти работать, что в условиях мирового экономического кризиса всё более актуально.
Описание программного обеспечения как товара
Программное обеспечение распространяется несколькими моделями. Чаще всего, модель распространения смешанная, специализируется под каждый конечный случай. Но для целей анализа следует рассмотреть крайние, противолежащие случаи.
С одной стороны, в виде специализированного для заказчика продукта, которой компания-разработчик делает покупателю согласно сделке, в идеале подкреплённого технической документацией. Нередко такие договоры связаны с разработкой специфичного продукта для определённой компании или государственными заказами. Такой труд из одного контракта в другой требует повторного приложения труда — вновь и вновь разработчики будут заниматься написанием новых продуктов, отдельных для каждого отдельного заказчика. Такой труд я бы назвал нереплицируемым, а соответствующий продукт труда называется товаром, в классическом определении.
С другой стороны, существует продажа программного обеспечения как копии одного и того же продукта. Таким образом мы покупаем игры, офисные пакеты, IDE и так далее. В этой модели продукт производится лишь раз, а затем воспроизводится простым копированием и соответствующий труд назову реплицируемым, а соответствующий продукт я называю виртуальным товаром.
Как и было сказано выше, для рассмотрения интересны крайние случаи. Промежуточные же формы не должны быть интересны потому, что раскладываются по содержанию на более атомарные составляющие, которые в свою очередь и представляют собой эти крайние случаи. Например, известна модель продажи продукта или его фичей за некоторую стоимость, и специализация на поддержке — легко видеть, как можно разложить продукт на два крайних случая.
Далее предлагаю рассмотреть эти противоположности в отдельности и разобраться откуда возникает прибыль.
Прибыль нереплицируемых продуктов — товаров
Разрабатывая программное обеспечение для конкретного заказчика, компания-исполнитель полностью встраивается в производственные цепочки покупателя товара/услуги, что соответствует форме производственных отношений в которой мы пребываем.
Во-первых, стоимость производимых работ будет ограничена. С одной стороны, заказчик не станет платить за работу больше, чем сможет сэкономить посредством поставленного продукта. То есть заказчик потратит на продукт не больше чем может потратить на свой персонал, который делает ту же работу какими-либо другими способами. Выпуская продукт для заказчика, исполнитель будто бы «встраивается» в структуру организации заказчика, в экономическом плане. С другой стороны, подготовленный заказчик, который приходит с чётко прописанной документацией, так или иначе знаком с количеством эквивалентной работы, необходимой для производства данного набора функционала. Эту информацию можно получить или в качестве консультации, или рассмотрев несколько коммерческих предложений. А в случае гос.закупок, существуют специальные институты, контролирующие такие расходы (и если происходит завышение суммы, то часть этой стоимости — не рыночные методы конкуренции).
Во-вторых, способ производства направлен на снижение усилий и повышение прибыли. Разработчики собираются для работы над продуктом под управлением нанимателя. Его интерес предоставить результирующий товар, удовлетворяющий всем пожеланиям клиента, но с минимальными расходами и максимальной прибылью, что в свою очередь толкает его на деспотичную форму управления. Для рядового работника это будет означать, что его рабочее время контролируется максимально тщательно управляющими и надсмотрщиками, переработки поощряются (особенно на словах, реже оплатой и премиями), инновациям не находится время если их нет в договоре, а разработка происходит по факту через водопад. Не будет своих фреймворков и библиотек в рабочее время — прибыль нужна здесь и сейчас.
Если воспользоваться формулой трудовой стоимости товара, то получается следующее: стоимость конечного продукта W состоит из суммы затрат на производство С (офис, компьютеры, ПО для работы, налоговая нагрузка и т.п.), из затрат на оплату труда рабочих V, и из прибыли владельцев компании S. При этом общая прибыль на рынке ограничена минимальным доступным предложением на рынке — ведь заказчик при равных условиях обратится к тому исполнителю, который сделает работу дешевле.
Из этой формулы видно, что для получения большей прибыли может быть два способа ее увеличения.
Во-первых, снижение затрат выплат работникам напрямую или посредством длины рабочего дня. Согласно сложившемуся рынку, труд разработчика имеет определённую среднюю стоимость и, пока на рынке есть спрос на рабочую силу программистов, занижать зарплату несколько затруднительно. Другое дело — длина рабочего дня. Часть дня, сотрудник работает в счёт своей зарплаты, другую часть в пользу прибыли работодателя. Оставаясь на неоплачиваемые переработки, вы работаете на сверхприбыль компании и её собственников в частности. Без этих переработок проект не провалится, бизнес исполнителя не исчезнет — снизится только норма прибыли (она же по сути доходность), которая на зарплату не влияет. Увеличение длительности рабочего дня, на самом деле, не единственный способ борьбы за высокою рентабельность. Любое средство повышение производительности труда, при котором работник в единицу времени производит продукт подходит. К удлинению рабочего дня тут присоединяется интенсивность, посредством поштучной оплаты в форме KPI или под неустанным присмотром менеджеров и надсмотрщиков — офицеров и унтерофицеров, жизненно необходимых для почти всех продуктов, производимых промышленным способом.
Во-вторых, на прибыль влияет внедрение новых технологий (средств труда), ещё не освоенных на рынке и дающих то конкурентное преимущество, что на единицу времени позволит производить большее количество работы. Это приводит к тому, что на итоговую работу над проектом нужно будет потратить меньше денег и авансировать меньший капитал в виде зарплаты программистам. Речь идёт о всевозможных библиотеках и фреймворках, которые позволяют значительно ускорить разработку. Однако, как уже сказано выше, противоречия собственников компании не позволят вести разработку над новыми технологическими решениями. Зачастую, компании разрабатывающее такое ПО, склонны впитывать инновации посредством найма людей на работу, которые уже имеют подобный опыт работы с некоторой новой технологией.
В рассмотренном способе производства и есть сущность капитализма — произвести новый товар, но при этом сэкономить на работниках, увеличивая им рабочий день, давая им те средства (тулинг, IDE, frameworkи и т.п.), которые увеличат производительность работы.
Прибыль реплицируемых продуктов — виртуальных товаров
Программное обеспечение, которое продаётся поштучно множественным копированием, резко отличается от обычных товаров. Капиталистический способ производства требует, что бы капиталист купил один товар, применил к нему определённый труд, увеличивающий полезность и стоимость, а потом, если повезёт на рынке, продал товар с прибылью. Крайне развитие машин и их всеобщее распространение, приводит к метаморфозе средств труда, превращая ЭВМ (и не только) в индидвидуальное средство потребления). Эта метамарфоза, в свою очередь явилась причиной образования уникальной формы нетоварного продукта, а точнее товара без товарной стоимости — виртуального товара. Отдельная копия продукта не содержит в себе стоимости вложенного труда. Воспроизводсто товара производится простым копированием — крайне дешёвой операцией в современном мире. Таким образом, компания-производитель программного обеспечения делает продукт один раз, но стоимость получает многократно, если количество переходит в качество. Тем самым реплицируемый продукт становится выражением новой формы производства.
Конечно, производитель программного обеспечения преследует туже основную цель, что и любой другой капиталист — заработать денег (время пока именно такое, хоть всегда под лозунгами «мы изменим мир»). Но средство достижения этого результата разительно отличаются от предыдущей модели, ведь в ход здесь идёт новый вид капитала — венчурный. Инвесторы (и следует оговорится, что ими могут быть разработчики в гараже, авансирующие своё время) решают, что определённый продукт найдёт своё употребление на рынке, то есть найдутся такие покупатели, для которых данное программное обеспечение представляется полезным (имеет потребительную стоимость).
Отличительной чертой мультиплицируемой стоимости по сравнению с прибавочной, является источник прибыли. В первом случае прибыль происходит из обмена, в то время как во втором — из процесса производства товара.
Для увеличения продаж, производитель должен выбрать такую часть рынка, в которой нет других альтернатив, а продукт может нести пользу, т.е. потребительную стоимость. Задача тем самым может принимать самые идеалистические оттенки и, зачастую, часто бывает названа миссией.
Форма кооперации
При производстве реплицируемых продуктов, удовлетворяется одно из противоречий между трудом и капиталом. т.к. чаще всего прибыль в меньшей степени зависит от расходов и в большей от количества продаж, целесообразность экономии снижается. Значительно более необходима теперь работа над повышением полезности. Работа разработчиков становится более творческой и во многом требует, чтобы сам работник разделял ценности производимых им работ. В погоне за такого рода единением, компания может пойти на значительные уступки, ориентируя своих сотрудников, словно домены метала при намагничивании. Если для капиталистического производства характерно общественное производство и частное присвоение, повременная и поштучная формы оплаты труда, то тут всё несколько иначе. Компании начинают формировать премиальные фонды пропорциональные прибыли и даже распределяют свопы на доли. Последнее — очень значительное проявление кооперации, основанное теперь не на зарплате, а на общей цели, и, как результат, меритократическое поощрение.
Новая структура организации, ориентированность на результат руководства и работников, меняет вектор управления с деспотичного, на человеко-ориентированного, т.к. творчество человека во многом является составляющей успеха. На этом механизм управления не останавливается, чтобы получить максимально раннюю информацию о целесообразности инвестиций (потребительной стоимости авансированного капитала), индустрии выгодно применять итеративно-инкрементальные подходы, известные как Agile. Такой подход позволяет снизить риски венчурных инвестиций и, в отличие от обычного товара, получить представление о стоимости товара до момента продажи. Повышая от итерации к итерации полезность продукта, производитель тем самым может увеличить назначаемую мультиплицируемую стоимость товара. Итеративная разработка минимизирует описанные выше противоречия оценки стоимости продута со стороны производителей и покупателей.
Итеративная разработка реплицируемых продуктов пораждает ещё один интересный эффект. Труд, содержащийся в работе слонен образовывать основной капитал, увеличивая количественно органическое строение капитала. Я уже писал об этом ранее, имея в виду архитектуру приложений, однако самоувеличение строения капитала носит более широкий характер. Не только ключевые показатели архитектуры многократно могут использоваться, но, что ещё более важно, ещё и центральная бизнес-возможности, или базовый функционал продукта. На основании такого продукта делаются дополнительные функции из итерацию в итерацию. Подробное рассмотрение данной формы кооперации будет рассмотрено отдельно.
Норма прибыли
Размер назначаемой мультиплицируемой стоимости продукта
С другой стороны, покупатель будет волен выбрать, насколько купленная копия продукта будет для него полезна. В итоге, покупатель потратится при том условии, что для него потребительная стоимость будет не больше чем назначенная мультиплицируемуя стоимость продукта. Если продукт должен автоматизировать что-то в вашей жизни (например, программа для подсчёта калорий или электронные таблицы), то стоимость продукта должна быть не выше той экономии времени, которую она привносит. Это по сути, то же самое противоречие, что и со стороны производителя, но в несколько иной форме. Если производителю необходимо понимать количество покупателей, то покупателю нужно оценить продукт, ознакомившись с тем что он из себя представляет, и, если признаёт в продукте полезность эквивалентную установленной стоимости, оплатить. Это противоречие заставляет производителей делать триал-версии, пробники, платный функционал, т.п.
Выше я попытался выделить внутренние закономерности развития подобных компаний, которые проявляются во внешнем движении капиталов, заставляя решать цели конечных покупателей через последовательное производство скооперировавшихся работников.
Представленный способ производства не будет ограничиваться программным обеспечением. Уже значительное время, такой способ прибыли характерен для многих и многих продуктов развлекательного жанра — фильмы и сериалы, игры, книги и прочее. Со временем тоже самое коснётся, например, биотехнологий и аддитивных технологий, а возможным это станет тогда, когда распространение этих технологий станет соизмеримо с существенным развитием и всеобщим распространением ЭВМ (и диалектика развития ЭВМ безусловно заслуживает внимания). Всеобщее распространение автоматизированных машин и есть самая прямая предпосылка формирования новой экономической формации.
Данное представление о реплицируемой стоимости виртуально товара, ни в коем случае не восстаёт против трудовой теории стоимости, а является её скромным современным дополнением.
Под конец
Нам приводят Кремниевую долину как икону капитализма. На деле же, в IT индустрии денег так много потому, что это новый принципиально другой вид производства — нетоварный. Капитализм, с его участием государства такому производству только оковы, которые будут рано или поздно сброшены в ходе исторического развития.
Стартапы — ростки новой жизни, которые всё ещё похожи в момент рождения на корпорации, но в то же самое время могут быть чем-то большим и лучшим. Корпорации же более реакционны, так как их капиталы становятся магнитом для денег, и это мешает нормальному развитию, сковывает их в выборе и действиях, оставляя снова единственную цель — прибыль. И предельно хуже слияние корпораций с финансовым капиталом, то ли в виде венчурного капиталиста, то ли в виде бизнес-ангела, то ли через банальное кредитование. Такие паразиты не остановятся ни перед чем что бы поскорее обменять результаты живого труда, на мёртвые деньги.
Производство реплицируемого продукта принципиально отличается от тех товаров что делались веками до того. Это столь эффективно и выгодно, что крупный бизнес и государства изо всех сил будут пытаться сдерживать подобное развитие. С помощью патентного права и юридических препонов, с помощью запрета угрожающих технологий, таких как Blockchain, с помощью гипервливаний денежных средств. Однако движение истории не остановить.













