Отъявленный программист: лайфхакинг из первых рук - [4]
Послушайте, все, что вы хотите знать, это, конечно, очень важно, но если позволите, я бы хотел начать с освещения двух типичных и уже хронических синтаксических проблем Движения за свободные программы, с которыми мне приходится иметь дело примерно в 90 % интервью и выступлений. Более полное раскрытие данных ошибок поможет вашим читателям лучше понять, какие идеалы я проповедую и чем занимается фонд FSF на самом деле.
Итак, я не имею никакого отношения к движению Open Source, к которому вы и остальная пресса меня причисляете. Фонд Free Software Foundation и движение за свободные программы отстаивают несколько иные идеалы. Иначе говоря, наш термин «свободная программа» вовсе не эквивалентен понятию «программа с открытым исходным кодом». Это исходная точка, в которой в большинстве случаев начинается большая путаница, поэтому будет лучше, если мы сразу проведем водораздел между ними.
Раз уж подвернулся такой удобный случай, давайте попробуем разобраться, чем же так принципиально отличается свободная программа от программы с открытым исходным кодом?
Начнем с последнего определения. В 1998-м впервые официально было сформировано мировое движение FOSS (Free and Open-Source Software), которое, если компактно суммировать его взгляды, ставит акцент на двух фундаментальных положениях:
• Во-первых, они выступают за полностью открытый исходный код распространяемых программ, и это видится просто как технологическое удобство для разработчиков — возможность совершенствовать чужие программы, дорабатывать их или расширять под свои нужды. Естественно, все это требует доступа к исходникам для перекомпиляции.
• Во-вторых, они пропагандируют открытый исходный текст, делая акцент на экономических аргументах; попросту говоря, продвигают сугубо меркантильную точку зрения, согласно которой использование подобных программ экономически выгодно по сравнению с проприетарным софтом, который стоит немалых денег.
И первый, и второй пункт — исключительно практические ценности. Open Source — это просто удобная и экономически выгодная методология разработки. Теперь в качестве контраста: для нашего движения за свободное ПО главное — идеалы и моральные ценности, где прежде всего ценится уважение свобод пользователей.
Итак, свободные программы, за которые мы ратуем, — это обществен ное движение, где жестко отстаивается единственный этический императив — безусловное уважение свобод пользователей ПО. Если вы читаете новости и прессу, легко увидеть, что поборников Open Source волнует совсем другая проблематика: успешность или неуспешность отдельных проектов, их популярность и доля на рынке и т. д. Почти никогда при этом дискуссия не касается категорий справедливости и несправедливости использования софта, проблем распространения подобных программ, защиты прав конечных пользователей.
Не все программисты такие сообразительные, как вы или я, поэтому, уверен, с пониманием этой тонкой разницы, лежащей в плоскости вашего «принципиального императива», у некоторых могут возникнуть трудности. Не могли бы вы привести какой-то практический пример, чтобы представить это различие более зримо и конкретно?
Например, некоторые популярные мобильные устройства на базе открытой и бесплатной ОС Android поставляются с исполняемыми файлами программ, сборка которых полностью соответствует выложенному в Сети их исходному тексту, но сами эти устройства не позволяют пользователю устанавливать собственные или модифицированные версии этих файлов. Как правило, в такой ситуации только одна привилегированная компания обладает властью изменять их. Мы называем такие компании тиранами, а данная конкретная тактика паразитирования на почве Open Source известна под термином «тивоизация». Можно привести множество подобных примеров из самых разных сфер, но их общая суть, думаю, понятна.
Таким образом, согласно описанной философии по нашим стандартам эти файлы не являются свободными программами, несмотря на то, что для них доступен их полный исходный текст, как правило, свободно выложенный в Интернете. Более того, сами эти программы (и их исходники) доступны для вас абсолютно бесплатно, удовлетворяя обоим вышеописанным критериям Open Source. Именно поэтому я настоятельно призываю в своих выступлениях по всему миру: несмотря на общее слово [1 Англ. слово free переводится и как «свободный», и как «бесплатный».], давайте не будем путать идеалы «свободы слова» с бесплатным пивом, которое вам повезло отхватить на ярмарочной распродаже.
Хочу подчеркнуть — мы ничего не имеем против движения Open Source, мы приветствуем открытие исходных текстов программ, но при этом повторяем — это лишь первый важный шаг в правильном направлении, для надежной защиты интересов пользователей ПО этого мало. Думаю, сейчас более ясно, почему наше движение так категорично и показательно отмежевывается от Open Source, — мы ставим более глобальные и далеко идущие задачи. Мы также призываем всех разделяющих нашу точку зрения сознательно применять термин «свободные программы» вместо более узкого определения «программы с открытым исходным кодом» для более точной передачи сути наших общих ценностей.
![SQL: быстрое погружение](/storage/book-covers/29/29898a504be895a627f66e03ba768e5c43765b18.jpg)
Что общего между самыми востребованными профессиями и стремительным увеличением количества информации в мире? Ответ: язык структурированных запросов (SQL). SQL — рабочая лошадка среди языков программирования, основа основ для современного анализа и управления данными. Книга «SQL: быстрое погружение» идеальна для всех, кто ищет новые перспективы карьерного роста; для разработчиков, которые хотят расширить свои навыки и знания в программировании; для любого человека, даже без опыта, кто хочет воспользоваться возможностями будущего, в котором будут править данные.
![Чистый код. Создание, анализ и рефакторинг](/storage/book-covers/2d/2da20213e2b3b310834c440d1f42fd260e12f70c.jpg)
Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение». Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший. Книга состоит из трех частей.
![Изучаем Python](/storage/book-covers/c1/c135117f86c1ce4df13354fe252ad4a4bc50ecf6.jpg)
Книга "Изучаем Python" - это ускоренный курс, который позволит вам сэкономить время и сразу начать писать работоспособные программы (игры, визуализации данных, веб-приложения и многое другое). Хотите стать программистом? В первой части книги вам предстоит узнать о базовых принципах программирования, познакомиться со списками, словарями, классами и циклами, вы научитесь создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на практике, работая над тремя крупными проектами: создадите собственную "стрелялку" с нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию, и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации. Если вы решились разобраться в том что такое программирование, не нужно ждать.
![Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих](/storage/book-covers/26/26649553b28ee71ac4c1c0f7709056f8f4d16096.jpg)
Алгоритмы - это всего лишь пошаговые алгоритмы решения задач, и большинство таких задач уже были кем-то решены, протестированы и проверены. Можно, конечно, погрузится в глубокую философию гениального Кнута, изучить многостраничные фолианты с доказательствами и обоснованиями, но хотите ли вы тратить на это свое время? Откройте великолепно иллюстрированную книгу и вы сразу поймете, что алгоритмы - это просто. А грокать алгоритмы - это веселое и увлекательное занятие.