Отъявленный программист: лайфхакинг из первых рук - [6]
Именно так и поступил я в свое время — шагнул в неизвестность, приступив к реализации совершенно абстрактной для многих концепции свободных программ, которая сейчас превратилась в заметное общественное движение. Только, пожалуйста, не делайте из меня героя. При большом желании, уверен, любой читающий нас программист способен написать лучшую программу (веб-сервис) своей жизни и незамедлительно подарить ее человечеству, не дожидаясь при этом каких-то «особых встречных условий». В этом случае мой совет: сделайте свой пример заразительным, позвольте подхватить ваш проект другому на аналогичных условиях, для чего рекомендую воспользоваться лицензией GPL.
О’кей, давайте врубим задний ход и вернемся к началу, где вы упомянули две популярные ошибки в отношении вашего Фонда. Подробно рассмотрев отношения свободного FSF с Open Source и проприетарным софтом, не могли бы мы вернуться ко второй отмеченной вами хронической проблеме?
Второе хроническое недоразумение связано с Linux. Чтобы быть понятым верно, позвольте немного истории для начала.
Когда ОС Linux еще не существовало в природе, в своем «Манифесте GNU» мы поставили перед собой амбициозную цель — разработать собственную свободную Unix-совместимую систему, которую в итоге назвали GNU. И уже к тому моменту, когда разработка Linux только начиналась, разработка GNU была практически завершена. Здесь хочу отдельно подчеркнуть: GNU не был и не является проектом по разработке набора утилит или пакетов программ, как думают некоторые, и тем более это не проект по разработке компилятора языка С (хотя мы сделали и это). Поскольку наш проект изначально поставил перед собой комплексную цель «разработать полную свободную ОС, совместимую с Unix», мы с самого начала составили скрупулезный список программ для того, чтобы наша будущая система была самодостаточной.
Таким образом, работая поступательно, к началу 90-х мы по частям сложили все воедино, реализовав весь запланированный список программ и компонент. Было готово все, кроме ядра. И с этой исходной точки мы приступили к написанию ядра GNU Hurd. К сожалению, его разработка затянулась на больший срок, нежели мы ожидали. Тут-то и появилось ядро Linux, которое было использовано в нашей системе.
Теперь возвращаясь к исходному вопросу уже с необходимым контекстом: именно поэтому все так называемые разновидности Linux на самом деле являются дистрибутивами GNU/Linux. Эти дистрибутивы — лишь модифицированная версия нашей ОС GNU. Для полноты картины следует отметить, что кроме GNU был еще один проект, который независимо произвел свободную операционную систему типа Unix. Эта система известна как BSD и по большому счету слабо зависит от GNU. Таким образом, сегодня родословная любой из свободных операционных систем может быть однозначно отнесена лишь к этим двум предкам — либо это клон системы GNU, либо разновидность BSD.
Собственно, именно поэтому я категорически настаиваю, что любой дистрибутив Linux правильно должен именоваться исключительно как GNU/Linux (и именно в таком порядке). Кроме того, добавлю, что сегодня существует много самых разных вариантов GNU/Linux, но подавляющее большинство включает несвободные программы — чаще всего их разработчики следуют собственной специфической философии Linux, но не философии свободных программ GNU, которую мы активно продвигаем.
Это два принципиальных уточнения относительно Linux и нашей совместной с ней истории, которые мне приходится часто объяснять людям. Ведь многие до сих пор считают Linux самобытным, свободным и самодостаточным проектом, взращенным загадочным финским подростком буквально на пустом месте. Они ошибочно считают Linux образцом и родоначальником свободного и открытого софта — это совсем не так.
Благодаря этим двум «распространенным терминологическим неточностям» мы ретроспективно рассмотрели историю и задачи проекта GNU. Теперь попробуем это славное прошлое замкнуть на грозное настоящее: что насчет ядра GNU Hurd, которое было единственным недостающим элементом ОС GNU? Каково положение дел с ним сегодня?
GNU Mach — это GNU-версия микроядра Mach, которую разрабатывает и поддерживает наш проект, это та основа, на базе которой зиждется GNU Hurd. На данный момент Hurd относительно стабильно работает на компьютерах с архитектурой x86, его последний релиз был в конце сентября 2013 года. Кроме того, еще есть Debian GNU/ Hurd, которая является версией этого ядра от популярного проекта Debian. Я весьма доволен, что Debian GNU/Hurd существует и развивается, но я не могу заставить людей оставить свои проекты или предпочтения, чтобы форсировать более быстрое развитие именно этого ядра.
Кстати говоря, в рамках проекта Debian есть и другой необычный проект — GNU/kFreeBSD. Несмотря на мои противоположные личные предпочтения, проекты типа GNU/kFreeBSD привносят разнообразие в этот однообразный мир Windows/Linux.
Извините, не расслышал ответа, разрешите еще раз задать прямой вопрос: есть ли у GNU Hurd хоть какое-то реальное будущее?
На данный момент GNU Hurd не является высокоприоритетным для нашего проекта, потому что у него есть реальная работающая альтернатива — Linux. Как я уже говорил, мы начали разработку GNU Hurd в далеком 1990 году, потому что проект GNU остро нуждался в завершающем элементе — ядре. Вскоре после этого проект Linux все-таки смог стать первым свободным ядром, доступным каждому, поэтому он очень удачно перехватил инициативу и заполнил пустую и очень востребованную на тот момент нишу. Я был бы рад, если бы проект GNU Hurd достиг такого же успеха и признания, и мне приятно, что многие люди упорно продолжают его разработку. Но, вероятно, с учетом реально сложившейся ныне ситуации, для нашей свободы было бы более приоритетно, чтобы из популярного проекта Linux убрали все несвободные фрагменты кода (так называемые «блобы»), которые, как известно, там есть.
Что общего между самыми востребованными профессиями и стремительным увеличением количества информации в мире? Ответ: язык структурированных запросов (SQL). SQL — рабочая лошадка среди языков программирования, основа основ для современного анализа и управления данными. Книга «SQL: быстрое погружение» идеальна для всех, кто ищет новые перспективы карьерного роста; для разработчиков, которые хотят расширить свои навыки и знания в программировании; для любого человека, даже без опыта, кто хочет воспользоваться возможностями будущего, в котором будут править данные.
Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение». Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший. Книга состоит из трех частей.
Книга "Изучаем Python" - это ускоренный курс, который позволит вам сэкономить время и сразу начать писать работоспособные программы (игры, визуализации данных, веб-приложения и многое другое). Хотите стать программистом? В первой части книги вам предстоит узнать о базовых принципах программирования, познакомиться со списками, словарями, классами и циклами, вы научитесь создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на практике, работая над тремя крупными проектами: создадите собственную "стрелялку" с нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию, и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации. Если вы решились разобраться в том что такое программирование, не нужно ждать.
Алгоритмы - это всего лишь пошаговые алгоритмы решения задач, и большинство таких задач уже были кем-то решены, протестированы и проверены. Можно, конечно, погрузится в глубокую философию гениального Кнута, изучить многостраничные фолианты с доказательствами и обоснованиями, но хотите ли вы тратить на это свое время? Откройте великолепно иллюстрированную книгу и вы сразу поймете, что алгоритмы - это просто. А грокать алгоритмы - это веселое и увлекательное занятие.